《《C语言程序设计》课程设计报告-商品订购系统设计.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程设计报告-商品订购系统设计.docx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、重庆科技学院C 语言程序设计课程设计报告摘 要通过本软件的学习、编译。可以很好的掌握程序中结构体的运用、界面的使用等, 以及更熟练的掌握了使用 fprintf 与 fscanf 向文件读写一组数据。可以完全的、熟练的、掌握、运用switch 语句来实现多分支选择结构。同时,使用、学习者也能够学习、知道程序的许多细节问题通过每个函数模块模式。以上这些的学习对今后的学习、编译程序,以及学习好程序设计课程都有很大的帮助。关键词:结构体 界面freadswitch 语句5设计题目:商品订购系统设计学生姓名课程设计任务书课程名称地点计设C 语言程序设计课程设计专业班级计科 11I305/I306起止时间
2、2012 年 1 月 9 日1 月 13 日及要容内请你为校园某店铺设计一个商品订购系统,订购者能使用该系统在浏览了基本求商品信息(货号、名称、厂家、产地、存量、单价)后设定商品订购信息产生一条订购记录(日期时间、货号、订购量、客户名、客户地址、客户号),商家根据客户的订购信息组织商品和发货。【题目要求】(1) 商品的基本信息(货号、名称、厂家、产地、存量、单价等)要单独保存;(2) 商品的订购记录(日期时间、货号、订购量、客户名、客户地址、客户号);(3) 系统的各个功能模块要求用函数的形式实现;(4) 系统的功能模块应包含商品信息的增删改查,以及订购记录的查询和统计;要求用C 语言的文件操
3、作语句将以上所有结果分别保存在文件goodsinfo.out,和中。【输入/输出要求】(1) 应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。(3) 建立一个小系统,至少包括10 种产品能供顾客选择根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计(1)系统分析、设计正确。参数(2)结果以图表方式显示。(3) 界面简洁、美观。(4) 报告格式规范。进度要求周一:明确设计任务,学习相关基础知识周二:熟悉
4、各知识点,进行基础练习周三:根据题目要求,进行设计和实现周四:根据题目要求,进行设计和实现周五:撰写报告,进行答辩参考资料其它1 何钦铭 颜晖.语言程序设计2 谭浩强 张基温.语言程序设计说明难点提示:首先分析题目的数据结构,看看要操作那些值;然后根据题意设计操作对象的结构。可以使用结构体来描述其中较为复杂的对象例如往来帐目;确定结构体的定义;可以使用数组来保存数据,使用结构体数组来保存各类数据。.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。目录摘 要2课程设计
5、任务书31 软件需求分析说明书62 系统设计与分析72.1 软件界面设计7第一模块界面及实现代码72.1.3 第三模块的实现及代码102.1.4 第四模块的实现及代码142.1.5 第五模块的实现及代码152.1.6 第六模块的实现及代码182.2 软件的数据(结构)设计212.3 软件的算法设计222.4 数据结构分析233 设计体会与小结24致谢25参考文献26附录 1271软件需求分析说明书本软件实现了商品信息的添加、删除、修改、搜索,以及显示商品的全部信息。使用者能够很好的查看商品信息,以及订购商品。本软件的界面需要显示各个单一功能的目录,然后通过 switch 语句来实现各个单一功能
6、的分支选择,把界面与函数联系起来。最终实现了,通过界面来达到软件的要求。重庆科技学院C 语言程序设计课程设计报告2系统设计与分析2.1 软件界面设计画出软件全部输入、输出数据的界面,并对每一个界面进行详细的操作说明;第一模块界面及实现代码图如下:主菜单的界面图其对应的函数如下:int main(void)int i; wenbenload();dosystem(cls);printf(nnnnnn);printf(* 欢迎 使 用 商品订 购 系 统v1.0*n);printf(作者: 计科 1102姚茂源n);printf(n);printf(1.浏览商品信息n);printf(2.订购商品
7、n);printf(3.订单查询n);7重庆科技学院C 语言程序设计课程设计报告printf(4.搜索商品n);printf(5.管理菜单n);printf(0.退出系统n);printf(n); printf(*n);printf(nntt 请输入你的操作(05): ); scanf(%d,&i);switch(i)case 1:system(cls); scanproduct(); break;case 2:system(cls); dinggou(); break;case 3:system(cls); lookdinggou(); break;case 4:searchproduct(
8、); break;case 5:secondmain(); break;case 0:/退出系统的界面system(cls); printf(nnnnnnnn);printf(nnttt 欢迎使用本系统nnnnnttt 欢迎再次使用n); exit(0);/exit 用于随时结束程序while(1);return 0;其中的 wenbenload()用于从文本中导入商品信息。如文本不存在则出现下图8重庆科技学院C 语言程序设计课程设计报告图商品信息文本不存在的界面图第二模块的界面及实现代码如果选择的操作是主界面的 1 时,而产品文件为建立时会显示下图:图第二模块界面图该程序的实现是通过以下代码
9、实现的:9重庆科技学院C 语言程序设计课程设计报告void scanproduct()int i; system(cls);printf(ttttt商品信息列表n); for (i = 0; i inumber; i+)printf(名称 :%sn,ai.name);printf(货号 :%dn,ai.number);printf(厂家 :%sn,ai.vender);printf(产地 :%sn,ai.filed);printf(存量 :%dn,ai.stock);printf(单价 :%.2lfnnn,ai.unvalent);printf(nnnnnnttt); printf( 返 回
10、主 菜 单 n); printf(ttt); system(pause);return;第三模块的实现及代码在主菜单中选择 2 进入商品订购界面,界面如下:10重庆科技学院C 语言程序设计课程设计报告图 2.4 商品订购图 2.5 输入商品订单信息该程序实现代码如下: void dinggou()char ch;int i, j, t, c = 1;11重庆科技学院C 语言程序设计课程设计报告int n = 1; int m = 0;doswitch(n)case 1:system(cls);printf(tttt 商品信息列表n);/显示商品的名称、货号信息,以便于订购printf(名称t货
11、号t 库存n);for (i = 0; i inumber; i+)printf(%st%dt%dnnn,ai.name,ai.number,ai.stock);printf(nnn);printf(tttt 商品订单n);printf(nttt 请输入你的第%d 个订单信息:n,m + 1); printf(nttt 货号:);fflush(stdin); scanf(%d,&bibuy.bgname);/检测是否含有此商品j = 1;for (i = 0; i = bibuy.bmany)at.stock = at.stock - bibuy.bmany;/顾客购14买后商品的库存计算pr
12、intf(nttt 日期时间:); fflush(stdin); scanf(%d,&bibuy.btime); printf(nttt 客 户 名 :); fflush(stdin); gets(bibuy.bname); printf(nttt 客户地址:); fflush(stdin); gets(bibuy.baddress); printf(nttt 客 户 号 :); bibuy.bnumber = bgnumber; printf(%dn,bibuy.bnumber); bgnumber+;ibuy+; m+;printf(nnntttt); system(pause);else
13、printf(nnttt 订购数目超出库存n); printf(ttt);system(pause);/若没有商品的提示及操作elseprintf(nnttt 查无此货n);printf(ttt); system(pause);case 2:printf(是否继续输入订购?(Y/N); fflush(stdin);scanf(%c,&ch);if(ch = N | ch = n)c = 0;break;else if(ch = Y | ch = y)c = 0;n = 1;break;else if(ch != n | ch != N | ch != Y | ch != y)n = 0;c =
14、 1;break;case 0:if(c = 1)n = 2;while(ch != n & ch != N); system(cls);return ;第四模块的实现及代码在主菜单中选择 3 进入商品订购界面,界面如下:重庆科技学院C 语言程序设计课程设计报告图 2.6 订单查询界面该程序实现代码如下: void lookdinggou()int i; system(cls);printf(ttttt 订单列表n); for (i = 0; i ibuy; i+)printf(货号 :%dn,bi.bgname);printf(订购量 :%dn,bi.bmany);printf(日期时间 :
15、%dn,bi.btime);printf(客户名 :%sn,bi.bname); printf(客户地址 :%sn,bi.baddress); printf(客户号 :%dnnn,bi.bnumber);printf(nnnnnnttt); printf( 返 回 主 菜 单 n); printf(ttt); system(pause);return;该代码中用到了指针,并用到了链表的建立和删除,当然也涉及到了结构体。第五模块的实现及代码在主菜单中选择 4 进入商品订购界面,界面如下:15重庆科技学院C 语言程序设计课程设计报告图 2.7 商品搜索 1图 2.8 商品搜索 2通过以下代码实现:
16、 void searchproduct()int i; int j;16重庆科技学院C 语言程序设计课程设计报告char ch; int n = 1;doswitch(n)case 1:system(cls); printf(tttt 商品列表n);/显示商品的名称、货号信息,以便于下部的删除for (i = 0; i inumber; i+)printf(名称 :%sn,ai.name); printf(ID :%dn,i);printf(库存 :%dnnn,ai.stock);/商品的搜索printf(nnntttt 请输入你要搜索商品的 ID:); scanf(%d,&j);if(0=j
17、&j=inumber)printf(名称 :%sn,aj.name);printf(货号 :%dn,aj.number);printf(厂家 :%sn,aj.vender);printf(产地 :%sn,aj.filed);printf(存量 :%dn,aj.stock);printf(单价 :%.2lfnnn,aj.unvalent);case 2:printf(是否继续搜索商品?(Y/N); fflush(stdin);scanf(%c,&ch);if(ch = N| ch = n)break;if(ch = Y| ch = y)n = 1;17重庆科技学院C 语言程序设计课程设计报告br
18、eak;while(ch != n & ch != N);printf(nnnnnnttt); printf(返回主菜单!n); printf(ttt); system(pause);return;第六模块的实现及代码该代码用于管理者使用的,界面如下:图2.9 二级菜单该代码如下: void secondmain()int i;18重庆科技学院C 语言程序设计课程设计报告dosystem(cls); printf(nnnnnnn);44printf(*nn);管理维护子菜单printf(n);printf(1. 输入全部商品n);printf(2. 增加商品n);printf(3. 删除商品n
19、);printf(4. 储存商品n);printf(5. 储存订单n);printf(0. 返回上一级n);printf(nnn);printf(*nnnnn);printf(nntt请输入你所要选择的功能(05): );scanf(%d,&i);switch(i)case 1:system(cls); jianpanload (); break;case 2:system(cls); addproduct(); break;case 3:system(cls); deleteproduct(); break;case 4:system(cls); saveproduct(); break;c
20、ase 5:system(cls); savedinggou(); break;case 0:system(cls); return ;while(1);printf(tttt); system(pause);system(cls);return;该代码用于商品信息文件的建立生成,存储商品信息和订单。2.2 软件的数据(结构)设计先定义全局变量用于控制商品数量和订单数量如下:#include #include #include #include #include int bgnumber = 023;/客户号int inumber = 0;/商品量的统计int ibuy = 0;/订单的统计v
21、oid secondmain();/管理维护子菜单void jianpanload();/输入商品void scanproduct();/浏览商品void searchproduct();/搜索商品void dinggou();/订购商品void lookdinggou();/查询订单void addproduct();/增加商品void deleteproduct(); /删除商品void saveproduct();/保存商品void savedinggou();/保存订单void wenbenload();/从文本导入商品struct productchar name30;/商品名int
22、 number;/货号char vender30; /厂家char filed100; /产地int stock;/存量double unvalent; /单价;struct product a100;struct dinggouint bgname;/货号int bmany;/订购量int btime;/日期时间char bname100;/客户名char baddress100;/客户地址int bnumber;/客户号;struct dinggou b100;2.3 软件的算法设计画出整个软件的模块图、并对每一个模块图的算法用程序流程图、功是伪代码来实现现行系统组织结构图如下:开始123
23、450浏订订搜管退览购单索理出商商查商菜系品品询品单统选择菜单序号图 2.10 主结构模块示意图123450输增删储储返入商品加商品除商品存商品存订单回选择管理菜单图 2.11 二级结构模块示意图搜索商品输入产品相应信息信 息 存 在否图 2.12 搜索模块示意图2.4 数据结构分析使用整型,双精度,字符型定义变量和函数。使用结构体,类等概念实现数据存储。同时也用这些自定义类型定义了变量和函数。体现面向对象设计的特点。软件的实现软件涉及到核心功能模块进行设计实现,并对关键代码进行分析阐述。3 设计体会与小结在做了课程实验以后,我对 c+的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了
24、!这其中主要是对类的封装收获最多,在其类的封装过程中,对数据的访问控制也是比较重要,我相信这对以后的学习其它面向对象程序设计有很大帮助!作了产品订购系统程序后,我对类和对象更加熟悉了,作为 c+所特有的指针,类和对象在编写程序过程中运用十分广泛,我必须多加练习才能达到一定的水平,类和对象,指针都是非常重要的!在完完整整得做完一个程序后,我对程序的整体性有了一个明确的认识,做程序必须注意程序前后的联系,要具有清晰的思路,程序要具有层次。对整体性的把握至关重要!学习计算机语言最重要的就是上机操作,我深感自己动手能力比较差,在以后学习中,还必须多多上机调试程序,从实践中多积累经验,为以后工作打下坚实
25、基础。致谢通过此次的课程设计,我不仅学会了很多有关 c 语言的知识,还学会了很多道理。心之所向,所向披靡。只要用心,就能克服种种困难,最终有所收获。此次课程设计要感谢雷亮老师的辅导,以及伍健全老师所授的c 语言知识,还有一些同学和学长的指导,由于他们的辅导与帮助才完成了课程设计。谢谢!签名 姚茂源日期2012-1-13参考文献1何钦铭 颜晖.语言程序设计2谭浩强 张基温.语言程序设计附录1程序清单及相应的注释:#include #include #include #include #include int bgnumber = 023;/客户号int inumber = 0;/商品量的统计in
26、t ibuy = 0;/订单的统计void secondmain();/管理维护子菜单void jianpanload();/输入商品void scanproduct();/浏览商品void searchproduct();/搜索商品void dinggou();/订购商品void lookdinggou();/查询订单void addproduct();/增加商品void deleteproduct(); /删除商品void saveproduct();/保存商品void savedinggou();/保存订单void wenbenload();/从文本导入商品struct productc
27、har name30;int number;char vender30;/商品名/货号/厂家char filed100;/产地int stock;/存量double unvalent;/单价;struct product a100;struct dinggouint bgname;/货号int bmany;/订购量int btime;/日期时间char bname100;/客户名char baddress100;/客户地址int bnumber;/客户号;struct dinggou b100;int main(void)int i; wenbenload();dosystem(cls);pr
28、intf(nnnnnn);printf(*欢迎使用商品订购系统v1.0*n);printf(作者: 计科1102姚茂源n);printf(n);printf(1.浏览商品信息n);printf(2.订购商品n);printf(3.订单查询n);printf(4.搜索商品n);printf(5.管理菜单n);printf(0.退出系统n);printf(n); printf(*n);printf(nntt请输入你的操作(05): ); scanf(%d,&i);switch(i)case 1:system(cls); scanproduct(); break;case 2:system(cls)
29、; dinggou(); break;case 3:system(cls);lookdinggou(); break;case 4:searchproduct(); break;case 5:secondmain(); break;n); 束程序case 0:/退出系统的界面system(cls); printf(nnnnnnnn);printf(nnttt 欢迎使用本系统nnnnnttt 欢迎再次使用exit(0);/exit用于在程序运行的过程中随时结while(1);return 0;/浏览商品void scanproduct()int i; system(cls);printf(ttt
30、tt商品信息列表n); for (i = 0; i inumber; i+)printf(名称 :%sn,ai.name);printf(货号 :%dn,ai.number);printf(厂家 :%sn,ai.vender);printf(产地 :%sn,ai.filed);printf(存量 :%dn,ai.stock);printf(单价 :%.2lfnnn,ai.unvalent);printf(nnnnnnttt); printf( 返 回 主 菜 单 n); printf(ttt); system(pause);return;/商品的订购void dinggou()char ch;
31、int i, j, t, c = 1; int n = 1;int m = 0;doswitch(n)case 1:system(cls);printf(tttt商品信息列表n);/显示商品的名称、货号信息,以便于订购printf(名称t货号t 库存n);for (i = 0; i inumber; i+)printf(%st%dt%dnnn,ai.name,ai.number,ai.stock);printf(nnn);printf(tttt商品订单n);printf(nttt请输入你的第%d个订单信息:n,m + 1); printf(nttt货号:);fflush(stdin); sca
32、nf(%d,&bibuy.bgname);/检测是否含有此商品j = 1;for (i = 0; i = bibuy.bmany)商品的库存计算at.stock = at.stock - bibuy.bmany;/顾客购买后printf(nttt日期时间:); fflush(stdin); scanf(%d,&bibuy.btime); printf(nttt 客 户 名 :); fflush(stdin); gets(bibuy.bname); printf(nttt客户地址:); fflush(stdin); gets(bibuy.baddress); printf(nttt 客 户 号
33、:); bibuy.bnumber = bgnumber; printf(%dn,bibuy.bnumber); bgnumber+;ibuy+; m+;printf(nnntttt); system(pause);elseprintf(nnttt订购数目超出库存n); printf(ttt);system(pause);/若没有商品的提示及操作elseprintf(nnttt查无此货n);printf(ttt); system(pause);case 2:printf(是否继续输入订购?(Y/N);fflush(stdin); scanf(%c,&ch);if(ch = N | ch = n)c = 0;break;else if(ch = Y | ch = y)c = 0;n = 1;break;else if(ch != n | ch != N | ch != Y | ch != y)n = 0;c = 1;break;case 0:if(c = 1)n = 2;while(ch != n & ch != N); system(cls);return ;/订单的查询void lookdinggou()int i; system(cls);printf(ttttt订单列表n); for (i = 0; i ibuy; i+)printf(货号 :%dn
限制150内