1、软 件 学 院软件工程专业_ 2012_1_班 一、 课程设计( (论文) )题目_小型商品销售管理系统 _ 二、 课程设计( (论文) )工作自 20132013 年 6 6 月 1717 日起至 20132013 年6月_21_日止。 三、 课程设计( (论文) )地点:软件学院创新大楼 四、 课程设计( (论文) )内容要求: 1 1 本课程设计的目的 1)1)使学生掌握系统各功能模块的基本工作原理; 2)2)掌握C C+ +的基本编程原理和及基本的编程方法; 3)3)使学生学会系统调试; 4)4)培养学生分析、解决问题的能力; 5)5)提高学生的软件文档写作能力。 2 2 课程设计的任
2、务及要求 (1)基本要求: 1.1.分析系统各功能模块的工作原理; 2.2.至少有查找,排序、插入、删除等功能; 3.3.提出系统的设计方案; 4.4.对所进行编程、调试、修改。 (2)创新要求: 在基本要求达到后,可进行创新设计 (3)课程设计论文编写要求 (1 1)要按照书稿的规格打印誊写课设论文 (2 2)论文包括设计目的和要求、设计内容、流程图、程序实现、程序调试、 设计小结、参考文献等 (3 3)毕业论文装订按学校的统一要求完成 (4)答辩与评分标准: 4)4)完成原理分析:2020分; 5)5)完成设计过程:2525分; 6)6)完成调试运行结果正确:4040分; (4 4)答辩:
3、1515分。 5 5)参考文献: (1 1)谭浩强C+C+程序设计实践指导清华大学出版社 (2 2)谭浩强. .C+C+程序设计清华大学出版社 (3 3) http:/http:/ / 6 6)课程设计进度安排 内容天数地点 总体需求与分析构思及收集资料 1 1 图书馆 各模块的编程实现,调试与修改3 3机房 撰写论文与答辩1 1图书馆, 学生签名:_ 2013 年 6 月 17 日课程设计(论文)评审意见 (1 1)完成原理分析(2020分) :优()、良()、中(般()、差(); (2 2)设计分析(2525分) :优()、良()、中()、般()、差(); (3 3)完成调试(2020分)
4、 :优()、良()、中()、般()、差(); (4 4)运行结果(2020分) :优()、良()、中()、般()、差(); (5 5)答辩(1515分):优(、良()、中( )、-般()、差(); (6 6)格式规范性及考勤是否降等级:是()、否() 评阅人签名:_ 职称:讲师 2013 年 6 月 22 日 目录 一:设计目的和要求. 四 二:设计内容.五 三.流程图.八 四:程序实现.九 11程序调试.十六 22设计小结.十九 七:参考文献.十九 :设计目的和要求 设计目的 课程设计的目的是培养应用C+C+面向对象程序设计设计方法 及思想解决实际问题的能力,掌握使用面向对象设计语言C+,C
5、+,熟悉 面向对象开发平台 VisualVisual C+6.0C+6.0,提高调查研究、查阅技术资料以 及编写技 术文献的能力。 设计要求 用 C+C+编写一系统,实现商品销售管理: 1 1) 商品基本信息的键盘录入,删除,修改,磁盘导入和保存; 2 2) 商品库存信息的键盘录入,删除,修改,磁盘导入和保存; A A)输入一个商品编号,能自动搜索并在屏幕上输出商品的库存 信息 B B )输入一个商品编号和新增库存,能更新商品的库存信息。 如商品 001001,输入新增库存 4 4 单位,若商品 001001 原来的库存为 3 3 单位,则 更新其库存为 7 7 单位,并保存至磁盘; 3 3)
6、销售记录的键盘录入和磁盘保存。 要求在输入一条销售记录时,只能手动录入商品编号和销售数 量,其他 相关信息自动生成后,将完整的(包含商品基本信息,价格, 销售数量,销售 金额,销售日期,以及库存数量)销售记录和商品库 存信息在屏幕上输出, 并保存在指定的磁盘文本中,不得覆盖之前的 销售记录和库存信息。 4 4)输入一个销售日期,如 201212,201212,能自动计算出 20122012 年 1212 月份的 商品总销 售额。 二:设计内容 主要类设计 对于整个商品销售管理系统来说,首先,定义个WareWare 类作为基 类: class Ware/基本信息类 public : Ware()
7、num=0;name0= N ;price=0; Ware(int n 1, char name! double price1 ) num=n1;n ame0= n ame1price= price1 ; void input(); void output(); int num; char n ame10; double price; ; 然后我们再定义两个派生类:StockStock 类,即商品库存信息类;SellSell 类, 即商品销售信息类;具体实现如下: class Stock : public Ware/ 库存类 public Stock() number=0; Stock( in
8、t n):number( n); void input(); void output。; int number; ; class Sell : public Ware/ 销售类 public : Sell()numb=0;count=0;sale=0;time0= N ; void input(); void output(); int sell(); int numb; double cou nt; double sale; char time64; ; 其它各函数的主要功能实现 函数按功能来分可分为两大类,其一是功能实现类,作用是 实现题目要求的各种功能,如商品基本信息的键盘录入,删除,修
9、改, 和保存等。 int in putware(); int oware(); int cware(); int in quire(); int cstock(); int sell(); int salecase(); 磁盘导入和保存;商品库存信息的键盘录入,删除,修改,磁盘 导入 /输入商品基本信息并且存至文件 /输出商品基本信息 /修改 Ware 数据 /查询库存信息 /修改库存信息 /输入商品销售信息 /查看商品销售信息 /查看特定时段的销售额 int sum(); int salesum();总销售额 void Delete()/ 删除函数 另一类是导航菜单类,主要作用是链接程序的各
10、个模块,并 且给使用者做部分导航,是使用者更清晰明了的使用本系统。它们有: voidwelcome。; /欢迎函数,作为主菜单链接以下四个函数 void WARE();/调用和商品基本信息有关的函数 void STOCK();/调用和商品库存有关的函数 void SALE(); /调用和商品销售有关的函数 void Exit(); /退出函数 主函数 main(main() ) 主函数 main()main()中用了 switchswitch 语句,可实现选择个功能,即选择 对商品的哪些性质进行 操作,1 1,对商品的基本信息进行操作。2 2,对 商品的库存进行操作。3 3,对商品的销售进行操
11、 作。0 0 为退出程序。 进入程序后,可选择执行的功能; 流程图 1 1 中简单介绍了该商品管理系统的主要功能,在后面会对 各部分进行分析。 3.3.以下具体功能具体分析 . .在 Ware()Ware()函数中,用了 switchswitch 语句,可实现 5 5 个功能,即 1 1信息输入 2 2信息查询 3 3修改信息 4.4.返回菜单 0.0.退出。 在 Sell()Sell()函数中,用了 switchswitch 语句,可实现 6 6 个功能,即 1.1.输入销售信息 2.2.销售信息查询 3.3.查询总销售额 4.4.查询特定时 刻的销售额 5.5.返回菜单 0.0. 退出。
12、在 Stock()Stock()函数中,用了 switchswitch 语句,可实现 4 4 个功能,即 1.1.库存信息输入 2.2.库存信 息查询 3.3.库存修改信息 4.4.返回菜单 0.0. 退出。 在 Delete()Delete()函数中,用了 switchswitch 语句,可实现 5 5 个功能, 即 1.1.信息输入 2.2.信息查询 3.3.修改信息 4.4.返回菜单 0.0.退出。 Exit()Exit()函数作为退出函数。 1 1 查 看 商 品 信 息 1 1 输 入 商 品 信 修 改 商 品 信 息 3 3 四:程序实现 查 看 商 品 库 存 退出 1 1 |
13、Exit()Oj|Exit()Oj ii 1.1.在主函数中调用了 welcomewelcome 函数,使用了 SleepSleep 函数和 coutcout 函数使程序更加美观; int main() int i; cout * Cout?欢迎使用 I! e ndl 玡 ndl 玡 ndl; e ndl 玡 ndl 玡 ndl; cout*e ndl; for (i=0;i20;i+) cout.; Sleep(120); welcome。; return 0; 2.Welcome2.Welcome 的功能实现如下所示 void welcome() int m; system( cls);
14、cout * e ndl; cout 1商品基本信息操作 endl 玡 ndl 玡 ndl; cout2 商品库存操作 endl 玡 ndl 玡 ndl; cout3 销售情况记录 endl 玡 ndl 玡 ndl; cout 4 删除商品信息 endl 玡 ndl 玡 ndl; cout0退岀程序endl 玡 ndl 玡 ndl; cout * e ndl; cin 籱; switch (m) case 1:WARE(); break; case 2:STOCK(); break; case 3:SALE(); break; case 4:Delete(); break; case 0:Ex
15、it(); break; ; 在该函数中使用是 SwitchSwitch 语句,通过 switch()switch()语句可选择各功 能,为 了使界面更美观,也使用了coutcout 函数作为显示菜单; 3.3.删除函数,本函数是将文件中保存的商品数据导出至商品类的 对象数 组中,然后通过商品编号来进行判断,如果符合条件,删除该 商品所有数据, 并且重新读入文件,覆盖旧数据。 void Delete() int num,i; Stock stock N; Ware ware N; fstream instock( stock.dat , ios :in| ios :out| ios :app)
16、; fstream in ware( ware.dat , ios :i n| ios :out| ios :b in ary); check(i nstock); check(i nware); for (i=0;i N;i+) in stock 籹 tocki. number; inware.read(char*) cout请输入要删除的商品编号:; cin 籲 um; for (i=0;i N;i+) if (num=warei.num) warei.output(); stocki.output(); for (int m=i;m Nm+) warem=warem+1; stockm=
17、stockm+1; break; in ware.close(); in stock.close(); for (i=0;i N;i+) fstream instock1(stock.dat , ios :in| ios :out); instock1.seekp(i*sizeof (stocki.number), ios :beg); instockstocki.numbervv; fstream in ware( ware.dat , ios :i n| ios :out| ios :bi nary); inware.seekp(i* sizeof (warei), ios :beg);
18、inware.write(char*) in stock.close(); in ware.close(); cout i; if (i) welcome(); else Exit(); 商品销售函数 通过 switchswitch 来链接各个功能函数 switch (m) case 1:oware(); break; case 2:inputware(); break ; case 3:cware(); break; case 4:welcome(); case 0:Exit(); break; ; 商品库存函数 switch (m) case 1:inquire();break ; cas
19、e 2:cstock();break; case 3:welcome(); case 0:Exit(); break; ; 商品销售函数 switch (m) case 1:sell(); break; case 2:salecase(); break; case 3:sum(); break; case 4:salesum(); break; case 5:welcome(); case 0:Exit(); break; ; 退出函数 void Exit() system( cls); cout *e ndl 玡 ndl 玡 ndl 玡 ndl; cout谢谢使用 cout *、 e ndl
20、; endl 玡 ndl 玡 ndl 玡 ndl; 8 8. .修改商品基本数据。首先通过文件操作读取已存的商品数据,然后 输入商品编号,然后进行判断,若符合条件,则调用输入函数,使用 文件指 针,然后对原来的数据进行输出,覆盖旧数据。 int cware() int i,num; Ware ware N; fstream in ware( ware.dat , ios :i n| ios :out| ios :b in ary); check(i nware); cout修改数据endl; for (i=0;iNi+) inware.read(char *) if (warei.num=0)
21、 continue ; if (inware.eof() break; cout num:; cin 籲 um; for (i=0;i N;i+) if (num=warei.num) warei.i nput(); inware.seekp(i* sizeof (warei), ios :beg); inware.write(char*) break; in ware.close(); cout i; if (i) WARE() else Exit(); return 0; 9. Sum 是查询某一段时间销售额的函数, 首先定义了两个字 符串 用来存储时间的头尾,然后从文件中读取数据进行判
22、断,如果 符合第一个条件, 就开始叠加销售额, 知道第二 个条件满足时, 停止循环并且输出销售额。 int sum() Sell sell; char time164,time264; double Sale=0; int i=0; fstream in sell(sell.dat , ios :i n| ios :out| ios :app| ios :b in ary); check(i nsell); do in sell.seekg(0,ios :cur); in sell.read(char *) if (strcmp(time1,sell.time)=0) Sale+=sell.s
23、ale; ,退出程序请按 0; in sell.close(); cout i; if (i) SALE(); else Exit(); return 0; 五.程序调试 SB 2 2 05 21 编数 6/口QG品 /9商帝2 13入入n: Ee:lsnu 0 0 0 202040 03C:wi n dowssystem 32c md.exe C:windowssystem32cmd.exe til输入商品销售信息 12)查看商品销售信息 13 3色看持定时段的销菖额 C4J查看总销售额 151返回上一级 103退岀程序 nane:qe price:2 2813/86/21 返回上 T 划青
24、按退岀程序请按即 tn查看库存信息 121新増商品库存 3】返回上一级 101退岀程序 【承闻全部商品库存 0J查询单个库存 请输人商品编号:2 nun:2 nane : qe price :2 库存200 返向上一磚说按退岀程序请按欣 ian籩 : qe p)*ice:2 nun: 17 iare:C price :3 ium:18 iane : s price :22 ium:44 lane:cr price:44 mC:windowssystem32cmd.exe 【1】商品基本信息操作 商品库存操作 13销售情况记录 【4】删除商品信息 0】退岀程序 SBC:windowssystem
25、32cmd.exe 1查看商品信息 2新増商品信息 31修改商品信息 (4J返回上一级 0退岀程序 六.设计小结 通过编写商品销售管理系统这个程序,感觉到自己有很多方面的 不足, 在编写过程中不断的求助于同学,不断的查找资料和翻书本, 自己真是受益 匪浅。 首先,在编程学习中,实践是非常重要的,无论自己在读程序看 程序时 是多么的明白,但到了电脑面前,才知道在实际操作中有很多 问题等着我们 去解决。而且我也意识到学习在很大程度上靠自觉, 要 自己积极主动的去发 现问题和解决问题, 遇到不懂得一定要打破沙锅 问到底,拿出积极的学习态 度!这样才能巩固我们的基础知识,有利 于我们今后的发展,所以以后要多 多加强动手操作和编写能力。其次 要多和同学老师交流,因为写程序是有很 多技巧和方法的, 这是一笔 宝贵的经验等着我们去学习,在经常的交流和实 践中,才能准确快速 的编写出所需要的程序,通过程序进而解决问题。 在这次设计中,我也深刻认识到自己的不足,今后一定要不断的 进步, 好好锻炼自己的编码能力!成为一个出色的程序员! 七:参考文献 谭浩强C+C+程序设计实践指导清华大学出版社 谭浩强C+C+程序设计清华大学出版社