收藏 分销(赏)

C++超市管理系统的设计与实现.docx

上传人:精**** 文档编号:10107141 上传时间:2025-04-21 格式:DOCX 页数:17 大小:44.18KB
下载 相关 举报
C++超市管理系统的设计与实现.docx_第1页
第1页 / 共17页
C++超市管理系统的设计与实现.docx_第2页
第2页 / 共17页
点击查看更多>>
资源描述
目录 、需求分析3 、程序的主要功能1 三、程序运行平台4 四、系统总框架图4 五、程序类的说明5 六、 模块分析8 七、 比较有特色的函数9 八、 运行结果10 九、 存在的不足与对策6 十、程序源代码6 一、需求分析中小型超市采购的商品一般都成千上万件。对这些商品进行有效的管理必不可少。每件商品一般都需要记录商品名、条形码、类别、价格、出厂日期等商品的基本信息。除此之外,还需要记录商品的其他相关信息,如生产厂家、供货处代码、厂家网址、厂家电话等。超市商品的相关信息需要存储到文件系统中,一般都需要提供对商品信息的添加、编辑、删除等操作。超市管理员每天都会记录购进的商品信息,核销过期的商品等。? 为了巩固我们所学的C++语言程序设计知识,也为了满足课程设计的要求,我们在对几个中小型超市进行调研的基础上,设计和实现一个小型的超市商品管理系统,提供商品系统的添加、删除、编辑等功能。同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。 二、程序的主要功能 1、添加功能:添加商品信息:有商品代码、商品名称、产地、商品单价、库存量等。 2、删除功能:根据商品的名称,在添加的商品中进行删除。 3、显示功能: 能将已经添加或者进行修改的商品信息进行显示。 4、修改功能:根据商品的民称,在添加的商品中进行修改,将这个商品的所有信息都进行修改。 5、查找功能:根据商品名称或者编号进行查找,查找功能有两个查找方式,以备不时之需。 6、文件保存 将添加,修改,删除后的商品信息进行保存 三、程序运行平台 VC++6. 0 和 DEVC++ 四、系统总框架图 Su五、程序类的说明本da程序定义了两个类 ch char Num [20]; p添market类删ss Supermarket {pUbic: ar ndme [20] int Cnum; /进货总数 int Mnum; /销售数目 int Enum; /剩余库存数目double Price; /单价 char Add[20];产/地 double Sum; /销售额 Supermarket * Next; void In put() { cout "\t\t 请输入商品名:"; cin n ame; 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=Mnu m*Price; void ReadFile(istream & in文/件指针 ( cin>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum; }void Show(){ cout<<"商品名:"<<name<<endl <<"商品编号:"<<Num<<endl <<"进货总数:"<<Cnum<<endl <<"销售数目:"<<Mnum<<endl <<"剩余库存:"<<Enum<<endl <<"产地:"<<Add<<endl <<"单价:"<<Price<<endl <<"销售额:"<<Sum<<endl<<endl; } }; Supermarketmassage 类class Supermarketmassage( public: Supermarketmassage(); Supermarketmassage(); void ShowMenu(); void Find(); void Save(); void ModifyItem(); void RemoveItem(); void Swap(Supermarket *,Supermarket *); void Sort(); //void Unpass(); int ListCount(); //void Average(); void Display() { for(Supermarket * p=Head->Next;p!=End;p=p->Next) p->Show(); coutvv"输入任意字符!继续"; getch(); } void AddItem() { End->Input(); End->Next=new Supermarket; End=End->Next; cout<<"添加成功!"<<endl; coutvv"输入任意字符!继续"; getch(); } private: Supermarket * Head,* End;ifstream in; ofstream out; Supermarket *Fin dltem(char * n ame){ for(Supermarket * p=Head;p->Next!=E nd;p=p->Next) 匹配成功则返回上一个 指针,不成功就返回空 if(!strcmp(p->Next- >n ame , n ame)) return p; return NULL; } Supermarket *Fin dNum(char * Num) { for(Supermarket * p=Head;p->Next!=E nd;p=p->Next〃) 匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p->Next->Num,Num)) return p; return NULL; } Supermarket *Fi ndAdd(char * Add) { for(Supermarket * p=Head;p->Next!=E nd;p=p->Next〃) 匹配成功则返回上一个 指针,不成就返回空 if(!strcmp(p->Next->Add,Add))retur n p; return NULL; } }; 六、模块分析 七、 函数 功能 Void Display () 输出模块信息 Supermarket () 构造函数 1 A i \ Supermarket () 析构函数 ―* -A-~w Void Addltem () 增加商品 Void Removeitem () 删除商品 小 L > _ 、 一 + Void Modifyitem () 修改商品 -Cl_w Void f ind () 查找商品 Int ListCou nt () 统计商品 _) Y .山} ' J —A Void save () 基础数据存盘 Supermarketmassage 构造函数 模块分析表-1 Supermarket *FindItem(char * name) // 按照姓名查找商品 for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个 指针, 不成功就返回空 if(!strcmp(p->Next->name,name)) return p; return NULL; Supermarket *FindNum(char * Num) // 按照编号查找 { for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指 针,不成功就返回空 if(!strcmp(p->Next->Num,Num)) return p; return NULL; Supermarket *FindAdd(char * Add) { for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个 指 针,不成就返回空 if(!strcmp(p->Next->Add,Add))return p; return NULL; void Supermarketmassage::Save() ( out.open("sort.txt"); for(Supermarket *p=Head->Next;p!=End;p=p->Next) out<<"商品名称:"<<p->name<<"\t\t" <<" 商品编号:"<<p->Num<<"\t\t" <<"进货总数:"<<p->Cnum<<"\t\t" <<销售数目:"<<p->Mnum<<"\t\t" <<"剩余库存:"<<p->Enum<<"\t\t" <<" 商品产地:"<<p->Add<<"\t\t" <<"商品单价:"<<p->Price<<"\t\t" <<" 销售额:"<<p->Sum<<'\n'; out.close(); } 八、运行结果1.运行界面 2.增加 4. 显示 5. 查找 6. 删除 7. 修改 8. 保存 九、存在的不足与对策 于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只有基础的功能,增删改查,我还添加了几个在我能力范围之内的应用,比如文件,还有就是统计,这些在我能力之内的内容,这个程序我真的把我所学的知识都用上了,所以还有很多待 完善的地方,比如登陆界面的密码,还划分管理员与普通用户,这些都是我欠缺的知识,所以我希望在 以后的学习中能学到更多的知识,弥补自己不足。 十、程序源代码 # include <iostream> # include <fstream> 文件的使用 # include <string.h> #include <conio.h>/用 getch(); using namespace std; class Supermarket /定义超市类 public: char name[20]; char Num[20]; int Cnum; 〃进货总数 int Mnum; //销售数目 int Enum; //剩余库存数目 double Price; //单价 char Add[20]; //产地 double Sum; //销售额 Supermarket * Next; void Input() { cout<<"\t\#输入商品名:"; cin>>name; cout<<"\t\#输入商品编号:"; cin>>Num; cout<<"\t\#输入商品进货总数:"; cin>>Cnum; cout<<"\t\#输入商品销售数目:"; cin>>Mnum; cout<<"\t\#输入商品剩余库存数目:";cin>>Enum; cout<<"\t\#输入商品产地:"; cin>>Add; cout<<"\t\t 输入商品单价:";cin>>Price; Sum=Mnum*Price; void ReadFile(istream & 位肉件指针 cin>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum;( void Show() /显示模块 Eout<<"商品名:"<<name<<endl <<"商品编号:"<<Num<<endl <<" 进货总数 :"<<Cnum<<endl <<" 销售数目 :"<<Mnum<<endl <<" 剩余库存 :"<<Enum<<endl <<"产地:"<<Add<<endl <<"单价:"<<Price<<endl <<"销售额:"<<Sum<<endl<<endl; }; class Supermarketmassage//定义超市各功能模块类 { public: Supermarketmassage(); Supermarketmassage(); void ShowMenu(); /显示模块 void Find();查/找模块 void Save(); void ModifyItem();修改模块 void RemoveItem(); /删除模块 int ListCount(); //void Average统)计模块 void Display()显示 { for(Supermarket * p=Head->Next;p!=End;p=p->Next) p->Show(); coutvv"输入任意字符!继续"; getch(); } void AddItem()添加 { End->Input(); End->Next=new Supermarket; End=End->Next; cout<<"添加成功!"<<endl; coutvv"输入任意字符!继续"; getch(); } private: Supermarket * Head,* End; ifstream in; ofstream out; Supermarket *FindItem(char * name)按照姓名查找商品 for(Supermarket * p=Head;p->Next!=End;p=p->Next)/ 匹配成功则返回上一个 指针, 不成功就返回空 if(!strcmp(p->Next->name,name)) return p; return NULL; Supermarket *FindNum(char * Num) //按照编号查找 for(Supermarket * p=Head;p->Next!=End;p=p->Next)/匹配成功则返回上一个指 针,不成功就返回空 if (!strcmp (p->Next->Num, Num)) return p; return NULL; Supermarket *FindAdd(char * Add) { for(Supermarket * p=Head;p->Next!=End;p=p->Next)/ 匹配成功则返回上一个 指 针,不成就返回空 if(!strcmp(p->Next->Add,Add))return p; return NULL; } }; //构造函数 Supermarketmassage::Supermarketmassage() { Head=new Supermarket; Head->Next=new Supermarket; End=Head->Next; in.open("sort.txt"); if(!in) cout<<"这是一个新系统,无商品信息。请先输入。"<<endl; else ( while(!in.eof()) ( End->ReadFile(in); if(End->name[0]=='\0') break; End->Next=new Supermarket; End=End->Next; }in.close(); 读取商品信息成功!"<<endl;cout<<"\t\t } Supermarketmassage::Supermarketmassage(){ Save(); for(Supermarket * temp;Head->Next!=End;) temp=Head->Next; Head->Next=Head->Next->Next; delete temp; } cout<<"\n\t\****************************\n*'* * delete Head,End; cout<<"\t\>K 1.按商品的名称查找\n\t\t 淤 2.按商品编号查找 cout<<"\n\tg***********************\n*** 请选择: void Supermarketmassage::ShowMenu() {cout<<"☆ 超市商品管理系统 "<<endl; cout<<"★★★★★ ★★★★★★★★ "<<endl; cout<<"★☆ 1. 增加商品信息 "<<endl; cout<<"★☆ 2. 显示商品信息 "<<endl; cout<<"★☆ 3. 查找商品信息 "<<endl; cout<<"★☆ 4. 删除商品信息 "<<endl; cout<<"★☆ 5. 修改商品信息 "<<endl; cout<<"★☆ 0. 保存文件退出 "<<endl; cout<<"\n\t\t\n\t\t请选择:";} void Supermarketmassage::Find()//查找模块 { char name[20] ,Num[10]; int x; Supermarket * p=NULL; cin>>x; switch(x) ☆ ★ ★★★★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ☆ ★ ( case 1:{ cout<<"\t请输入要查找的商品的名称:";cin>>name; if(p=FindItem(name)) { p->Next->Show(); coutvv"输入任意字符!继续";getch(); } else { cout<<"\t\t没有找到该商品信息! "<<'\n'<<endl; coutvv"输入任意字符!继续"; getch(); } }break; case 2: { coutvv"\t\t请输入要查找的商品编号:"; cin>>Num; if(p=FindNum(Num)) { p->Next->Show(); coutvv"输入任意字符!继续"; getch(); } else { coutvv"\t\t没有找到该编号的商品! "vv'\n'vvendl; coutvv"输入任意字符!继续"; getch(); } } break; } } void Supermarketmassage::ModifyItem() // 修改信息 { char name[20]; Supermarket* p=NULL; coutvv"\t\请输入要修改的商品名:";cin>>name; if(p=FindItem(name)) {coutvv"\t已找到商品的信息,请输入新的信息!"vvendl; p->Next->Input(); coutvv"修改成功! "vvendl; coutvv"输入任意字符!继续"; getch(); else { cout<<"\t没有找到!"<<endl; coutvv"输入任意字符!继续"; getch(); } } void Supermarketmassage::RemoveItem() // 删除信息{ char name[20]; Supermarket * p=NULL,*temp=NULL; cout<<"\t\t请输入要删除的商品名:"<<endl;cin>>name; if(p=FindItem(name)) ( temp=p->Next; p->Next=p->Next->Next; delete temp; cout<<"\t\删除成功!"<<endl; coutvv,输入任意字符!继续"; getch(); } else ( coutvv"\t\t没有找到!"vvendl; coutvv"输入任意字符!继续"; getch(); } } //统计 int Supermarketmassage::ListCount() //计当前链表的记录总数,返回一个整数( if(! Head) return 0; int n=0; for(Supermarket * p=Head->Next;p!=End;p=p->Next){ n++; } return n; } II保存函数 void Supermarketmassage::Save() { out.open("sort.txt"); for(Supermarket *p=Head->Next;p!=End;p=p->Next) outvv"商品名称:"vvp->namevv"\t\t"嘀品编号:"vvp->Numvv"\t\t" v进货总 数:"vvp->Cnumvv"\t\t" vv"销售数目:"vvp->Mnumvv"\t\t" vv"剩余库存:"vvp->Enumvv"\t\t" ▽商品产地:"vvp->Addvv"\t\t" vv"商品单价:"vvp->Pricevv"\t\t"销售 额:"vvp->Sumvv'\n'; out.close();} II主函数 int main() { int x,i=0; bool quit=false; t§§§§§§§§§§§§§§§§§§§§§§§§§§ "<<endl; for(i=0;i<3;i++) cout<<"\t\® \ t\t\t\t\t"K<endl; cout<v"\t\t ★★★★【 欢迎进入超市商品管理系统 】★★★★◎ "<<e ndl; for(i=0;i<3;i++) cout<<"\t\^ \t\t\t\t\t\t ◎ "<<endl; t§§§§§§§§§§§§§§§§§§§§§§§§§§ \n"<<endl; Supermarketmassage Grade; cout "按任意键开始"; getch(); while(!quit) { system("cls"); Grade.ShowMenu(); cin>>x; switch(x) { case 0:quit=true;break; case 1:Grade.AddItem();break; case 2:Grade.Display();break; case 3:Grade.Find();break; case 4:Grade,RemoveItem();break; case 5:Grade.ModifyItem();break; } } return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服