c++课程设计报告商品销售统计程序.doc

上传人:仙人指路1688 文档编号:2384490 上传时间:2023-02-17 格式:DOC 页数:38 大小:195KB
返回 下载 相关 举报
c++课程设计报告商品销售统计程序.doc_第1页
第1页 / 共38页
c++课程设计报告商品销售统计程序.doc_第2页
第2页 / 共38页
c++课程设计报告商品销售统计程序.doc_第3页
第3页 / 共38页
c++课程设计报告商品销售统计程序.doc_第4页
第4页 / 共38页
c++课程设计报告商品销售统计程序.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《c++课程设计报告商品销售统计程序.doc》由会员分享,可在线阅读,更多相关《c++课程设计报告商品销售统计程序.doc(38页珍藏版)》请在三一办公上搜索。

1、 信息科学与技术学院程序设计基础课程设计报告题目名称: 商 品 销 售 统 计 学生姓名: 000 学 号: 2012508107 专业班级: 000 指导教师: 000 2013年 3 月 9 日目录目录21 课程设计题目与要求31.1设计题目31.2设计要求32总体设计43 详细设计53.1 主界面流程图53.2清除内存中的商品函数63.3增加商品信息73.4删除商品信息的过程83.5修改商品信息的过程113.6查询商品的过程:133.7统计商品的过程153.8显示商品过程174 运行结果184.1运行结果截图185 总 结216编程中的问题及解决方法227心得体会238程序设计方法249

2、程序运行环境259.1 软件环境259.2 硬件环境2510参考文献26附源代码271 课程设计题目与要求1.1设计题目商品销售统计程序。1.2设计要求商品销售统计问题描述编写商品销售统计程序,商品的信息有:商品的名称,计量单位(重量或件),单价。所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。客户一次购物可能购买多种商品,程序应计算出客户应付的钱款数。基本要求程序分为两个部分:第一部分用于输入商品的信息并允许修改和删除;第二部分实现销售统计。程序运行时由用户选择进入哪一部分功能,并能在运行时在两部分之间切换。第二部分

3、运行时,首先显示所有商品名称及代码(商品数目较多时,应考虑分屏显示),用户输入商品代码及商品重量或件数,用户一次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如-1)表示本次购物结束。此时,程序计算出应付钱款数并显示。测试数据程序应输入不少于10种商品的信息,并进行模拟运行。实现提示本程序的商品信息可用一个结构体数组或链表进行管理。至少要有文本菜单实现。2总体设计商品销售统计系统设计商品信息管理商品销售商品信息录入商品信息修改商品信息保存商品信息显示商品买入3 详细设计3.1 主界面流程图设计超市管理系统的主界面,主界面相应的现实有下列菜单:增加商品、删除商品、修改商品、查询商品、统计

4、商品、显示商品、退出。超市管理系统商品类超市类查询商品统计商品修改商品增加商品删除商品显示商品找到是否开始结束3.1主界面流程图3.2清除内存中的商品函数 在超市管理系统中,商品出售出去,库存中的商品信息必须清除。 类外定义一个函数clear,在函数中定义一个指针p,讲物品goods赋给p,为了使函数能够不断地清除内存中的数据,要使指针移动,首先将p-next赋予goods ,然后删除p中的数据,清空p中的数据,然后将goods赋给p,依次循环,从而实现删除库存中的一个或多个商品。 开始定义指针goods赋值p给p将p的next赋值给goods删除p中的数据goods赋值给p是否有需要删除的商

5、品结束YESNO图3.2清除内存商品流程图3.3增加商品信息 类外定义一个函数add,首先在函数中定义变量商品代码 num 和商品数量count,都为double类型 ,商品名name和产地address为char类型 ,价格price 为int类型,首先要求用户输入商品信息,依次输入商品的代码、商品名称、商品产地、商品单价,判断单价是否在065535之间,如果不在范围内重新输入直到在范围之内再继续向下面执行,输入商品库存量,库存在099999之间,如果超出范围重新输入,在范围之内继续执行,保存数据。开始定义变量输入商品代码名称产地输入商品价格( 065535 )输入商品库存(099999)保

