




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
66/66湖北汽车工业学院电气与信息工程学院
《C语言程序设计》课设报告
项目:商品销售治理 班级: 姓名: 成绩:
一、需求分析1、问题依照需求,该系统所应包含的信息有以下一些:商品的差不多信息:商品编号,商品名称,商品产地,商品库存。顾客的差不多信息:顾客代码,购买数量,销售日期依照需求,该系统所应实现的功能有以下一些:各种差不多数据的录入。如:销售差不多信息录入。基于各种数据的查询。例如输入张三姓名,查询顾客张三的销售信息。数据导出:将销售中信息导出到指定文件。2、系统采纳C语言实现,开发环境为VC,能够运行在操作系统windows98及以上皆可。3、运行要求能不受限制的录入销售信息界面友好,操作方便,例如删除前需要提示用户是否删除容错性强,例如数据导出时,假如文件不存在需要提示用户。二、总体设计1、系统流程设计依照系统要求,设计如下的系统流程2、系统模块设计依照系统的功能设计,如下模块销售系统销售系统输入顾客购买物资的信息并保存依照产品编号查询产品的销售历史计算时刻段内各个产品的销售总额依照顾客姓名查询购买历史显示所有顾客的姓名读入物资当前库存信息并显示主界面模块:完成系统菜单的显示功能选择模块:依照用户的选择,完成其相应的功能。商品信息录入:完成用户从文件读入库存信息。销售信息录入:完成用户从界面输入销售信息。依照编号查询历史:完成用户从界面输入商品编号,在系统查询符合条件的销售信息,并在界面上显示的功能。依照顾客查询历史:完成用户从界面输入顾客姓名,查询该客户的购买历史。显示顾客姓名:完成用户从界面查看所有顾客姓名。三、详细设计1、数据结构设计依照系统要求,系统中需要保存的数据有商品,销售和顾客的信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注产品编号num整型4产品名称name字符串20产品价格price浮点型4产品产地prodplace字符串40产品库存amount整型4初始1000由于明白商品有10种,则采纳结构体数组来保存商品信息使用C语言创建的结构体(和结构体数组)如下:structproduction_list{ intnum; charname[20]; floatprice; charprodplace[40]; intamount;}production[10];为了能实现不受限制的保存和查看销售信息,采纳链表的结构保存销售的信息,在增加销售的差不多信息时,创建一个销售的节点,将其插入到链表中,其数据结构如下:数据项名称数据项系统表示数据类型数据长度备注顾客代码num整型4顾客姓名name字符型10产品名称pro_name字符型20销售数量amount整型4销售日期time字符型10使用C语言创建的结构体如下:structsell_information{intnum; charname[10]; charpro_name[20]; intamount;chartime[10]; structsell_information*next;}; 2、界面设计主界面:依照系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消逝,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。读入产品信息界面:在光标下输入销售的信息,用空格将信息隔开销售界面:输入销售信息,保存在链表中。依照产品编号查询产品销售历史界面:计算各个时段的销售额界面:输入起始时刻和终止时刻计算销售额依照顾客姓名查询购买历史界面:输入顾客姓名,即导出顾客购买信息。顾客姓名显示:选择该功能将显示所有顾客姓名3、模块实现主界面实现:主函数中用printf("\t\t***************T1023-9徐孟玲*******************\t\t”);printf("\t\t***************T1023-9徐孟玲*******************\t\t”);printf("\t\t*\t1.读入产品当前库存信息并显示*\n\n");printf("\t\t*\t2.键盘输入顾客购买产品的信息并保存*\n\n");printf("\t\t*\t3.依照产品编号查询产品销售历史*\n\n");printf("\t\t*\t4.计算各时刻段产品销售总额*\n\n");printf("\t\t*\t5.依照顾客姓名查询购买历史*\n\n");printf("\t\t*\t6.显示所有顾客姓名*\n\n");printf("\t\t*\t7.显示当前仓库信息*\n\n");printf("\t\t*\t0.退出查询系统*\n\n");printf("\t\t***********************************************\n");printf("\n\n");printf("\t\t请输入你的选择:");实现。scanf("%d",&choice);printf("\n*****************************************\n");switch(choice){case1:system("cls");Readdata();break;case2:system("cls");head=sell(head);break;case3:system("cls");getshopingdata(head);break;case4:system("cls");sell_total(head);break;case5:system("cls");getnamedata(head);break;case6:system("cls");list_custome(head);break;case7:system("cls");list_store();break;进行功能选择。定义新节点打印主界面定义新节点打印主界面选择功能实现各个功能退出程序对应函数:voidmain()读入产品当前库存模块实现:模块讲明:从文件中读取差不多写好的产品信息,存入数组production[10]模块流程:打开产品信息文件打开产品信息文件数据写入相应成员关闭文件回主菜单i<10假真对应函数:voidReaddata()键盘输入顾客购买产品的信息模块实现:模块讲明:从键盘按提示输入销售信息,同时存入链表中,在输入的时候调用推断函数来推断输入数据的合法性,以确保数据存储的正确性。模块流程:代入头结点代入头结点存入结点回主菜单flag假真键入销售信息continue真假对应函数:structsell_information*sell(structsell_information*head)推断输入信息模块实现:模块讲明:对输入的数据进行合法性推断,若不合法,提示用户重新输入模块流程:代入销售信息代入销售信息推断编号推断日期推断每月的天数推断闰年全真有假flag=1flag=0返回flag推断库存对应函数:intDateAmountProname(structsell_information*p)推断编号模块:模块讲明:对销售功能中输入的编号与productin[10].num进行对比,假如存在,返回1,不存在则返回0。编号存入a[10]i=0编号存入a[10]i=0回主菜单i<10假真c=strcmp(a,production[i].namec真假flag=1flag=0对应函数:intjudge_proname(char*p)推断库存量模块:模块讲明:对当期仓库信息进行推断,若超出库存量返回0,否则返回1。库存量存入a[10]库存量存入a[10]i=0回主菜单i<10假真c=strcmp(a,production[i].namec真假flag=1flag=0对应函数:intjugde_amount(intamount,char*p)推断日期模块:模块讲明:把日期的年月日进行分不推断,还有对每个月,以及闰年对二月的阻碍等做出相应的推断。年月日分不存入all_year,all_month,all_day年月日分不存入all_year,all_month,all_day回主菜单all_month=1,3,5,7,8,10,12假真all_day<=31all_month=2真假all_day<=28all_day<=30all_year闰年all_day<=29真假flag=1flag=0真假对应函数:intJudge_date(char*p)intNumberDay(intComplete_year,intComplete_month,intComplete_day)intIsleapyear(intyear)依照产品编号查询产品销售历史模块:模块讲明:输入产品编号,查看该产品销售的历史信息,若商品存在会显示相应信息,若不存在则会提示出错。模块流程:输入客户姓名打销售信息输入客户姓名打销售信息存在真假返回主菜单输入产品编号打印产品信息存在真假返回主菜单对应函数:voidgetshopingdata(structsell_information*head)依照顾客姓名查询购买历史模块:模块讲明:输入产顾客姓名,查看该顾客的购买历史信息,若鼓了存在会显示相应信息,若不存在则会提示出错。模块流程:对应函数:voidgetnamedata(structsell_information*head)计算各时刻段产品销售总额模块:模块讲明:输入需要查询总额的时刻起始点和终止点,计算这段时刻销售的总额。模块流程:sum=0sum=0输入起始日期和终止日期查找符合日期的节点sum+=对应商品销售量*价格输出sum返回主菜单对应函数:voidgetnamedata(structsell_information*head)显示所有顾客姓名模块:sum=0sum=0输入起始日期和终止日期查找符合日期的节点sum+=对应商品销售量*价格输出sum返回主菜单四、测试结果1、录入销售测试测试数据:输入小样湖北汽车工业学院8241470测试结果:程序运行出现错误,如下缘故电话输入的长度超过了电话表示的长度测试数据:输入张吴波湖北汽车工业学院试结果:程序运行正常,正确的插入到链表的最后位置测试数据:输入:张吴波湖北汽车工业学院8241470425测试结果:程序运行不正常,能够将张吴波湖北汽车工业学院,8241470插入到链表的最后位置,然而425不能保存缘故:使用了scanf(“%s”),将空格作为截止符2、修改销售测试测试数据:在系统中存在4个名称为li的销售测试结果:输入修改的姓名li,显示了第一个姓名为li的销售信息,输入修改后的信息:张吴波湖北汽车工业学第一个姓名为li的销售修改成功测试数据:在系统中不存在名称为张三的销售,输入后,提示姓名不存在,如下图3、导入销售测试测试数据:输入C:\dd.tst路径(系统中不存在该文件)测试结果:提示不能打开文件,不能导入回车后程序结束缘故:不能打开文件文件使用了exit函数测试数据:输入C:\data.txt路径(系统中该文件,格式符合程序要求)测试结果:提示能将文件中的数据正确导入data.txt的文件内容如下:1212lixing88888zhangxxx1222zhouyi88999lixing88888zhangxxx1222zhouyi88999lixing88888zhangxxx1222zhouyi88999lixing88888zhangxxx1222zhouyi88999测试数据:输入C:\data1.txt路径(系统中该文件,格式不符合程序要求)测试结果:提示能将文件中的数据正确导入,但导入的数据不正确查询结果,数据未正确导入data1.txt文件内容如下:lixingzhangxxx1222lixingzhangxxx1222zhouyizhouccccccc88999查询模块测试:略删除模块测试略五、实训总结:实训感想对系统开发的总结(设计亮点,存在的不足,需要改进的地点)(略)六、附录程序源代码//头文件#include<stdio.h>#include<stdlib.h>#include<string.h>structproduction_list{ intnum; charname[20]; floatprice; charprodplace[40]; intamount; }production[10];structtime{ intyear; intmonth; intday; }ymd;structsell_information{ charname[10]; charpro_name[20]; intamount;chartime[10];/*(2009-01-02)*/ structsell_information*next;/*链表指针指向下一个*/ };voidReaddata();structsell_information*sell(structsell_information*head);voidgetnamedata(structsell_information*head);voidgetshopingdata(structsell_information*head);intn[10]={1000,1000,1000,1000,1000,1000,1000,1000,1000,1000};intDateAmountProname(structsell_information*p);/*1.读入物资当前库存信息并显示*/voidReaddata(){ FILE*fp;inti=0; if((fp=fopen("productionsinformation.txt","r"))==NULL) { printf("文件打开错误!\n"); exit(0); } while(i<10) { fscanf(fp,"%6d%s%f%s%d",&production[i].num,production[i].name,&production[i].price,production[i].prodplace,&production[i].amount); printf("%6d\t\t%s\t\t%6.2f\t\t%s\t\t%6d\n",production[i].num,production[i].name,production[i].price,production[i].prodplace,production[i].amount); i++; }; printf("\n"); if(fclose(fp)) { printf("!\n"); exit(0); }}/*2.键盘输入顾客购买物资的信息并保存*/structsell_information*sell(structsell_information*head){structsell_information*p1,*p2,*p3;intn; intm; do{ if(head->next!=NULL) { p1=(structsell_information*)malloc(sizeof(structsell_information)); p3=head->next;head->next=p1; p1->next=p3; } else { p3=p1=p2=(structsell_information*)malloc(sizeof(structsell_information)); head->next=p1;p2->next=NULL; } do { printf("\t\t\t\t请输入顾客信息:\n"); printf("*******************************************************************************\n"); printf("请输入顾客姓名\t:"); scanf("%s",&p1->name);printf("请输入顾客所购物资名称\t:"); scanf("%s",p1->pro_name);printf("请输入顾客购物数量:"); scanf("%d",&p1->amount);printf("请输入顾客购物时刻:");scanf("%s",p1->time); printf("\n"); if(DateAmountProname(p1)) { printf("输入正确!请按0接着下面的步骤!\n"); scanf("%d",&n); } else printf("输入错误!请重新输入!"); if(n==0) break; }while(1); printf("*******************************************************************************\n"); printf("假如想停止购买,请按0,假如要接着入库,请按其它数字键\n"); scanf("%d",&m); if(m==0) break; }while(1); returnhead;}/*推断输入信息是否正确*/intDateAmountProname(structsell_information*p){ intJudge_date(char*p); intjudge_proname(char*p); intjugde_amount(amount,pro_name);if(Judge_date(p->time)&&judge_proname(p->pro_name)&&jugde_amount(p->amount,p->pro_name)) return1; else return0;}/*推断编号*/intjudge_proname(char*p){ inti=0,flag; chara[10]; while(*p) a[i++]=*p++;a[i]=0;for(i=0;i<10;i++){if(strcmp(a,production[i].name)==0) {flag=1;break; } } if(i==10) flag=0; returnflag;}intjugde_amount(intamount,char*p){inti=0; intflag; chara[10]; while(*p) a[i++]=*p++;a[i]=0; for(i=0;i<10;i++) if(strcmp(a,production[i].name)==0) {flag=1; n[i]-=amount;break; } if(n[i]>0) return1; else return0;}/*推断日期是否合法*/intJudge_date(char*p){inti=0;chars[5];charm[3];charn[3]; intNumberDay(intComplete_year,intComplete_month,intComplete_day); intall_year; intall_month; intall_day; chardate[10]; while(*p) date[i++]=*p++;date[i]=0;if(i==10&&date[4]=='-'&&date[7]=='-'){for(i=0;i<4;i++) {s[i]=date[i]; } s[i]=0;all_year=atoi(s);/*把前4位保存到年里*/for(i=5;i<7;i++) {m[i-5]=date[i]; } m[i-5]=0;all_month=atoi(m);/*把第5-7位转化保存到月成员中*/ for(i=8;i<10;i++) {n[i-8]=date[i]; } n[i-8]=0;all_day=atoi(n);/*把后两位保存到日成员中*/ }else{printf("日期格式有误请从新输入!!!\n");return0;} if(NumberDay(all_year,all_month,all_day))return1;else {printf("输入的天数或年份或月份有误请从来!!!\n");return0; }}/*功能:推断每月的天数是否合法*/intNumberDay(intComplete_year,intComplete_month,intComplete_day){ intIsleapyear(intyear);/*推断闰年函数*/intt[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*定义数组*/ if(Isleapyear(Complete_year)) { if(Complete_month!=2) { if(Complete_month<=12&&Complete_day<=t[Complete_month]) return1; else return0; } else { if(Complete_month<=12&&Complete_day<=t[Complete_month]+1) return1; else return0; } } else { if(Complete_month<=12&&Complete_day<=t[Complete_month]) return1; else return0; }}/*功能:推断闰年*/intIsleapyear(intyear){intleap;leap=((year%4==0&&year%100!=0)||year%400==0);/*闰年条件*/returnleap;}/*3.依照产品编号查询物资销售历史*/voidgetshopingdata(structsell_information*head){intnumber; chars[20]; charpro_name[20]="a"; char*b=pro_name; intJudge_proname(intp,char*); structsell_information*p1=head; printf("请输入产品编号:"); scanf("%d",&number); if(Judge_proname(number,b)) { strcpy(s,pro_name); printf("该代号产品的名称是:%s",s); p1->next; } elseprintf("产品代号不存在!"); while(p1!=NULL)/*链表的遍历过程*/ { if(strcmp(s,p1->pro_name)==0) { printf("**********************************************\n"); printf("\t\t\t\t顾客购买信息为\n"); printf("顾客姓名:产品名称:购物数量:购物时刻:\n");printf("%-10s%-20s%-10d%-10s\n",p1->name,p1->pro_name,p1->amount,p1->time); printf("**********************************************\n"); } else printf("产品未出售,没有销售记录!"); p1=p1->next; }}intJudge_proname(intp,char*b){inti; intflag=0;for(i=0;i<10;i++){if(production[i].num==p) { flag=1; strcpy(b,production[i].name);break; } } returnflag;}/*4.计算各时刻段产品销售总额*/voidsell_total(structsell_information*head){structsell_information*p1=head;ints_year,s_month,s_day,e_year,e_month,e_day,i,j;chars[5];charm[3];charn[3];intall_year;intall_month;intall_day;chardate[10];floatsum=0;printf("请输入起始日期:"); scanf("%d-%d-%d",&s_year,&s_month,&s_day);printf("请输入终止日期:"); scanf("%d-%d-%d",&e_year,&e_month,&e_day);while(p1!=NULL)/*链表的遍历过程*/ { for(i=0;i<10;i++)date[i]=p1->time[i]; for(i=0;i<4;i++) {s[i]=date[i]; } s[i]=0;all_year=atoi(s);/*把前4位保存到年里*/for(i=5;i<7;i++) {m[i-5]=date[i]; } m[i-5]=0;all_month=atoi(m);/*把第5-7位转化保存到月成员中*/ for(i=8;i<10;i++) {n[i-8]=date[i]; } n[i-8]=0;all_day=atoi(n);/*把后两位保存到日成员中*/ if(all_year>s_year&&all_year<e_year||all_year<s_year&&all_year==e_year&&all_month<e_month||all_year==s_year&&all_year<e_year&&all_month>s_month||all_year==s_year&&all_year==e_year&&all_month>s_month&&all_month<e_month||all_year==s_year&&all_year==e_year&&all_month<e_month&&all_month==s_month&&all_day>s_day||all_year==s_year&&all_year==e_year&&all_month==e_month&&all_month>s_month&&all_day<e_day||all_year==s_year&&all_year==e_year&&all_month==e_month&&all_month==s_month&&all_day>=s_day&&all_day<=e_day) for(j=0;j<10;j++) if(strcmp(production[j].name,p1->pro_name)==0)sum+=p1->amount*production[j].price; p1=p1->next; }if(sum==0)printf("那个时刻段没有销售记录!\n");elseprintf("那个时刻段的销售总额为%.0f",sum);}/*5.依照顾客姓名查询购买历史*/voidgetnamedata(structsell_information*head){ charname[10]; intcount=0; structsell_information*p2=head; printf("请输入顾客姓名:"); scanf("%s",&name); while(p2!=NULL) { if(strcmp(na
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络直播平台主播跨界合作与独家经纪管理协议
- 2025年中国半胱氨酸及其盐酸盐行业市场前景预测及投资价值评估分析报告
- 文化创意产业园区股权合作与产业园区可持续发展协议
- 智能物流仓储管理系统数据备份及应急处理合同
- 高效工业自动化软件授权及培训服务协议
- 影视剧群众演员化妆间租赁及化妆师服务协议
- 物流仓储货架安装与物流信息系统对接合同
- 抖音平台用户隐私保护与数据安全合作协议
- 2025年中国八氟戊醇行业市场规模及投资前景预测分析报告
- 2025年中国按摩机器人行业市场前景预测及投资价值评估分析报告
- 燃气公司月度安全生产检查表
- 护理科研课题申请书
- 行政执法实务讲课课件PPT
- DB43∕T 604-2010 日用炻瓷-行业标准
- 《品牌策划与管理(第4版)》知识点与关键词解释
- 国家开放大学《水利水电工程造价管理》形考任务1-4参考答案
- 司法局PPT模板
- 轴直线滑台设计毕业论文
- 泄爆墙施工方案1
- FC西游记后传金手指
- 饱和蒸汽、过热蒸汽压力与温度、密度对照表
评论
0/150
提交评论