C++超市管理系统的设计实现分析.docx
- 文档编号:25997950
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:27
- 大小:315.59KB
C++超市管理系统的设计实现分析.docx
《C++超市管理系统的设计实现分析.docx》由会员分享,可在线阅读,更多相关《C++超市管理系统的设计实现分析.docx(27页珍藏版)》请在冰豆网上搜索。
C++超市管理系统的设计实现分析
1、需求分析
中小型超市采购的商品一般都成千上万件。
对这些商品进行有效的管理必不可少。
每件商品一般都需要记录商品名、条形码、类别、价格、出厂日期等商品的基本信息。
除此之外,还需要记录商品的其他相关信息,如生产厂家、供货处代码、厂家网址、厂家电话等。
超市商品的相关信息需要存储到文件系统中,一般都需要提供对商品信息的添加、编辑、删除等操作。
超市管理员每天都会记录购进的商品信息,核销过期的商品等。
为了巩固我们所学的C++语言程序设计知识,也为了满足课程设计的要求,我们在对几个中小型超市进行调研的基础上,设计和实现一个小型的超市商品管理系统,提供商品系统的添加、删除、编辑等功能。
同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。
2、程序的主要功能
1、添加功能:
添加商品信息:
有商品代码、商品名称、产地、商品单价、库存量等。
2、删除功能:
根据商品的名称,在添加的商品中进行删除。
3、显示功能:
能将已经添加或者进行修改的商品信息进行显示。
4、修改功能:
根据商品的民称,在添加的商品中进行修改,将这个商品的所有信息都进行修改。
5、查找功能:
根据商品名称或者编号进行查找,查找功能有两个查找方式,以备不时之需。
6.文件保存
将添加,修改,删除后的商品信息进行保存。
3、程序运行平台
VC++6.0和DEVC++
4、系统总框架图
图片1
五、程序类的说明
本程序定义了两个类
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)//文件指针
{
cin>>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<<"添加成功! "< 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; }}; 六、模块分析 模块分析表-1 函数 功能 VoidDisplay() 输出模块信息 Supermarket() 构造函数 ~Supermarket() 析构函数 VoidAddItem() 增加商品 VoidRemoveItem() 删除商品 VoidModifyItem() 修改商品 Voidfind() 查找商品 IntListCount() 统计商品 Voidsave() 基础数据存盘 Supermarketmassage 构造函数 七、比较有特色的函数 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; voidSupermarketmassage: : Save() {out.open("sort.txt"); for(Supermarket*p=Head->Next;p! =End;p=p->Next) out<<"商品名称: "< "< <<"进货总数: "< "< <<"剩余库存: "< "< <<"商品单价: "< "< out.close(); } 八、运行结果 1.运行界面 2.增加 4.显示 5.查找 6.删除 7.修改 8.保存 九、存在的不足与对策 于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只有基础的功能,增删改查,我还添加了几个在我能力范围之内的应用,比如文件,还有就是统计,这些在我能力之内的内容,这个程序我真的把我所学的知识都用上了,所以还有很多待完善的地方,比如登陆界面的密码,还划分管理员与普通用户,这些都是我欠缺的知识,所以我希望在以后的学习中能学到更多的知识,弥补自己不足。 十、程序源代码 #include #include #include #include usingnamespacestd; 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)//文件指针 { cin>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum; } voidShow()//显示模块 { cout<<"商品名: "< <<"商品编号: "< <<"进货总数: "< <<"销售数目: "< <<"剩余库存: "< <<"产地: "< <<"单价: "< <<"销售额: "< } }; classSupermarketmassage//定义超市各功能模块类 {public: Supermarketmassage(); ~Supermarketmassage(); voidShowMenu();//显示模块 voidFind();//查找模块 voidSave(); voidModifyItem();//修改模块 voidRemoveItem();//删除模块 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<<"添加成功! "< 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<<"〒〒〒〒〒〒〒〒〒★☆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(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌统计﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ intSupermarketmassage: : ListCount()//统计当前链表的记录总数,返回一个整数 {if(! Head) return0; intn=0; for(Supermarket*p=Head->Next;p! =End;p=p->Next) { n++; } returnn; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidSupermarketmassage: : Save() {out.open("sort.txt"); for(Supermarket*p=Head->Next;p! =End;p=p->Next) out<<"商品名称: "< "< <<"进货总数: "< "< <<"剩余库存: "< "< <<"商品单价: "< "< out.close(); } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 超市 管理 系统 设计 实现 分析