6、存NoNoYesYes图3.3 增加商品流程图3.4删除商品信息的过程(1)在Supermarket类下定义一个Delete函数作为删除商品信息的函数,然后定义商品名,输入商品信息。(2)查找要删除的结点(节点中包含所有该商品的信息:商品代码、名称、产地、数量、单价),分别定义两个指针,原商品表信息指针p1和输入的商品信息指针p2,在p1循环的过程中比较输入的商品名与原有的商品名是否一致,如果一致则结束本次循环,否则p2指向p1,使得两指针同化,p1指针接着指向下一指针,这样依次向后查询。(3)删除结点,如果找到要删除的结点则删除,在这个条件下,如果删除的结点是第一个结点,则继续将指针后移删除

7、第一结点,如果删除的结点是后续结点,则将p2下一指针指向p1下一指针,则删除相应的后续结点。输出的结果是:找到并删除或者sorry,未找到!流程图如图3.5查找要删除的结点定义指针p1 p2比较输入商品名和商品表已知商品名是否一致是否找到结点继续向后查找 p2=p1;p1=p1-next是否为第一结点找到则删除成功查找后续结点是是是否否否开始结束图3.5 删除商品流程图3.5修改商品信息的过程(1)定义各参数变量的类型,然后是输入要查找等待修改的商品名称(2)查找要修改的结点,定义p1、p2指针,p1为指向goods商品表指针,p2为输入的商品指针,判断p1指针,如果输入的商品名和原有的商品名

8、一致,则结束本次循环,否则,p1和p2指针同化,p1接着指向p1的下一指针。(3)修改结点,若找到相应的要修改的结点,则p1指向Output函数,接着输出要修改的信息,利用Switch语句来调用相应的修改信息。(4)创建新商品的结点,把原来要修改的结点删除并重新替换要创建的商品结点。如果找到等待修改的结点则修改,否则保持商品表信息不变。流程图如图3.6输入要查的商品名查找要修改的结点比较输入商品名和商品表已知商品名是否一致是否找到第一结点继续向后查找 p2=p1;p1=p1-next继续查找后续结点删除并替换是是否否是否开始结束图3.6 修改商品流程图 3.6查询商品的过程:(1)在Super

9、market类下定义一个Query函数作为查询商品信息的函数,输入商品名。(2)查找要查询的结点(结点中包含所有该商品的信息:商品代码、名称、产地、数量、单价),定义一个原商品表信息指针p1,在p1循环的过程中比较 输入的商品名与原有的商品名是否一致,如果一致则结束本次循环,否则 p1指针接着指向下一指针,这样依次向后查询。(3)查询结点,如果找到要查询的结点则输出:查询成功并输出其所有信息,若没有找到输出:sorry未找到!流程图如图3.7定义指针p1 比较输入商品名和商品表已知商品名是否一致是否找到商品继续向后查找 p1=p1-next是是否否输入要查询商品的名字开始结束 图3.7查询商品

10、流程图3.7统计商品的过程(1)是在Supermarket类下定义一个Add_up函数作为统计商品信息的函数,然后定义两个double型变量Amount和Value分别表示要求统计商品的总量和总价值,输入商品名字name。(2)查找要统计的结点(结点中包含所有该商品的信息:商品代码、名称、产地、数量、单价),定义一个指针p1,原商品表信息指针p1,在p1循环的过程中比较输入的商品名与原有的商品名是否一致,如果一致则结束本次循环,p1指针接着指向下一指针,这样依次向后查询。没找到则输出:sorry,未找到!(3)统计商品,每当找到一个商品后就将Amount与p1所指count相加存入Amount

11、,并将此时p1所指的count与price相乘再加上Value存入Value,循环查找相加,最后分别输出。流程图如图3.8 开始查找要统计的结点定义指针p1 比较输入商品名和商品表已知商品名是否一致是否找到结点继续向后查找 p1=p1-next是是否否否Amount+=p1-count;Value+=p1-count*p1-price Value+=p1-count*p1-price从当前指针p1输出结束图3.8 统计商品流程图3.8显示商品过程(1)是在Supermarket类下定义一个Out函数作为显示商品信息的函数。(2)将goods的首地址给p1,判断p1是否为空,若空则输出“没有商品

