这篇博客是我软件开发与创新课的第一次作业
1)
本文中超市进销存管理系统源码来自室友在大二上c++课程的大作业,故而本文分析和改进所运用的编程语言为C++。
由于本人仍为一名学生,在编程能力上仍有欠缺故在代码的原有基础上进行修改。
2)原超市进销存管理系统代码分析
类:
Goods类:
变量:
charname[20];//商品名称doublenum;//商品代码charperson[30];//商品产地intprice;//进货价doubleamount;//库存量Goods*next;指针变量
函数:
Goods(doublenum,char*name,char*person,intprice,doubleamount)//构造函数
voidOutput()//输出函数,主要用于后续函数中的整体输出
Supermarket类:
Goods*goods;//商品表voidClear();//清除内存中数据
Supermarket()//构造函数
~Supermarket()//析构函数
voidAdd();//增加商品
voidDelete();//删除商品
voidModify();//修改商品
voidSave();//基础数据存盘
voidLoad();//基础数据装入
同时该系统对于文件信息的存取调用方面有着与众不同的方式,通常情况下我们学生使用文件的存储与使用仅仅是使用一个函数,而该代码设计了两个函数来实现数据文件的使用与存储有效的区分。文件读取与存储模块主要是两个函数数据装盘和数据装入,数据装盘函数还有一个询问是否保存的功能,用户确认保存之后,就是先创建一个名为“best.txt”的文本文件,将商品信息以特定格式写入文件中。数据装入函数就是在名为“best.txt”的文本文件中事先存在数据的情况下,将其中的数据存入链表中。在阅读该小组源代码的时候发现该组代码中对于链表的使用比较周全,这使得阅读代码和运行代码的效率都有不同的影响。
源代码需求是超市货物的增加修改和删除,对于一个超市货物管理系统来说需求已基本满足,但是,在某些方面仍有较大的改善空间。如商品在系统中的统计数据,缺乏一些看似无需其实比较重要的功能。同时在原码中有设置全局变量来控制节点,但是在代码中它的使用,似乎并没有体现出来。
3)改进
通过利用代码原作者在原码中设置的全局变量节点来进行操作,增设了统计商品的功能。统计商品功能:主要是统计商品的数量和总价。通过查找设置的全局变量结点,再将结点中的数量和单价相乘,最后输出。下面是新增加的代码:
voidSupermarket::Add_up()//统计超市商品总数量于价值{cout<<"\n****商品统计****\n";doubleAmount=0,Value=0;charname[20];cout<<"\n请输入要统计的商品名称:\n";cin>>name;Goods*p1;p1=goods;while(p1){if(strcmp(p1->name,name)==0)break;elsep1=p1->next;}if(p1){while(p1){Amount+=p1->amount;Value+=p1->amount*p1->price;p1=p1->next;}cout<<"商品总数量是:\n";cout<