超市购物系统-C语言课程设计

上传人:仙*** 文档编号:116740849 上传时间:2022-07-06 格式:DOC 页数:22 大小:180KB
收藏 版权申诉 举报 下载
超市购物系统-C语言课程设计_第1页
第1页 / 共22页
超市购物系统-C语言课程设计_第2页
第2页 / 共22页
超市购物系统-C语言课程设计_第3页
第3页 / 共22页
资源描述:

《超市购物系统-C语言课程设计》由会员分享,可在线阅读,更多相关《超市购物系统-C语言课程设计(22页珍藏版)》请在装配图网上搜索。

1、沈 阳 航 空 航 天 大 学 课程设计学 号2010041102037班 级 04110201姓 名 张俊峰指导教师 郭建新2012年 6 月 21 日沈阳航空工业学院课程设计任务书院系:材料科学与工程学院 专业:材料成型及控制工程 班级:04110201学号:2010041102037 题目:超市购物系统一、课程设计时间20112012第2学期第16周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:1超市的商品保存在file37中;2进货:可以添加商品信息; 3卖出商品;该商品数量减少:4 统计一天的销售额:三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。

2、用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括显示商品信息、购物、统计等项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语 目录一、需求分析1二、程序流程图2二、程序流程图6四、技术要点8五、个人总结13六、参考文献13七、源程序14 一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为5个模块,其中每一个模块对应一个函数,他们的功能分别是:录入并保存超市商品信息函数(add),

3、添加商品信息函数(putin),顾客购买商品函数(que),超市商品信息查询函数(show),商品销售额的统计函数(sum)。1、录入并保存超市商品信息函数 主要实现程序最初运行时商品信息的录入;2、添加商品信息函数 主要实现程序运行中商品信息的添加;3、顾客购买商品函数 实现的功能是按照商品号码对商品的数据记录进行删除;4、超市商品信息查询函数 允许按照商品号对超市的各种商品信息进行查询;5、商品销售额查询 可以直接查看当日的销售额:每一个商品记录都包含号码,名称,数量,价格。在程序当中,将商品记录类型定义为结构体类型,添加以及追加的商品信息直接写入D盘的file37.dat文件中,其他函数

4、每次对商品记录的访问,其数据来源都是file37.dat文件,这样做不但可以保证商品数据的一致性,而且可以对商品数据进行永久保存,保证每次运行程序都可以采用原来的数据,用一个数据库来存储所有数据,保证数据不会丢失。二、程序流程图1、程序总体结构图 n=5?统计(sum) 退出真 n=4? 购买商品函数(que) n=3? 真 添加商品函数void putin() 假 n=2? 真 假 显示函数void show() 输入值n=1?真 假 录入信息函数void add() 当(1) 地时间图1程序总体结构图2、具体功能框图(1)录入商品数据信息函数add真 读写方式打开文件file37.dat不

5、成功? 假 写方式打开文件file37.dat 输入增加的商品数量n 真 不成功? 假 从文件中读出商品数量赋给j 输入商品数量 输出文件打开失败 文件位置指针重回开头rewind 将n写入文件 商品记录总数n+j写入文件Return 循环变量i=1 文件位置指针定义在结尾fseek 当i=n时 循环变量i=1 输入号码名称数量 当i=1时 信息写入文件i+ 输入商品信息 写入文件 i+ 关闭文件 图2 录入商品数据函数(2)读取商品信息数据reads 读写方式打开file37.dat不成功?真 假 读出记录总数赋给*n 循环变量i=0 Return 当i=n时 读出一条商品信息数据给形参数

6、数组stui 商品信息写入文件 i+图3读取商品信息数据(3)顾客买商品函数que Read(stu,&n) 循环变量i=0,输入待购买的商品号码当i=n?真 假 j=i+1 当jn 数组元素信息依次前移j+输入该商品信息不存在 写方式打开文件file37.dat 假 不成功? 真 i=0 显示打开文件失败 当i=n-2 记录写回文件 i+ return 关闭文件 图4顾客买商品函数二、程序流程图录入并保存超市商品信息添加商品信息购买商品显示统计商品销售额四、技术要点本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,录入超市商品