12、”。否则输出该商品所有信息(商品代码、名称、产地、数量、单价)等。(3)将p1赋给p2,p1-next赋给p1,进入循环,输出下一个商品信息。流程图如图4.9定义数据P=goods是否有商品输出该商品信息指针移向下一个商品输出没有商品否是开始图3.9 显示商品流程图4 运行结果4.1运行结果截图4.1.1软件进入界面4.1.2商品添加4.1.2商品查询信息4.1.3商品销售4.1.4商品删除5 总 结通过这次实践,我们成功的实现了数据的输入与保存,并在程序中实现了使用类对各个学生的各参数的基本操作。该系统的难点在于不使用任何数据库,只使用磁盘文件来实现对每个学生的信息的存储和读取。虽然测试的学

13、生的信息条数不够多,但是题目的要求是完全能够达到的,在现有的基础上只要稍加修改就能够满足批量数据的存储和查阅。要想增加更多学生信息,只要增加相应的对象的属性即可,前提是在拥有相似的属性的时候。若有不同的属性,可以增加相应的类就可满足需求。其中重要的是打开文件,保存文件,也就是对数据的妥善的存储和再次的调用的操作。本次的课程设计对我们也是一个很好的实践的机会,锻炼了自己,提高了自己编程的能力,为今后的项目打好基础。6编程中的问题及解决方法(1) 录入数据难以保存,通过参考一系列的指导书得以解决。(2) 对于预处理函数的概念不清楚,在同学的讲解下,自己才能得以明白。(3) 对于切换界面的方法不是特

14、别理解,通过参考大量的资料,找到了解决方法。7心得体会。a) 对于程序设计有了新的认识,一个好的程序员必须要对程序整体有足够的认识,才能够写出一个完美的程序。b) 要想对每一个代码熟悉,只有不停的实验和不停的变形不同的程序来检验它的作用,正如“实验室检验真理的唯一标准”。同样的对于编程也是如此。c) 熟悉程序是怎样运行的,每一个函数调用的目的、每一个函数的作用和功能。具体是怎样执行的,这些问题都必须弄得透彻。 8程序设计方法根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述

