商场销售管理系统 C++课程设计

更新时间:2023-12-27 07:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

****

大学

程序设计课程设计报告

商场销售管理系统

学号 姓名 日期

1

目 录

一.需求分析……………………………………………….3

二.程序主要功能………………………………………….3

三.程序运行平台………………………………………….4

四.系统功能框架图……………………………………….5

五.程序类说明…………………………………………….6

六.模块分析……………………………………………….7

七.比较有特色的地方…………………………………….13

八.存在的不足与对策…………………………………….13

九.编程体会……………………………………………14

十.程序源代码…………………………………………….15

2

一.需求分析

本系统旨在实现一个小型的商城销售管理系统,对于一个小型的商场或销售店铺来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便卖家记录商品流通信息,统计销售情况,分析市场需求,帮助卖家更好的管理商场,以获取跟多的利润。

程序主要实现进货管理、商品基本信息查询与修改、利润计算与销售统计、库存管理等及一些辅助功能。

二.程序主要功能

该程序的主要功能有 1.商品信息管理 可对商品信息进行查看、按一定规则排序及商品查找,其中具体信息包括 商品名称,编号,进货成本价,销售价,进货总量,销售量,可以对库存,已获得利润,总体成本价等进行计算

2.管理员功能

可实现对商品信息的进行修改,添加,删除等功能,并进行文件的操作储存,以更好的保护信息,能有效的管理好商品信息的隐秘性。

3

3.辅助功能

该程序实现了一下清屏,清空文件,操作提示等善后辅助功能,能帮助用户更好的应用该程序,使程序的功能最大化实现。

三.程序运行平台 该程序是用VC++6.0制做的,使用Microsoft Visual C++ 6.0运行该程序,具体操作是:打开Microsoft Visual C++ 6.0,菜单栏里点文件→打开工作区→找到“图书管理系统.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。

4

四.系统功能框架图

商城销售管理系统 商品基本信息 名称 编号 成本 单价 销量 商品管理 修改数据 创建新表 增加商品 删除商品 文件存档 商品信息查看 显示全部内容 进入系统 退出系统 商品查找 显示商品信息 按销量排序 按利润排序 其它辅助功能 使用说明及帮助等

5

五.程序类说明

有关商品信息的类

//存储商品信息 class GoodsInfo {public:

char * name ; //商品名称 int number; //商品编号 float cost_p; //成本单价 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 setInfo(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 GoodsInfo { public:

GoodList();//构造函数,指针初始化 ~GoodList();//析构函数,释放 GoodsInfo * head; //头指针

6

GoodsInfo * p; //活动指针1

GoodsInfo * p2; //活动指针2(指向最后一个) void create(); //创建函数

void showinfo(GoodsInfo *); //显示 GoodsInfo * search(); //查找 void saveInfo();//信息存档 void getInfo(); //上传信息

void addInfo(GoodsInfo *); //添加数据 void sort(); //按销量显示 void menu();

void delete_();//删除节点 };

六.模块分析 菜单:

7

所有函数均封装在商品类及商品链表类中(GoodsInfo 和 GoodList)信息存储在类GoodsInfo中,类中定义了3个GoodsInfo指针,一个是*head,作为链表的头指针,另一个是*p,作为活动指针,一个*p2,指向链表的尾节。在不同的类的成员函数中都可使用,为了防止该活动指针使用过频,造成几个函数同时使用同一个指针指向不明,在有些函数里还定义了一些临时指针。 1.创建

此函数为是创建商品信息数据,构成商品信息表是使用,用于让用户批量添加商品。

按照程序的提示,可依次添加商品信息,按‘Y’继续,其他建则停止,返回主菜单。此时链表创建成功,*head指向链表的

8

头,p2指向尾。可用于后续函数的操作。 2.添加

跟创建有一样的用途,用于添加商品信息,不同的是添加只能用于已有原链表存在的情况下。但这个不能批量添加,一次只能添加一个,并且存放在原链表尾节点的后一个,形成一个新的链表。

3.查找

顾名思义,此函数用于查找商品信息。在原始信息过多的时候,可以通过查找(按商品编号和商品名称两钟方式)查看自己想看的商品详细信息。

若不存在该商品,程序则自动输出未找到,然后返回主菜单。若查找到该商品,函数返回该节点的指针,并用单个显示函数显示出来。 4.修改

此函数是基于查找函数之上的。在查找到需要修改的单元后,选择自己需要修改的项目。

9

函数会询问是否需要继续修改,Y继续,其他键则返回主菜单。 5.删除 删除和修改一样,基于查找函数之上,用于删除不需要的节点。操作方法也和前面类似。 6.显示

