C语言程序设计实验个人物品管理程序.docx

上传人:b****5 文档编号:5233704 上传时间:2022-12-14 格式:DOCX 页数:18 大小:344.14KB
下载 相关 举报
C语言程序设计实验个人物品管理程序.docx_第1页
第1页 / 共18页
C语言程序设计实验个人物品管理程序.docx_第2页
第2页 / 共18页
C语言程序设计实验个人物品管理程序.docx_第3页
第3页 / 共18页
C语言程序设计实验个人物品管理程序.docx_第4页
第4页 / 共18页
C语言程序设计实验个人物品管理程序.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言程序设计实验个人物品管理程序.docx

《C语言程序设计实验个人物品管理程序.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验个人物品管理程序.docx(18页珍藏版)》请在冰豆网上搜索。

C语言程序设计实验个人物品管理程序.docx

C语言程序设计实验个人物品管理程序

《程序设计与算法综合实习I》

 

题目:

个人物品管理程序

班级:

学生学号:

学生姓名:

指导老师:

提交时间:

成绩:

评分项目

得分

功能完整性(40分)

界面美观性(10分)

设计合理性及创新性(20分)

答辩表现(20分)

报告撰写质量(10分)

 

华南农业大学信息学院

《个人物品管理程序》

1.问题描述

问题描述

设计一个个人物品管理程序,该程序具有以下功能:

(1)用户登录:

输入用户名和密码,密码正确才允许登录。

(2)录入个人物品信息;

(3)给定物品名或编号,修改该个人物品信息;

(4)给定物品名或编号,删除该个人物品信息;

(5)根据输入的物品名或编号,显示查找到的相应物品信息;

(6)根据输入的分类,显示该分类的所有物品信息;

(7)根据输入的时间,查询过期或3月内将过期的物品信息;

(8)统计功能:

统计各分类的物品。

(9)新功能:

导出个人物品信息至Excel表格。

系统功能分析

(1)登录功能:

这是一个个人物品管理程序,具有很大的开放性,已经注册的用户可以直接输入密码登陆系统,没有注册的用户可以根据自己的需要注册账户,并输入个人物品信息。

(2)录入个人物品信息:

这个系统设置录入的物品信息主要包括物品的名称、编号、价格、分类、生产日期和过期日期。

(3)给定物品名或编号,修改个人物品信息:

要修改物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以选择对应的物品信息进行修改。

(4)给定物品名或编号,删除个人物品信息:

要删除物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以删除该物品信息。

(5)根据输入的物品名或编号,显示查找到的相应物品信息:

输入你想查找的物品名或编号,若找到对应物品信息,则显示;否则提示用户查找的物品不存在,请重新输入想要查找的物品名或编号。

(6)根据输入的分类,显示该分类的所有物品信息:

若找到则显示该分类的物品信息,否则提示用户该分类不存在。

(7)根据输入的时间,查询已过期或3个月内将过期的物品信息:

将物品的过期时间与输入时间作比较,若过期时间与输入时差小于3个月则输出对应物品信息。

(8)统计功能:

统计各分类的物品信息。

(9)导出个人物品信息至Excel表格:

每个人都可以将自己的物品信息导出至Excel

表格,可以对自己的个人物品信息一目了然。

开发平台及工具介绍

我这个程序是使用Code:

:

编写的,它是一个开放源码的全功能的跨平台C/C++集成开发环境,它使用了着名的的图形界面库wxWidgets版。

它还提供了许多工程模板,包括控制台应用、DirectX应用和动态链接库等,另外它还支持用户自定义模板;它支持语法彩色醒目显示,支持代码完成,支持工程管理、项目构建、调试;它还具有灵活而强大的配置功能。

1.系统设计

系统总体结构设计

(1)运行程序时,一开始我设置了对系统进行操作的选择界面,包括3个功能,一是登录系统,二是创建新账户,三是退出程序。