15、(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。9程序运行环境9.1 软件环境操作系统: Windows 98/2000/XP/7(推荐使用Windows XP)调试环境: Visual C+及以上版本。9.2 硬件环境处理器:CPU主频在500MHz以上 内存:128MB以上硬盘空间:10MB。 10参考文献1C+面向对象程序设计(第一版) 谭浩强 北京:清华大学出版社 2006年1月 2C程序设计 (第三版) 谭浩强 北京:清华大学出版社2005年7月 附源代码#include #includ

16、e #include #include using namespace std;ofstream outfile,outfile1,outfile2,outfile3,outfile4,outfile5,outfile6,outfile7,outfile8,outfile9;ifstream infile,infile1,infile2,infile3,infile4,infile5,infile6,infile7,infile8,infile9;void yh();/收货员登录void mmyz();/校对密码void xs();/登录void js();/销售void jscx();/销售

17、查询void tscx();/商品查询void zlsr();/商品输入void zlxg();/商品修改void zlcx();/商品查询void xsly();/备注void zlgl();/商品管理void xsgm();/密码修改void ggck();/优惠信息void gl();/经理void ts();/商品管理void tscg();/经理商品查询void sc();/商品删除void zlcg();/商品经理查询void jscg();/销售经理查询void tsz();/商品增加void tss();/商品删除void tsg();/商品更改void tcb();/商品按编

18、号查询void tcm();/商品按名称查询void tcz();/商品按日期查询void tcl();/商品按种类查询int mun=0;int jsjl=0;/销售商品个数记录int skjl=0;/商品商品个数记录int xsjl=0;/商品个数记录int zhjl=0;/账号记录string gg10;/公告struct tsbgstring mc;string zz;double jg;string zl;string czzt;double sl;bg10;int jszh10;struct zhbgint zh;string mm;zh10;struct xszlint xszh

19、;string mz;string xb;string nl;string xy;string zy;string bj;xl10;int xszh;void main()yh();void yh()/收货员登录登录cout1 经理登录endl; cout2 登录endl; cout0 结束a; if(a=1)gl(); if(a=2)mmyz();void gl()/经理cout1 商品管理endl; cout2 商品查询endl; cout3 商品删除a;if(a=1)ts();/商品管理if(a=2)tscx();/商品查询if(a=3)tss();/商品删除void ts()/商品管理

20、cout1 增加商品endl; cout2 删除商品endl; cout3 更改商品a; if(a=1)tsz(); if(a=2)tss(); if(a=3)tsg();void tsz()/商品增加ifstream infile;infile.open(skjl.xls,ios:in);infileskjl;skjl=skjl+1;infile.close(); coutbgmun.mc; coutbgmun.zz; coutbgmun.jg;cout操作成功endl;void tss()/商品删除ifstream infile;infile.open(sk.xls,ios:in);for

21、(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.sl;infile.close();int a;cout请输入要删除商品的编号a;cout商品已删除,操作成功endlskjl;skjl=skjl-1;infile1.close();ofstream outfile;outfile.open(skjl.xls,ios:out);outfileskjl;outfile.close();outfile1.open(sk.xls,ios:out);for(mun=0;muna;mun+) outfile1 bgmun.mc bgmun.zz bgmun.

22、jg bgmun.zl bgmun.sl endl;for(mun=a+1;mun=skjl;mun+) outfile1 bgmun.mc bgmun.zz bgmun.jg bgmun.zl bgmun.sl endl; outfile1.close();void tsg()/商品更改ifstream infile;infile.open(sk.xls,ios:in);for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.sl;infile.close();cout请输入要更改的商品编号mun;mun=mun+1;infile1.open(s

23、kjl.xls,ios:in);infile1skjl;infile1.close();coutbgmun.mc;coutbgmun.zz;coutbgmun.jg;coutbgmun.zl;coutbgmun.sl;ofstream outfile;outfile1.open(sk.xls,ios:out);for(mun=0;munskjl;mun+)outfile1 bgmun.mc bgmun.zz bgmun.jg bgmun.zl bgmun.sl endl;outfile.close();void tscg()/商品查询(经理)cout按书号查询endl; cout按名称查询a;

24、 if(a=1)tcb();/商品按编号查询 if(a=2)tcm();/商品按名称查询 if(a=3)tcz();/商品按日期查询 if(a=0)gl();/返回void tscx()/商品查询()cout1.按商品查询endl; cout2.按名称查询endl; cout3.返回a; if(a=1)tcb();/商品按编号查询 if(a=2)tcm();/商品按名称查询 if(a=0)xs();/返回void tcb()/商品按编号查询infile.open(sk.xls,ios:in);for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.

25、sl;infile.close();string a;cout请输入商品编号a;for(mun=0;mun10;mun+)cout商品编号: mun 商品名称: bgmun.mc 商品日期: bgmun.zz 商品价格: bgmun.jg 商品种类: bgmun.zl 商品数量: bgmun.sl0)cout在架endl;else cout商品已售出endl;void tcm()/商品按名称查询infile.open(sk.xls,ios:in);for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.sl;infile.close();strin

26、g a;cout请输入商品名称a;for(mun=0;mun10;mun+)if(a=bgmun.mc)cout商品编号: mun 商品名称: bgmun.mc 商品日期: bgmun.zz 商品价格: bgmun.jg 商品种类: bgmun.zl 商品数量: bgmun.sl0)cout在架endl;else cout商品已售出endl;void tcz()/商品按日期查询infile.open(sk.xls,ios:in);for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.sl;infile.close();string a;cout请

27、输入商品日期a;for(mun=0;mun10;mun+)if(a=bgmun.zz)cout商品编号: mun 商品名称: bgmun.mc 商品日期: bgmun.zz 商品价格: bgmun.jg 商品种类: bgmun.zl 商品数量: bgmun.sl0)cout在架endl;else cout商品已售出endl;void tcl()/商品按种类查询infile.open(sk.xls,ios:in);for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.sl;infile.close();string a;cout请输入商品种类a;f

