




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京化工大学北方学院课程设计报告课程名称 数据结构课程设计 设计题目 超市管理信息系统的设计与实现 专业、班级 计科0803 学 号 姓 名 指导教师 设计时间 2011.8.292011.9.16 2011年 9 月 16 日一、 引言(简要说明设计题目的目的、意义、内容、主要任务等)超市管理信息系统的设计与实现(顺序表)(1)货物信息包括:货物号(char num3)、货物名(char name9)、货物类别(char type6)、价格(float money)(2)模块要求:第一个模块主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 第二个模块menu()的功能
2、是:显示提示选单。 第三个模块quit()的功能是:退出选单。 第四个模块create()的功能是:创建新的货物,货物号,货物名,货物类别,价格。 第五个模块add()的功能是:添加货物的信息,并返回选单。 第六个模块find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 第七个模块alter()的功能是:修改某货物的信息,如果未找到要修改的货物,则提示超市中没有此货物的信息,并返回选单。 第八个模块delete()的功能是:删除某货物的信息,如果未找到要删除的货物,则提示超市中没有此货物的信息,并返回选单。 第九个模块list(
3、)的功能是:显示超市中的所有记录。 除了总的要求外,还需计算低于20块钱的货物总数,并输出日用品类的详细信息。21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是连锁超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市努力追求的目标。超市信息管理的出现大大提高超市的运作效率。通过全面的信息采集和处理,辅助提高超市的决策水平。使用本系统,可以迅速提升超市的管理水平,为降低经营成本, 提高效
4、益,增强超市扩张能力, 提供有效的技术保障二、 正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)本系统应具有以下功能:超市信息管理系统浏览货物信息货物数据管理修改添加删除文件管理打开关闭保存查询数据输入数据排序数据1、 文件操作功能 文件操作:可建立、打开、保存、关闭数据文件。如果是新建的文件,可输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、商品价格等。2、数据输入
5、功能输入进货信息:输入商品编号、数量完成进货操作。输入销售信息:输入商品编号、数量完成销售操作,注意当销售数量大于商品数量时,应出现错误提示。3、 数据添加、修改、删除功能添加:添加一种或多种新商品,并能输入其商品信息。修改:修改商品信息,可包括商品编号、名称、种类、数量和单价。删除:删除一类或多类商品的所有信息。4、 计算功能 可通过查询商品信息功能,自动统计单价小于20元的货物信息。5、 查询功能 可分别按商品编号、名称、类别和需要进货的商品进行查询。6、 排序功能 可分别按商品编号、名称、类别等进行排序。7、 数据显示功能 可分别浏览输入、查询和排序后的商品信息。各功能模块的设计根据划分
6、的功能模块,定义以下函数实现各功能:(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)1、 主函数main()定义主函数为空类型(void);利用选择结构(switch)实现在在主函数中的调用各个子函数,利用goto 和子函数中的return语句实现返回主菜单的循环。声明各个子函数输出欢迎界面输出菜单switch(m)1输入商品信息2排序商品信息3增加/删除商品4修改商品信息5查询商品信息6浏览商品信息7保存商品信息清屏幕2、 子函数(1) void input():确定新的库存量n,输入商品信息,用for循环语句直到输入商品种类等于n,结束输入;scanf(n)for(i
7、=0;i=n;i+) 将数据存入结构体成员return(2) void sequence():对已有的商品进行排序,可按商品编号、名称、类别进行排序;long temp; char p130,p230;按编号排序for(k=0;kn-1;k+);for(i=0;igoodsi+1.num) 是 排序输出排序后结果按名称排序for(k=0;kn-1;k+) for(i=0;i0) 是 排序输出排序后结果按类别排序for(k=0;kn-1;k+) for(i=0;i0) 是 排序输出排序后结果(3) void edit():因为在进货函数已经实现对已有商品的数量的增加,此模块函数主要实现对新商品的
8、添加或对旧商品的删除,并自动处理数据,可以在浏览中输出,用选择语句switch进行俩者操作的选择:定义变量long temp; 声明函数void add(); void dele();switch(k) k=1 k=2 add(); dele(); break; break;(4) void correct():对有错误信息商品进行修改,输入需要修改的商品编号,用for 循环与if语句找到此商品,重新输入该商品的新信息,并输出: long temp; scanf(temp); for(i=0;in;i+)if(temp=goodsi.num)输入新信息 for(i=0;in;i+) 输出修改后
9、商品信息(5) void search():用switch(k)语句可分别按商品编号、名称、类别或需要进货商品查询;每个case选择中均用for语句查找要查询的商品,并输出查询结果。 long temp1;char temp220,temp320; switch(k) case(k) 输出查询商品信息(6) void scan():可分别进行浏览输入的商品信息、查询的商品信息、排序后商品信息,用switch 进行这三种方式的选择。 scnaf ( ) switch(k) case for(i=0;in;i+) 输出所要浏览信息; break;(7)void reserve():建立文件file
10、 *fp;char file15用来存放文件保存路径以及文件名,进行清屏,输入文件路径及文件名,利用fp=fopen(file,w+)实现创建并打开一个文件,并得到该文件的地址的功能,显示fprintf(fp,商品编号t商品名 t商品类别t商品数量t商品价格n); 最后输出已保存文件,程序中是由pr(商品编号t商品名 t商品类别t商品数量t商品价格n);语句执行。scanf(n)for(i=0;i=n;i+) 将数据存入结构体成员return部分模块代码实现菜单选择页面pr(nttt 货物信息管理系统tnn);pr(t 1 输入货物信息n); pr(t 2 排序货物信息n); pr(t 3 修
11、改货物信息ttn); pr(t 4 查询货物信息ttn); pr(t 5 增加/删除货物ttn); pr(t 6 浏览货物信息ttn); pr(t 7 单价低于20元的货物数量以及日用品信息n); pr(t 8 保存货物信息ttn); pr( tt *); pr(nn); pr(t请选择您所要的操作(或选择(0)退出):); sc(%d,&k); system(cls);输入货物信息模块代码:void input() pr(n 请输入需要建立新库存的货物种类数量:); sc(%d,&n); system(cls); pr(n n); for(i=0;in;i+) /*用循环实现输入n个货物*/
12、 pr(nt*请输入货物的编号:); sc(%ld,&goodsi.num); pr(nt 请输入货物的名称:); sc(%s,); pr(nt 请输入货物的种类:); sc(%s,goodsi.sort); pr(nt 请输入货物的数量:); sc(%d,&goodsi.count); pr(nt 请输入货物的单价:); sc(%d,&goodsi.money);排序模块代码:void sequence() /*功能2:排序货物信息*/ long temp; char p130,p230; for(k=0;kn-1;k+) /*(1): 按编号排序*/ for(i=0;
13、igoodsi+1.num) /*按编号由小到大排序*/ temp=goodsi.num; goodsi.num=goodsi+1.num; goodsi+1.num=temp; strcpy(p1,); strcpy(,goodsi+1.name); strcpy(goodsi+1.name,p1); strcpy(p2,goodsi.sort); strcpy(goodsi.sort,goodsi+1.sort); strcpy(goodsi+1.sort,p2); pr(-); pr(ntt按货物编号排序后的货物信息nn); pr(t货物编号
14、货物名称 货物类别 货物数量 货物单价n); /*输出排序后货物信息*/ for(i=0;in;i+) pr(t %5ld %5s %5s %5ld %5ldn,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); for(k=0;kn-1;k+) /*(2): 按货物名称排序*/ for(i=0;i0) strcpy(p1,); strcpy(,goodsi+1.name); strcpy(goodsi+1.name,p1); temp=goodsi.num; goodsi.n
15、um=goodsi+1.num; goodsi+1.num=temp; strcpy(p2,goodsi.sort); strcpy(goodsi.sort,goodsi+1.sort); strcpy(goodsi+1.sort,p2); pr(-); pr(ntt按货物名称排序后的货物信息n); pr(nt货物名称 货物编号 货物类别 货物数量 货物单价n); /*输出排序后货物信息*/ for(i=0;in;i+) pr(t %5s %5ld %5s %5ld %5ldn,,goodsi.num,goodsi.sort,goodsi.count,goodsi.mon
16、ey); for(k=0;kn-1;k+) /*(3): 按货物类别排序*/ for(i=0;i0) strcpy(p2,goodsi.sort); strcpy(goodsi.sort,goodsi+1.sort); strcpy(goodsi+1.sort,p2); temp=goodsi.num; goodsi.num=goodsi+1.num; goodsi+1.num=temp; strcpy(p1,); strcpy(,goodsi+1.name); strcpy(goodsi+1.name,p1); pr(-); pr(ntt按货物类别
17、排序后的货物信息nn); pr(t货物类别 货物编号 货物名称 货物数量 货物单价n); /*输出排序后货物信息*/ for(i=0;in;i+) pr(t %5s %5ld %5s %5ld %5ldn,goodsi.sort,goodsi.num,,goodsi.count,goodsi.money); 添加货物模块代码:void add() /*添加货物信息*/ /*定义子函数*/ pr(t*请输入所添加货物的货物编号:); sc(%ld,&goodsn.num); pr(nt请输入所添加货物的名称:); sc(%s,); pr(nt请输入所添
18、加货物的类别:); sc(%s,goodsn.sort); pr(nt请输入所添加货物的数量:); sc(%d,&goodsn.count); pr(nt请输入所添加货物的价格:); sc(%d,&goodsn.money); n=n+1; pr(n); 删除信息模块代码: void dele() /*删除货物信息*/ /*定义子函数*/ int temp; /*定义局部变量*/ int j; for(i=0;in;i+) pr(nt货物编号 货物名 货物类别 货物数量 货物价格); pr(nt %5ld %5s %5s %5ld %5ld,goodsi.num,,goo
19、dsi.sort,goodsi.count,goodsi.money); pr(n); pr(n); pr(n*请输入要删除的货物编号:); sc(%ld,&temp); pr(nn); for(i=0;in;i+) if(temp=goodsi.num) for(j=i;jn;j+) goodsj.num=goodsj+1.num; strcpy(,goodsj+1.name); strcpy(goodsj.sort,goodsj+1.sort); goodsj.count=goodsj+1.count; goodsj.money=goodsj+1.money; n=n
20、-1; /*货物总库存量减少*/ for(i=0;in;i+) pr(nt货物编号 货物名 货物类别 货物数量 货物价格); /*输出删除后的货物信息*/ pr(nt %5ld %5s %5s %5ld %5ld,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); pr(n); pr(please press any key to continue:); getch(); return; /*返回主界面*/ 修改模块代码void correct() /*修改货物信息*/ long temp; /*定义局部变量*/pr(n
21、t请输入要修改的货物的编号:); sc(%ld,&temp); /*输入新的货物信息*/pr(n);for(i=0;in;i+) /*保存新的货物信息*/ if(temp=goodsi.num) pr(t请输入一个新的的货物编号:); sc(%ld,&goodsi.num); pr(nt请输入新的货物的名称:); sc(%s,); pr(nt请输入新的货物的类别:); sc(%s,goodsi.sort); pr(nt请输入新的货物的数量:); sc(%d,&goodsi.count); pr(nt请输入新的货物价格:); sc(%d,&goodsi.money); pr
22、(n); for(i=0;in;i+) pr(nt新的货物名称 货物编号 货物类别 货物数量 货物单价n); pr(t %4s %4ld %4s %4ld %4ld,,goodsi.num,goodsi.sort,goodsi.count,goodsi.money); pr(n); pr(please press any key to continue:); /*返回功能选择界面*/ getch(); return; /*返回主菜单*/查询货物信息模块代码: void search() /*查询货物信息*/ int k; /*定义局部变量*/ long temp1; ch
23、ar temp230,temp320; pr(nt5按货物编号查询,请按1ttt5按货物名查询,请按2nt5按货物类别查询,请按3 n); pr(nnnttt请输入数字确定查询方式:); sc(%d,&k); pr(n); pr(press any key to continue:); getch(); system(cls); switch(k) /*实现查询方式的选择*/ case 1: pr(nnnnntt请输入要查询的货物的编号:); /*按货物编号查询*/ sc(%ld,&temp1); system(cls); /*清屏*/ for(i=0;in;i+) if(temp1=good
24、si.num) pr(n); pr(nt货物编号 货物名 货物类别 货物数量 货物价格); pr(nt %5ld %5s %5s %5ld %5ld,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); break; /*跳出switch语句*/ case 2: pr(nnnnntt请输入要查询的货物名:); /*按货物名查询数据*/ sc(%s,temp2); system(cls); for(i=0;in;i+) if(strcmp(temp2,)=0) pr(n); pr(nt货物编号 货物名
25、货物类别 货物数量 货物价格); pr(nt %5ld %5s %5s %5ld %5ld,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); break; /*跳出switch语句*/ case 3: pr(nnnnntt请输入要查询的货物类别:); /*按货物类别查询数据*/ sc(%s,temp3); system(cls); for(i=0;in;i+) if(strcmp(temp3,goodsi.sort)=0) pr(n); pr(nt货物编号 货物名 货物类别 货物数量 货物价格); pr(nt %5ld
26、 %5s %5s %5ld %5ld,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); break; /*跳出switch语句*/ pr(nnttpress any key to enter menu:); getch(); return; /*返回主界面*/ 浏览货物信息模块代码:void scan() /*浏览货物信息*/ pr(nt浏览输入的货物信息,请按1nnt浏览查询的货物信息,请按2nnt浏览排序后货物信息,请按3n);pr(请选择:);sc(%d,&k); switch(k) case 1: pr(ttt
27、浏览输入的货物信息n); pr(t货物编号 货物名 货物类别 货物数量 货物价格n);/*输出浏览货物信息*/ for(i=0;in;i+) pr(t%5ld %5s %5s %5ld %ld,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); pr(n); pr(press any key to enter menu:); getch(); return; break; /*跳出switch语句*/ case 2: pr(ttt浏览查询的货物信息n); pr(t货物编号 货物名 货物类别 货物数量 货物价格n);/*输
28、出浏览货物信息*/ for(i=0;in;i+) pr(t%5ld %5s %5s %5ld %ld,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); pr(n); pr(npress any key to enter menu:); getch(); return; break; /*跳出switch语句*/ case 3: pr(ttt浏览按货物编号排序的货物信息n); pr(t货物编号 货物名 货物类别 货物数量 货物价格n);/*输出浏览货物信息*/ for(i=0;in;i+) pr(t%5ld %5s %5
29、s %5ld %ld,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); pr(n); pr(npress any key to enter menu:); getch(); return; /*返回主界面*/ break; /*跳出switch语句*/ 文件保存模块代码:void reserve() /*保存文件*/ file *fp;char file15; /*用来存放文件保存路径以及文件名*/ system(cls); /*清屏*/ pr(nt*请输入文件路径及文件名:); sc(%s,file); fp=fopen(file,w+); /*创建并打开一个文件,并得到该文件的地址*/ fprintf(fp,货物编号t货物名 t货物类别t货物数量t货物价格n); pr(货物编号t货物名 t 货物类别t 货物数量t 货物价格n); for(i=0;in;i+) fprintf(fp,%ldtt%stt%stt%dtt%dn,goodsi.num,,goodsi.sort,goodsi.count,goodsi.money); pr(%ldtt%stt%stt%dtt%dn,goodsi.num,,goodsi.sort,goodsi.count,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论