c++校园超市商品信息管理系统课程设计说明书(含源代码)(25页).doc

上传人:1595****071 文档编号:37057389 上传时间:2022-08-29 格式:DOC 页数:25 大小:1.13MB
返回 下载 相关 举报
c++校园超市商品信息管理系统课程设计说明书(含源代码)(25页).doc_第1页
第1页 / 共25页
c++校园超市商品信息管理系统课程设计说明书(含源代码)(25页).doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《c++校园超市商品信息管理系统课程设计说明书(含源代码)(25页).doc》由会员分享,可在线阅读,更多相关《c++校园超市商品信息管理系统课程设计说明书(含源代码)(25页).doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-c+校园超市商品信息管理系统课程设计说明书(含源代码)-第 25 页计算机科学与技术教研室课程设计说明书(2015-2016学年 第二学期)课程名称程序设计基础课程设计设计题目校园超市商品信息管理系统学号*姓名*小组成员*,*,* 起止时间: * 年 * 月 * 日 至 * 年* 月* 日 课程设计评 语平时表现比较积极,纪律良好,没有缺勤的情况,在演示过程中,表达流畅,做出来的作品也有很强的使用价值,设计报告写的也比较全面,比较细致,深入人心,老师在提问的过程中,回答问题也头头是道,没有磕磕绊绊的情况发生,对于问题的解答也比较透彻。平时成绩报告成绩演示与答辩成绩成绩总评指导教师(签字)年

2、月 日注:成绩均用百分制。总成绩=平时成绩*20%+报告成绩*40%+演示与答辩成绩*40%设计题目:校园超市商品信息管理系统1.课程设计目的本系统的目的在于,可以很好的管理超市商品与销售员之间的关系,使得系统的功能和用途更加的全面和实用,这样两个和在一起可以避免用户使用起来的麻烦,使得可以更好的方便于使用者。 本课程设计的目的就是要通过一次集中的强化训练,能及时巩固已学的知识,补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计能力。具体目的如下: (1)更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。

3、(2) 培养综合运用所学知识独立完成课程设计的能力。 (3) 培养勇于探索、严谨推理、实事求是、有错必改、用实践来检验理论,全方位考虑问题等科学技术人员应具备的素质。 (4) 可以运用自己所学的知识在系统的实现。2、课程设计正文2.1系统分析2.1.1可行性分析从经济、技术、法律、操作四方面的分析可以看出,本系统的开发时机成熟。从多种角度考虑,都是可行的,采用本系统,能够使整个超市内部所有的信息工作简化、提高工作效益。由于采用统一的数据信息,使相关资料能够查询所需要的数据、资料及其它信息,使信息快速高效运行。2.1.2 需求分析该设计是通过计算机设计程序软件来实现校园超市商品信息管理系统的基本

4、业务,商品共包含以下信息项:商品编号、商品名称、商品进货数目、商品销售数目、商品剩余库存数目、商品单价、商品产地、商品销售额等;主要功能包括:创建商品信息文件,增加、删除、修改商品信息,销售商品、通过关键字、厂家名称或者编号来查找商品,按照不同的条件对商品信息进行统计工作。在该系统中利用通过类的方式来定义对象以及在类中定义各项的成员函数和数据成员来实现对商品信息的管理。中小型超市采购的商品一般都成千上万件。对这些商品进行有效的管理必不可少。每件商品一般都需要记录商品名、商品编号、产地、价格、出厂日期等商品的基本信息。除此之外,还需要记录商品的其他相关信息,如生产厂家、进货数量、销售数量、剩余库

5、存数量等。超市商品的相关信息需要存储到磁盘文件中,一般都需要提供对商品信息的添加、编辑、删除、查找等操作。超市管理员每天都会记录购进的商品信息,核销过期的商品等。为了巩固我们所学的C+语言程序设计知识,也为了满足课程设计的要求,我们设计和实现一个小型的超市商品管理系统,提供商品系统的添加、删除、编辑、查找等功能。同类系统多数使用结构体数组来操作数据,本系统使用类定义对象,以及成员函数和数据成员来完成对增删查改功能的实现,利用链表结构操作数据,提高了数据处理的效率。2.1.3功能分析(1)分别定义两个类为Supermarket和Supermarketmassage来实现对价格信息、名称信息、数量