7、信息函数,添加信息函数,购买商品函数是程序中较为核心的部分,下面分别进行说明。1、录入并保存超市商品信息函数 添加数据分为两种情况,其一是在创建文件(file37.dat)不存在的情况下,首先由程序创建一个新文件,并将录入的商品信息写入该文件当中;其二是在创建文件(file37.dat)已经存在的情况下,此时文件要以读写方式或追加的方式打开,这样才可以保证以前已经存在的数据不丢失。具体的程序段如下:void add()/*添加商品信息*/FILE *fp; int n,i,j; struct text sup; if(fp=fopen(e:file37.dat,rb+)!=NULL) j=ge

8、tw(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); f

9、or(i=1;i=n;i+) printf(n请输入第%d个商品的号码,名称,数量用空格分开,并按回车键确认:n,i); scanf(%s%s%d,sup.num,sup.name,&sup.n1); fwrite(&sup,sizeof(struct text),1,fp); fclose(fp); 2、添加商品信息函数该函数的核心内容是添加算法以及最终对源文件的更新。该函数执行时,首先调用reads函数将文件中的商品信息读入数组当中,并由用户输入待添加商品的号码,而后按照该学号进行查找,采用添加方法进行添加。对商品信息的具体添加算法是在结构体数组中实现的。在数组中添加商品信息后,还要将更改

10、后的信息重新写回文件当中,以保证数据的一致性。具体程序段如下:void putin() FILE *fp; struct text stuN,sup; int n,i; reads(stu,&n); printf(n请输入要更改信息的商品的号码,按回车键确认:); scanf(%s,sup.num); reads(stu,&n); for(i=0;i=n) printf(无此商品信息!); return; printf(商品的数量:);scanf(%d,&sup.n1);stui.n1+=sup.n1;if(fp=fopen(e:file37.dat,wb)=NULL) printf(打开文件

11、失败!); return; putw(n,fp); for(i=0;in;i+) fwrite(&stui,sizeof(struct text),1,fp); fclose(fp); 3、购买商品函数该函数的核心内容是删除算法以及最终对源文件的更新。该函数执行时,首先调用reads函数将文件中的商品信息读入数组当中,并由用户输入待删除商品的号码,而后按照该商品编号进行查找,采用删除算法删除。对商品信息的具体删除算法是在结构体数组中实现的,当商品的信息被找到后,位于数组中该商品后面的商品记录依次向前移动一个元素的位置,这些操作完成后,要删除的商品信息就被后面的数组元素覆盖掉了,也就实现了删除。

