《2022年C语言程序设计实验个人物品管理程序.pdf》由会员分享,可在线阅读,更多相关《2022年C语言程序设计实验个人物品管理程序.pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计与算法综合实习I题目:个人物品管理程序班级:学生学号:学生姓名:指导老师:提交时间:成绩:评分项目得分功能完整性( 40 分)界面美观性( 10 分)设计合理性及创新性( 20 分)答辩表现( 20分)报告撰写质量( 10 分)华南农业大学信息学院个人物品管理程序1.问题描述问题描述设计一个个人物品管理程序,该程序具有以下功能:(1)用户登录:输入用户名和密码,密码正确才允许登录。(2)录入个人物品信息;(3)给定物品名或编号,修改该个人物品信息;(4)给定物品名或编号,删除该个人物品信息;(5)根据输入的物品名或编号,显示查找到的相应物品信息;(6)根据输入的分类,显示该分类的所有物
2、品信息;(7)根据输入的时间,查询过期或3 月内将过期的物品信息;(8)统计功能:统计各分类的物品。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 14 页 - - - - - - - - - - (9)新功能:导出个人物品信息至Excel 表格。系统功能分析(1)登录功能:这是一个个人物品管理程序,具有很大的开放性,已经注册的用户可以直接输入密码登陆系统,没有注册的用户可以根据自己的需要注册账户,并输入个人物品信息。(2)录入个人物品信息:这个系统设置录入的物品信息主要包括物品的名称、编号、
3、价格、分类、生产日期和过期日期。(3)给定物品名或编号,修改个人物品信息:要修改物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以选择对应的物品信息进行修改。(4)给定物品名或编号,删除个人物品信息:要删除物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以删除该物品信息。(5)根据输入的物品名或编号,显示查找到的相应物品信息:输入你想查找的物品名或编号,若找到对应物品信息,则显示;否则提示用户查找的物品不存在,请重新输入想要查找的物品名或编号。(6)根据输入的分类,显示该分类的所有物品信息:若找到则显示该分类的物品信息,否则提示用户该分类不存在。(7)根据输入的时间,查询已
4、过期或3 个月内将过期的物品信息:将物品的过期时间与输入时间作比较,若过期时间与输入时差小于3 个月则输出对应物品信息。(8)统计功能:统计各分类的物品信息。(9)导出个人物品信息至Excel 表格:每个人都可以将自己的物品信息导出至Excel表格,可以对自己的个人物品信息一目了然。开发平台及工具介绍我这个程序是使用Code: 编写的,它是一个开放源码的全功能的跨平台C/C+集成开发环境,它使用了着名的的图形界面库wxWidgets 版。它还提供了许多工程模板,包括控制台应用、 DirectX应用和动态链接库等,另外它还支持用户自定义模板;它支持语法彩色醒目显示,支持代码完成,支持工程管理、项
5、目构建、调试;它还具有灵活而强大的配置功能。1.系统设计系统总体结构设计(1)运行程序时,一开始我设置了对系统进行操作的选择界面,包括3 个功能,一是登录系统,二是创建新账户,三是退出程序。用户可以根据自己的实际情况进行选择,输入对应的操作数从而选择不同的功能。我在这里使用了switch-case语句。当用户选择了登陆系统或创建新账户操作时,程序会要求输入账号(20 个字符以内),以及密码(10 个字符以内),在输入密码时我使用了getch()函数(在头文件中)隐藏用户密码信息,当用户登陆成功或创建新用户成功时程序就会进入功能选择界面;如果用户选择退出程序,程序运行停止。(2)功能选择界面,我
6、提供了九个功能选择,分别是录入个人物品信息、给定物品名或编号,修改该个人物品信息、给定物品名或编号,删除该个人物品信息、根据输入的物品名或编号,显示查找到的相应物品信息、根据输入的分类,显示该分类的所有物品信息、根据输入的时间,查询已过期或3 个月内将过期的物品信息、统计功能:统计各分类的物品信息、导出个人物品信息至Excel 表格、退出到登陆界面。根据用户输入的操作数,我使用了switch语句实现相应功能。(3)录入个人物品信息:录入的物品信息包括物品的名称、编号、价格、分类、生产日期和过期日期。我首先将信息录入链表中,之后用自定义的保存函数Save()将信息存入文件中。(4)给定物品名或编
7、号,删除个人物品信息:先输入要删除的物品名或编号,之后再通过文件指针在文件中找到相应物品信息并输出,用户确定无误后可以自行选择删除与否,若删除再调用 Save 函数,否则退回到功能选择界面。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 14 页 - - - - - - - - - - (5)给定物品名或编号,修改个人物品信息:与删除个人物品信息一样,根据输入的物品名或编号,通过文件指针找到物品信息并输出,用户可以根据自己的需要选择修改对应的信息,在确认修改后,通过Save 函数保存信息,放弃
8、修改则退回功能选择界面。(6)根据输入的物品名或编号,显示查找到的相应物品的所有信息,这也是通过文件指针实现的查找。(7)根据输入的分类,显示该分类的所有物品信息:输入想查找的分类,使用一个字符数组记录输入的分类,使用文件指针对文件进行只读操作,将输入的分类与fgets()读出的分类比较,若相同则输出对应物品所有信息,直到文件指针为空。(8)根据输入的时间,查询已过期或3 个月内将过期的物品信息:按照固定的时间输入格式(如2015 年 1 月 1 日则写成)输入时间,再与文件中的过期时间比较,通过比较,输出输入时间与过期时间之差小于3 个月的物品信息。(9)统计功能:统计各分类的物品信息,使用
9、文件指针对文件进行读操作,分别记录不同分类的物品个数,之后输出分类信息和对应的物品个数。(10) 导出个人物品信息至Excel表格:创建新的文件指针,将链表里的信息写入名为“”的 Excel 文件里,输出的时候包括跳格符t 和换行符n符号,保证输出格式的正确性。(11)退出到登陆界面,其他用户可以继续使用该系统。数据结构设计我主要定义了用户信息结构user 和物品信息结构Goods,还有使用了3 个文件,分别用于存放用户信息和物品信息。用户信息结构体struct user char username20; char password8;username 是账号, password 是密码。物品
10、信息结构体typedef struct wp 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 14 页 - - - - - - - - - - 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 14 页 - - - - - - - - - - 统实现登陆模块登录系统欢迎使用个人物品管理系统创建新账户退出系统选择对应操作,登陆时用户名或密码错误会提示输入账号或密码错误,并退回到本界面;创建新账户成
11、功后会提示创建成功,并退到本界面,只需用刚创建的用户名和密码登陆即可,只有用户和密码都正确,才会提示登陆成功并跳转到功能选择界面。录入个人物品信息物品名称物品编号物品价格录入物品信息物品分类生产日期过期时间按照提示输入相应的物品信息。输入物品名或编号之后,程序会输入对应物品信息,确认删除后才会删除对应物品信息并保存。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 14 页 - - - - - - - - - - 物品名称物品编号物品价格删除物品信息物品分类生产日期过期时间修改物品信息:输入物品
12、名或编号之后,程序会输入对应物品信息,可以选择对应信息进行修改。列出要修改物品所有信息修改物品信息选择对应信息进行修改查找物品信息输入物品名或编号查找物品信息列出对应物品信息根据输入的分类,显示该分类的所有物品信息输入物品分类根据输入分类显示物品信息列出对应物品信息根据输入的时间,查询已过期或3 个月内将过期的物品信息输入查询时间查询过期物品或三个月内过期物品比较输入的时间和过期时间输出对应物品信息统计功能:统计各分类的物品信息用不同变量记录不同分类的物品个数精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第
13、 6 页,共 14 页 - - - - - - - - - - 统计各分类的物品信息用文件指针对文件进行读写输出物品分类及对应物品个数导出个人物品信息至Excel 表格输出物品存储信息项目名称导出物品信息到Excel 表格1.系统测试(1)设计测试用例:登陆账号名称:0101 密码: 123456名称编号价格(元)分类生产日期过期时间钢笔1100文具笔芯210文具尺子35文具铅笔410文具可乐55饮料雪碧65饮料加多宝75饮料水壶850日常用品书910生活用品手表1150用具物品信息:录入个人物品信息:名称:水杯编号: 10 价格: 50 分类:日常用品生产日期:过期时间:删除物品信息:名称:
14、钢笔编号: 01修改个人物品信息:修改编号为11 的物品名称为灯查找物品信息:查找编号为10 的物品信息根据输入分类输出该分类所有物品:输入文具过期物品查询:输入时间为统计各分类物品个数;导出物品信息到Excel 表格;预期结果:全都符合要求。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 14 页 - - - - - - - - - - 1.系统运行界面:登录系统录入个人物品信息删除物品信息修改个人物品信息精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载
15、名师归纳 - - - - - - - - - -第 8 页,共 14 页 - - - - - - - - - - 查找物品信息根据输入分类输出该分类所有物品过期物品查询统计各分类物品个数导出物品信息到Excel 表格(3)运行结果与预期结果相同。1.总结精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 14 页 - - - - - - - - - - 刚开始设计时毫无头绪,代码也是写得一团糟,感觉自己对上学期的内容好陌生,所以决定还是先把有关内容看一遍。后来我看了课本和上网查了有关资料,然后再仔
16、细地看了一遍题目要求:信息要求必须存在文件里面,而且数据操作要用链表,所以我将程序设计为开始时读取文件信息到链表,退出时再把链表信息全部覆盖写回文件里面。但是在实际操作中发现自己对链表这一块还是不太熟悉,所以又去找了一些和链表有关的资料。最后自己就边摸索着尝试了一下,最后发现原来也不是特别难,其实最大的欠缺就是动手能力差。这次的程序设计,我觉得不仅是让我复习了上学期学过的内容,更是发现了自己在学习上的许多缺点和不足,也是给了自己一个反省的机会,我觉得自己在以后的学习中必须要将理论与实际相结合,在巩固理论知识的基础上一定要将其付诸实践,要敢于尝试,不要让一次的失败就让自己士气全无。附(源代码):
17、#include#include#include#include#includestruct userat);if(fp=fopen(wp,wb)=NULL)printf( Cant open the file!n);exit(0);printf(n Save succefully!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( Cant open the file!n);exit(1
18、);p=(Goods *)malloc(sizeof(Goods);if(!p)printf( Memory overflow!n);return h;h=p;ch=fgetc(fp);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 14 页 - - - - - - - - - - if(ch=EOF) h=NULL; p-next=NULL; return h; rewind(fp);while(!feof(fp)if(1!=fread(p,sizeof(Goods),1,fp)break
19、;p-next=(Goods *)malloc(sizeof(Goods);if(!p-next)printf( Memory overflow!n);return h;q=p;p=p-next;q-next=NULL;fclose(fp);return h;void Excel(char *mark)n);printf( n); else system(color 04);nn);printf(导出至文件“”失败!n);printf(n); void DeleteGoods(char *mark) 2.否n); scanf(%d,&k); if(k=1) if(i=1)head=head-n
20、ext; else p=head; while(p-next&jnext;+j; if(!(p-next)|ji-1)exit(0); q=p-next;p-next=q-next; free(q);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 14 页 - - - - - - - - - - Save(head,mark); printf( 你已成功删除该物品信息!n); else printf(你已取消删除操作!n);void AddNewGoods(char *mark)品名 );
21、printf( 2.物品编号 n); printf(3.物品价格 ); printf( 4.物品生产日期n); printf(5.物品过期时间); printf( 6.物品分类 n); scanf(%d,&choice); switch(choice) case 1: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;
22、 q=head; strcpy(p-name,; break; case 2:printf(请输入修改后的物品编号:); scanf(%s,; while(q!=NULL) if(strcmp,q-number)=0) break; q=q-next; ; if(q!=NULL) printf(该物品名已存在, 请重新输入物品名:); scanf(%s,; q=head;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 14 页 - - - - - - - - - - else i=2; q=
23、head; strcpy(p-number,; break; case 3:printf(请输入修改后的物品价格:); scanf(%s,p-price); case 4:printf(请输入修改后的物品生产日期:); scanf(%s,p-MFG); case 5:printf(请输入修改后的物品过期时间:); scanf(%s,p-EXP); case 6:printf(请输入修改后的物品类别:); scanf(%s,p-categoty); default: printf(输入错误 ! 请重新输入要修改的物品信息:); scanf(%d,&choice); break; else pri
24、ntf(没有找到该物品!n); printf(你确定修改信息?n1. 是 2. 否n); scanf(%d,&k); if(k=1) Save(head,mark); printf(物品信息已完成修改!n); else printf(你已取消修改物品信息!n);void Sort(char *mark)找物品信息 . 2.增加新物品 .n); printf( 3.删除物品信息. 4.修改物品信息.n); printf( 5.输出分类信息. 6.查询过期物品.n); printf( 7.显示所有分类信息. 8.导出物品信息至Excel 表格.n); printf( 9.退出到登陆界面.n); p
25、rintf(-); scanf(%d,&mychoice); return mychoice;int Operation(char *mark)陆系统 n); printf( 2.创建新账户 n); printf( 3.退出程序 n);printf(*); printf( );精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 14 页 - - - - - - - - - - scanf(%d,&choice); switch(choice) case 1:if(Login(mark)=1) Operation(mark);/登陆个人用户管理系统 break; case 2:Newuser();break; case 3:exit(0); default:break; return 0;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 14 页 - - - - - - - - - -
限制150内