6、信息的存储、更正、删除与查询以及其他功能的实现。(2)初始化功能当系统第一次启动时,系统中没有关于商品的信息,所以要根据商品的类型输入关于商品的一系列信息,把这些信息放在磁盘文件中。例如:编号、名称、进货总数、销售数目、剩余库存数目、单价、产地、销售额以及生产日期和保质期。(3)查询功能此时每件商品所包含的信息已经全部在磁盘文件中,所以就要通过一系列的函数来方便使用者查询有关商品的信息,以便更及时地发现商品在销售过程中存在的问题并及时改正或者更新。输入需要查询的商品名称或者编号,如果搜索到的信息与使用者输入进去的信息相同,则返回此件商品所在的位置,输出商品的各项信息。反之,如果搜索不到此件商品

7、,则输出无此商品的信息。(4)修改功能先在磁盘文件中找出是否有该商品,然后提示使用者要进行修改操作的编号,将修改过的商品放到原来那个商品所在的位置,将结果保存到原文件中,就提示使用者按任意字符继续。(5)销售功能提示使用者输入要进行销售的商品的编号或者名称,通过在函数中搜索,如果系统中有该商品的信息,则提示使用者输入要销售的数量,通过if语句,检查一下输入的数量是否大于库存数量,如果大于库存数量,则提示使用者要重新输入;如果小于库存数量,就将该商品所对应的库存数量减去销售数量,再把剩下的商品数量存入到磁盘文件中,完成了销售功能。2.2系统设计2.2.1概要设计系统功能结构图如图1所示。图1 系

8、统功能结构图2.2.2详细设计(1)增加函数的设计该函数实现了对超市商品的增加功能,输入商品的信息,此时磁盘文件中就已经存入了这件商品的信息。增加函数流程图如图2所示。图2 增加函数流程图(2)删除函数的设计该函数实现了对超市商品的删除功能,输入商品的生产日期和截止日期,判断是否过期,如果过期就输入这件商品的编号或名称,最后就删除成功。删除函数流程图如图3所示。图3 删除函数流程图(3)查找函数的设计该函数实现了对超市商品的查找功能,输入想要查找到商品的编号或名称,如果找到了就显示出来,否则就显示找不到该商品。查找函数流程图如图4所示。图4 查找函数流程图(4)修改函数的设计该函数实现了对超市

9、商品信息的修改功能,输入想要修改的商品信息,如果在系统中找到了该商品,则输入该商品修改过的信息,再存入到磁盘文件中去,修改成功。修改函数流程图如图5所示。图5 修改函数流程图(5)销售函数的设计该函数实现了对超市商品的销售功能,输入要销售的商品的编号或名称,如果系统中存在该商品信息,则输入要销售的数量,如果小于库存量,则输出销售成功,并将销售过后的剩余库存量存入到磁盘文件中去。销售函数流程图如图6所示。图6 销售功能流程图2.3系统实现(1)进入系统进入系统图如图7、图8所示。图7 进入系统界面图图8 系统菜单图(2)增加界面增加界面图如图9所示。图9 增加界面图(3)查找界面查找界面图如图1

10、0、图11所示。图10 按名称查找商品界面图图11 按编号查找商品界面图(4)销售界面销售界面图如图12所示。图12 销售界面图(5)退出系统退出系统界面图如图13所示。图13 退出系统界面图2.4系统测试与维护2.4.1 系统测试(1) void AddItem() /*添加商品信息*/例:input:(商品名称):a output:商品名称:a input:(商品编号):1001 output:商品编号:1001 input:(进货总数):10 output:进货总数:10 input:(销售数目):20 output:销售数目:20 input:(剩余库存):10 output:剩余库存

