版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
载评分项目功能完整性(40分)设计合理性及创新性(20分)答辩表现(20分)报告撰写质量(10分)华南农业大学信息学院1.问题描述设计一个个人物品管理程序,该程序具有以下功能:(1)用户登录:输入用户名和密码,密码正确才允许登录。(2)录入个人物品信息;(3)给定物品名或编号,修改该个人物品信息;载(4)给定物品名或编号,删除该个人物品信息;(5)根据输入的物品名或编号,显示查找到的相应物品信息;(6)根据输入的分类,显示该分类的所有物品信息;(7)根据输入的时间,查询过期或3月内将过期的物品信息;(8)统计功能:统计各分类的物品。(9)新功能:导出个人物品信息至Excel表格。(1)登录功能:这是一个个人物品管理程序,具有很大的开放性,已经注册的用户可以直接输入密码登陆系统,没有注册的用户可以根据自己的需要注册账户,并输入个人物(2)录入个人物品信息:这个系统设置录入的物品信息主要包括物品的名称、编号、价格、分类、生产日期和过期日期。(3)给定物品名或编号,修改个人物品信息:要修改物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以选择对应的物品信息进行修改。(4)给定物品名或编号,删除个人物品信息:要删除物品信息时,输入物品的编号或名称查看物品信息,确认无误后可以删除该物品信息。(5)根据输入的物品名或编号,显示查找到的相应物品信息:输入你想查找的物品名或编号,若找到对应物品信息,则显示;否则提示用户查找的物品不存在,请重新输入想。(6)根据输入的分类,显示该分类的所有物品信息:若找到则显示该分类的物品信息,示用户该分类不存在。(7)根据输入的时间,查询已过期或3个月内将过期的物品信息:将物品的过期时间(8)统计功能:统计各分类的物品信息。(9)导出个人物品信息至Excel表格:每个人都可以将自己的物品信息导出至Excel表格,可以对自己的个人物品信息一目了然。我这个程序是使用Code::Blocks10.05编写的,它是一个开放源码的全功能的跨平台C/C++集成开发环境,它使用了著名的的图形界面库wxWidgets版。它还提供了许多工程模ectX而强大的配置功能。1.系统设计(1)运行程序时,一开始我设置了对系统进行操作的选择界面,包括3个功能,一是登陆系统或创建新账户操作时,程序会要求输入账号(20个字符以内),以及密码(10个h息,当用户登陆成功或创建新用户成功时程序就会进入功能选择界面;如果用户选择退出程序,程序运行停止。(2)功能选择界面,我提供了九个功能选择,分别是录入个人物品信息、给定物品名或编号,修改该个人物品信息、给定物品名或编号,删除该个人物品信息、根据输入的物品名或编号,显示查找到的相应物品信息、根据输入的分类,显示该分类的所有物品信息、载根据输入的时间,查询已过期或3个月内将过期的物品信息、统计功能:统计各分类的物品信息、导出个人物品信息至Excel表格、退出到登陆界面。根据用户输入的操作数,我(3)录入个人物品信息:录入的物品信息包括物品的名称、编号、价格、分类、生产日期和过期日期。我首先将信息录入链表中,之后用自定义的保存函数Save()将信息存(4)给定物品名或编号,删除个人物品信息:先输入要删除的物品名或编号,之后再通过文件指针在文件中找到相应物品信息并输出,用户确定无误后可以自行选择删除与否,(5)给定物品名或编号,修改个人物品信息:与删除个人物品信息一样,根据输入的物品名或编号,通过文件指针找到物品信息并输出,用户可以根据自己的需要选择修改对Save改则退回功能选择界面。(6)根据输入的物品名或编号,显示查找到的相应物品的所有信息,这也是通过文件(7)根据输入的分类,显示该分类的所有物品信息:输入想查找的分类,使用一个字符数组记录输入的分类,使用文件指针对文件进行只读操作,将输入的分类与fgets()读到文件指针为空。(8)根据输入的时间,查询已过期或3个月内将过期的物品信息:按照固定的时间输入格式(如2015年1月1日则写成20150101)输入时间,再与文件中的过期时间比较,(9)统计功能:统计各分类的物品信息,使用文件指针对文件进行读操作,分别记录不同分类的物品个数,之后输出分类信息和对应的物品个数。(10)导出个人物品信息至Excel表格:创建新的文件指针,将链表里的信息写入名为“goods.xls”的Excel文件里,输出的时候包括跳格符‘\t’和换行符‘\n’符号,保证输出格式的正确性。(11)退出到登陆界面,其他用户可以继续使用该系统。ds用于存放用户信息和物品信息。用户信息结构体structuser{charusername[20];charpassword[8];物品信息结构体typedefstructwp//定义数据结构{charname[20];/*名称*/charnumber[6];/*编号*/charprice[6];/*价格*/charcategoty[10];/*分类*/charMFG[9];/*生产日期*/载登登陆系统charEXP[9];/*过期时间*/structwp*next;ods2.3系统各个函数及函数之间关系设计(1)开始界面(2)功能选择界面(3)查找物品界面(4)录入新物品(5)删除物品信息界面(6)修改物品信息界面载(7)输出物品分类界面(8)查询过期物品界面(9)统计分类信息界面(10)导出物品信息到Excel表格界面现①登陆模块欢迎使用个人物品管理系统统创建新账户统选择对应操作,登陆时用户名或密码错误会提示输入账号或密码错误,并退回到本界面;创建新账户成功后会提示创建成功,并退到本界面,只需用刚创建的用户名和密码登陆即可,只有用户和密码都正确,才会提示登陆成功并跳转到功能选择界面。②录入个人物品信息物品名称物品编号载物品价格物品信息物品分类期时间按照提示输入相应的物品信息。③输入物品名或编号之后,程序会输入对应物品信息,确认删除后才会删除对应物品物品名称物品编号物品价格删除物品信息物品分类期时间④修改物品信息:输入物品名或编号之后,程序会输入对应物品信息,可以选择对应列出要修改物品所有信息修改物品信息选择对应信息进行修改⑤查找物品信息输入物品名或编号查找物品信息列出对应物品信息⑥根据输入的分类,显示该分类的所有物品信息输入物品分类根据输入分类显示物品信息列出对应物品信息期的物品信息输入查询时间查询过期物品或三个月内过期物品比较输入的时间和过期时间输出对应物品信息⑧统计功能:统计各分类的物品信息用不同变量记录不同分类的物品个数统计各分类的物品信息用文件指针对文件进行读写输出物品分类及对应物品个数⑨导出个人物品信息至Excel表格(1)设计测试用例:输出物品存储信息项目名称12345678书9201430330101(元)5555生活用品20140101载20140101根据输入分类输出该分类所有物品:输入文具01全都符合要求。1.系统运行界面:①登录系统②录入个人物品信息③删除物品信息④修改个人物品信息⑤查找物品信息⑥根据输入分类输出该分类所有物品⑦过期物品查询⑧统计各分类物品个数⑨导出物品信息到Excel表格(3)运行结果与预期结果相同。1.总结刚开始设计时毫无头绪,代码也是写得一团糟,感觉自己对上学期的内容好陌生,所后来我看了课本和上网查了有关资料,然后再仔细地看了一遍题目要求:信息要求必须存在文件里面,而且数据操作要用链表,所以我将程序设计为开始时读取文件信息到链表,退出时再把链表信息全部覆盖写回文件里面。但是在实际操作中发现自己对链表这一块还是不太熟悉,所以又去找了一些和链表有关的资料。最后自己就边摸索着尝试了一下,最后发现原来也不是特别难,其实最大的欠缺就是动手能力差。这次的程序设计,我觉得不仅是让我复习了上学期学过的内容,更是发现了自己在学习上的许多缺点和不足,也是给了自己一个反省的机会,我觉得自己在以后的学习中必须要将理论与实际相结合,在巩固理论知识的基础上一定要将其付诸实践,要敢于尝试,不要让一次的失败就让自己士气全无。附(源代码):载#include<stdio.h>#include<malloc.h>#include<string.h>#include<stdlib.h>#include<conio.h>structuser//用户信息{charusername[20];charpassword[8];typedefstructwp//定义数据结构{charname[20];/*名称*/charnumber[6];/*编号*/charprice[6];/*价格*/charcategoty[10];/*分类*/charMFG[9];/*生产日期*/charEXP[9];/*过期时间*/structwp*next;}Goods;voidNewuser(void)//创建新账户{printf("欢迎创建新账户!\n");FILE*fp;charp[10];inti=0;voidencrypt(char*mima);//加密算法structusersu;if((fp=fopen("f:\\usermessage","a+"))==NULL){printf("文件打开失败!\n");exit(0);}printf("请输入新账号:");scanf("%s",su.username);printf("请输入密码:");while((p[i]=getch())!='\r'){printf("*");}p[i]='\0';strcpy(su.password,p);encrypt(su.password);fprintf(fp,"%s%s\n",su.username,su.password);if(fclose(fp)){printf("文件无法关闭!\n");exit(0);}printf("\n恭喜你成功创建新账户!\n");}voidencrypt(char*mima)//加密程序{inti,j;j=strlen(mima);for(i=0;i<j;i++)mima[i]=mima[i]^15;;}intLogin(char*mark)//用户登录{system("color0A");structusersu;FILE*fp;inti=0;charusr[30],usr1[30],mima[10],p[10];intcheck=0;printf("请输入账号名称:");scanf("%s",su.username);printf("请输入登录密码:");while((p[i]=getch())!='\r'){printf("*");}p[i]='\0';strcpy(su.password,p);strcpy(usr,su.username);strcpy(mima,su.password);encrypt(mima);strcat(usr,"");strcat(usr,mima);strcat(usr,"\n");if((fp=fopen("f:\\usermessage","r"))==NULL){printf("Fileopenerror!\n");exit(0);}while(!feof(fp)){fgets(usr1,30,fp);if(strcmp(usr,usr1)==0){check=1;break;}}if(fclose(fp)){printf("Cannotclosethefile\n");exit(0);}if(check==1){printf("\nstrcpy(mark,su.username);return1;}恭喜你,登陆成功!\n");//登elsentfnreturn0;}}用户名或密码错误,请重新登陆\n");voidSave(Goods*h,char*mark)//保存记录{FILE*fp;Goods*p;charwp[20];strcpy(wp,mark);strcat(wp,".dat");if((fp=fopen(wp,"wb"))==NULL){printf("exit(0);}printf("\np=h;while(p!=NULL){fwrite(p,sizeof(Goods),1,fp);p=p->next;}fclose(fp);Can'topenthefile!\n");Savesuccefully!\n");}Goods*Load(char*mark)//读入记录{Goods*p,*q,*h=NULL;charch;FILE*fp;charwp[20];strcpy(wp,mark);system("cls");strcat(wp,".dat");if((fp=fopen(wp,"ab+"))==NULL){printf("file!\n");exit(1);}p=(Goods*)malloc(sizeof(Goods));if!p){printf("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("overflow!\n");returnh;}q=p;p=p->next;}q->next=NULL;Can'topentheMemoryoverflow!\n");Memory载fclose(fp);returnh;}voidExcel(char*mark)//新功能,将物品信息导出至Excel表格{system("cls");Goods*p,*head=Load(mark);p=head;FILE*fpex;inti=0;if((fpex=fopen("goods.xls","w"))==NULL){system("color04");ntfexit(0);}fprintf(fpex,"名称while(p!=NULL)编号价格(元)分类生产日期过期时间\n");{fprintf(fpex,"%s%s%s%s%s%s\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);p=p->next;}if(fclose(fpex)){printf("Can'tclosethefile!\n");exit(0);}ifi){printf("\n");printf("printf("printf("}┏━━━━━━━━━━━━━━┓\n");┗━━━━━━━━━━━━━━┛\n");else{system("color04");printf("\n┏━━━━━━━━━━━━━━━┓\n");printf("┗━━━━━━━━━━━━━━━┛\n");}}voidDeleteGoods(char*mark){//给定物品名或编号,删除该个人物品信息system("cls");载chars[10];inti=0,a=1,j=0;intk;Goods*p,*q,*head=Load(mark);p=head;while(a==1){printf("输入要删除物品名或编号:");scanf("%s",s);while(p!=NULL){if(strcmp(s,p->name)==0)break;if(strcmp(s,p->number)==0)break;p=p->next;if(p!=NULL){printf("################################################################################");printf("要删除物品名:");printf("%s\n",p->name);printf("要删除物品编号:");printf("%s\n",p->number);printf("要删除物品价格:");printf("%s\n",p->price);printf("要删除物品生产日期:");printf("%s\n",p->MFG);printf("要删除物品分类:");printf("%s\n",p->categoty);printf("要删除物品过期时间:");printf("%s\n",p->EXP);printf("################################################################################");a=2;}else{printf("您要删除的物品不存在!请重新输入!\n");}}printf("你确定要删除该物品的信息吗?\n1.是2.否\n");scanf("%d",&k);if(k==1){载if(i==1)head=head->next;else{p=head;while(p->next&&j<i-2){p=p->next;++j;}q=p->next;p->next=q->next;free(q);}Save(head,mark);printf("你已成功删除该物品信息!\n");}elseprintf("你已取消删除操作!\n");}voidAddNewGoods(char*mark)//录入个人物品信息{system("cls");Goods*p,*head,*s,*q;head=Load(mark);p=q=head;inta=1;s=(Goods*)malloc(sizeof(Goods));printf("┌┬┬┬┬┬┬┬┬┬┐\n");printf("├请输入新物品信息┤\n");printf("└┴┴┴┴┴┴┴┴┴┘\n");printf("输入物品名称:");scanf("%s",s->name);while(a==1){while(q!=NULL){if(strcmp(s->name,q->name)==0)break;q=q->next;if(q!=NULL){printf("该物品名已存在,请重新输入物品名:");scanf("%s",s->name);q=head;}else{a=2;q=head;}}载printf("输入物品编号:");scanf("%s",s->number);while(a==2){while(q!=NULL){if(strcmp(s->number,q->number)==0)break;q=q->next;if(q!=NULL){printf("该物品编号已存在,请重新输入物品编号:");scanf("%s",s->number);q=head;}else{a=3;}printf("q=head;}输入物品价格(元):");scanf("%s",s->price);printf("printf("日期输入格式(例:20150101)\n");输入物品生产日期:");scanf("%s",s->MFG);printf("scanf("%s",s->EXP);printf("输入物品过期日期:");输入物品分类:");scanf("%s",s->categoty);s->next=NULL;if(p==NULL){Save(s,mark);}else{while(p->next!=NULL){p=p->next;}p->next=s;Save(head,mark);voidSearchGoods(char*mark)//根据输入的物品名或编号,显示查找到的相应物品信息{system("cls");chars[10];printf("输入物品名或编号:");scanf("%s",s);Goods*head,*q;head=Load(mark);q=head;while(q!=NULL){if(strcmp(s,q->name)==0)break;if(strcmp(s,q->number)==0)break;q=q->next;if(q!=NULL){printf("物品名:");printf("%s\n",q->name);printf("物品编号:");printf("%s\n",q->number);printf("物品价格:");printf("%s\n",q->price);printf("物品生产日期:");printf("%s\n",q->MFG);printf("物品过期日期:");printf("%s\n",q->EXP);printf("物品分类:");printf("%s\n",q->categoty);}elseprintf("没有找到该物品!\n");}voidChangeGoods(char*mark)//给定物品名或编号,修改该个人物品信息{system("cls");chars[10];intchoice=0;inti=1;intk;printf("输入要修改物品名或编号:");scanf("%s",s);Goods*head,*p,*q;Goodsw;head=Load(mark);p=q=head;while(p!=NULL){if(strcmp(s,p->name)==0)break;if(strcmp(s,p->number)==0)break;p=p->next;if(p!=NULL){printf("################################################################################");printf("printf("修改物品基本信息:\n");物品名:");printf("%s\n",p->name);printf("物品编号:");printf("%s\n",p->number);printf("物品价格:");printf("%s\n",p->price);printf("物品生产日期:");printf("%s\n",p->MFG);printf("物品过期时间:");printf("%s\n",p->EXP);printf("物品分类:");printf("%s\n",p->categoty);printf("################################################################################");printf("请输入要修改的物品信息:\n");printf("1.物品名");printf("printf("3.物品价格");printf("2.物品编号\n");4.物品生产日期\n");printf("5.物品过期时间");printf("scanf("%d",&choice);switch(choice){case1:printf("6.物品分类\n");请输入修改后物品名:");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{q=head;strcpy(p->name,);}}break;case2:printf("请输入修改后的物品编号:");scanf("%s",w.number);{while(q!=NULL){if(strcmp(w.number,q->number)==0)break;q=q->next;if(q!=NULL){printf("该物品名已存在,请重新输入物品名:");scanf("%s",w.number);q=head;}else{q=head;strcpy(p->number,w.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)//根据输入的物品名或编号,显示查找到的相应物品信息{system("cls");Goods*head,*p,*q,*k;inti=1;head=Load(mark);q=p=k=head;chars[10];system("cls");while(i==1){printf("请输入需要查找的该分类:");scanf("%s",s);while(q!=NULL){if(strcmp(s,q->categoty)==0)break;q=q->next;printf("|名称|编号|分类|\n");if(q!=NULL){for(;;){if((strcmp(p->categoty,s)==0)&&p!=NULL){printf("|%-10s|%-6s|%-10s|\n",p->name,p->number,p->categoty);}p=p->next;if(p==NULL)i;break;}}}else{printf("您输入的分类不存在,请重新输入!\n");q=k;}}}voidAllSort(char*mark)//根据输入的分类,显示该分类的所有物品信息{system("cls");Goods*head,*p,*q;charb[10];inti=0;head=Load(mark);p=q=head;typedefstructlb{charcategoty[20];structlb*next;lblb*k,*l,*m,*s,*j;k=(lb*)malloc(sizeof(lb));k->next=NULL;l=(lb*)malloc(sizeof(lb));s=(lb*)malloc(sizeof(lb));j=(lb*)malloc(sizeof(lb));s=k;l=k;if(head==NULL){printf("不存在任何物品!\n");}else{while(p!=NULL){while(l->next!=NULL){j=l->next;if(strcmp(j->categoty,p->categoty)==0){p=p->next;}elsel=l->next;}m=(lb*)malloc(sizeof(lb));strcpy(b,p->categoty);strcpy(m->categoty,b);m->next=k->next;k->next=m;k=m;l=s;p=p->next;}}printf("物品各分类数目:\n");while(s->next!=NULL){printf("%s:",s->next->categoty);strcpy(b,s->next->categoty);while(q!=NULL){if(strcmp(b,q->categoty)==0)q=q->next;if(q==NULL){printf("%d\n",i);i=0;q=head;}s=s->next;}}intatoi(constchar*s)//把字符窜转换成整型数{inta,b,c,d;a=strlen(s);c=s[a-2]-'0';b=s[a-1]-'0';d=c*10+b;returnd;}voidSearchTime(char*mark)//根据输入的时间,查询过期或3月内将过期的物品信息{system("cls");chart[9],t1[5],t2[7],t3[9],t4[5],t5[7],t6[9];inta1,a2,a3,a4,a5,a6;intx,y,z,n,m;Goods*p;system("cls");printf("输入要查找的时间:");scanf("%s",t);memcpy(t1,t,4);memcpy(t2,t,6);memcpy(t3,t,8);t1[4]='\0';t2[6]='\0';t3[8]='\0';a1=atoi(t1);a2=atoi(t2);a3=atoi(t3);p=Load(mark);if(p==NULL){printf("你尚未存储任何物品信息!\n");}else{printf("|名称|编号|价格|分类|生产日期|过期时间|\n");while(p!=NULL){memcpy(t4,p->EXP,4);memcpy(t5,p->EXP,6);memcpy(t6,p->EXP,8);t4[4]='\0';t5[6]='\0';t6[8]='\0';a4=atoi(t4);a5=atoi(t5);a6=atoi(t6);if(a1>a4){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}else{if(a1==a4){x=a2-a5;if(x>=-2){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}else{if(x==-3){y=a3+30;z=y-a6;if(z>=0){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}}}}else{n=a4-a1;if(n==1){m=a5-12;if((m+a2)<=2){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->categoty,p->MFG,p->EXP);}else{if((m+a2)==3){if(a6<=a3){printf("|%-10s|%-6s|%-6s|%-10s|%-9s|%-9s|\n",p->name,p->number,p->price,p->cate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快速写离婚协议书
- 情侣搞笑协议书
- 意外无责任协议书
- 房屋共名协议书
- 房屋继承的协议书
- 房租更改协议书
- 打架过失协议书
- 承包农家乐协议书
- 新生儿黄疸全攻略
- 2026年4月自考03424动画史试题及答案
- 河南《12系列建筑标准设计图集》目录
- (2023修订版)中国电信应急通信岗位认证考试题库大全-单选题部分
- GB/T 17989.3-2020控制图第3部分:验收控制图
- 高分子化工概述
- 光谱电化学课件
- 燃料供应预警及应急预案(终版)
- 《落花生》-完整版课件
- DB62-T 4536-2022核技术利用单位辐射事故应急演练基本规范
- 满堂支架拆除技术交底
- DF4内燃机车电路图
- 机动车排放检测方法内部审批程序
评论
0/150
提交评论