用户可以根据自己的实际情况进行选择,输入对应的操作数从而选择不同的功能。

我在这里使用了switch-case语句。

当用户选择了登陆系统或创建新账户操作时,程序会要求输入账号(20个字符以内),以及密码(10个字符以内),在输入密码时我使用了getch()函数(在头文件中)隐藏用户密码信息,当用户登陆成功或创建新用户成功时程序就会进入功能选择界面;如果用户选择退出程序,程序运行停止。

(2)功能选择界面,我提供了九个功能选择,分别是录入个人物品信息、给定物品名或编号,修改该个人物品信息、给定物品名或编号,删除该个人物品信息、根据输入的物品名或编号,显示查找到的相应物品信息、根据输入的分类,显示该分类的所有物品信息、根据输入的时间,查询已过期或3个月内将过期的物品信息、统计功能:

统计各分类的物品信息、导出个人物品信息至Excel表格、退出到登陆界面。

根据用户输入的操作数,我使用了switch语句实现相应功能。

(3)录入个人物品信息:

录入的物品信息包括物品的名称、编号、价格、分类、生产日期和过期日期。

我首先将信息录入链表中,之后用自定义的保存函数Save()将信息存入文件中。

(4)给定物品名或编号,删除个人物品信息:

先输入要删除的物品名或编号,之后再通过文件指针在文件中找到相应物品信息并输出,用户确定无误后可以自行选择删除与否,若删除再调用Save函数,否则退回到功能选择界面。

(5)给定物品名或编号,修改个人物品信息:

与删除个人物品信息一样,根据输入的物品名或编号,通过文件指针找到物品信息并输出,用户可以根据自己的需要选择修改对应的信息,在确认修改后,通过Save函数保存信息,放弃修改则退回功能选择界面。

(6)根据输入的物品名或编号,显示查找到的相应物品的所有信息,这也是通过文件指针实现的查找。

(7)根据输入的分类,显示该分类的所有物品信息:

输入想查找的分类,使用一个字符数组记录输入的分类,使用文件指针对文件进行只读操作,将输入的分类与fgets()读出的分类比较,若相同则输出对应物品所有信息,直到文件指针为空。

(8)根据输入的时间,查询已过期或3个月内将过期的物品信息:

按照固定的时间输入格式(如2015年1月1日则写成)输入时间,再与文件中的过期时间比较,通过比较,输出输入时间与过期时间之差小于3个月的物品信息。

(9)统计功能:

统计各分类的物品信息,使用文件指针对文件进行读操作,分别记录不同分类的物品个数,之后输出分类信息和对应的物品个数。

(10)导出个人物品信息至Excel表格:

创建新的文件指针,将链表里的信息写入名为“”的Excel文件里,输出的时候包括跳格符‘\t’和换行符‘\n’符号,保证输出格式的正确性。

(11)退出到登陆界面,其他用户可以继续使用该系统。

数据结构设计

我主要定义了用户信息结构user和物品信息结构Goods,还有使用了3个文件,分别用于存放用户信息和物品信息。

用户信息结构体

structuser

{

charusername[20];

charpassword[8];

};

username是账号,password是密码。

物品信息结构体

typedefstructwp

统实现

①登陆模块登录系统

欢迎使用个人物品管理系统创建新账户

退出系统

选择对应操作,登陆时用户名或密码错误会提示输入账号或密码错误,并退回到本界面;创建新账户成功后会提示创建成功,并退到本界面,只需用刚创建的用户名和密码登陆即可,只有用户和密码都正确,才会提示登陆成功并跳转到功能选择界面。

②录入个人物品信息

物品名称

物品编号

物品价格

录入物品信息

物品分类

生产日期

过期时间

按照提示输入相应的物品信息。

③输入物品名或编号之后,程序会输入对应物品信息,确认删除后才会删除对应物品信息并保存。

 

物品名称

物品编号

物品价格

删除物品信息

物品分类

生产日期

过期时间

