面向对象的程序设计方法使用链表编写一个简单的商品销售程序讲述

上传人:仙*** 文档编号:37326333 上传时间:2021-11-02 格式:DOC 页数:23 大小:2.25MB
返回 下载 相关 举报
面向对象的程序设计方法使用链表编写一个简单的商品销售程序讲述_第1页
第1页 / 共23页
面向对象的程序设计方法使用链表编写一个简单的商品销售程序讲述_第2页
第2页 / 共23页
面向对象的程序设计方法使用链表编写一个简单的商品销售程序讲述_第3页
第3页 / 共23页
点击查看更多>>
资源描述
J I A N G S U U N I V E R S I T Y C+课程设计 商品销售管理系统学院:计算机科学与通信工程学院班级:网络工程1401姓名:学号:指导老师:2015年 06 月25日 目录1、 需求分析.2、 概要设计.3、 详细设计.4、 调试分析.5、 用户手册.6、 测试数据.7、 心得体会.1、 需求分析用面向对象的程序设计方法使用链表编写一个简单的商品销售程序。要求首先建立一个文件goods.dat,存放以下等商品信息:货名货号库存量单价库存总值毛巾100110025.610025.6牙刷100215631.515631.5牙膏100323452.6523452.65杯子10041243.61243.6要求:1.库存总值应由程序自己计算。2.每次运行程序时,程序应当首先读取goods.dat内容,初始化链表,未初始化而直接进行买卖操作应给出提示。3.程序运行时,应在屏幕上显示菜单和一些提示性信息,如货名、货号、单价、库存量等信息。4.售货员在卖出商品时,只要输入该商品的货号、数量,即应计算出顾客应付的金额,同时应刷新文件goods.dat使该商品的库存量、库存总值改变。 当库存值为零时或销售数量大于,应提示售货员做相应处理(如何处理自己思考)。5. 由售货员可以增加如下两条记录,并能对文件goods.dat增加记录进行更新。货名货号库存量单价库存总值洗面奶100510015.610015.6镜子10061511.51511.56. 售货员应能对货物的价格、库存量进行调整,如牙刷库存量调整为1522,单价调整为1.67等等。7. 售货员可以根据货物名称可以查询货品信息,并输出.程序须完成以上7点要求,其余操作可根据需要自行添加,酌情加分。2、 概要设计1、数据类(class Data)的数据类型定义:cclass Data /数据类private:int id; /产品货号char name100;/产品名称int count;/库存数量int salecount;/已售数量 float iprice;/进价float oprice;/售价 char gys20;/供应商2、class commodity 商品类设计:class Commodity /商品类private:Data t50; /数组int n; /商品数量public: void newFile() /添加商品信息 void showData(int i) /显示商品信息 bool changeCount() /修改商品库存 Bool changePrice() /修改商品单价 void initCom() /读取dat内的数据 void getInfo() /查找商品 void showData() /显示文字信息 void save() /写入数据至文件 int search() /商品查询 void sale() /商品销售结算 void showSale() /销售清单 inline void menu() /主菜单 3、本程序结构 (1)主函数 Void main() menu(); Commodity com; com.initCom(); int c; switch(c)return Break;(2)数据类实现对数据的输入输出。(3)商品类系统各项功能的实现。三、详细设计 (1)数据类class Data /数据类private:int id; /产品货号char name100;/产品名称int count;/库存数量int salecount;/已售数量 float iprice;/进价float oprice;/售价 char gys20;/供应商public:int getId()return id;char *getName()return name;int getCount()return count;int getSaleCount()return salecount;float getBuy()return iprice; float getSale()return oprice;char *getGys()return gys;void setId(int n)id=n;void setName(char na)strcpy(name,na);void setCount(int c)count=c; void setSaleCount(int s)salecount=s;void setBuy(float i)iprice=i;void setSale(float o)oprice=o; void setGys(char g) strcpy(gys,g);(2) 商品类class Commodity /商品类private: Data t50; /数组int n; /商品数量public:Commodity()n=0;void newFile()int id; char name50; /字符数组int count;float iprice;float oprice; char gys20;if(n0) n=0; int i;Data temp; for(;n+)coutid;if(id=-1)break;tn.setId(id);coutname;tn.setName(name);coutcount;tn.setCount(count);coutiprice;tn.setBuy(iprice);coutoprice;tn.setSale(oprice);coutgys;tn.setGys(gys); tn.setSaleCount(0);/售出此产品0个 cout若商品添加完毕,请按-1退出添加!endl;for(i=0;itn.getId()temp=ti;ti=tn;tn=temp;四、调试分析5、 用户手册1、 本程序的运行环境为windows操作系统,执行文件为xiaoshou.exe;2、 进入演示程序后,即显示对话形式的提示操作过程:如:第一项:(1)商品添加功能在选择一栏输入:1即显示商品货号、商品名、库存量、进价、售价、供应商各项商 品信息,依次输入所需添加的数据 。添加商品完毕,按-1退出添加。选择:2 即将商品信息保存。选择:3 显示已保存的商品信息。并且对部分商品进行修改。选择:4 重新回到主菜单。选择:5 进行商品销售结算。同时选择:3 显示商品库存和已销售的完整信息。选择:6 查询商品信息六、测试数据 进入演示程序后,即显示对话形式的提示操作过程:选择:1 输入相应提示的商品信息选择:2 界面显示数据保存成功选择:3 显示已保存的商品信息,并且对部分商品进行修改 选择:4 重新回到主菜单选择:5 进行商品结算选择:6 查询商品信息七、心得体会八、附录程序源代码:#include #include #include #include /为了声明标识符setw()函数#define Mfname 100 /定义一个全局变量using namespace std;class Data /数据类private:int id; /产品货号char name100;/产品名称int count;/库存数量int salecount;/已售数量 float iprice;/进价float oprice;/售价 char gys20;/供应商public:int getId()return id;char *getName()return name;int getCount()return count;int getSaleCount()return salecount;float getBuy()return iprice; float getSale()return oprice;char *getGys()return gys; /-void setId(int n)id=n;void setName(char na)strcpy(name,na);void setCount(int c)count=c; void setSaleCount(int s)salecount=s;void setBuy(float i)iprice=i;void setSale(float o)oprice=o;/. void setGys(char g) strcpy(gys,g);class Commodity /商品类private: Data t50; /数组int n; /商品数量public:Commodity()n=0;void newFile()int id; char name50; /字符数组int count;float iprice;float oprice; char gys20;if(n0) n=0; int i;Data temp; for(;n+)coutid;if(id=-1)break;tn.setId(id);coutname;tn.setName(name);coutcount;tn.setCount(count);coutiprice;tn.setBuy(iprice);coutoprice;tn.setSale(oprice);coutgys;tn.setGys(gys); tn.setSaleCount(0);/售出此产品0个 cout若商品添加完毕,请按-1退出添加!endl;for(i=0;itn.getId()temp=ti;ti=tn;tn=temp;bool changeCount() /修改商品库存int id;int count;coutid;coutcount;for(int i=0;in;i+)if(ti.getId()=id)ti.setCount(count);return true;return false;bool changePrice() /修改商品单价int id;float iprice;coutid;coutiprice;for(int i=0;iid;this-tj.setId(id);char name50;inname;this-tj.setName(name);int count;incount;this-tj.setCount(count);float iprice;iniprice;this-tj.setBuy(iprice);float oprice;inoprice;this-tj.setSale(oprice);char gys20;ingys;this-tj.setGys(gys);int saleCount;insaleCount;this-tj.setSaleCount(saleCount);j+;n=j-1;void showData(int i) coutti.getId()setw(10)ti.getName()setw(10)ti.getCount()setw(10)ti.getSaleCount()setw(8)ti.getBuy()setw(8)ti.getSale()setw(8)ti.getGys() setw(10)ti.getCount()*ti.getSale()endl;endl;void getInfo()coutname;bool b=false;for(int i=0;in;i+)if(strcmp(ti.getName(),name)=0)cout商品货号setw(8)商品名setw(8)库存量setw(10)已售量setw(10)进价setw(8)售价setw(8)供应商 setw(10)库存总值endl;showData(i);b=true;if(!b)cout该商品不存在endl;void showData()cout商品货号setw(8)商品名setw(8)库存量setw(10)已售量setw(10)进价setw(8)售价setw(8)供应商endl;for(int i=0;i=0 )showData(i);cout *编辑商品* endl;cout (1)修改库存数量 endl;cout (2)修改商品单价 endl;cout (0)退出 c;while(c)switch(c)case 1:changeCount();break;case 2:changePrice();break;default:c=0;cinc;save();void save() /写入数据至文件 ofstream fout; fout.open(goods.dat); if(!fout)coutcannot open the file!endl;return ; fout商品货号 商品名 库存量 进价 售价 供应商 已售量endl; for(int i=0;in;i+) foutti.getId()setw(14)ti.getName()setw(10)ti.getCount()setw(10)ti.getBuy()setw(10)ti.getSale()setw(10)ti.getGys()setw(10)ti.getSaleCount()n; cout*Save Success!*endl; fout.close(); int search()int id;coutid;int low=0,mid,high=n-1;while(lowid)high=mid-1;elselow=mid+1;return -1;void sale()cout产品货号;int temp;temp=search();if(temp=-1)cout无此产品endl;return; if(ttemp.getCount()=0)cout此产品已缺!endl;return; int count;coutcount;if(countttemp.getCount()/输入的是负数或超出该产品库存量 cout数量输入不正确endl;return;float money;coutmoney;if(moneyttemp.getSale()*count)cout购物金额不足,还需增加金额ttemp.getSale()*count-money元endl; return;ttemp.setCount(ttemp.getCount()-count);/当前库存减少countttemp.setSaleCount(ttemp.getSaleCount()+count);/出售量增加countcout*名称:ttemp.getName()endl*数量:countendl*单价:ttemp.getSale()元endl*应收:count*ttemp.getSale()元endl*找零:money-count*ttemp.getSale()元endl*endl;void showSale()for(int i=0;i0 )showData(i);inline void menu()cout *欢迎使用商品销售管理系统* endl;cout *主菜单* endl;cout (1)添加新商品 endl;cout (2)保存商品信息 endl;cout (3)显示库存 endl; cout (4)显示菜单 endl;cout (5)销售系统 endl;cout (6)查询货品信息 endl;cout (0)退出系统 endl;cout * endl; void main()menu();Commodity com;com.initCom(); / 注意 程序 第一次运行 这一行 要添加成注释 因为 本程序第一次自检 需要获取goods.Dat的数据 第一次为空。运行后选择2保存生成dat文件后 即可 把注释取消int c;for(;)coutc;switch(c)case 1:com.newFile();break;case 2:com.save();break;case 3:com.showData();break;case 4:menu();break;case 5:com.sale();break;case 6:com.getInfo();break;case 0:cout *谢谢使用* endl; cout *!再见!* endl; return; break;书是我们时代的生命别林斯基书籍是巨大的力量列宁书是人类进步的阶梯高尔基书籍是人类知识的总统莎士比亚书籍是人类思想的宝库乌申斯基书籍举世之宝梭罗好的书籍是最贵重的珍宝别林斯基书是唯一不死的东西丘特书籍使人们成为宇宙的主人巴甫连柯书中横卧着整个过去的灵魂卡莱尔人的影响短暂而微弱,书的影响则广泛而深远普希金人离开了书,如同离开空气一样不能生活科洛廖夫书不仅是生活,而且是现在、过去和未来文化生活的源泉 库法耶夫书籍把我们引入最美好的社会,使我们认识各个时代的伟大智者史美尔斯书籍便是这种改造灵魂的工具。人类所需要的,是富有启发性的养料。而阅读,则正是这种养料雨果
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!