11、:10 input:(产地):ss output:产地:ss input:(单价):10 output:单价:10(2) void Supermarketmassage:RemoveItem() /*删除商品信息*/例:input:(删除商品名称):a output:删除成功(3)void Supermarketmassage:ModifyItem() /*修改商品信息*/例:input:(商品名称):a output:商品名称:a input:(商品编号):1001 output:商品编号:1001 input:(进货总数):10 output:进货总数:10 input:(销售数目):20

12、 output:销售数目:20 input:(剩余库存):50 output:剩余库存:50 input:(产地):ss output:产地:ss input:(单价):10 output:单价:10(4) void Supermarketmassage:Find() /*查询商品信息*/例:input:(商品名称):a output:商品名称:查找商品名称 input:(商品编号):1001 output: 输出商品信息系统测试图如图14、15所示。图14 系统测试图输入界面图图15 系统测试退出界面图2.4.2 系统维护经过多次的对系统的测试,能够保证系统准确无误的运行,用户可以放心使用。

13、3、课程设计总结在为期十天的课程设计中,通过完成这次老师布置的任务,体会颇多,收获也很多。利用设计这次校园超市商品信息管理系统的机会使我比较熟练的掌握了这学期所学习有关c、c+中的一些主要的知识点和应用点。例如:类和对象的定义、类内数据成员及成员函数的声明和定义、类的实现、构造函数与析构函数的定义等等。不只是死板的只知道书本上的知识,能够学以致用。在本次的课程设计中,我不仅仅只学到了利用c+语言来编写程序,还学到了程序开发的一些比较重要的步骤,比如需求分析、总体设计、程序模块设计(包含功能需求、程序代码设计与分析、运行结果等)、对系统的检测和维护等一些中重要的东西。为整个课程设计中的程序设计模

14、块提供主要思路以及实现功能的主要方法,这个工作说起来简单,却不太容易实现,整体的思路对于能否完成一个比较漂亮的程序是至关重要的,如果最一开始的整体思路都没有明确,或者说我们定下来的主题很难用我们学过的知识去实现,这将会导致以后的一系列工作都无法开展。所以说,有一个明确的主题是重中之重。由于我们的人力和所学的知识有限,导致我们此次工作中存在着许多的不足和缺点。比如,这个系统只能实现简单的增、删、查、改,还有好多的功能不能去实现,比如说打折活动、员工与老板之间的联系、顾客与售货员之间的联系都没有在这个系统中体现出来,这个系统只能体现出来商品与顾客之间的联系,比较单一,纯粹的就是一个单链结构,没有扩

15、散出来。再比如,这个系统几乎没有亮点可寻,只是普普通通的,规规矩矩的按照学过的或者是从别的书籍中得到的知识来编写的程序,没有让人耳目一新的新颖的地方,创新的东西太少。其实,我在本次的课程设计中也学到了不少东西,同时也运用到了我们的系统中。例如:(1)对链表的灵活运用。链表,是存储数据的一个很方便的工具,简而言之,就是基于链式储存结构下的线性表。包括单向链表、双向链表以及循环链表。链表的基本操作包括创建链表、在链表中插入结点、在链表中删除结点、遍历链表中的内容以及销毁链表等。相对于顺序表来说,它方便进行插入、删除操作,但是,线性表的内容遍历与输出需要从头指针开始。在这个系统中我们用到了链表的遍历

16、,主要是利用它来查询我们要找的商品信息。(2)#include 头文件的应用。此头文件包含了本程序中的按任意键继续的函数,是库函数。conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。(3)void ReadFile(istream & in)函数。它的输入参数是 标准输入流,没有输出。函数完成的作用是,依次将标准输入流中的数据读入到变量中。通过此次课程设计,学到的也不只有这些新知识,对于编程的思想和方法我也颇有感触。如果想要编写出来逻辑清晰,可读性比

