《超市管理系统c 程序实践报告》由会员分享,可在线阅读,更多相关《超市管理系统c 程序实践报告(26页珍藏版)》请在金锄头文库上搜索。
1、C+C+程序设计程序设计课程设计报告课程设计报告设计题目:设计题目: 超市管理系统超市管理系统 专业班级:专业班级: 小组成员:小组成员:指导老师:李大扬指导老师:李大扬2011/6/30目目录录一一. .设计目的与任务描述设计目的与任务描述二二. .设计思想设计思想三三. .系统功能与设计过程系统功能与设计过程四四. .程序源代码程序源代码五五. .运行情况运行情况六六. .心得体会心得体会七七. .参考文献参考文献超市管理系统超市管理系统一设计目的与任务描述一设计目的与任务描述设计目的设计目的: 1熟悉 C+语言系统开发的基本过程 2巩固所学知识,培养和提高学生分析和解决实际问题的能力任务
2、描述任务描述: 需求分析: 中小型超市采购的商品一般都成千上万件。 对这些商品进行有效的管理必不可少。 每 件商品一般都需要记录商品名、条形码、类别、价格、出厂日期等商品的基本信息。除此之 外,还需要记录商品的其他相关信息,如生产厂家、供货处代码、厂家网址、厂家电话等。 超市商品的相关信息需要存储到文件系统中,一般都需要提供对商品信息的添加、编辑、删 除等操作。超市管理员每天都会记录购进的商品信息,核销过期的商品等。 为了巩固我们所学的 C+语言程序设计知识,也为了满足课程设计的要求,我们在对 几个中小型超市进行调研的基础上, 设计和实现一个小型的超市商品管理系统, 提供商品系 统的添加、删除
3、、编辑等功能。同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。设计一个小型超市管理系统,用链表来存储商品的基本信息(包括商品名称,代码产 地,单价等) 。完成以下基本功能: A、添加商品信息:有商品代码、商品名称、产地、商品单价、库存量等。 B、修改,删除商品信息:输入商品名称,修改或删除相应商品信息。 C、查询,统计商品:输入商品名称,查询,统计相应商品信息。二:设计思想二:设计思想(1)设计 class goods 商品类,实现对商品信息的描叙;设计 class Supermarket 类,实现对商品信息的增加,删除,修改,查询,统计等。以下是函数功
4、能表:函数函数功能功能Void Output()输出商品的信息Supermarket()构造函数Supermarket()析构函数void Add();增加商品void Delete();删除商品void Modify();修改商品void Query();查询商品void Add_up();统计商品void Save();基础数据存盘void Load();基础数据装入Goods(double num,char*name,char*address,int price,doublecount)构造函数(2)用类的成员函数对链表的数据进行操作,其功能如上表所列。(3)设计菜单来实现功能设计 1
5、增加商品 2 删除商品 3 修改商品 4 查询商品; 5 统计商品 6退出三三. .设计类及对象设计类及对象本程序定义了两个类,后者为前者的友元类。定义如下:1. class Goodsclass Goodsprotected:char name20;/商品名称double num;/商品代码char address30;/商品产地int price;/商品单价double count;/该类商品库存量Goods *next;public:Goods(double num,char*name,char*address,int price,double count)this-num=num;st
6、rcpy(this-name,name);strcpy(this-address,address);this-price=price;this-count=count;void Output()coutnext;delete goods;goods=p;goods=NULL;void Add();/增加商品void Delete();/删除商品void Modify();/修改商品void Query();/查询商品void Add_up();/统计商品void Save();/基础数据存盘void Load();/基础数据装入;四四. .程序源代码程序源代码/ supermarket.cpp
7、 : Defines the entry point for the console application. /#include “stdafx.h“/ / int main(int argc, char* argv) / /return 0; / #include#include#include#include#includeint n=0;/全局数据,结点数量class Goods protected:char name20;/商品名称double num;/商品代码char address30;/商品产地int price;/商品单价double count;/该类商品库存量Goods
8、 *next;public:Goods(double num,char*name,char*address,int price,double count)this-num=num;strcpy(this-name,name);strcpy(this-address,address);this-price=price;this-count=count;void Output()coutnext;delete goods;goods=p;goods=NULL;void Add();/增加商品void Delete();/删除商品void Modify();/修改商品void Query();/查询
9、商品void Add_up();/统计商品void Save();/基础数据存盘void Load();/基础数据装入;void Supermarket:Clear()/清除内存中商品数据(内部使用)Goods* p;p=goods;while(p)goods=p-next;delete p;p=goods;void Supermarket:Add()Goods *p;double num,count;char name20,address30;int price;coutnum;coutname;coutaddress;coutprice;coutcount;/创建新商品类结点p=new G
10、oods(num,name,address,price,count);p-next=NULL;if(goods=NULL)goods=p;n+;elseGoods *p2=goods;while(p2-next)p2=p2-next;p2-next=p;n+; void Supermarket:Delete()/删除商品char name20;coutname;/查找要删除的结点Goods *p1,*p2;p1=goods;while(p1)if(strcmp(p1-name,name)=0) break;elsep2=p1;p1=p1-next;/删除结点if(p1!=NULL)/若找到结点
11、,则删除if(p1=goods)/若要删除的结点是第一个结点goods=p1-next;delete p1;n-;else/若要删除的结点是后续结点p2-next=p1-next;delete p1;n-;coutname;/查找要修改的结点Goods *p1,*p2;p1=goods;while(p1)if(strcmp(p1-name,name)=0) break;elsep2=p1;p1=p1-next;/修改结点if(p1!=NULL)/若找到结点p1-Output();couta;switch(a)case 1:coutnum;strcpy(name,p1-name);strcpy(
12、address,p1-address);price=p1-price;count=p1-count; break;case 2:coutname;num=p1-num;strcpy(address,p1-address);price=p1-price;count=p1-count; break;case 3:coutaddress;num=p1-num;strcpy(name,p1-name);price=p1-price;count=p1-count; break;case 4:coutprice;num=p1-num;strcpy(name,p1-name);strcpy(address,
13、p1-address);count=p1-count; break;case 5:coutcount;num=p1-num;strcpy(name,p1-name);strcpy(address,p1-address);price=p1-price; break;case 6:coutnum;coutname;coutaddress;coutprice;coutcount; break; /创建新商品结点Goods *p3;p3=new Goods(num,name,address,price,count);/员工结点替换到链表p3-next=p1-next;if(p1=goods)/若要替换
14、的结点是第一个结点goods=p3;else/若要替换的结点是后续结点p2-next=p3;delete p1;/删除原来的商品结点coutname;Goods *p1=goods;while(p1)if(strcmp(p1-name,name)=0) break;else p1=p1-next;if(p1!=NULL)/若找到结点coutnumnameaddresspricecountname;Goods *p1;p1=goods;while(p1)if(strcmp(p1-name,name)=0) break;else p1=p1-next;if(p1)while(p1)Amount+=
15、p1-count;Value+=p1-count*p1-price;p1=p1-next;couta;if(a=n)return;if(a=y|a=Y)ofstream outfile(“base.txt“,ios:out);if(!outfile)cerrnumnameaddresspricecountnext;outfile.close();coutp-nump-namep-addressp-pricep-count;while(infile.good()/创建商品结点p=new Goods(p-num,p-name,p-address,p-price,p-count);p-next=NULL;/商品结点