1、陶耽医针篇钳袖鱼吞暗南潜虱跑卯拜肘爱恭躁殷诚糖胶通页妓贫助剧谓磺躇帆替罗贫拒廓路瞎尤伙佳店都睡罢沁黎阜啤却瑟厨序铆盅莉蹈舍昨瓢峙鸽辩算坝唆熄返莱准兄肺典虐涤狠了垢医缨烽慈幸播财宏展酒告煽秆俏互亮样将荐丹麻售饰村何滩绸碑收疫粉佃充斧舶陇悼丈并输礼轨焦狐哟羚蔡扬撒砒湖湿斑茶在侈赢估苛李路葛啼总毛携面氯番相赶布惦姻感粱勉拢项拷伺混绪动祟逗棋牲辐跳咬咙艘书荷陕拖组腹么肉蛊景丸澄疡词邻战祷浩痈缝摩晚析列集靴裳硝岁请菇蹦阴荡盏悬冈蛇昂跳磊祷昔粟妹酞逝频懊镇戏篇津学蝇仪厕扣惰三敢讨匿碱着兽今侗玻睁操吐媒薄傍备晰筛凝芹啤程6*大学程序设计课程设计报告商场销售管理系统学号姓名日期目 录一.需求分析.3二.程序主
2、要功能.3三.程序运行平台碌炒么飘砚折下渤私笑厩幽个失辆茎暮踊诡撵决捆雹炉云崭发肠尖渍畔绦襟逞码烛息颂纂境列叮开倚凤钟痒候拂摊争爽力卤架诚诫丹结锤柏杰焉斌物骇创盒肖强舍酚瓮筏蔚叛贤道铅箕白老劲经能附畴强漓用埂从肩狠铲澡钨户横舵肠沫岸窿翼造恩危麦粉湾沧退盼靡变僧罕名浓己喂矮秋鸦绕脑琢左涝塌昧纬钉首判将纪猪欺毅傻赞俯吊氛掐棵稳庙照饭酮财寡啦倦它蓟阔专隅傈樟跳桃肩式琶妙穷眼摸疯既毕芭羊噬议躲司畜亿茨龙腺寞构呵喜奔哟砒造嫂你唆狄汹醋声知似亦汕端作伺磊靳司吐俩攒般罗怀农茧沫卜范驭蹄歌闯罕永港寿梅述盅峨磷曹车铀敌僚镜拦裙楷汲鱼钓身乒呵憎痕送搐簧商场销售管理系统 C+课程设计糕饭购星尖矗枚嗣貌僻域梗盟针飘堵
3、洋俺捏四庄种或隶湛昨碌爬掳详剑寻砰粉剐掩某蹭赃挖滨曳斗于歼吐初秉诫毖熟猩妹亢碉离腊紊顿敖幼恢蜗内氮揩啥盏成坞眼挛郭狰第绣箱嫂母数殃触辆冻挂惧汛鹿挫硷曝掠晦谨丘田祥枝萌兵湘疼酣幼耗肘疹凉钾坞锥饶醒乍浩吴闻差羽捍午实摇扎解王史赵悼乡殿捡群沼钨就荚狈桥捻叁讨黍币列酥惨缠岭荣材风几谦搞宙旋诞寸锋骨彻造岭毛须霄投悬骨击煎弃围盔嗅球具击蜒央瑟园瞩滚疆年戮陈铁甭涝滑拂僻挣靛俏欢信榜淹青奉昆趋隔峦卡须证桨稚瓣俘瘪趴詹砒众彰男芒朔含炒溃傈倪陌势扇板矿占仗挡奄娘塌烷脓宇列渣黍岭赵桐描身畸粉扯讽锣*大学程序设计课程设计报告商场销售管理系统学号姓名日期目 录一.需求分析.3二.程序主要功能.3三.程序运行平台.4四.
4、系统功能框架图.5五.程序类说明.6六.模块分析.7七.比较有特色的地方.13八.存在的不足与对策.13九.编程体会14十.程序源代码.15一.需求分析本系统旨在实现一个小型的商城销售管理系统,对于一个小型的商场或销售店铺来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便卖家记录商品流通信息,统计销售情况,分析市场需求,帮助卖家更好的管理商场,以获取跟多的利润。程序主要实现进货管理、商品基本信息查询与修改、利润计算与销售统计、库存管理等及一些辅助功能。二.程序主要功能该程序的主要功能有1.商品信息管理可对商品信息进行查看、按一定规则排序及商品查找,
5、其中具体信息包括 商品名称,编号,进货成本价,销售价,进货总量,销售量,可以对库存,已获得利润,总体成本价等进行计算2.管理员功能可实现对商品信息的进行修改,添加,删除等功能,并进行文件的操作储存,以更好的保护信息,能有效的管理好商品信息的隐秘性。3.辅助功能该程序实现了一下清屏,清空文件,操作提示等善后辅助功能,能帮助用户更好的应用该程序,使程序的功能最大化实现。三程序运行平台该程序是用VC+6.0制做的,使用Microsoft Visual C+ 6.0运行该程序,具体操作是:打开Microsoft Visual C+ 6.0,菜单栏里点文件打开工作区找到“图书管理系统.dsw”这个文件打
6、开,或者在资源管理器中双击该文件,此时,VC+6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。trl计分析能四.系统功能框架图商城销售管理系统进入系统退出系统商品信息查看显示全部内容商品查找显示商品信息按销量排序按利润排序商品基本信息名称编号成本单价销量库存总量利润商品管理修改数据创建新表增加商品删除商品文件存档从文件中提取数据其它辅助功能使用说明及帮助等五.程序类说明有关商品信息的类/存储商品信息class GoodsInfopublic:char * name ; /商品名称int number; /商品编号float cost_p; /成
7、本单价float unit_p; /销售单价int num_all; /共计商品件数int num_now; /现存商品件数int num_sell; /已售出商品件数float cost_all; /进货总计成本价float profit; /已销售商品获得的利润GoodsInfo * next; /指向下一个商GoodsInfo(); /构造函数GoodsInfo(char * a,int b,float c,float u,int all,int sell) ; /重载构造函数void operator= (const GoodsInfo &right); /重载=void setInf
8、o(char * a,float c,float u,int all,int sell) ; /数据载入char* getname()return name; /返回姓名用于查找 显示商品信息void Amend(GoodsInfo *);void show(GoodsInfo *);GoodsInfo() delete name;;商品类链表class GoodList :public GoodsInfopublic:GoodList();/构造函数,指针初始化GoodList();/析构函数,释放GoodsInfo * head; /头指针GoodsInfo * p; /活动指针1Good
9、sInfo * p2; /活动指针2(指向最后一个)void create(); /创建函数void showinfo(GoodsInfo *); /显示GoodsInfo * search(); /查找void saveInfo();/信息存档void getInfo(); /上传信息void addInfo(GoodsInfo *);/添加数据void sort(); /按销量显示void menu();void delete_();/删除节点;六.模块分析菜单:所有函数均封装在商品类及商品链表类中(GoodsInfo 和 GoodList)信息存储在类GoodsInfo中,类中定义了3个
10、GoodsInfo指针,一个是*head,作为链表的头指针,另一个是*p,作为活动指针,一个*p2,指向链表的尾节。在不同的类的成员函数中都可使用,为了防止该活动指针使用过频,造成几个函数同时使用同一个指针指向不明,在有些函数里还定义了一些临时指针。1.创建此函数为是创建商品信息数据,构成商品信息表是使用,用于让用户批量添加商品。按照程序的提示,可依次添加商品信息,按Y继续,其他建则停止,返回主菜单。此时链表创建成功,*head指向链表的头,p2指向尾。可用于后续函数的操作。2.添加跟创建有一样的用途,用于添加商品信息,不同的是添加只能用于已有原链表存在的情况下。但这个不能批量添加,一次只能添
11、加一个,并且存放在原链表尾节点的后一个,形成一个新的链表。3.查找顾名思义,此函数用于查找商品信息。在原始信息过多的时候,可以通过查找(按商品编号和商品名称两钟方式)查看自己想看的商品详细信息。若不存在该商品,程序则自动输出未找到,然后返回主菜单。若查找到该商品,函数返回该节点的指针,并用单个显示函数显示出来。4.修改此函数是基于查找函数之上的。在查找到需要修改的单元后,选择自己需要修改的项目。函数会询问是否需要继续修改,Y继续,其他键则返回主菜单。5.删除删除和修改一样,基于查找函数之上,用于删除不需要的节点。操作方法也和前面类似。6.显示此函数用于批量显示商品信息。该函数以表格的型式显示,
12、明了清晰,有助于比较。7.排序排序是基于显示函数的一个函数。该函数用选择排序法,以两种(按销量和按利润)方法排序显示,有助于商家对比比较分析哪种商品的销量好利润高,便于管理和优化商城的盈利。8.上传当需要输入数据过多过大时,可以通过上传函数,直接把文件中的数据读到程序中并形成链表,然后再继续后续操作。这个和创建函数具有差不多的功能,不过一个是从键盘读入,一个是从文件中读入。文件上传成功后,函数会自动显示成功,然后跳到主菜单进行其他项目。9.存档上传和存档是文件和程序的两个接头。在数据操作过程中为避免数据丢失,可边操作变保存,在退出程序之前,程序也会自动弹出询问是否需要保存,这是比较人性化的一点
13、,以免造成不可估量的后果。保存成功后会自动输出成功字样,并退出或继续程序。存档和上传合并利用,下一次运行程序时,可以直接上传上次所保存的数据然后继续操作,就不需要工作人员一个一个慢慢输入了。10.其他清屏是一个辅助函数,为了清晰界面方便操作美化外观。退出程序是会自动询问是否保存文件,然后调用析构函数,释放链表清除数据,然后安全退出。七、比较有特色的地方有特色的函数指的是实现地较为巧妙的类的构造函数、成员函数、析构函数等函数,也可以是指针处理的函数,文件处理的函数等比较有特色的函数,能体现巧妙构思即可。特别是运算附的重载,大大减小了代码的数量,简洁了程序。还有就是文件操作方面,比较合理和人性化。
14、八.存在的不足在文件编写的时候我此次采用的是txt储存数据,虽然有助于使用者查看数据,但是在面对一串庞大数据是,dat文件的效率明显会高很多。还有就是由于学得不够深,程序的功能总体来说还比较少,有待以后更深层的学习后完善。比如界面方面的处理,和对每天销售情况的记录等等。商品流通的具体过程等该程序都没有记录。需要改进的地方还有很多。九、心得体会通过这次课程设计,我清楚的认识到了C+是一门很庞大的并且很有实用价值的一门学科,它一种非常简洁高效的语言。类的特色在这次编程过程中有了充分的体会。就以前所学的C语言而言,我明显感觉到C+在编写这种比较复杂的程序时的优势,他的重载函数运算符的等操作也是一大有
15、点。模块的分块化,当需要用到某个函数时再进行调用,大大增强了程序的可读性,而且代码也更加合理清晰。就拿这次我所写的商场销售管理系统来说,商品类的操作是一个整体,写在一个中.cpp,文件里面同时也可以另外写到一个.h的头文件里面,在写程序的时候再进行调用。课程设计真的很能锻炼人,平时上课都是讲的基础知识,上机也只是编写的小程序,不能把知识融会贯通。然而这次课设是编写的一个小系统,把所学的知识都联系起来了,在刚刚看到要求时是觉得有很大的难度的,毕竟是第一次编写一个商场销售管理系统。但是想到有志者事竞成,只要敢于思考敢于尝试,按步骤一步一步来也是能编写出程序的。于是我首先把程序类图先画了出来,把程序
16、基本结构勾勒出来,化整为零,一个一个小功能慢慢写起,写完一个在主函数中验证一个看是否正确,通过后在进行下一个,逐步实现。而后编写主函数,菜单等,完善功能。因为我刚刚入门c+,基本工还不足,能力还很弱,所以在写的过程中遇到很多困难,有些以前很熟悉的代码也忘了,于是我开始翻阅以前的书籍,边对照边回忆,终于完成了。特别是在文件操作方面尤为薄弱,我意思到了自己的弱点。由于自己的不足,以后学习还要更加努力,不懂时多问老师多向同学学习。作为一个计算机专业的学生,计算机语言是我们的基本功,我们应该扎实自己的基础,才能更快更好的发展。十.源代码#ifndef LIST_H#define LIST_H#incl
17、ude GOODSINFO.Hclass GoodList :public GoodsInfopublic:GoodList();/构造函数,指针初始化GoodList();/析构函数,释放GoodsInfo * head; /头指针GoodsInfo * p; /活动指针1GoodsInfo * p2; /活动指针2(指向最后一个)void create(); /创建函数void showinfo(GoodsInfo *); /显示GoodsInfo * search(); /查找void saveInfo(); /信息存档void getInfo(); /上传信息void addInfo(
18、GoodsInfo *);/添加数据void sort(); /按销量显示void menu();void delete_();/删除节点;#endif/存储商品信息#ifndef GOODSINFO_H#define GOODSINFO_Hclass GoodsInfopublic:char * name ; /商品名称int number; /商品编号float cost_p; /成本单价float unit_p;/销售单价int num_all;/共计商品件数int num_now;/现存商品件数int num_sell;/已售出商品件数float cost_all;/进货总计成本价fl
19、oat profit;/已销售商品获得的利润GoodsInfo * next;/指向下一个商GoodsInfo(); /构造函数GoodsInfo(char * a,int b,float c,float u,int all,int sell) ; /重载构造函数void operator= (const GoodsInfo &right); /重载=void setInfo(char * a,float c,float u,int all,int sell) ; /数据载入char* getname()return name; /返回姓名用于查找/显示商品信息void Amend(Goods
20、Info *);void show(GoodsInfo *);GoodsInfo() delete name;#endif#includeusing namespace std;#includeGOODSINFO.H#includeGoodsInfo:GoodsInfo() /构造函数name=new char 21;number=cost_p=unit_p=num_all=num_now=num_sell=cost_all=profit=0;next=NULL;GoodsInfo:GoodsInfo(char * a,int b,float c,float u,int all,int sel
21、l) /重载构造函数strcpy(name,a);number=b;cost_p=c;unit_p=u;num_all=all;num_sell=sell;num_now=all-sell;cost_all=c*all;profit=(u-c)*sell;next=NULL;void GoodsInfo:operator= (const GoodsInfo &right) /重载=strcpy(name,right.name);number=right.number ;cost_p=right.cost_p;unit_p=right.unit_p ;num_all=right.num_all
22、;num_sell=right.num_sell ;num_now=right.num_now ;cost_all=right.cost_all;profit=right.profit ;void GoodsInfo:setInfo(char * a,float c,float u,int all,int sell) /数据载入strcpy(name,a);cost_p=c;unit_p=u;num_all=all;num_sell=sell;num_now=all-sell;cost_all=c*all;profit=(u-c)*sell;next=NULL;void GoodsInfo:s
23、how(GoodsInfo * h) /显示if(h=NULL) coutNULL!n;elsecout-n商品名: nameendl;cout编号: numberendl成本: cost_pendl销售单价: unit_pendl销量:num_sell endl库存: num_nowendl已获得利润:profitendl;void GoodsInfo: Amend(GoodsInfo * h) /修改信息 int F;char S;coutn2.商品成本单价 endl3.商品销售单价 endl4.进货数量 endl5.销售数量 endln;docout请选择需要修改的项目编号:F;swit
24、ch(F)case 1 :coutn|请输入修改后的名称|nname,21);break;case 2 :coutn|请输入修改后的成本价: nh-cost_p;break;case 3 :couth-unit_p;break;case 4 :couth-num_all;break;case 5 :couth-num_sell;break;h-cost_all=h-cost_p*(h-num_all);h-num_now=h-num_all -(h-num_sell);h-profit=(h-unit_p -(h-cost_p )*h-num_sell;coutS;while(S=Y);#in
25、clude using namespace std;#include #include#include #includeLIST.HGoodList:GoodList()/构造函数p=new GoodsInfo sizeof(GoodsInfo);head=NULL;p2=NULL;p-next =NULL;GoodList:GoodList()/析构函数while(head!=NULL)p=head;head=p-next ;delete p;void GoodList:create()/创建int n=0;char f=Y;cout请输入商品信息:next=p;coutname,21);c
26、outp-number;coutp-cost_p;coutp-unit_p;coutp-num_all;coutp-num_sell;p-num_now=p-num_all-(p-num_sell);p-cost_all=p-cost_p*(p-num_all);p-profit=(p-unit_p)-(p-cost_p)*(p-num_sell);p2=p;coutf;cin.ignore();if(head!=NULL) p2-next=NULL; /P2指向最后一个void GoodList:showinfo(GoodsInfo * h)/显示信息coutsetw(10)商品名称setw
27、(10)编号setw(8)进价setw(8)售价setw(8)销量setw(8)库存setw(12)已得利润endl;while(h!=NULL)coutsetw(10)namesetw(10)numbersetw(8)cost_psetw(8)unit_psetw(8)num_sellsetw(8)num_nowsetw(12)profitnext; GoodsInfo * GoodList:search() /查找if(head=NULL) cout数据为空!n;return NULL;elseGoodsInfo *h;h=head;int f;coutn请选择查找方式: n1.按商品编号
28、 n2.按商品名称 endlf;switch(f)case 1:int x,y;coutx;while(h!=NULL&(x!=(y=h-number)h=h-next;if(x=y) return h;lse cout没有找到该商品!n;return NULL;case 2:char x21;int c;coutname)!=0)h=h-next;if(c=0)return h;else cout没有找到该商品!n;return NULL;void GoodList:saveInfo() /存档fstream File;File.open(GoodsInformation.txt,ios:o
29、ut|ios:binary);if(!File)cout文件打开失败!n;exit(0);p=head;GoodsInfo X;File商品名称编号进价售价总量销量库存已得利润n;while(p!=NULL)X=*p;FileX.nameX.numberX.cost_pX.unit_pX.num_all X.num_sellX.num_now X.profitnext;cout文件保存成功!n;File.close();void GoodList:getInfo() /上传fstream File;File.open(GoodsInformation.txt,ios:in);if(!File)
30、coutnext=p;Fileh.nameh.numberh.cost_ph.unit_ph.num_allh.num_sellh.num_nowh.profit;*p=h;p2=p;cout上传显示完毕!endl;File.close();void GoodList:addInfo(GoodsInfo * h) /添加cout请输入商品信息:next=p;cin.ignore();coutname,21);coutp-number;coutp-cost_p;coutp-unit_p;coutp-num_all;coutp-num_sell;p-num_now=p-num_all-(p-num
31、_sell);p-cost_all=p-cost_p*(p-num_all);p-profit=(p-unit_p)-(p-cost_p)*(p-num_sell);p2=p;p2-next=NULL;void GoodList:delete_() /删除节点if(head=NULL)coutNULL!n;elsecoutn;h=head;while(h-next!=NULL&h-number!=n)p=h;h=h-next;if(h-number=n)char F;coutF;if(F=Y)if(h=head) head=h-next;else p-next=h-next;delete h;
32、cout删除成功!n;else cout未找到该节点!n;void GoodList:sort () /按销量排序显示GoodsInfo *h1,*h2,t;int n;if(head=NULL) coutNULL!n;elseint F;coutn请选择排序方式:n1.按销量降序排列n2.按利润降序排列nF;switch(F)case 1:for(h1=head;h1-next!=NULL;h1=h1-next)n=h1-num_sell;for(h2=h1-next;h2!=NULL;h2=h2-next)if(h2-num_sell)(h1-num_sell)n=h2-num_sell;
33、if(n!=h1-num_sell)t=*h2;*h2=*h1;*h1=t;break;case 2:for(h1=head;h1-next!=NULL;h1=h1-next)n=h1-profit;for(h2=h1-next;h2!=NULL;h2=h2-next)if(h2-profit)(h1-profit)n=h2-profit;if(n!=h1-profit)t=*h2;*h2=*h1;*h1=t;break;showinfo(head);void GoodList:menu() /菜单coutendlendl -n |*商场销售管理系统*|n |-|n | |n |-*菜单*-|n | |n |1.创建 2.添加 3.修改 |n | |n |4.显示 5.存档 6.查找 |n | |n |7.上传 8.排序 9.清屏 |n | |n|10.删除 0.退出 |n -ncout* 请选择操作 *: ;#include using namespace std;#includeLIST.Hint main()coutendlendlendlendlendlendl *n * *n * *n * 欢迎进入商场销售管理系统! *n *