《c++商品管理程序(共33页).doc》由会员分享,可在线阅读,更多相关《c++商品管理程序(共33页).doc(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上淮阴工学院C+程序设计课程设计报告选题名称: 商品管理系统 系(院): 计算机工程学 院专 业: 计算机科学与技术班 级: 计算机#班 姓 名: # 学 号: #指导教师: 步山岳 学年学期: 2015 2016 学年 第 1 学期2015年 12 月 29 日设计任务书课题名称商品管理系统设计目的1. 调研商品管理系统的功能;2. 学习与商品管理系统相关的参考资料和基于VC+集成环境的编程技术;3. 通过实际编程加深对基础知识的理解,提高实践能力;4. 学习开发资料的收集与整理,学会撰写课程设计报告。实验环境1. 微型电子计算机(PC);2. 安装Windows 2
2、000以上操作系统,Visual C+6.0开发工具,Microsoft Office PowerPoint 2003。任务要求1. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;2. 在第,17周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;3. 本课题主要功能有:1)添加:即增加一个商品的记录到系统中;2)删除:即从系统中删除一个商品的记录;3)查询:可根据商品名称、编号查找商品的相关信息,若找到显示该商品的全部信息;4)修改:可修改一个商品的除名称外的其它信息;5)状态:提供该商品在库、不在库的状态。4. 结束后,及时提交设计
3、报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。工作进度计划序号起止日期工 作 内 容12015.12.262015.12.27在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。22015.12. 272015.12. 29设计总体方案,构建、绘制流程框图,编写代码,上机调试。32015.12. 292015.12. 30测试程序,优化代码,增强功能,撰写设计报告。42015.12. 302015.12. 31提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。指导教师(签章): 年 月 日 摘要: 分别对软件的
4、需求进行分析,对软件的概要设计和软件的详细设计进行阐述,以及对软件的组装及测试的详细叙述,并附加了软件的使用说明书(操作手册)。程序设计一般由两部分组成:算法和数据结构,合理选择和实现一个数据结构与处理这些数据结构具有同样的重要性。以将每个功能分别编译实现,再通过函数包含,调用等方法实现各项功能间的连接为设计思想,并采用将商品当作一个整体,整体类型为结构体,结构体中的域表示商品的属性的这种定义结构作为数据结构。软件将各个模块的功能分为列菜单、商品登记、添加、查询、修改、删除、显示等来组成整个程序,实现对商品信息的系统管理。该程序界面友好,易于操作,使操作者和使用者应用更加方便。关键词:课程设计
5、;商品管理;VC+;代码目录专心-专注-专业1课题综述本章主要阐述了课题的来源、意义、预期的目标以及要面对的问题和需要解决的关键技术。1.1课题来源 “C+程序设计”是计算机科学与技术专业最重要的一门专业基础课程,涉及知识点多,教、学难度非常大,往往费了大量时间而达不到预期效果。俗语说:学习的最好方法是实践。为了给我们提供一个理论联系实际的机会,学院特课设课程设计实践课,布置一定难度的课题,要求我们独立完成。本课题便是来自课程设计实践课中的课题。1.2课题意义通过设计商品管理系统这一实践活动,可以促使我们建立课程设计的整体思想,锻炼我们的编写程序、调试程序的能力,学习文档编写规范,培养独立学习
6、、吸取他人经验、探索前沿知识的习惯,树立团队协作精神。1.3预期目标 写出代码,不断调试修改,最终实现登记商品信息、添加一个商品记录、查询一个商品的全部信息(包括按商品编号查询和商品名称查询)、修改一个商品除名称外的全部信息、删除一个商品记录等功能。1.4面对问题 如何去实现预期的功能?比如在修改商品信息的时候如果出现编号重复了,如何实现对此的辨别?在修改商品信息时,如果遇到不需要修改的信息,如何简化工作,跳过对某一信息的修改,而非将愿信息重新输入一边等。这些都是要面对的问题。1.5需要解决的关键技术选择使用结构,则须知道结构体的基础知识,要定义的域内容,各数据的类型。需要用到的函数及其定义,
7、熟练运用循环语句。确立菜单形式选项,则要熟悉switch语句。2 系统分析2.1涉汲的基础知识基本数据类型:整型(int)、浮点型(单精度float、双精度double)、字符型(char)。结构体:自定义数据类型中的一种,它可将多种数据类型组合在一起使用,方便描述现实世界的各种各样的客观对象之间的关系。If语句:也称条件语句,主要功能是当程序运行到此处可以根据条件的不同而决定执行什么样的后续语句。它的语法有两种形式: if (表达式) 语句;if (表达式) 语句1; else 语句2; Switch语句:也称开关语句,它是多分支结构。一般形式为:case : break;case : br
8、eak;case : break;default: 注意点:Switch括号中的表达式只能是整型、字符型或枚举型表达式。Case后面的常量表达式之类型必须而与其匹配。 String.h头文件:是诸多字符空间操作的库函数集合。 本系统用到“strcmp”来实现字符的比较。函数:由能完成特定任务的独立程序代码块组成;其内部工作对程序的其余部分是不可见的。 形式如下:返回类型 函数名(参数表)语句块;函数名:应尽可能反映函数的功能;参数表:0个或多个变量,用于向函数传送数值或从函数带回数值。如果参数表列中参数个数为0,称为无参函数返回类型:用return返回函数值的类型。如果函数没有返回值,返回类型
9、应为void。一个函数也可以有多个return语句,在函数的执行过程中,遇到任一个return语句,将立即停止执行,并返回到调用函数。函数体:花括号中的语句称为函数体。一个函数的功能,通过函数体中的语句来完成。2.2解决问题的基本思路 针对相应的问题,选择合适的语句。通过函数调用,来实现各个功能。2.3总体方案将各功能,以菜单的形式列出。建立菜单,通过使用case语句,选择相应的功能。将每一个功能以函数的形式写出,在主函数的每一个case语句中调用。3 系统设计3.1系统达到的目的该系统主要是实现对商品信息进行系统化的管理,首先可以对商品基本信息进行登记,其次在有需要的情况下可以继续添加一条或
10、多条商品记录,然后可以按照商品的编号或者名称查询商品的全部信息,还可以实现修改商品除名称外的所有信息以及删除商品记录等。由此来系统化管理商品信息,并达到简易操作的目的。3.2系统功能说明3.2.1 功能分析说明图该软件功能分析说明图如3-1所示商品管理系统修改库存修改价格修改编号按名称按编号 图3-1 商品管理系统分析说明图3.2.2 各项功能说明(1)登记商品信息:这部分的功能主要是商品信息的登记。按照提示依次输入商品的编号、名称、价格以及库存。(2)添加商品信息: 此功能是在已登记的基础上如果需要添加则选择此项。(3)按编号查找商品信息: 此项功能可以根据用户输入的商品编号查出该商品的所有
11、信息。(4)按名称查找商品信息: 此项功能可以根据用户输入的商品名称查出该商品的所有信息。(5)删除学生信息: 进入该项功能界面后,用户可以通过学生的编号对某个商品记录进行删除。(6)修改商品信息:进入修改界面,系统将提示输入要修改的商品编号,用户正确输入编号后会出现子菜单,其中包括修改编号、价格、库存以及返回主菜单。如果修改后的编号与库存中其他商品编号重复,将提示重新输入。(7)商品库存状态: 此项功能可以根据用户输入的商品编号查出该商品库存是否为零,如果为零,则显示“该商品不在库!”。不为零,则显示“该商品在库!”。(8)显示商品的所有信息: 选择此项功能后,系统将自动在屏幕上显示出所有商
12、品的信息。(9)退出系统: 选择此项功能后,退出系统,结束任务。3.3系统设计环境与模块的划分3.3.1 系统设计环境 Microsoft Visual C+ 6.0:美国微软公司开发的C+集成开发环境,它集源程序的编写、编译、连接、调试、运行,以及应用程序的文件管理于一体,是当前PC机上最流行的C+程序开发环境。3.3.2 系统模块的划分 该软件主要组成模块和各个模块之间的调用关系如图3-2:商品管理系统退出系统修改商品信息查找商品信息添加商品信息登记商品信息主函数(包括以下所有函数)主菜单显示所有商品信息商品在库状态删除商品信息 图3-2 模块调用关系图3.4软件设计主要原理3.4.1 采
13、用的主要数据结构类型该程序采用的是结构体类型来处理学生的所有基本信息,如下所述:包含的库函数有:#include/数据流输入/输出#include /字符串处理#include /参数化输入/输出 setw()#include /进程处理 system(cls)#include /standard input and output#define N 100 /宏定义又称为预定义,可以定义常量/商品结构体定义struct shangpinint id; /商品编号char spname20; /商品名称float price; /商品价格int kucun; /商品库存;shangpin spN
14、=0,0,0,0; /结构体初始化int count=0,temp; /定义全局变量count,temp;/函数声明:void tianjia(); /添加商品记录void bianhaochazhao(); /按编号查找商品信息void namechazhao(); /按名称查找商品信息void xiugai(); /修改商品信息 void shanchu(); /删除商品记录void zhuangtai(); /商品库存状态void xianshi(); /显示所有商品信息void xiugaibianhao(); /修改编号void xiugaijiage(); /修改价格void xi
15、uggaikucun(); /修改库存3.4.2 各个模块之间的调用关系和数据储存格式说明各函数模块之间的调用关系主要是主函数调用所有其它功能函数和菜单函数,并利用循环使各个功能函数运行完毕后都会回到菜单。该程序的数据以二进制储存。3.4.3 主要流程图开始一、主函数选择功能退出系统按名称查找商品信息按编号查找商品信息显示所有商品信息商品在库状态删除商品信息修改商品信息添加商品信息登记商品信息结束图3-3 主函数流程图二、添加商品信息 开始输入商品的编号、名称、价格、库存提示是否继续输入(y/n)自动保存结束 图3-4登记商品信息流程图三、查找商品信息结束返回主菜单输出相应商品信息按提示输入编
16、号或者名称选择操作3或操作4开始 图3-5查找商品信息流程图四、修改商品信息开始选择操作4输入要修改的商品编号选择操作4选择操作3选择操作2选择操作1进入库存修改界面进入编号修改界面进入价格修改界面返回主菜单结束输入新库存输入新价格输入新编号返回本函数菜单 图3-6修改商品信息五、删除商品信息开始选择操作6输入要删除的商品编号系统对此编号商品的所有进行清零实现删除结束图3-7删除商品信息流程图六、商品在库状态结束返回主菜单输入要查询的商品编号开始选择操作7输出相应商品在库状态图3-7商品在库状态流程图七、显示所有商品信息开始选择操作8输出所有商品的编号、名称、价格、库存清单结束 图3-8显示所
17、有商品信息流程图八、退出函数 开始选择操作9退出程序结束 图3-9退出函数流程图4 代码编写4.1各模块之间的调用方式程序中各个模块之间的调用方式主要是通过文件的包含和函数的调用实现的,用文件的形式把各个函数分开,再用头文件把它们包含进来,使用主函数进行调用。4.2程序中实现各项功能的函数与程序代码一、头文件及宏定义:#include/数据流输入/输出#include /字符串处理#include /参数化输入/输出 setw()#include /进程处理 system(cls)#include /standard input and output#define N 100 /宏定义又称为预
18、定义,可以定义常量/商品结构体定义struct shangpinint id; /商品编号char spname20; /商品名称float price; /商品价格int kucun; /商品库存;shangpin spN=0,0,0,0; /结构体初始化int count=0,temp; /定义全局变量count,temp;/函数声明:void tianjia(); /添加商品记录void bianhaochazhao(); /按编号查找商品信息void namechazhao(); /按名称查找商品信息void xiugai(); /修改商品信息 void shanchu(); /删除商
19、品记录void zhuangtai(); /商品库存状态void xianshi(); /显示所有商品信息void xiugaibianhao(); /修改编号void xiugaijiage(); /修改价格void xiuggaikucun(); /修改库存/主菜单void MenuMain()system(cls); /清屏cout-欢迎使用我们的商品管理系统-endl;cout-endl;coutendl;cout-endl;cout 请选择服务 endl;cout 1 - 添加商品记录 endl;cout 2 - 按编号查找商品信息 endl;cout 3 - 按名称查找商品信息 e
20、ndl;cout 4 - 修改商品信息 endl;cout 5 - 删除商品记录 endl;cout 6 - 商品库存状态 endl;cout 7 - 显示所有商品信息 endl;cout 8 - 安全退出 endl;cout-endl;coutoptions;switch (options)case 1:tianjia(); /调用添加函数break;case 2:bianhaochazhao(); /调用编号查找函数break;case 3:namechazhao(); /调用名称查找函数break;case 4:xiugai(); /调用修改函数break;case 5:shanchu(
21、); /调用删除函数break;case 6:zhuangtai(); /调用库存状态函数break;case 7:xianshi(); /调用显示函数break;case 8:cout谢谢使用!endl;return;/getchar(); /添加商品记录void tianjia()char str; for(int i=0;iN;i+)cout请输入商品编号、名称、价格、库存:spi.idspi.spnamespi.pricespi.kucun;count+;cout继续(y/n)str;if(str= n)break;/按编号查找商品信息void bianhaochazhao()int
22、num,flag=0;coutnum;for(int i=0;icount;i+)if(num=spi.id)flag=1;coutsetw(6)编号setw(20)名称setw(6)价格setw(6)库存endl;coutsetw(6)spi.idsetw(20)spi.spnamesetw(6)spi.pricesetw(6)spi.kucun;coutendl;break;if(flag!=1)cout对不起,该编号不存在!endl;getchar();/按名称查找商品信息void namechazhao()int flag=0;char sppname20;coutsppname;fo
23、r(int i=0;icount;i+)if(strcmp(spi.spname,sppname)=0) /相等返回0flag=1;coutsetw(6)编号setw(20)名称setw(6)价格setw(6)库存endl;coutsetw(6)spi.idsetw(20)spi.spnamesetw(6)spi.pricesetw(6)spi.kucun;coutendl;break;if(flag!=1)cout对不起,该商品不存在!endl;getchar();/修改商品信息void xiugai()int flag=0;int t,m; cout请输入要修改的商品编号:m;for(in
24、t i=0;icount;i+)if(m=spi.id)flag=1;temp=i;break;if(flag=1)edit:cout 修改商品信息 endl;cout-endl;cout 请选择: endl;cout 1 - 修改编号 endl;cout 2 - 修改价格 endl;cout 3 - 修改库存 endl;cout 4 - 返回主菜单 endl;cout-t; switch (t) case 1: xiugaibianhao(); goto edit; break; case 2: xiugaijiage(); goto edit; break; case 3: xiuggai
25、kucun(); goto edit; break; case 4: break; if(flag!=1)cout对不起,该商品不存在!endl;/修改编号void xiugaibianhao() int flag=0,s1; cout请输入商品的新编号:s1; for(int i=0;icount;i+) if(spi.id=s1) flag=1; temp=i; break; if(flag=1) cout该编号已存在!endl; else sptemp.id=s1; /修改价格void xiugaijiage()float s2;cout请输入商品的新价格 :s2;sptemp.pric
26、e=s2;/修改库存void xiuggaikucun()int s3;cout请输入商品库存 :s3;sptemp.kucun=s3;/删除商品记录void shanchu()int m; cout请输入要删除的商品编号:m;for(int i=0;icount;i+)if(m=spi.id)spi = spi+1;count-;/商品库存状态void zhuangtai()int num,flag=0,m;coutnum;for(int i=0;icount;i+)if(num=spi.id)flag=1;m=i;if (flag=1)if(spm.kucun=0)cout该商品不在库!e
27、ndl;elsecout该商品在库!endl;if(flag!=1)cout对不起,该商品不存在!endl;getchar();/显示所有商品信息void xianshi()cout 商品信息 endl;cout-endl;coutsetw(6)编号setw(20)名称setw(6)价格setw(6)库存endl;for(int i=0;icount;i+)coutsetw(6)spi.idsetw(20)spi.spnamesetw(6)spi.pricesetw(6)spi.kucun;coutendl;getchar();5 程序调试5.1出现问题及解决方法 (1)、修改商品信息函数无法
28、运行 原因:函数结构混乱,case中镶入了太多的函数内容,混乱之下,容易含糊 解决方法:将case 下的各函数剥离出来,分别写void xiugaibianhao()、void xiugaijiage()、void xiuggaikucun()将商品信息的编号修改、价格修改、库存修改以三个子函数的形式写出来,然后镶嵌到修改商品信息的主体函数中。 (2)、添加商品信息时,已登记的信息被清空 原因:for(int i=0;iN;i+),此for循环中从0重新开始计数,前面内容被替代 解决方法:在商品信息登记中定义(int count=0)来计数,将添加商品记录函数中for循环中的i初值定位coun
29、t(即 int i=count)。6 运行与测试将把程序运行过程写出,并对此程序的一些细节和具体的操作方法加以说明,说明如下:1、 进入系统,主要有选项1-登记商品信息、2-添加商品信息、3-按编号查找商品信息、4-按名称查找商品信息、5-修改商品信息、6-删除商品记录、7-商品库存状态、8-显示所有商品信息、9-安全退出。界面如图6-1: 图6-1 商品管理系统主界面2、 选择1 登记商品信息,进入界面,跟据提示依次输入商品编号、名称、价格、库存。如:1 lxq 66 1545。如图6-2: 图6-2登记商品信息界面图a输入y,继续输入商品记录,2 ppp 69 1626。如图6-3: 图6
30、-3登记商品信息界面图b输入n,确认。返回主菜单,如图6-4: 图6-4登记商品信息界面图c3、选择2,添加商品信息,根据提示,依次输入商品信息:3 a 6 0。如图6-5: 图6-5添加商品信息输入库存为0,为下面测试,第7个选项,商品库存状态作铺垫;输入n返回主菜单。4、选择3 按编号查找商品信息,进入界面,按提示输入要查询的商品编号,输入1。如图6-6: 图6-6 编号查找商品信息a确认,显示该编号商品的所有信息,如图6-7: 图6-7编号查找商品信息b按任意键返回主菜单。5、选择4 按名称查找商品信息,进入界面,按提示输入要查询的商品名称,输入a。如图6-8: 图6-8按名称查找商品信
31、息a确认,显示该编号商品的所有信息,如图6-9: 图6-9按名称查找商品信息b按任意键返回主菜单。6、选择5修改商品信息,按提示输入要修改的商品的编号,输入1。如图6-10:图6-10修改商品信息a确认,进入操作界面,如图6-11: 图6-11修改商品信息b选择1,进入编号修改界面,并输入新编号2。如图6-12: 图6-11修改商品信息c如果编号重复,系统将提示编号已存在,要求返回上级菜单,重新选择输入,如图6-13: 图6-11修改商品信息d选择1,重新输入新编号99。如图6-14: 图6-11修改商品信息e确认,并返回上级菜单,选择2,修改价格,输入新价格56。如图6-15: 图6-11修改商品信息f确认,并返回上级菜单,选择3,修改库存,输入新库存0。如图6-16: 图6-11修改商品信息g确认,并返回上级菜单,选择4,返回主菜单。7、选择8,显示所有商品信息,以验证刚才的修改结果,如图6-17:图6-17显示所有商品信息按任意键返回主菜单。8、选择6删除商品记录,根据提示输入要删除的商品编号,如图6-18:图6-18删除商品记录a确认并返回主菜单,选择8,显示所有商品信息,如图6-19:
限制150内