商场销售管理系统C++课程设计.docx
- 文档编号:3898653
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:25
- 大小:306.13KB
商场销售管理系统C++课程设计.docx
《商场销售管理系统C++课程设计.docx》由会员分享,可在线阅读,更多相关《商场销售管理系统C++课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
商场销售管理系统C++课程设计
****大学
程序设计课程设计报告
商场销售管理系统
学号
姓名
日期
一.需求分析……………………………………………….3
二.程序主要功能………………………………………….3
三.程序运行平台………………………………………….4
四.系统功能框架图……………………………………….5
五.程序类说明…………………………………………….6
六.模块分析……………………………………………….7
七.比较有特色的地方…………………………………….13
八.存在的不足与对策…………………………………….13
九.编程体会……………………………………………14
十.程序源代码…………………………………………….15
一.需求分析
本系统旨在实现一个小型的商城销售管理系统,对于一个小型的商场或销售店铺来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便卖家记录商品流通信息,统计销售情况,分析市场需求,帮助卖家更好的管理商场,以获取跟多的利润。
程序主要实现进货管理、商品基本信息查询与修改、利润计算与销售统计、库存管理等及一些辅助功能。
二.程序主要功能
该程序的主要功能有
1.商品信息管理
可对商品信息进行查看、按一定规则排序及商品查找,其中具体信息包括商品名称,编号,进货成本价,销售价,进货总量,销售量,可以对库存,已获得利润,总体成本价等进行计算
2.管理员功能
可实现对商品信息的进行修改,添加,删除等功能,并进行文件的操作储存,以更好的保护信息,能有效的管理好商品信息的隐秘性。
3.辅助功能
该程序实现了一下清屏,清空文件,操作提示等善后辅助功能,能帮助用户更好的应用该程序,使程序的功能最大化实现。
三.程序运行平台
该程序是用VC++6.0制做的,使用MicrosoftVisualC++6.0运行该程序,具体操作是:
打开MicrosoftVisualC++6.0,菜单栏里点文件→打开工作区→找到“图书管理系统.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。
trl计分析能
四.系统功能框架图
五.程序类说明
有关商品信息的类
//存储商品信息
classGoodsInfo
{public:
char*name;//商品名称
intnumber;//商品编号
floatcost_p;//成本单价
floatunit_p;//销售单价
intnum_all;//共计商品件数
intnum_now;//现存商品件数
intnum_sell;//已售出商品件数
floatcost_all;//进货总计成本价
floatprofit;//已销售商品获得的利润
GoodsInfo*next;//指向下一个商
GoodsInfo();//构造函数
GoodsInfo(char*a,intb,floatc,floatu,intall,intsell);//重载构造函数
voidoperator=(constGoodsInfo&right);//重载=
voidsetInfo(char*a,floatc,floatu,intall,intsell);//数据载入
char*getname(){returnname;}//返回姓名用于查找显示商品信息
voidAmend(GoodsInfo*);
voidshow(GoodsInfo*);
~GoodsInfo()
{delete[]name;}
};
商品类链表
classGoodList:
publicGoodsInfo
{
public:
GoodList();//构造函数,指针初始化
~GoodList();//析构函数,释放
GoodsInfo*head;//头指针
GoodsInfo*p;//活动指针1
GoodsInfo*p2;//活动指针2(指向最后一个)
voidcreate();//创建函数
voidshowinfo(GoodsInfo*);//显示
GoodsInfo*search();//查找
voidsaveInfo();//信息存档
voidgetInfo();//上传信息
voidaddInfo(GoodsInfo*);//添加数据
voidsort();//按销量显示
voidmenu();
voiddelete_();//删除节点
};
六.模块分析
菜单:
所有函数均封装在商品类及商品链表类中(GoodsInfo和GoodList)信息存储在类GoodsInfo中,类中定义了3个GoodsInfo指针,一个是*head,作为链表的头指针,另一个是*p,作为活动指针,一个*p2,指向链表的尾节。
在不同的类的成员函数中都可使用,为了防止该活动指针使用过频,造成几个函数同时使用同一个指针指向不明,在有些函数里还定义了一些临时指针。
1.创建
此函数为是创建商品信息数据,构成商品信息表是使用,用于让用户批量添加商品。
按照程序的提示,可依次添加商品信息,按‘Y’继续,其他建则停止,返回主菜单。
此时链表创建成功,*head指向链表的头,p2指向尾。
可用于后续函数的操作。
2.添加
跟创建有一样的用途,用于添加商品信息,不同的是添加只能用于已有原链表存在的情况下。
但这个不能批量添加,一次只能添加一个,并且存放在原链表尾节点的后一个,形成一个新的链表。
3.查找
顾名思义,此函数用于查找商品信息。
在原始信息过多的时候,可以通过查找(按商品编号和商品名称两钟方式)查看自己想看的商品详细信息。
若不存在该商品,程序则自动输出未找到,然后返回主菜单。
若查找到该商品,函数返回该节点的指针,并用单个显示函数显示出来。
4.修改
此函数是基于查找函数之上的。
在查找到需要修改的单元后,选择自己需要修改的项目。
函数会询问是否需要继续修改,Y继续,其他键则返回主菜单。
5.删除
删除和修改一样,基于查找函数之上,用于删除不需要的节点。
操作方法也和前面类似。
6.显示
此函数用于批量显示商品信息。
该函数以表格的型式显示,明了清晰,有助于比较。
7.排序
排序是基于显示函数的一个函数。
该函数用选择排序法,以两种(按销量和按利润)方法排序显示,有助于商家对比比较分析哪种商品的销量好利润高,便于管理和优化商城的盈利。
8.上传
当需要输入数据过多过大时,可以通过上传函数,直接把文件中的数据读到程序中并形成链表,然后再继续后续操作。
这个和创建函数具有差不多的功能,不过一个是从键盘读入,一个是从文件中读入。
文件上传成功后,函数会自动显示成功,然后跳到主菜单进行其他项目。
9.存档
上传和存档是文件和程序的两个接头。
在数据操作过程中为避免数据丢失,可边操作变保存,在退出程序之前,程序也会自动弹出询问是否需要保存,这是比较人性化的一点,以免造成不可估量的后果。
保存成功后会自动输出成功字样,并退出或继续程序。
存档和上传合并利用,下一次运行程序时,可以直接上传上次所保存的数据然后继续操作,就不需要工作人员一个一个慢慢输入了。
10.其他
清屏是一个辅助函数,为了清晰界面方便操作美化外观。
退出程序是会自动询问是否保存文件,然后调用析构函数,释放链表清除数据,然后安全退出。
七、比较有特色的地方
有特色的函数指的是实现地较为巧妙的类的构造函数、成员函数、析构函数等函数,也可以是指针处理的函数,文件处理的函数等比较有特色的函数,能体现巧妙构思即可。
特别是运算附的重载,大大减小了代码的数量,简洁了程序。
还有就是文件操作方面,比较合理和人性化。
八.存在的不足
在文件编写的时候我此次采用的是txt储存数据,虽然有助于使用者查看数据,但是在面对一串庞大数据是,dat文件的效率明显会高很多。
还有就是由于学得不够深,程序的功能总体来说还比较少,有待以后更深层的学习后完善。
比如界面方面的处理,和对每天销售情况的记录等等。
商品流通的具体过程等该程序都没有记录。
需要改进的地方还有很多。
九、心得体会
通过这次课程设计,我清楚的认识到了C++是一门很庞大的并且很有实用价值的一门学科,它一种非常简洁高效的语言。
类的特色在这次编程过程中有了充分的体会。
就以前所学的C语言而言,我明显感觉到C++在编写这种比较复杂的程序时的优势,他的重载函数运算符的等操作也是一大有点。
模块的分块化,当需要用到某个函数时再进行调用,大大增强了程序的可读性,而且代码也更加合理清晰。
就拿这次我所写的商场销售管理系统来说,商品类的操作是一个整体,写在一个中.cpp,文件里面同时也可以另外写到一个.h的头文件里面,在写程序的时候再进行调用。
课程设计真的很能锻炼人,平时上课都是讲的基础知识,上机也只是编写的小程序,不能把知识融会贯通。
然而这次课设是编写的一个小系统,把所学的知识都联系起来了,在刚刚看到要求时是觉得有很大的难度的,毕竟是第一次编写一个商场销售管理系统。
但是想到有志者事竞成,只要敢于思考敢于尝试,按步骤一步一步来也是能编写出程序的。
于是我首先把程序类图先画了出来,把程序基本结构勾勒出来,化整为零,一个一个小功能慢慢写起,写完一个在主函数中验证一个看是否正确,通过后在进行下一个,逐步实现。
而后编写主函数,菜单等,完善功能。
因为我刚刚入门c++,基本工还不足,能力还很弱,所以在写的过程中遇到很多困难,有些以前很熟悉的代码也忘了,于是我开始翻阅以前的书籍,边对照边回忆,终于完成了。
特别是在文件操作方面尤为薄弱,我意思到了自己的弱点。
由于自己的不足,以后学习还要更加努力,不懂时多问老师多向同学学习。
作为一个计算机专业的学生,计算机语言是我们的基本功,我们应该扎实自己的基础,才能更快更好的发展。
十.源代码
#ifndefLIST_H
#defineLIST_H
#include"GOODSINFO.H"
classGoodList:
publicGoodsInfo
{
public:
GoodList();//构造函数,指针初始化
~GoodList();//析构函数,释放
GoodsInfo*head;//头指针
GoodsInfo*p;//活动指针1
GoodsInfo*p2;//活动指针2(指向最后一个)
voidcreate();//创建函数
voidshowinfo(GoodsInfo*);//显示
GoodsInfo*search();//查找
voidsaveInfo();//信息存档
voidgetInfo();//上传信息
voidaddInfo(GoodsInfo*);//添加数据
voidsort();//按销量显示
voidmenu();
voiddelete_();//删除节点
};
#endif
//存储商品信息
#ifndefGOODSINFO_H
#defineGOODSINFO_H
classGoodsInfo
{public:
char*name;//商品名称
intnumber;//商品编号
floatcost_p;//成本单价
floatunit_p;//销售单价
intnum_all;//共计商品件数
intnum_now;//现存商品件数
intnum_sell;//已售出商品件数
floatcost_all;//进货总计成本价
floatprofit;//已销售商品获得的利润
GoodsInfo*next;//指向下一个商
GoodsInfo();//构造函数
GoodsInfo(char*a,intb,floatc,floatu,intall,intsell);//重载构造函数
voidoperator=(constGoodsInfo&right);//重载=
voidsetInfo(char*a,floatc,floatu,intall,intsell);//数据载入
char*getname(){returnname;}//返回姓名用于查找//显示商品信息
voidAmend(GoodsInfo*);
voidshow(GoodsInfo*);
~GoodsInfo()
{delete[]name;}
};
#endif
#include
usingnamespacestd;
#include"GOODSINFO.H"
#include
GoodsInfo:
:
GoodsInfo()//构造函数
{
name=newchar[21];
number=cost_p=unit_p=num_all=num_now=num_sell=cost_all=profit=0;
next=NULL;
}
GoodsInfo:
:
GoodsInfo(char*a,intb,floatc,floatu,intall,intsell)//重载构造函数
{
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;
}
voidGoodsInfo:
:
operator=(constGoodsInfo&right)//重载=
{
strcpy(name,right.name);
number=right.number;
cost_p=right.cost_p;
unit_p=right.unit_p;
num_all=right.num_all;
num_sell=right.num_sell;
num_now=right.num_now;
cost_all=right.cost_all;
profit=right.profit;
}
voidGoodsInfo:
:
setInfo(char*a,floatc,floatu,intall,intsell)//数据载入
{
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;
}
voidGoodsInfo:
:
show(GoodsInfo*h)//显示
{
if(h==NULL)cout<<"NULL!
\n";
else
{cout<<"-----------------------------------\n"
<<"商品名:
"< cout<<"编号: "< <<"成本: "< <<"销售单价: "< <<"销量: "< <<"库存: "< <<"已获得利润: "< } } voidGoodsInfo: : Amend(GoodsInfo*h)//修改信息 {intF; charS; cout<<"~~~~~~~~~~~~~~~~~~\n" <<"^2.商品成本单价^"< <<"^3.商品销售单价^"< <<"^4.进货数量^"< <<"^5.销售数量^"< <<"~~~~~~~~~~~~~~~~~~\n"; do {cout<<"请选择需要修改的项目编号: "< cin>>F; switch(F) { case1: {cout<<"~~~~~~~~~~~~~~~~~~~~\n" <<"|请输入修改后的名称|\n" <<"~~~~~~~~~~~~~~~~~~~~"; cin.ignore(); cin.getline(h->name,21);break;} case2: {cout<<"~~~~~~~~~~~~~~~~~~~~~~~\n" <<"|请输入修改后的成本价: \n" <<"~~~~~~~~~~~~~~~~~~~~~~~"; cin>>h->cost_p;break;} case3: {cout<<"请输入修改后的销售单价: "; cin>>h->unit_p;break;} case4: {cout<<"请输入修改后的进货量: "; cin>>h->num_all;break;} case5: {cout<<"请输入修改后的销售量: "; cin>>h->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; cout<<"是否需要继续修改? "; cin>>S; } while(S=='Y'); } #include #include #include #include #include"LIST.H" GoodList: : GoodList()//构造函数 { p=newGoodsInfo[sizeof(GoodsInfo)]; head=NULL; p2=NULL; p->next=NULL; } GoodList: : ~GoodList()//析构函数 { while(head! =NULL) {p=head; head=p->next; delete[]p; } } voidGoodList: : create()//创建 {intn=0; charf='Y'; cout<<"请输入商品信息: "< while(f=='Y') {n+=1; if(n==1)head=p; else {p=newGoodsInfo[sizeof(GoodsInfo)]; p2->next=p; } cout<<"商品名称: "; if(n==1)cin.ignore(); cin.getline(p->name,21); cout<<"商品编号: "; cin>>p->number; cout<<"成本价: "; cin>>p->cost_p; cout<<"销售价: "; cin>>p->unit_p; cout<<"共计商品件数: "; cin>>p->num_all; cout<<"已售出商品件数: "; cin>>p->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; cout<<"是否继续输入? (输入‘Y’继续)"; cin>>f; cin.ignore(); } if(head! =NULL)p2->next=NULL;//P2指向最后一个 } voidGoodList: : showinfo(GoodsInfo*h)//显示信息 {cout< < while(h! =NULL) { cout< < h=h->next; } } GoodsInfo*GoodList: : search()//查找 { if(head==NULL){cout<<"数据为空! \n";returnNULL;} else {GoodsInfo*h; h=head; intf; cout<<"~~~~~~~~~~~~~~~~\n" <<"请选择查找方式: \n" <<"1.按商品编号\n"<<"2.按商品名称"< <<"~~~~~~~~~~~~~~~~\n"; cin>>f; switch(f) {case1: { intx,y; cout<<"请输入需查找的商品编号: "; cin>>x; while(h! =NULL&&(x! =(y=h->number))) h=h->next; if(x==y)returnh; lse{cout<<"没有找到该商品! \n";returnNULL;} } case2: {charx[21]; intc; cout<<"请输入需查找的商品名称: "; cin.ignore(); cin.getline(x,21); while(h! =NULL&&(c=strcmp(x,h->name))! =0) h=h->next; if(c==0)returnh; else{cout<<"没有找到该商品! \n";returnNULL;} } } } } voidGoodList: : saveInfo()//存档 { fstreamFile; File.open("GoodsInformation.txt",ios: : out|ios: : binary); if(! File) {cout<<"文件打开失败! \n"; exit(0); } p=head; GoodsInfoX; File<<"商品名称编号进价售价总量销量库存已得利润\n"; while(p! =NULL) {X=*p; File< <
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商场 销售 管理 系统 C+ 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)