10

此函数用于批量显示商品信息。该函数以表格的型式显示,明了清晰,有助于比较。

7.排序

排序是基于显示函数的一个函数。该函数用选择排序法,以两种(按销量和按利润)方法排序显示,有助于商家对比比较分析哪种商品的销量好利润高,便于管理和优化商城的盈利。 8.上传

当需要输入数据过多过大时,可以通过上传函数,直接把文件中的数据读到程序中并形成链表,然后再继续后续操作。这个和创建函数具有差不多的功能,不过一个是从键盘读入,一个是从文件中读入。文件上传成功后,函数会自动显示成功,然后跳到主菜单进行其他项目。 9.存档 上传和存档是文件和程序的两个接头。在数据操作过程中为避免数据丢失,可边操作变保存,在退出程序之前,程序也会自动弹出询问是否需要保存,这是比较人性化的一点,以免造成不可估量的后果。保存成功后会自动输出成功字样,并退出或继续程序。

11

存档和上传合并利用,下一次运行程序时,可以直接上传上次所保存的数据然后继续操作,就不需要工作人员一个一个慢慢输入了。 10.其他

清屏是一个辅助函数,为了清晰界面方便操作美化外观。退出程序是会自动询问是否保存文件,然后调用析构函数,释放链表清除数据,然后安全退出。

七、比较有特色的地方

有特色的函数指的是实现地较为巧妙的类的构造函数、成员函数、析构函数等函数,也可以是指针处理的函数,文件处理的函数等比较有特色的函数,能体现巧妙构思即可。特别是运算附的重载,大大减小了代码的数量,简洁了程序。还有就是文件操作方面,比较合理和人性化。

八.存在的不足

12

在文件编写的时候我此次采用的是txt储存数据,虽然有助于使用者查看数据,但是在面对一串庞大数据是,dat文件的效率明显会高很多。还有就是由于学得不够深,程序的功能总体来说还比较少,有待以后更深层的学习后完善。比如界面方面的处理,和对每天销售情况的记录等等。商品流通的具体过程等该程序都没有记录。需要改进的地方还有很多。

九、心得体会 通过这次课程设计,我清楚的认识到了C++是一门很庞大的并且很有实用价值的一门学科,它一种非常简洁高效的语言。类的特色在这次编程过程中有了充分的体会。就以前所学的C语言而言,我明显感觉到C++在编写这种比较复杂的程序时的优势,他的重载函数运算符的等操作也是一大有点。模块的分块化,当需要用到某个函数时再进行调用,大大增强了程序的可读性,而且代码也更加合理清晰。

就拿这次我所写的商场销售管理系统来说,商品类的操作是一个整体,写在一个中.cpp,文件里面同时也可以另外写到一个.h的头文件里面,在写程序的时候再进行调用。课程设计真的很能锻炼人,平时上课都是讲的基础知识,上机也只是编写的小程序,不能把知识融会贯通。然而这次课设是编写的一个小系统,把所

13

学的知识都联系起来了,在刚刚看到要求时是觉得有很大的难度的,毕竟是第一次编写一个商场销售管理系统。但是想到有志者事竞成,只要敢于思考敢于尝试,按步骤一步一步来也是能编写出程序的。于是我首先把程序类图先画了出来,把程序基本结构勾勒出来,化整为零,一个一个小功能慢慢写起,写完一个在主函数中验证一个看是否正确,通过后在进行下一个,逐步实现。而后编写主函数,菜单等,完善功能。因为我刚刚入门c++,基本工还不足,能力还很弱,所以在写的过程中遇到很多困难,有些以前很熟悉的代码也忘了,于是我开始翻阅以前的书籍,边对照边回忆,终于完成了。特别是在文件操作方面尤为薄弱,我意思到了自己的弱点。由于自己的不足,以后学习还要更加努力,不懂时多问老师多向同学学习。作为一个计算机专业的学生,计算机语言是我们的基本功,我们应该扎实自己的基础,才能更快更好的发展。

十.源代码

#ifndef LIST_H #define LIST_H

#include \class GoodList :public GoodsInfo { public: GoodList(); ~GoodList();

GoodsInfo * head; //头指针 GoodsInfo * p; GoodsInfo * p2;

//活动指针1

//活动指针2(指向最后一个)

//构造函数,指针初始化 //析构函数,释放

14

void create(); //创建函数

void showinfo(GoodsInfo *); //显示 GoodsInfo * search(); //查找

void saveInfo(); //信息存档 void getInfo(); //上传信息 void addInfo(GoodsInfo *); void menu(); void delete_(); }; #endif //存储商品信息

