超市总营业额分析程序.docx
- 文档编号:26075658
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:21
- 大小:131.33KB
超市总营业额分析程序.docx
《超市总营业额分析程序.docx》由会员分享,可在线阅读,更多相关《超市总营业额分析程序.docx(21页珍藏版)》请在冰豆网上搜索。
超市总营业额分析程序
课程设计
题目:
超市购物系统
一、课程设计时间
2011~2012第2学期第16周,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
1超市的商品保存在file37中;
2进货:
可以添加商品信息;
3卖出商品;该商品数量减少:
4统计一天的销售额:
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
用户界面中的菜单至少应包括显示商品信息、购物、统计等项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
五、说明书成绩
六、教师评语
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为5个模块,其中每一个模块对应一个函数,他们的功能分别是:
录入并保存超市商品信息函数(add),添加商品信息函数(putin),顾客购买商品函数(que),超市商品信息查询函数(show),商品销售额的统计函数(sum)。
1、录入并保存超市商品信息函数主要实现程序最初运行时商品信息的录入;
2、添加商品信息函数主要实现程序运行中商品信息的添加;
3、顾客购买商品函数实现的功能是按照商品号码对商品的数据记录进行删除;
4、超市商品信息查询函数允许按照商品号对超市的各种商品信息进行查询;
5、商品销售额查询可以直接查看当日的销售额:
每一个商品记录都包含号码,名称,数量,价格。
在程序当中,将商品记录类型定义为结构体类型,添加以及追加的商品信息直接写入D盘的file37.dat文件中,其他函数每次对商品记录的访问,其数据来源都是file37.dat文件,这样做不但可以保证商品数据的一致性,而且可以对商品数据进行永久保存,保证每次运行程序都可以采用原来的数据,用一个数据库来存储所有数据,保证数据不会丢失。
二、程序流程图
1、程序总体结构图
地时间
图1程序总体结构图
2、具体功能框图
(1)录入商品数据信息函数add
图2录入商品数据函数
(2)读取商品信息数据reads
读写方式打开file37.dat不成功?
真假
读出记录总数赋给*n
循环变量i=0
Return当i<=n时
读出一条商品信息数据给形参数
数组stu[i]
商品信息写入文件i++
图3读取商品信息数据
(3)顾客买商品函数que
Read(stu,&n)
循环变量i=0,输入待购买的商品号码
当i<=n-1时
真Stu[i]与number相等?
假
Breaki++
i>=n?
真假
j=i+1
当j 数组元素信息依次前移j++ 输入该商品信息不存在写方式打开文件file37.dat 假不成功? 真 i=0显示打开文件失败 当i<=n-2 记录写回文件 i++return 关闭文件 图4顾客买商品函数 二、程序流程图 录入并保存超市商品信息 添加商品信息 购买商品 显示 统计商品销售额 四、技术要点 本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。 在这些函数当中,录入超市商品信息函数,添加信息函数,购买商品函数是程序中较为核心的部分,下面分别进行说明。 1、录入并保存超市商品信息函数 添加数据分为两种情况,其一是在创建文件(file37.dat)不存在的情况下,首先由程序创建一个新文件,并将录入的商品信息写入该文件当中;其二是在创建文件(file37.dat)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。 具体的程序段如下: voidadd()/*添加商品信息*/ {FILE*fp; intn,i,j; structtextsup; if((fp=fopen("e: \\file37.dat","rb+"))! =NULL) {j=getw(fp); rewind(fp); printf("请输入要添加的商品种数,按回车键确认: "); scanf("%d",&n); putw(j,fp); putw(i,fp); fseek(fp,0L,2); for(i=1;i<=n;i++) {printf("\n请输入第%d个商品的号码,名称,数量用空格分开,并按回车键确认: \n",i); scanf("%s%s%d",sup.num,sup.name,&sup.n1); } } else { if((fp=fopen("e: \\text.dat","wb"))! =NULL) { printf("请输入要添加的商品数量,按回车键确认: "); scanf("%d",&n); putw(n,fp); for(i=1;i<=n;i++) {printf("\n请输入第%d个商品的号码,名称,数量用空格分开,并按回车键确认: \n",i); scanf("%s%s%d",sup.num,sup.name,&sup.n1); fwrite(&sup,sizeof(structtext),1,fp); } } } fclose(fp); } 2、添加商品信息函数 该函数的核心内容是添加算法以及最终对源文件的更新。 该函数执行时,首先调用reads函数将文件中的商品信息读入数组当中,并由用户输入待添加商品的号码,而后按照该学号进行查找,采用添加方法进行添加。 对商品信息的具体添加算法是在结构体数组中实现的。 在数组中添加商品信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。 具体程序段如下: voidputin() { FILE*fp; structtextstu[N],sup; intn,i; reads(stu,&n); printf("\n请输入要更改信息的商品的号码,按回车键确认: "); scanf("%s",sup.num); reads(stu,&n); for(i=0;i if(strcmp(sup.num,stu[i].num)==0) break; if(i>=n) {printf("无此商品信息! "); return; } printf("商品的数量: "); scanf("%d",&sup.n1); stu[i].n1+=sup.n1; if((fp=fopen("e: \\file37.dat","wb"))==NULL) {printf("打开文件失败! "); return; } putw(n,fp); for(i=0;i fwrite(&stu[i],sizeof(structtext),1,fp); fclose(fp); } 3、购买商品函数 该函数的核心内容是删除算法以及最终对源文件的更新。 该函数执行时,首先调用reads函数将文件中的商品信息读入数组当中,并由用户输入待删除商品的号码,而后按照该商品编号进行查找,采用删除算法删除。 对商品信息的具体删除算法是在结构体数组中实现的,当商品的信息被找到后,位于数组中该商品后面的商品记录依次向前移动一个元素的位置,这些操作完成后,要删除的商品信息就被后面的数组元素覆盖掉了,也就实现了删除。 在数组中删除学生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。 具体程序段如下: voidque() { FILE*fp; structtextstu[N],sup; intn,i; reads(stu,&n); printf("\n请输入要购买的商品的号码,按回车键确认: "); scanf("%s",sup.num); reads(stu,&n); for(i=0;i if(strcmp(sup.num,stu[i].num)==0) break; if(i>=n) {printf("无此商品信息! "); return; } printf("商品的数量: "); scanf("%d",&sup.n1); stu[i].n1-=sup.n1; if((fp=fopen("e: \\file37.dat","wb"))==NULL) {printf("打开文件失败! "); return; } putw(n,fp); for(i=0;i fwrite(&stu[i],sizeof(structtext),1,fp); fclose(fp); } 4、显示函数 显示函数是在商品经过进货和售出后能对商品进行最后的统计,该函数的中心就是能通过循环语句把每一项商品的编号、名称、数量、价格清晰地表示出来,当选择好对应菜单的序号后,由初始值i=0开始循环,直到当i>=n时会把文件里所有的信息都显示出来,完成这个函数。 voidshow()/*列出商品信息*/ {structtextsup[N]; inti,n; reads(sup,&n); if(n==0) return; printf("*****************现商品所有的信息如下*****************"); for(i=0;i printf("\n商品编号: %s\n名称: %s\n数量: %d\n价格: %d\n",sup[i].num,sup[i].name,sup[i].n1,sup[i].n2); getchar(); } 5,统计商品销售额函数 利用求和原理,将销售量与商品价格做乘法运算 voidsum()/*统计销售额*/ { structtextsup[N]; inti,n,s=0,f; reads(sup,&n); if(n==0) return; for(i=0;i { f=sup[i].n2*sup[i].n3; s+=f; } printf("总销售额为: %d\n",s); getchar(); } 五、个人总结 通过这次C语言的课设,对我以后的学习很有帮助,我为它付出了很多,有很多东西在老师的帮助下,我终于搞懂了,我很兴奋,C语言我们是大一学的,时隔一年,我忘记了很多,但这不是理由,最后我还是收获了很多,,最后我的程序都修改好了,要求中的功能也都可以实现了,这是在老师,同学的帮助下一起完成的.感谢在这一星期里老师同学对我耐心指导,使我受益颇深! 六、参考文献 1谭浩强.C程序设计.北京: 清华大学出版社,2005 七、源程序 #include #include #include #defineN20 structtext {charnum[20];/*商品编号*/ charname[10];/*商品名字*/ intn1;/*商品数量*/ intn2;/*商品价格*/ intn3;/*销售量*/ }; voidsum(); voidmenu(); voidadd(); voidputin(); voidque(); voidshow(); voidreads(structtextsup[N],int*n); main() { intn; while (1) { menu(); printf("\n请输入您要选择的操作序号,按回车键确认: "); scanf("%d",&n); switch(n) { case1: add();break; case2: putin();break; case3: que();break; case4: show();break; case5: sum();break; case6: return0; default: printf("输入错误,请输入列表中存在的序号! \n"); } } } voidmenu() {printf("*************************某超市售货系统************************"); printf("\n1录入该超市所有商品信息"); printf("\n2进货添加"); printf("\n3顾客购置商品"); printf("\n4列出现商品所有的信息"); printf("\n5统计销售额"); printf("\n6退出"); } voidreads(structtextsup[N],int*n) { FILE*fp; inti=0; if((fp=fopen("d: \\file37.dat","rb"))==NULL) {printf("文件打开失败! \n"); return; } else { *n=getw(fp); for(i=0;i<*n;i++) fread(&sup[i],sizeof(structtext),1,fp); } fclose(fp); } voidadd()/*添加商品信息*/ { FILE*fp; intn,i,j; structtextsup; if((fp=fopen("d: \\file37.dat","rb+"))! =NULL) { j=getw(fp); rewind(fp); printf("请输入要添加的商品种类数,按回车ok键确认: "); scanf("%d",&n); i=j+n; putw(i,fp); fseek(fp,0L,2); for(i=1;i<=n;i++) { printf("\n请输入第%d个商品的号码,名称,数量,价格用空格分开,并按回车键确认: \n",i); scanf("%s%s%d%d",&sup.num,sup.name,&sup.n1,&sup.n2); sup.n3=0;/*销售量置零*/ fwrite(&sup,sizeof(structtext),1,fp); } } else { if((fp=fopen("d: \\file37.dat","wb"))! =NULL) { printf("请输入要添加的商品数量,按回车键确认: "); scanf("%d",&n); putw(n,fp);/*监控商品种类*/ for(i=1;i<=n;i++) {printf("\n请输入第%d个商品的号码,名称,数量,价格用空格分开,并按回车键确认: \n",i); scanf("%s%s%d%d",sup.num,sup.name,&sup.n1,&sup.n2); sup.n3=0;/*销售量置零*/ fwrite(&sup,sizeof(structtext),1,fp); } } } fclose(fp); } voidshow()/*列出商品信息*/ {structtextsup[N]; inti,n; reads(sup,&n); if(n==0) return; printf("*****************现商品所有的信息如下*****************"); for(i=0;i printf("\n商品编号: %s\n名称: %s\n数量: %d\n价格: %d\n",sup[i].num,sup[i].name,sup[i].n1,sup[i].n2); getchar(); } voidputin()/*进货添加*/ { FILE*fp; structtextstu[N],sup; intn,i; reads(stu,&n); printf("\n请输入要更改信息的商品的号码,按回车键确认: "); scanf("%s",sup.num); for(i=0;i if(strcmp(sup.num,stu[i].num)==0) break; if(i>=n) {printf("无此商品信息! "); return; } printf("添加商品的数量: "); scanf("%d",&sup.n1); stu[i].n1+=sup.n1; if((fp=fopen("d: \\file37.dat","wb"))==NULL) {printf("打开文件失败! "); return; } putw(n,fp); for(i=0;i fwrite(&stu[i],sizeof(structtext),1,fp);/**/ fclose(fp); } voidque()/*顾客购置商品*/ { FILE*fp; structtextstu[N],sup; intn,i; reads(stu,&n); printf("\n请输入要购买的商品的号码,按回车键确认: "); scanf("%s",sup.num); reads(stu,&n); for(i=0;i if(strcmp(sup.num,stu[i].num)==0) break; if(i>=n) {printf("无此商品信息! "); return; } printf("购买商品的数量? : "); scanf("%d",&sup.n1); stu[i].n1-=sup.n1; stu[i].n3+=sup.n1; if((fp=fopen("d: \\file37.dat","wb"))==NULL) {printf("打开文件失败! "); return; } putw(n,fp); for(i=0;i fwrite(&stu[i],sizeof(structtext),1,fp); fclose(fp); } voidsum()/*统计销售额*/ { structtextsup[N]; inti,n,s=0,f; reads(sup,&n); if(n==0) return; for(i=0;i { f=sup[i].n2*sup[i].n3; s+=f; } printf("总销售额为: %d\n",s); getchar(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 营业额 分析 程序