28、or(mun=0;mun10;mun+)if(a=bgmun.zl)cout商品编号: mun 商品名称: bgmun.mc 商品日期: bgmun.zz 商品价格: bgmun.jg 商品种类: bgmun.zl 商品数量: bgmun.sl0)cout在架endl;else cout商品已售出endl;void mmyz()/校对密码ifstream outfile;infile1.open(xszh.xls,ios:in); for(mun=0;munzhmun.zhzhmun.mm;infile1.close();int a;string b;cout请输入账号a;cout请输入密码b

29、;for(mun=0;mun10;mun+)if(a=zhmun.zh&b=zhmun.mm)xszh=zhmun.zh;xs();void xs()/登录cout1 销售endl; cout2 商品查询endl; cout0 结束a; if(a=1) js();/销售 if(a=2) tscx();/商品查询 if(a=0) yh();/返回void js()/销售ifstream infile;infile1.open(jsjl.xls,ios:in);infile1jsjl;infile1.close();infile.open(sk.xls,ios:in);for(mun=0;munb

30、gmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.sl;infile.close();infile3.open(skjl.xls,ios:in);infile3skjl;ofstream outfile;outfile.open(js.xls,ios:app);cout请输入商品的名称a;cout单价为:1.2endl;cout销售数量c;cout总价为:c*1.2元endl;for(mun=0;mun0)outfilexszh bgmun.mc bgmun.zz bgmun.jg bgmun.zl endl;jsjl=jsjl+1;outfile1.open(jsjl

31、.xls,ios:out);outfile1jsjl;bgmun.sl=bgmun.sl-1;b=销售成功;coutbendl;outfile.close();outfile1.close();if(b!=销售成功)outfile2.open(sk.xls,ios:out);for(mun=0;munskjl;mun+)outfile2 bgmun.mc bgmun.zz bgmun.jg bgmun.zl bgmun.sl endl;outfile2.close();void hs()/进货ifstream infile;infile5.open(js.xls,ios:in);for(mun

32、=0;munjszhmunbgmun.mcbgmun.zzbgmun.jgbgmun.zl;infile5.close();infile.open(sk.xls,ios:in);for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun.sl;infile.close();infile3.open(skjl.xls,ios:in);infile3skjl;infile3.close();infile1.open(jsjl.xls,ios:in);infile1jsjl;infile1.close();ofstream outfile;outfile.o

33、pen(js.xls,ios:out);cout请输入要还商品的名称a;for(mun=0;mun10;mun+)if(a!=bgmun.mc&xszh=jszhmun)outfilejszhmun bgmun.mc bgmun.zz bgmun.jg bgmun.zl endl;if(a=bgmun.mc)bgmun.sl=bgmun.sl+1;b=进货成功;coutbendl;jsjl=jsjl-1;outfile1.open(jsjl.xls,ios:out);outfile1jsjl;outfile.close();outfile1.close();if(b!=进货成功) cout无此

34、书或商品已借完endl;outfile2.open(sk.xls,ios:out);for(mun=0;munskjl;mun+)outfile2 bgmun.mc bgmun.zz bgmun.jg bgmun.zl bgmun.sl endl;outfile2.close();void xsly()/备注string ly; cout请输入备注ly; ofstream outfile; outfile.open(ly.xls,ios:app); outfilely endl;void zlgl()/商品管理 cout1 填写商品endl; cout2 修改商品endl; cout3 查询商

35、品endl; cout0 返回a; if(a=1) zlsr();/商品输入 if(a=2) zlxg();/商品修改 if(a=3) zlcx();/商品查询 if(a=0) yh();/返回 void zlsr()/商品输入mun=0; ifstream infile; infile.open(xsjl.xls,ios:in); infilexsjl; infile.close(); xlmun.xszh=xszh; coutxlmun.mz; coutxlmun.xb; coutxlmun.nl; coutxlmun.xy; coutxlmun.zy; coutxlmun.bj; ofstream outfile; outfile.open(xszl.xls,ios:app); outfilexlmun.xszh xlmun.mz xlmun.xb xlmun.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号