④修改物品信息:

输入物品名或编号之后,程序会输入对应物品信息,可以选择对应信息进行修改。

列出要修改物品所有信息

修改物品信息

选择对应信息进行修改

⑤查找物品信息

输入物品名或编号

查找物品信息

列出对应物品信息

⑥根据输入的分类,显示该分类的所有物品信息

输入物品分类

根据输入分类显示物品信息

列出对应物品信息

⑦根据输入的时间,查询已过期或3个月内将过期的物品信息

输入查询时间

查询过期物品或三个月内过期物品

比较输入的时间和过期时间

输出对应物品信息

⑧统计功能:

统计各分类的物品信息

用不同变量记录不同分类的物品个数

统计各分类的物品信息用文件指针对文件进行读写

输出物品分类及对应物品个数

⑨导出个人物品信息至Excel表格

输出物品存储信息项目名称

导出物品信息到Excel表格

1.系统测试

(1)设计测试用例:

登陆账号名称:

0101密码:

123456

名称

编号

价格(元)

分类

生产日期

过期时间

钢笔

1

100

文具

笔芯

2

10

文具

尺子

3

5

文具

铅笔

4

10

文具

可乐

5

5

饮料

雪碧

6

5

饮料

加多宝

7

5

饮料

水壶

8

50

日常用品

9

10

生活用品

手表

11

50

用具

物品信息:

 

录入个人物品信息:

名称:

水杯编号:

10价格:

50分类:

日常用品生产日期:

过期时间:

删除物品信息:

名称:

钢笔编号:

01

修改个人物品信息:

修改编号为11的物品名称为灯

查找物品信息:

查找编号为10的物品信息

根据输入分类输出该分类所有物品:

输入文具

过期物品查询:

输入时间为

统计各分类物品个数;

导出物品信息到Excel表格;

预期结果:

全都符合要求。

1.系统运行界面:

①登录系统

②录入个人物品信息

③删除物品信息

④修改个人物品信息

⑤查找物品信息

⑥根据输入分类输出该分类所有物品

⑦过期物品查询

⑧统计各分类物品个数

⑨导出物品信息到Excel表格

(3)运行结果与预期结果相同。

1.总结

刚开始设计时毫无头绪,代码也是写得一团糟,感觉自己对上学期的内容好陌生,所以决定还是先把有关内容看一遍。

后来我看了课本和上网查了有关资料,然后再仔细地看了一遍题目要求:

信息要求必须存在文件里面,而且数据操作要用链表,所以我将程序设计为开始时读取文件信息到链表,退出时再把链表信息全部覆盖写回文件里面。

但是在实际操作中发现自己对链表这一块还是不太熟悉,所以又去找了一些和链表有关的资料。

最后自己就边摸索着尝试了一下,最后发现原来也不是特别难,其实最大的欠缺就是动手能力差。

这次的程序设计,我觉得不仅是让我复习了上学期学过的内容,更是发现了自己在学习上的许多缺点和不足,也是给了自己一个反省的机会,我觉得自己在以后的学习中必须要将理论与实际相结合,在巩固理论知识的基础上一定要将其付诸实践,要敢于尝试,不要让一次的失败就让自己士气全无。

 

附(源代码):

#include<>

#include<>

#include<>

#include<>

#include<>

structuserat");

if((fp=fopen(wp,"wb"))==NULL)

