《面向对象程序设计》课程设计报告超市进销存系统.doc
面向对象程序设计课程设计报告超市进销存系统姓 名:班 级:学 号:指导教师:成 绩:完成时间:08年6月15日完成地点:一、 设计题目(问题)描述和要求1 某小型超市,完成超市进销存管理:公司内有若干种商品: ü 商品代码(num)ü 商品名称(name)ü 产地(address)ü 单价(price)ü 该类商品的库存数量(count)要求:(1)商品基本信息管理:商品的增加、修改和删除等。(2)商品的查询与统计:按商品名称查询基本信息、统计库存商品数量及总价值等。2 系统分析与模块设计根据问题描述和要求,系统要求能够实现商品基本信息管理和商品的查询与统计。确定程序至少应该具备如下功能:“商品的增加”、“商品的修改”、“商品的删除”等基本模块。 “增加商品” 模块的作用是向商品链中增加商品;“修改信息” 模块的作用是修改商品链中的商品信息;“删除商品” 模块的作用是删除商品链中的商品;“查询信息” 模块的作用是把商品链中的所有商品信息输出到显示器上;“商品清单”模块的作用是把所有商品的名称输出到显示器上;“数据存盘” 模块的作用是保存录入内存中的商品信息;“数据读入” 模块的作用是把商品信息读入内存中。经综合考虑系统具有下面7项功能模块:商品增加,修改商品信息,删除商品,查询商品信息,商品清单,数据存盘,数据读入。二、 系统设计1. 系统总体框架超市管理系统主要涉及2个大类:goods类、complay类。(1)goods类:包含商品代码(num)商品名称(name)商品产地(address)商品单价(price)商品的库存量(count)要完成输出操作,需要设计output成员函数。(2) complay类:考虑到如果要实现商品的增加,商品的删除,商品信息的修改,总价值的查询,数据的存盘,数据的读入等操作,complay类应包含:Add(),Delete(),Modify(),Query(),Save(),Load()等函数作为成员函数。2. 类的层次图Goods Num,name,address,price,count,next,Output() Complaygla,clear(),Add(),Delete(),Modify(),Query(),List(),Save(),Load() 其中:Add函数是用于增加商品;Delete函数是用于删除商品;Modify函数是用于修改商品信息;Query函数是用于查询商品总价值;List函数是用于列出所有商品的名称;Save函数是用于将商品信息存入磁盘文件;Load函数是用于将磁盘文件的内容读入内存。3. 系统关键算法流程图 (1)主函数流程(2) 成员函数(Add)成员函数(delete) 成员函数(modify)4、源程序清单见附录三、 系统测试及结果系统可以用于简单的超市管理,商品的增加,删除,修改等基本操作,不足的是当删除商品后不能使ID从1开始重新累计增加,及不能控制ID。四、 小结(设计过程心得体会)程序开始时不知道从哪开始,因为自己从没写过这么大的程序,所以自己到图书馆看了有关的大型程序,然后自己从简单开始写,先让程序完成最简单的初始化操作,然后在附加增加商品操作,删除商品操作,修改商品信息操作,数据存盘操作,数据装入操作。不知不觉的就将程序给写完了。感觉不是挺难的,但是如果一下把程序给写了,出现了很多的错误,自己不知从哪改起,以后写程序时先从大的方面写,然后在逐步细化。附录:源程序#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<string.h>int ID;class goodsprotected:int num;char name20;char address20;double price;double count;goods *next;public: goods(int num,char *name,char *address,double price,double count)this->num=ID;this->num=num;strcpy(this->name,name);strcpy(this->address,address);this->price=price;this->count=count;void output()cout<<"ID:"<<num<<"t"<<"名称:"<<name<<"t"<<"产地:"<<address<<"t"<<"价钱:"<<price<<"t"<<"数量:"<<count<<endl;friend class complay;class complay private:goods *gla;void clear();public:complay()gla=0;complay()goods *p;p=gla;while(p)p=p->next;delete gla;gla=p;gla=0;void Add();void Delete(); void Modify();void Query();void list();void Save();void Load();void complay:clear ()goods *p=gla;while(p)gla=p->next ;delete p;p=gla;void complay:Add()ID+;char name20;char address20;double price;double count;goods *p;cout<<"n* 新增商品 *n"cout<<"输入商品名:"cin>>name;cout<<"输入商品产地:"cin>>address;cout<<"输入单价:"cin>>price;cout<<"输入数量:"cin>>count;p=new goods(ID,name,address,price,count);p->next=0;if(gla)goods *p2;p2=gla;while(p2->next)p2=p2->next;p2->next=p;elsegla=p;void complay:Delete()char name20;cout<<"n*删除商品*n"cout<<"商品名称:"cin>>name;goods *p1,*p2;p1=gla;while(p1)if(!strcmp(name,p1->name)break;elsep2=p1;p1=p1->next;if(p1!=NULL)if(p1=gla)gla=p1->next;delete p1;elsep2->next=p1->next;delete p1;cout<<"找到并删除n"elsecout<<"未找到n"void complay:Modify()char name20;char address20;double price;double count;cout<<"n修改商品n"cout<<"商品名字:"cin>>name;goods *p1,*p2;p1=gla;while(p1)if(!strcmp(name,p1->name)break;elsep2=p1;p1=p1->next;if(p1!=NULL)p1->output();cout<<"调整商品信息:"int c;cout<<"修改信息(1-地址2-价钱3-数量4-return):" cin>>c;switch(c) case 1:cout<<"修改地址:"cin>>address; strcpy(p1->address,address);break; case 2:cout<<"修改价钱:"cin>>price;p1->price=price; break; case 3:cout<<"修改数量:"cin>>count;p1->count=count; break; case 4:cout<<"return:"break; cout<<"修改成功n" else cout<<"未找到n"void complay:Query()cout<<"查询商品总价值n"double sum=0;goods *p=gla;while(p)sum+=p->count*p->price;p=p->next;cout<<"总价值"<<sum<<endl;void complay:list()char name20;goods *p=gla;if(!p)cout<<"n没有商品n"elsecout<<"n商品清单n"while(p)cout<<p->name<<"t"p=p->next;cout<<endl;void complay:Save()ofstream fgood,fbase;char c;cout<<"n保存数据,是否继续?Y/N"cin>>c;if(toupper(c)!='Y')return;fgood.open("goods.txt",ios:out);goods *p=gla;while(p)fgood<<p->num<<"t"<<p->name<<"t"<<p->address<<"t"<<p->price<<"t"<<p->count<<"t" fgood<<endl; p=p->next;fgood.close();cout<<"n保存商品信息已经完成.n"void complay:Load () clear();ifstream fgood;goods *p=gla;int num;char name20;char address20;double price;double count;fgood.open("goods.txt",ios:in);fgood>>num>>name>>address>>price>>count;while(fgood.good()p=new goods(num,name,address,price,count);p->next=0;if(gla)goods *p2;p2=gla;while(p2->next)p2=p2->next;p2->next=p;elsegla=p;fgood>>num>>name>>address>>price>>count;ID=num;fgood.close(); cout<<"n商品信息已经读入完成.n"int main()complay a;char c;docout<<"n* 超市进销存管理系统 *n"cout<<"1-增加商品n"cout<<"2-修改商品信息n"cout<<"3-删除商品n"cout<<"4-查询商品信息n"cout<<"5-商品清单n"cout<<"6-数据存盘n"cout<<"7-数据读入n"cout<<"8-退出t请选择(1-8):"cin>>c;switch(c) case'1': a.Add(); break; case'2':a.Modify(); break; case'3':a.Delete(); break; case'4':a.Query(); break; case'5':a.list(); break; case'6':a.Save(); break; case'7':a.Load(); break;while(c!='8');return 0;超市进销存系统