c++程序设计语言课程设计-收银台结算程序_第1页
c++程序设计语言课程设计-收银台结算程序_第2页
c++程序设计语言课程设计-收银台结算程序_第3页
c++程序设计语言课程设计-收银台结算程序_第4页
c++程序设计语言课程设计-收银台结算程序_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

合肥学院计算机科学与技术系课程设计报告20092010学年第二学期课程 程序设计语言课程设计课程设计名称收银台结算程序学生姓名学号 专业班级网络工程(2)班 指导教师何立新、刘洁群2010年7月(一) 需求分析现在某大型超市由于购物人员太多需要一个收银台结算程序,以方便消费者能够快速付账。该程序中能够各种商品的全部信息,包括商品的编号、名称、数量、进价、售价等。程序主要是用来方便消费者付账,当消费者选定商品时收银台的工作人员只要把消费者买的商品的数量输进去就可以了,该程序会自动的计算其总额并告知消费者要交多少金额。因此该程序的主要功能就是帮助收银台的工作人员实现收款的目的。所以在制作该软件时首先要有一系列的子函数:当输入商品的编号时就可以知道它的数量、进价、售价等。当工作人员收银时只要输入商品的编号,并输入其数量就可以知道消费者要付金多少,然后系统就会根据消费者给的金额会打印出相应的购物小票。小票上会显示消费者所购商品的编号、数量、以及消费者所给的金额和应该找零多少。当消费者不能提供所购商品的编号时,系统则无法进行其各项的操作。在收银的过程中如果遇到了消费者所给的金额不够则系统会自动出现提示:所交金额不足。每当消费者买走一件商品时系统在显示时变回显示其数量减少一个,在开始设计时为了能够满足要求因此要定义空间足够大的id,name,count.分别各为100.在计算时输入商品的数量然后系统就会用该商品的单价乘以数量就得到了消费者应付的金额。(二)设计 根据上诉需求应该定义一个DATA类,该类中定义了产品的编号id,产品名称name,商品的已售数量salecount,还有商品的进价buy,和商品的售价sale。在public中有成员函数getid,用于得到商品的编号;getname,用于得到商品的名称;getsale,用于得到商品的售价;getbuy,用于得到商品的进价。在此基础上又派生出另一个类WAY。 在WAY类中有成员函数newfile,用于新建各种商品的信息,在newfile中会分别要求输入商品的编号、名称、数量、进价、售价。在一次输入各种商品的各种信息后可以调用另一个成员函数save,将输入的商品的各种信息储存起来。要进行收银工作时选择sale子函数进行收银工作,在输入商品的各种信息后可以调用函数showdata把商品的编号、名称、数量以及进价和售价都显示出来以方便查看。在WAY类中open函数主要是用来打开已经保存好的各种商品的各种基本信息。在程序运行时将开始准备好的数据输入这样就变的更加方便了。在有很多商品的情况下要临时找到一个商品的基本信息一般比较困难,因此还要用到binsearch来查找商品。当要想找到摸个商品时只要将其编号输入系统就可以根据编号进行查找,从而找到所要的商品。在商品已经销售了一部分时可以计算一下这些商品的总的进价因而sumsale函数就是来计算已经销售出去的商品的总的进价,同样,当想知道已经售出的这些商品所得到的利润时就可以用函数sumgain,这些函数都是主函数countmenu中的子函数,在countmenu函数中包括已售总额、已售总进价、已得纯利润、预销售总额。在商场进行交易时便会用到函数sale来进行收银工作,开始时输入商品的编号如果没有改编号则说明仓库中没有该商品,此时便会输出“此产品已缺”,有该商品的则会提示你输入“输入数量”,在有提示:“输入收到金额”,此时如果输入的是负数或者超出该产品的库存量则系统会提示:“数量输入不真确”,等到一切都正确后系统便会输出一个购物小票:上面有商品的名称、数量、单价、应收、找零。 在该系统实现其收银功能后,我们可以对这一段时间所销售的商品做一个统计,包括对他的数量、售出量、进价、售价、盈利多少等,当选择计算的子函数时便可以对这些已经售出的商品做一个系统的统计,在统计之后会输入一个清单。上面写着这段时间所有售出的商品的各种信息,已列表的形式把商品的编号、名称、已售出量、售价、进价等。在类的设计中主要是数据成员以及成员函数,在WAY类中我们首先要把商品的基本信息能用数据成员表示,于是便要定义编号、名称、数量、进价、售价。在主函数menu中有1.输入产品信息 2.显示 3.保存 4.打开 5.菜单 6.收银 7.计算 0.返回这几项功能。在设计该程序时要考虑到开始时可以对商品的信息进行输入,于是在子函数newfile中便是将商品的信息输入其中。但考虑到由于商品要是太多的话临时输入这些商品的信息太麻烦并且耽误时间,所以我们考虑到用磁盘文件来处理,在磁盘文件中我们先把各种商品的基本信息保存在里面,等到要用的时候就可以直接打开,因此我们用open函数来实现这个功能。(三)用户手册当我们把收银台结算程序编写好用于商场之后,在消费者来付账时,我们首先运行该程序,这是主页面会显示1.输入产品信息 2.显示 3.保存 4.打开 5.菜单 6.收银 7.计算 0.返回,“选择菜单”的字样。这是选择1系统就会显示id、name、count、buy、sale。这是我们依次输入商品的编号、名称、数量、进价、售价后,系统又会显示sn 这是再选择所要操作的,当选择6 时进入收银状态。这时系统会提示你输入产品编号、输入数量、输入收到金额、等全部输入完成后系统便会打印一个购物小票出来:购物小票名称:奶粉数量:2单价:140元应收:280元找零:12元 当输入的编号无法找到时系统便会显示:not find。当选择7时系统便会输出:1.已售总额 2.已售总进价 3.已得纯利润 4.预销售总额 5.进价成本总额 0.返回。这时还要进行子函数的选择,选择1时这是时在计算已经售出商品的总额,系统会显示280。选择2时这是在计算已经售出商品的总进价,系统会显示200,当选择3时这是在计算已经售出商品所得的总利润,系统会显示80,当选择4时这是在计算预销售总额,系统会显示310,当选择5时这是在计算进价成本总额,系统会显示230。当我们想结束计算着子函数的调用时选择0这是系统会自动跳出该子函数的运行然后显示:输入“选择菜单”作为提示。当我们已经输入很多商品的信息并都已成功售出时由于看不见主菜单的内容了这时就可以选择5系统便会把住菜单显示出来:1.输入产品信息 2.显示 3.保存 4.打开 5.菜单 6.收银 7.计算 0.返回,当我们选择2时系统就会把商品现在信息显示出来。 编号 名称 当前量 已售量 进价 售价 12 奶粉 100 2 100 140 13 洗衣机 200 10 500 2000等各种商品的信息。只要按照系统的提示操作就会很顺利的完成。(四)调试及测试 由于该程序要包含各种商品的信息因此在运行该系统时首先要把各种商品的基本信息放在磁盘文件中,在应用时直接就可以读出这些商品的信息。在开始编写该程序时没有考虑到商品数量、价格的容量大小导致了在输入商品的信息时系统出现了错误,后来打开书本时看到书上的例子时想起来的从而改正了错误,在编写showdata,函数时我们要把商品的各种信息都显示出来由于商品的基本信息比较多,要考虑到输出时的整齐所以要要运用到setw函数来控制输出时的界面开始时由于没有注意到所输出来的空格数进而导致了输出来的界面有有点乱,之后又调整了输出时的空格数才使得输出来的界面变得相对美观,在编写sale函数时开始没考虑到输入提示,当系统运行时不知道系统要我们做什么,之后意思到后就在开始时输入了输入提示,这样当系统运行时就可以按照系统对你的提示进操作了。在有很多商品的情况下要临时找到一个商品的基本信息一般比较困难,因此还要用到binsearch来查找商品。当要想找到摸个商品时只要将其编号输入系统就可以根据编号进行查找,从而找到所要的商品。在商品已经销售了一部分时可以计算一下这些商品的总的进价因而sumsale函数就是来计算已经销售出去的商品的总的进价,同样,当想知道已经售出的这些商品所得到的利润时就可以用函数sumgain该系统中为了使得能够把商品的各种信息都能输出来并能够显示出来因此就运用了countmenu函数来把已经售出商品和未售的出商品的各种信息输入。系统会显示1.已售总额 2.已售总进价 3.已得纯利润 4.预销售总额 5.进价成本总额。这样就可以知道未售出商品和已售出商品的数量和已经所得的盈利。当选择菜单1时系统就会让你输入各种商品的信息,这时按照要求输入时然后选择6就可以进行收银工作,我们在系统的提示下会输入商品的编号、名称、数量、和进价售价。可以进行操作了。然后就当选择7时系统便会输出:1.已售总额 2.已售总进价 3.已得纯利润 4.预销售总额 5.进价成本总额 0.返回。这时还要进行子函数的选择,选择1时这是时在计算已经售出商品的总额,系统会显示134。选择2时这是在计算已经售出商品的总进价,系统会显示92,当选择3时这是在计算已经售出商品所得的总利润,系统会显示42,当选择4时这是在计算预销售总额,系统会显示6838,当选择5时这是在计算进价成本总额,系统会显示5440。当我们想结束计算着子函数的调用时选择0这是系统会自动跳出该子函数的运行然后显示:输入“选择菜单”作为提示。(5)小结通过一个学期C+语言的学习,现在对程序设计有了一定程度上的了解并会进行简单的程序设计,开始学习C+语言时可以说是在听天书,啥都不会,整天晕头转向的,加之老师是如此的严格,因此对C+ 语言充满了恐惧感!但由于认识到了C+语言的重要性,因此又加紧学习,上课认真听讲,课后认真看书,所以才对C+语言有了一定的了解和体会,之后才慢慢的会编写一些简单的程序,随着学习的深入,越来越难,之后又学习了数组和指针使得学习变得更难,数组的学习可以解决很多数据类型一样的数,然后又学习了结构体,结构体的学习使得程序越来越大,越来越复杂,以前的程序都是一些简单的小程序,学了结构体后就可以编写一些相对较大的程序了,结构体可以吧一些数据类型一样的集合在一起,在编写收银台结算系统时,开始不知道怎样写,主要是前面学的不好,还有一些小的知识不知道,所以在编写相对较大的程序时会遇到很多困难, 通过一个学期的学习,现在对C+语言不再那么的害怕,一些简单的程序可以自己独立的解决,现在也可以吧学生成绩管理系统编写出来了。由此可以看出只要自己努力就可以解决很多问题,C+语言的学习主要是以动手为主,不断的自己写程序代码,然后自己上机调试,不断的写程序不断地上机调试就可以熟能生巧,收银台结算系统就是不断的上机调试的结果,只有自己认真了努力了才能不断的进步。(六)参考文献 1 刘振安 等编著C+程序设计课程设计 机械工业出版社2 吴乃陵 等编著C+程序设计北京:高等教育出版社3 李龙澍C+程序设计实训教程北京:清华大学出版社 4 宁正元数据结构(C语言)南京:东南大学出版社。2000年6月5 严蔚敏等 数据结构(C语言版) 北京:清华大学出版社,1997年6 胡学钢等数据结构算法设计指导 北京:清华大学出版社,1999年 7 明日科技 编著Visual C+程序开发范例宝典北京:人民邮电出版社 附录 #include#include#include#include#define LENname 100#define LENnode 100#define LENfname 100class DATAint id;/产品编号char nameLENname;/产品名称int count;/库存数量int saleCount;/已售数量float buy;/进价float sale;/售价bool delTag;public:int getId()return id;char *getName()return name;int getCount()return count;int getSaleCount()return saleCount;float getBuy()return buy;float getSale()return sale;bool getDelTag()return delTag;/-void setId(int n)id=n;void setName(char na)strcpy(name,na);void setCount(int n)count=n;void setSaleCount(int n)saleCount=n;void setBuy(float n)buy=n;void setSale(float n)sale=n;/.void Del()delTag=1;void unDel()delTag=0;class WAYDATA nodeLENnode;int LEN;int LenWillDel;public:void newFile()int id;char nameLENname;int count;float buy;float sale;if(LEN0)LEN=0;LenWillDel=0;int i;DATA temp;for(LEN=1;LEN3;LEN+)coutid;if(id=-1)break;nodeLEN.setId(id);coutname;nodeLEN.setName(name);coutcount;nodeLEN.setCount(count);coutbuy;nodeLEN.setBuy(buy);coutsale;nodeLEN.setSale(sale);nodeLEN.unDel();nodeLEN.setSaleCount(0);/售出此产品0个for(i=0;inodeLEN.getId()temp=nodei;nodei=nodeLEN;nodeLEN=temp;void showData(int i)coutnodei.getId()setw(8)nodei.getName()setw(8)nodei.getCount()setw(8)nodei.getSaleCount()setw(8)nodei.getBuy()setw(8)nodei.getSale()setw(8)nodei.getDelTag()endl;void showData()cout编号setw(8)名称setw(8)当前量setw(8)已售量setw(8)进价setw(8)售价setw(8)删否endl;for(int i=0;i0 & nodei.getDelTag()=0)showData(i);void save()char fnameLENfname;coutfname;fstream f(fname,ios:out|ios:binary);for(int i=0;i0 & nodei.getDelTag()=0)f.write(char*)&nodei,sizeof(nodei);f.close();coutsave successendl;void open()char fnameLENfname;coutfname;LEN=-1;LenWillDel=0;fstream f(fname,ios:in|ios:binary);for(LEN=1;LEN3;LEN+)if(!f)break;LEN+;f.seekg(LEN*sizeof(nodeLEN);f.read(char*)&nodeLEN,sizeof(nodeLEN);f.close();int BinSearch()int id;coutid;int low=0,mid,high=LEN-1;while(lowid)high=mid-1;elselow=mid+1;return -1;float sumSale()/已销售总额float temp=0.0;for(int i=0;i0 & nodei.getDelTag()=0)temp+=nodei.getSale()*nodei.getSaleCount();return temp;float sumBuy()/(已售产品的)进价总额float temp=0.0;for(int i=0;i0 & nodei.getDelTag()=0)temp+=nodei.getBuy()*nodei.getSaleCount();return temp; float sumGain()/(已得)纯利润总额return sumSale()-sumBuy(); float sumSaleAll()/预销售总额(包括已售和未售)float temp=0.0;for(int i=0;iLEN;i+)if(nodei.getDelTag()=0)temp+=nodei.getSale()*(nodei.getSaleCount()+nodei.getCount();return temp;float sumBuyAll()/进价成本总额(包括已售和未售)float temp=0.0;for(int i=0;iLEN;i+)if(nodei.getDelTag()=0)temp+=nodei.getBuy()*(nodei.getSaleCount()+nodei.getCount();return temp;void countMenu()cout1.已售总额 2.已售总进价 3.已得纯利润 4.预销售总额 5.进价成本总额 0.返回endl;int yy;int t;for(t=1;t7;t+)coutyy;switch(yy)case 1:coutsumSale()endl;break;case 2:coutsumBuy()endl;break;case 3:coutsumGain()endl;break; case 4:coutsumSaleAll()endl;break; case 5:coutsumBuyAll()endl;break;case 0:break;void sale()cout产品编号;int temp;temp=BinSear

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论