{

printf("Can'topenthefile!

\n");

exit(0);

}

printf("\nSavesuccefully!

\n");

p=h;

while(p!

=NULL)

{

fwrite(p,sizeof(Goods),1,fp);

p=p->next;

}

fclose(fp);

}

Goods*Load(char*mark)at");

if((fp=fopen(wp,"ab+"))==NULL)

{

printf("Can'topenthefile!

\n");

exit

(1);

}

p=(Goods*)malloc(sizeof(Goods));

if(!

p)

{

printf("Memoryoverflow!

\n");

returnh;

}

h=p;

ch=fgetc(fp);

if(ch==EOF)

{

h=NULL;

p->next=NULL;

returnh;

}

rewind(fp);

while(!

feof(fp))

{

if(1!

=fread(p,sizeof(Goods),1,fp))

break;

p->next=(Goods*)malloc(sizeof(Goods));

if(!

p->next)

{

printf("Memoryoverflow!

\n");

returnh;

}

q=p;

p=p->next;

}

q->next=NULL;

fclose(fp);

returnh;

}

voidExcel(char*mark)\n");

printf("┗━━━━━━━━━━━━━━┛\n");

}

else{

system("color04");

printf("\n┏━━━━━━━━━━━━━━━┓\n");

printf("┃导出至文件“”失败!

┃\n");

printf("┗━━━━━━━━━━━━━━━┛\n");

}

}

voidDeleteGoods(char*mark){2.否\n");

scanf("%d",&k);

if(k==1){

if(i==1)head=head->next;

else

{

p=head;

while(p->next&&j

{p=p->next;++j;}

if(!

(p->next)||j>i-1)exit(0);

q=p->next;p->next=q->next;

free(q);

}

Save(head,mark);

printf("你已成功删除该物品信息!

\n");

}

elseprintf("你已取消删除操作!

\n");

}

voidAddNewGoods(char*mark)品名");

printf("2.物品编号\n");

printf("3.物品价格");

printf("4.物品生产日期\n");

printf("5.物品过期时间");

printf("6.物品分类\n");

scanf("%d",&choice);

switch(choice)

{

case1:

printf("请输入修改后物品名:

");

scanf("%s",;

while(i==1)

{while(q!

=NULL)

{

if(strcmp,q->name)==0)

break;

q=q->next;

};

if(q!

=NULL){

printf("该物品名已存在,请重新输入物品名:

");

scanf("%s",;

q=head;}

else

{

i=2;

q=head;

strcpy(p->name,;

}

}

break;

case2:

printf("请输入修改后的物品编号:

");

scanf("%s",;

{while(q!

=NULL)

{

if(strcmp,q->number)==0)

break;

q=q->next;

};

if(q!

=NULL){

printf("该物品名已存在,请重新输入物品名:

");

scanf("%s",;

q=head;}

else

{

i=2;

q=head;

strcpy(p->number,;

}

}

break;

case3:

printf("请输入修改后的物品价格:

");

scanf("%s",p->price);

case4:

printf("请输入修改后的物品生产日期:

");

scanf("%s",p->MFG);

case5:

printf("请输入修改后的物品过期时间:

");

scanf("%s",p->EXP);

case6:

printf("请输入修改后的物品类别:

");

scanf("%s",p->categoty);

default:

printf("输入错误!

请重新输入要修改的物品信息:

");

scanf("%d",&choice);

break;

}}

elseprintf("没有找到该物品!

\n");

printf("你确定修改信息\n1.是2.否\n");

scanf("%d",&k);

if(k==1){

Save(head,mark);

printf("物品信息已完成修改!

\n");}

elseprintf("你已取消修改物品信息!

\n");

}

voidSort(char*mark)找物品信息.2.增加新物品.\n");

printf("3.删除物品信息.4.修改物品信息.\n");

printf("5.输出分类信息.6.查询过期物品.\n");

printf("7.显示所有分类信息.8.导出物品信息至Excel表格.\n");

printf("9.退出到登陆界面.\n");

printf("--------------------------------------------------------------------------------");

scanf("%d",&mychoice);

returnmychoice;

}

intOperation(char*mark)陆系统\n");

printf("2.创建新账户\n");

printf("3.退出程序\n");

printf("**");

printf("");

scanf("%d",&choice);

switch(choice)

{

case1:

if(Login(mark)==1)

Operation(mark);//登陆个人用户管理系统

break;

case2:

Newuser();break;

case3:

exit(0);

default:

break;

}

}

return0;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1