超市管理系统C++.docx
- 文档编号:16791088
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:25
- 大小:282.63KB
超市管理系统C++.docx
《超市管理系统C++.docx》由会员分享,可在线阅读,更多相关《超市管理系统C++.docx(25页珍藏版)》请在冰点文库上搜索。
超市管理系统C++
C++程序设计课程设计报告
————超市管理系统
班级:
一.设计题目与要求…………………………………
二.需求分析………………………………………………
三.概要设计…………………………………
四.详细设计……………………………………………
五.测试………………………………………………
六.结论及改进设想…………………………………
一、课程设计题目与要求
1.设计题目
超市管理系统
2.系统功能要求
(1)销售功能。
购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。
如果有库存量,输入购买的数量,进行相应计算。
如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
①添加功能:
主要完成商品信息的添加。
②查询功能:
可按商品类别、商品名称、生产厂家进行查询。
若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!
”。
③修改功能:
可根据查询结果对相应的记录进行修改。
④删除功能:
主要完成商品信息的删除。
先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;
可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
(4)保存功能:
将当前程序中的商品信息存入文件中。
(5)读取功能:
从文件中将商品信息读入程序。
二.需求分析
中小型超市采购的商品一般都成千上万件。
对这些商品进行有效的管理必不可少。
每件商品一般都需要记录商品名、条形码、类别、价格、出厂日期等商品的基本信息。
除此之外,还需要记录商品的其他相关信息,如生产厂家、供货处代码、厂家网址、厂家电话等。
超市商品的相关信息需要存储到文件系统中,一般都需要提供对商品信息的添加、编辑、删除等操作。
超市管理员每天都会记录购进的商品信息,核销过期的商品等。
为了巩固我们所学的C++语言程序设计知识,也为了满足课程设计的要求,我们在对几个中小型超市进行调研的基础上,设计和实现一个小型的超市商品管理系统,提供商品系统的添加、删除、编辑等功能。
同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。
三.概要设计
1增加商品
2显示商品
3排序统计商品
4查找商品
5删除商品
6修改商品
7安全退出
四.详细设计
1.设计classSupermarket商品类,实现对商品信息的描叙;设计classSupermarketmassage类,实现对商品信息的增加,删除,修改,查询,统计等。
以下是函数功能表:
函数
功能
voidDisplay()
输出商品的信息
Supermarket()
构造函数
~Supermarket()
析构函数
voidAddItem()
增加商品
voidRemoveItem()
删除商品
voidModifyItem()
修改商品
voidFind()
查询商品
intListCount()
统计商品
voidSave()
基础数据存盘
voidSort()
排序商品
Supermarketmassage()
构造函数
(1)用类的成员函数对链表的数据进行操作,其功能如上表所列。
2.设计类及对象
本程序定义了两个类,定义如下:
1)classSupermarket
classSupermarket
{public:
charname[20];
charNum[20];
intCnum;//进货总数
intMnum;//销售数目
intEnum;//剩余库存数目
doublePrice;//单价
charAdd[20];//产地
doubleSum;//销售额
Supermarket*Next;
voidInput()
{
cout<<"\t\t请输入商品名:
";cin>>name;
cout<<"\t\t请输入商品编号:
";cin>>Num;
cout<<"\t\t请输入商品进货总数:
";cin>>Cnum;
cout<<"\t\t请输入商品销售数目:
";cin>>Mnum;
cout<<"\t\t请输入商品剩余库存数目:
";cin>>Enum;
cout<<"\t\t请输入商品产地:
";cin>>Add;
cout<<"\t\t请输入商品单价:
";cin>>Price;
Sum=Mnum*Price;
}
voidReadFile(istream&in)//文件指针
{
in>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum;
}
voidShow()
{
cout<<"商品名:
"< <<"商品编号: "< <<"进货总数: "< <<"销售数目: "< <<"剩余库存: "< <<"产地: "< <<"单价: "< <<"销售额: "< < } }; 2)classSupermarketmassage; classSupermarketmassage { public: Supermarketmassage(); ~Supermarketmassage(); voidShowMenu(); voidFind(); voidSave(); voidModifyItem(); voidRemoveItem(); voidSwap(Supermarket*,Supermarket*); voidSort(); //voidUnpass(); intListCount(); //voidAverage(); voidDisplay() { for(Supermarket*p=Head->Next;p! =End;p=p->Next) p->Show();cout<<"输入任意字符! 继续……"; getch(); } voidAddItem() { End->Input(); End->Next=newSupermarket; End=End->Next; cout<<"添加成功! "< 继续……"; getch(); } private: Supermarket*Head,*End; ifstreamin; ofstreamout; Supermarket*FindItem(char*name) { for(Supermarket*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(! strcmp(p->Next->name,name))returnp; returnNULL; } Supermarket*FindNum(char*Num) { for(Supermarket*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(! strcmp(p->Next->Num,Num))returnp; returnNULL; } Supermarket*FindAdd(char*Add) { for(Supermarket*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成就返回空 if(! strcmp(p->Next->Add,Add))returnp; returnNULL; } }; 3.程序源代码 #include #include #include #include usingnamespacestd; //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarket类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ classSupermarket {public: charname[20]; charNum[20]; intCnum;//进货总数 intMnum;//销售数目 intEnum;//剩余库存数目 doublePrice;//单价 charAdd[20];//产地 doubleSum;//销售额 Supermarket*Next; voidInput() { cout<<"\t\t请输入商品名: ";cin>>name; cout<<"\t\t请输入商品编号: ";cin>>Num; cout<<"\t\t请输入商品进货总数: ";cin>>Cnum; cout<<"\t\t请输入商品销售数目: ";cin>>Mnum; cout<<"\t\t请输入商品剩余库存数目: ";cin>>Enum; cout<<"\t\t请输入商品产地: ";cin>>Add; cout<<"\t\t请输入商品单价: ";cin>>Price; Sum=Mnum*Price; } voidReadFile(istream&in)//文件指针 { in>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum; } voidShow() { cout<<"商品名: "< <<"商品编号: "< <<"进货总数: "< <<"销售数目: "< <<"剩余库存: "< <<"产地: "< <<"单价: "< <<"销售额: "< < } }; //﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarketmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ classSupermarketmassage { public: Supermarketmassage(); ~Supermarketmassage(); voidShowMenu(); voidFind(); voidSave(); voidModifyItem(); voidRemoveItem(); voidSwap(Supermarket*,Supermarket*); voidSort(); //voidUnpass(); intListCount(); //voidAverage(); voidDisplay() { for(Supermarket*p=Head->Next;p! =End;p=p->Next) p->Show();cout<<"输入任意字符! 继续……"; getch(); } voidAddItem() { End->Input(); End->Next=newSupermarket; End=End->Next; cout<<"添加成功! "< 继续……"; getch(); } private: Supermarket*Head,*End; ifstreamin; ofstreamout; Supermarket*FindItem(char*name) { for(Supermarket*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(! strcmp(p->Next->name,name))returnp; returnNULL; } Supermarket*FindNum(char*Num) { for(Supermarket*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(! strcmp(p->Next->Num,Num))returnp; returnNULL; } Supermarket*FindAdd(char*Add) { for(Supermarket*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成就返回空 if(! strcmp(p->Next->Add,Add))returnp; returnNULL; } }; //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Supermarketmassage: : Supermarketmassage() { Head=newSupermarket; Head->Next=newSupermarket; End=Head->Next; in.open("sort.txt"); if(! in) cout<<"这是一个新系统,无商品信息。 请先输入。 "< else { while(! in.eof()) { End->ReadFile(in); if(End->name[0]=='\0')break; End->Next=newSupermarket;End=End->Next; } in.close(); cout<<"\t\t读取商品信息成功! "< } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Supermarketmassage: : ~Supermarketmassage() { Save(); for(Supermarket*temp;Head->Next! =End;) { temp=Head->Next; Head->Next=Head->Next->Next; deletetemp; } deleteHead,End; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidSupermarketmassage: : ShowMenu() { cout<<"〓〓〓〓〓〓〓〓〓〓☆超市商品管理系统☆〓〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓★★★★★★★★★★★★★★★★★★〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆1.增加商品信息☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆2.显示商品信息☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆3.排序统计商品☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆4.查找商品信息☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆5.删除商品信息☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆6.修改商品信息☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"< cout<<"\n\t\t\n\t\t请选择: "; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidSupermarketmassage: : Find() { charname[20],Num[10]; intx;Supermarket*p=NULL; cout<<"\n\t\t*********************************\n"; cout<<"\t\t※1.按商品的名称查找\n\t\t※2.按商品编号查找"; cout<<"\n\t\t*********************************\n请选择: "; cin>>x; switch(x) { case1: { cout<<"\t\t请输入要查找的商品的名称: "; cin>>name; if(p=FindItem(name)) { p->Next->Show(); cout<<"输入任意字符! 继续……"; getch(); } else { cout<<"\t\t没有找到该商品信息! "<<'\n'< cout<<"输入任意字符! 继续……"; getch(); } }break; case2: { cout<<"\t\t请输入要查找的商品编号: "; cin>>Num; if(p=FindNum(Num)) { p->Next->Show(); cout<<"输入任意字符! 继续……"; getch(); } else { cout<<"\t\t没有找到该编号的商品! "<<'\n'< cout<<"输入任意字符! 继续……"; getch(); } }break; } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidSupermarketmassage: : ModifyItem()//修改信息 { charname[20]; Supermarket*p=NULL; cout<<"\t\t请输入要修改的商品名: "; cin>>name; if(p=FindItem(name)) { cout<<"\t\t已找到商品的信息,请输入新的信息! "< p->Next->Input(); cout<<"修改成功! "< cout<<"输入任意字符! 继续……"; getch(); } else { cout<<"\t\t没有找到! "< cout<<"输入任意字符! 继续……"; getch(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidSupermarketmassage: : RemoveItem()//删除信息 { charname[20];Supermarket*p=NULL,*temp=NULL; cout<<"\t\t请输入要删除的商品名: "< if(p=FindItem(name)) { temp=p->Next; p->Next=p->Next->Next; deletetemp; cout<<"\t\t删除成功! "< cout<<"输入任意字符! 继续……"; getch(); } else { cout<<"\t\t没有找到! "< cout<<"输入任意字符! 继续……"; getch(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidSupermarketmassage: : Swap(Supermarket*p1,Supermarket*p2)//交换两个combox变量的数据域 { Supermarket*temp=newSupermarket; strcpy(temp->name,p1->name);//字符串name里面 strcpy(temp->Num,p1->Num); strcpy(temp->Add,p1->Add); temp->Cnum=p1->Cnum; 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->Price; p2->Sum=temp->Sum; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌统计﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ intSupermarketmassage: : ListCount()//统计当前链表的记录总数,返回一个整数 { if(! Head) return0; intn=0; for(Supermarket*p=Head->Next;p! =End;p=p->Next) { n++; } returnn; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌排序﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidSupermarketmassage: : Sort()//对当前链表进行排序 { cout<<"Sorting..."< Supermarket*p=NULL,*p1=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 管理 系统 C+