17、较强的程序,应该在编程之前先有一个对于程序设计的整体思路,并把它记录下来,这样就可以避免了直接编程序的手忙脚乱。还有就是编程的思想,存储数据最好的就是用链表或者是对象数组,在编写稍微复杂一点的程序时,尽量用类定义对象以及数据成员、成员函数等的方式来实现。还有就是,我的能力也相应的提高了一些,比如就是比较浅显的掌握和运用链表结构,能够比以前更加熟练的利用类以及成员函数来实现功能。既复习了以前的旧知识,又学到了一些新的知识;设计增强了我所用所学知识去解决具体问题的能力,进一步培养了我独立思考问题和解决问题的能力。特别是学会了在Visual C+ 6.0集成开发环境中如何调试程序的方法。本次实践也锻

18、炼了我面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。总的来说,收获还是比较多的。4、参考文献1谭浩强.c+程序设计(第二版)M,北京:清华大学出版社,2004.2李云清,杨庆红.数据结构M.人民邮电大学出版社,2004.63赵晓,王丽丽 “C+面向对象程序设计”多样实验探究J 计算机时代 20134袁素梅,付文成 基于Visual C+ 6.0的学生信息管理系统J 电脑编程技巧与维护 2012答辩记录答辩小组教师:*,*提问与答辩情况记录如下:1.你的系统中的查找功能是如何实现的?答:也是利用链表结构,显示遍历链表,找到想要根据编号或者名称查找的商品,如果找到了想要找到

19、商品,就调用显示函数,将商品的信息显示出来。2.你最后运行界面的颜色是如何显示出来的?答:是通过#include这个头文件,这是个可以调用库函数的一个c语言的头文件。还用到了 system(color C); 其中color后面的C是前景色代号,还可以在C之前加一些代码作为背景色代号,各颜色代码如下:0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色3.“按任意键继续”是怎样实现的?答:先是定义了#include 这个头文件,然后调用这个库函数中的getch()函数,最

20、后在自己想用到“按任意键继续”这个功能的地方直接调用这个函数就可以了。4.你的系统中为什么选择用链表结构?答:由于本题目的数据元素的个数不可预知,所以使用链表。链表是动态的,可以在需要的时候增长和减小其长度,而数组是在编译时分配内存的,所以其大小是不可改变的,而且会出现内存浪费的情况。我认为单循环链表能较好的解决问题。在建立循环链表时,因为链表的大小由输入决定,因此与其匹配的结点数也是变化的,所以要进行动态内存分配。附录:程序源代码#include #include #include#include #include /用getch()using namespace std;int numbe

21、r;class Supermarket public:char name20;char Num20;int Cnum; /进货总数int Mnum; /销售数目int Enum; /剩余库存数目double Price; /单价char Add20; /产地double Sum; /销售额Supermarket * Next;void Input()coutname;coutNum;coutCnum;coutMnum;coutEnum;coutAdd;coutPrice;Sum=Mnum*Price; void ReadFile(istream & in) /文件指针innameNumCnum

22、MnumEnumAddPriceSum;void Show()cout商品名:nameendl商品编号:Numendl进货总数:Cnumendl销售数目:Mnumendl剩余库存:Enumendl产地:Addendl单价:Priceendl销售额:Sumendlendl;void Show1()cout商品名:nameendl商品编号:Numendl进货总数:Cnumendl销售数目:Mnumendl剩余库存:Enum-numberendl产地:Addendl单价:Priceendl销售额:SumendlNext;p!=End;p=p-Next,i+) if(i=2) p-Show1(); e

23、lse p-Show(); coutInput(); End-Next=new Supermarket; End=End-Next; cout添加成功!endl; coutNext!=End;p=p-Next)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p-Next-name,name) return p; return NULL; Supermarket *FindNum(char * Num) for(Supermarket * p=Head;p-Next!=End;p=p-Next)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p-Next-Nu