12、在数组中删除学生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。具体程序段如下:void que() FILE *fp; struct text stuN,sup; int n,i; reads(stu,&n); printf(n请输入要购买的商品的号码,按回车键确认:); scanf(%s,sup.num); reads(stu,&n); for(i=0;i=n) printf(无此商品信息!); return; printf(商品的数量:);scanf(%d,&sup.n1);stui.n1-=sup.n1;if(fp=fopen(e:file37.dat,wb)=NULL

13、) printf(打开文件失败!); return; putw(n,fp); for(i=0;i=n时会把文件里所有的信息都显示出来,完成这个函数。void show()/*列出商品信息*/struct text supN; int i,n; reads(sup,&n); if(n=0) return; printf( *现商品所有的信息如下*); for(i=0;in;i+) printf(n 商品编号:%sn名称:%sn数量:%dn价格:%dn,supi.num,supi.name,supi.n1,supi.n2); getchar();5,统计商品销售额函数 利用求和原理,将销售量与商品

14、价格做乘法运算void sum()/*统计销售额*/struct text supN; int i,n,s=0,f; reads(sup,&n); if(n=0) return; for(i=0;in;i+) f=supi.n2*supi.n3;s+=f; printf(总销售额为:%dn,s); getchar();五、个人总结通过这次C语言的课设,对我以后的学习很有帮助,我为它付出了很多,有很多东西在老师的帮助下,我终于搞懂了,我很兴奋,C语言我们是大一学的,时隔一年,我忘记了很多,但这不是理由,最后我还是收获了很多,最后我的程序都修改好了,要求中的功能也都可以实现了,这是在老师,同学的帮

15、助下一起完成的.感谢在这一星期里老师同学对我耐心指导,使我受益颇深!六、参考文献1 谭浩强C程序设计北京:清华大学出版社,2005七、源程序#include#include#include#define N 20struct textchar num20;/*商品编号*/ char name10;/*商品名字*/int n1;/*商品数量*/ int n2;/*商品价格*/ int n3;/*销售量*/;void sum();void menu();void add();void putin();void que();void show();void reads(struct text sup

16、N,int *n);main() int n; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n) case 1: add();break; case 2: putin();break; case 3: que();break;case 4: show();break;case 5: sum();break;case 6: return 0;default: printf(输入错误,请输入列表中存在的序号!n ); void menu()printf( * 某超市售货系统* ); printf(n 1

17、 录入该超市所有商品信息); printf(n 2 进货添加); printf(n 3 顾客购置商品); printf(n 4 列出现商品所有的信息); printf(n 5 统计销售额); printf(n 6 退出);void reads(struct text supN,int *n) FILE *fp; int i=0; if(fp=fopen(d:file37.dat,rb)=NULL) printf(文件打开失败!n); return; else *n=getw(fp); for(i=0;i*n;i+) fread(&supi,sizeof(struct text),1,fp);

18、fclose(fp);void add()/*添加商品信息*/FILE *fp;int n,i,j; struct text sup; 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

19、,&sup.n1,&sup.n2);sup.n3=0;/*销售量置零*/fwrite(&sup,sizeof(struct text),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.

20、n3=0;/*销售量置零*/ fwrite(&sup,sizeof(struct text),1,fp); fclose(fp);void show()/*列出商品信息*/struct text supN; int i,n; reads(sup,&n); if(n=0) return; printf( *现商品所有的信息如下*); for(i=0;in;i+) printf(n 商品编号:%sn名称:%sn数量:%dn价格:%dn,supi.num,supi.name,supi.n1,supi.n2); getchar();void putin()/*进货添加*/ FILE *fp; stru

21、ct text stuN,sup; int n,i; reads(stu,&n); printf(n请输入要更改信息的商品的号码,按回车键确认:); scanf(%s,sup.num); for(i=0;i=n) printf(无此商品信息!); return; printf(添加商品的数量:);scanf(%d,&sup.n1);stui.n1+=sup.n1;if(fp=fopen(d:file37.dat,wb)=NULL) printf(打开文件失败!); return; putw(n,fp); for(i=0;in;i+) fwrite(&stui,sizeof(struct tex

22、t),1,fp);/*/ fclose(fp); void que()/*顾客购置商品*/ FILE *fp; struct text stuN,sup; int n,i; reads(stu,&n); printf(n请输入要购买的商品的号码,按回车键确认:); scanf(%s,sup.num); reads(stu,&n); for(i=0;i=n) printf(无此商品信息!); return; printf(购买商品的数量?:);scanf(%d,&sup.n1);stui.n1-=sup.n1;stui.n3+=sup.n1;if(fp=fopen(d:file37.dat,wb)=NULL) printf(打开文件失败!); return; putw(n,fp); for(i=0;in;i+) fwrite(&stui,sizeof(struct text),1,fp); fclose(fp); void sum()/*统计销售额*/struct text supN; int i,n,s=0,f; reads(sup,&n); if(n=0) return; for(i=0;in;i+) f=supi.n2*supi.n3;s+=f; printf(总销售额为:%dn,s); getchar();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!