#ifndef GOODSINFO_H #define GOODSINFO_H class GoodsInfo {public:

char * name ; //商品名称 int number; //商品编号 float cost_p; float unit_p; int num_all; int num_now; int num_sell; float cost_all; float profit; GoodsInfo * next;

//成本单价 //销售单价 //共计商品件数 //现存商品件数 //已售出商品件数 //进货总计成本价 //已销售商品获得的利润 //指向下一个商

//删除节点

//添加数据

void sort(); //按销量显示

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(GoodsInfo *); void show(GoodsInfo *); ~GoodsInfo() { delete [] name;} };

15

//显示商品信息

#endif

#include using namespace std; #include\#include

GoodsInfo::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 sell) //重载构造函数 {

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 ; 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) //数据载入

16

{

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::show(GoodsInfo * h) //显示 {

if(h==NULL) cout<<\else

{cout<<\<<\商品名: \cout<<\编号: \<<\成本: \<<\销售单价: \<<\销量:\<<\库存: \<<\已获得利润:\} }

void GoodsInfo:: Amend(GoodsInfo * h) //修改信息 { int F; char S;

cout<<\<<\商品成本单价 ^\<<\商品销售单价 ^\<<\进货数量 ^\<<\销售数量 ^\<<\do

{cout<<\请选择需要修改的项目编号:\cin>>F;

17

switch(F) {

case 1 :{cout<<\<<\请输入修改后的名称|\\n\

<<\cin.ignore ();

cin.getline(h->name,21);break;}

case 2 :{cout<<\<<\请输入修改后的成本价: \\n\

<<\cin>>h->cost_p;break;}

case 3 :{cout<<\请输入修改后的销售单价: \cin>>h->unit_p;break;}

case 4 :{cout<<\请输入修改后的进货量: \cin>>h->num_all;break;}

case 5 :{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 using namespace std; #include #include #include #include\GoodList::GoodList() {

p=new GoodsInfo [sizeof(GoodsInfo)]; head=NULL; p2=NULL; p->next =NULL;

18

//构造函数

}

GoodList::~GoodList() {

while(head!=NULL) {p=head; head=p->next ; delete [] p; } }

void GoodList::create() {int n=0; char f='Y';

cout<<\请输入商品信息:\while(f=='Y') {n+=1;

if(n==1) head=p; else

{p=new GoodsInfo [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;

19

//析构函数

//创建

cout<<\是否继续输入?(输入‘Y’继续)\cin>>f; cin.ignore(); }

if(head!=NULL) p2->next=NULL; //P2指向最后一个 }

void GoodList::showinfo(GoodsInfo * h) //显示信息

{cout<

<

cout<name<number<cost_p<unit_p

<num_sell<num_now<profit<

h=h->next; }

}

GoodsInfo * GoodList::search() //查找 {

if(head==NULL) { cout<<\数据为空!\\n\else

{GoodsInfo *h; h=head; int f;

cout<<\<<\请选择查找方式: \\n\<<\按商品编号 \\n\cin>>f; switch(f) {case 1: { int x,y;

cout<<\请输入需查找的商品编号:\cin>>x;

20

<<\按商品名称 \

<<\

<<\<<\

cout<<\请选择操作 ***: \}#include using namespace std; #include\int main() { <<\<<\***\\n\<<\***\\n\<<\***\\n\<<\***\\n\<<\***\\n\<<\<<\

system(\system(\GoodList goods; GoodsInfo * a; int N;

goods.menu(); cin>>N; while(N!=0) {

switch(N) { case 1 : { break; }

|10.删除 0.退出 |\\n\

---------------------------------------------\\n\

cout<

*** *** *** 欢迎进入商场销售管理系统! *** ***

\

****************************************************\\n\

****************************************************\\n\

goods.create();

26

case 2 : { break; } case 3 : {

<<\请选择需要修改的单元\\n\

goods.addInfo(goods.p2);

cout<<\

<<\a=goods.search(); goods.show(a); if(a!=NULL) goods.Amend(a); else cout<<\break; } case 4 : { break; } case 5 : { break; }

case 6 : { a=goods.search (); goods.show (a); break; } case 7 : { break; } case 8 : { break; }

case 9 : { break; }

case 10 :{ goods.delete_(); break; } }

goods.menu();

27

goods.showinfo(goods.head);

goods.saveInfo();

goods.getInfo();

goods.sort();

system(\

cin>>N; } char F; cout<<\cin>>F;

if(F=='Y') goods.saveInfo(); system(\

cout<<\

return 0; }

\

谢谢使用!\

***是否需要保存文件***('Y'确认保存) \

28

本文来源:https://www.bwwdw.com/article/8u0x.html

Top