24、m,Num) return p; return NULL; Supermarket *FindAdd(char * Add) for(Supermarket * p=Head;p-Next!=End;p=p-Next)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p-Next-Add,Add) return p; return NULL; Supermarketmassage:Supermarketmassage() Head=new Supermarket; Head-Next=new Supermarket; End=Head-Next; in.open(sort.tx

25、t); if(!in) cout这是一个新系统,无商品信息。请先输入。ReadFile(in); if(End-name0=0) break; End-Next=new Supermarket; End=End-Next; in.close(); couttt读取商品信息成功!Next!=End;) temp=Head-Next; Head-Next=Head-Next-Next; delete temp; delete Head,End; int Enum1=100; void Supermarketmassage:ShowMenu() cout 超 市 商 品 管 理 系 统 endl;

26、cout endl; cout 1.增加商品信息 endl; cout 2.显示商品信息 endl; cout 3.排序统计商品 endl; cout 4.查找商品信息 endl; cout 5.删除商品信息 endl; cout 6.修改商品信息 endl; cout 7.销售超市商品 endl; cout 0.安全退出系统 endl; coutnttntt请选择:; void Supermarketmassage:Find() char name20 ,Num10; int x; Supermarket * p=NULL; coutntt*n; couttt 1.按商品的名称查找ntt 2

27、.按商品编号查找; coutx; switch(x) case 1: coutname; if(p=FindItem(name) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该商品信息!nendl; cout输入任意字符!继续; getch(); break; case 2: coutNum; if(p=FindNum(Num) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该编号的商品!nendl; cout输入任意字符!继续; getch(); break; voi

28、d Supermarketmassage:ModifyItem()/修改信息 char name20; Supermarket* p=NULL; coutname; if(p=FindItem(name) couttt已找到商品的信息,请输入新的信息!Next-Input(); cout修改成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; cout输入任意字符!继续; getch(); void Supermarketmassage:RemoveItem()/ 删除信息 int date(int &,int &,int &);int

29、year1,month1,day1,year2,month2,day2,sum1,sum2,SUM; coutyear1month1day1; sum1=date(year1,month1,day1); coutyear2month2day2; sum2=date(year2,month2,day2); SUM=sum2-sum1; if(SUM=30) cout该商品处于安全期,不用处理endl; else char name20; Supermarket * p=NULL,*temp=NULL; couttt请输入要删除的商品名:name; if(p=FindItem(name) temp

30、=p-Next; p-Next=p-Next-Next; delete temp; couttt删除成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; cout输入任意字符!继续; getch();int date(int &day,int &month,int &year) /日期函数 int sum,leap; switch(month) /先计算某月以前月份的总天数 case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break;

31、case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:cout2) /如果是闰年且月份大于2,总天数应该加一天 sum+; return sum; void Supermarketmassage:sale() /销售函数 Supermarket a; Supermarket* p

32、=NULL; int m; char name20 ,Num10; cout请输入想要销售的商品信息:endl; coutntt*n; couttt 1.按商品的名称查找ntt 2.按商品编号查找; coutm; switch(m) case 1: coutname; if(p=FindItem(name) coutnumber; if(number=Enum1) cout销售成功!endl; cout输入任意字符!继续; getch(); else cout库存不足,请重新输入!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; cout输

33、入任意字符!继续; getch(); break; case 2: coutNum; if(p=FindNum(Num) coutnumber; if(number=Enum1) cout销售成功!endl; cout输入任意字符!继续; getch(); else cout库存不足,请重新输入!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; coutname,p1-name); /字符串name里面 strcpy(temp-Num,p1-Num); strcpy(temp-Add,p1-Add); temp-Cnum=p1-Cnum;

34、temp-Mnum=p1-Mnum; temp-Enum=p1-Enum; temp-Price=p1-Price; temp-Sum=p1-Sum; strcpy(p1-name,p2-name); strcpy(p1-Num,p2-Num); strcpy(p1-Add,p2-Add); p1-Cnum=p2-Cnum; p1-Mnum=p2-Mnum; p1-Enum=p2-Enum; p1-Price=p2-Price; p1-Sum=p2-Sum; strcpy(p2-name,temp-name); strcpy(p2-Num,temp-Num); strcpy(p2-Add,temp-Add); p2-Cnum=temp-Cnum; p2-Mnum=temp-Mnum; p2-Enum=temp-Enum; p2-Price=temp

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