资源描述
重庆科技学院《面向对象程序设计》课程设计报告
重庆科技学院
《面向对象程序设计》
课程设计报告
学 院:_电气与信息工程学院_ 专业班级:
学生姓名: 学 号:
设计地点(单位)________计算机自主学习中心 ________ __
设计题目:________超市商品管理系统设计______________ _____
完成日期: 2013 年1月18日
指导教师评语: ______________________ _________________
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _
成绩(五级记分制):______ __________
指导教师(签字):________ ________
摘要
商品管理系统是一个企业不可缺少的部分,它的内容对于企业的决策者和管理者来说都很重要,所以商品管理系统应该能够为用户提供充足的信息和快捷的查询手段。随着科学技术的不断提高,其强大的功能已经为人们深刻认识,它已经进入人类社会的各个领域并发挥着重要作用。因此,通过电脑软件编程,开发这样一套商品管理系统成为很有必要的事情。用户可以根据该系统查询相关信息,管理者可以根据该系统查询、修改商品信息。
关键字:商品管理、查询、科技、编程
重庆科技学院
程序设计任务书
设计题目:超市商品管理系统设计
学生姓名
课程名称
面向对象程序设计基础课程设计
专业班级
计科1102
地 点
I304/I306
起止时间
2013年1月7日~1月18日
设计内容及要求
1)问题描述
超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。
主要完成对商品的销售、统计和简单管理。
2)功能要求
(1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
添加功能:主要完成商品信息的添加。
查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
修改功能:可根据查询结果对相应的记录进行修改。
删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
3)问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
设计
参数
(1)系统分析、设计正确。
(2)结果以图表方式显示。
(3)界面简洁、美观。
(4)报告格式规范。
进度
要求
周一:明确设计任务,学习相关基础知识
周二:熟悉各知识点,进行基础练习
周三:根据题目要求,进行设计和实现
周四:根据题目要求,进行设计和实现
周五:程序测试
参考资料
[1]Richard Johnsonbaugh. Martin Kalin.《面向对象程序设计—C++语言描述》.机械工业出版社.2009年
[2]钱能.《C++语言程序设计教程》.清华大学出版社.2005年
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任: 指导教师:裴仰军/伍建全/焦晓军/陈应祖 2013年1月1日
目 录
摘要 ………………………………………………………………………………2
课程设计任务书 ……………………………………………………………………3
1 软件需求分析说明 ………………………………………………………………6
2 软件分析与设计 …………………………………………………………………7
2.1 软件界面设计 ……………………………………………………………7
2.2 软件的数据(结构)设计 ………………………………………………7
2.3 软件的算法设计 …………………………………………………………9
3软件的实现 …………………………………………………………………………11
4软件的测试 …………………………………………………………………………18
5软件使用说明书 ……………………………………………………………………21
致谢 ……………………………………………………………………………………22
参考文献 ………………………………………………………………………………23
第一章 软件需求分析说明书
该商品管理只要把商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家信息。该商品管理系统主要完成对商品的销售、统计和简单管理。
(1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
添加功能:主要完成商品信息的添加。
查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
修改功能:可根据查询结果对相应的记录进行修改。
删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计。
第二章 系统分析与设计
2.1 软件界面设计
图2.11
图2.12
2.2 软件的数据(结构)设计
本系统运用了#include<iostream>、#include<string>、#include<fstream>、#include<sstream>四个包头文件。并将食品、化妆品、日用品、饮料的信息分别保存在四个文本文件food.txt、cosmetics.txt、dailyuse.txt、drink.txt中,系统运行时,可以更方便获取信息。
每个文本文件里的商品信息分别是商品的名称、价格、库存量、生产厂家。四个文本文件的内容如下:
图2.21 foods。txt
图2.22 drink.txt
图2.23 dailyuse.txt
图2.24 cosmetics.txt
2.3 软件的算法设计
主菜单
选择
保存
显示
统计
添加
删除
修改
查询
销售
饮料
日用品
化妆品
食品
按名称查找
按类别查找
图2.31
查询
销售
名称
类别
选择类别
选择
选择名称
输入名称
购买数量
查询成功
超出库
存数量
库存
有货
销售成功
图2.33
图2.32
删除/添加
修改
选择类别
选择类别
输入名称
输入修改名称
内容
选择内容
无 无
此 此
商 商
删除/添加 内容
输入修改内容
品 品
结束
修改结束
图2.34 图2.35
第三章 软件的实现
(1)类的实现
class goods
{
public:
void read(string h);
void display();
void searchnumber();
void xiugainame(string x){name=x;}//修改名称
void xiugaiprice(string x){price=x;}//修改价格
void xiugaicount(int x){count=x;}//修改库存量
void xiugaichangjia(string x){changjia=x;}//修改生产厂家
string name;//名称
string price;//价格
int count;//库存量
string changjia;//生产厂家
};
void goods :: read(string h)
{
istringstream strin(h);
strin>>name>>price>>count>>changjia;
}
void goods :: display()
{
cout<<name<<"\t "<<price<<"\t "<<count<<" \t"<<changjia<<"\t "<<endl;
}
定义了一个goods的商品类,类里面只含有共有成员,包括变量name(名称)、price(价格)、count(库存量)和changjia(生产厂家)以及几个重要的函数。
(2)文件的读取
goods *per1;
per1=new goods [200];
ifstream fin1("foods.txt");
while(getline(fin1,buff))
{
per1[p1].read(buff);
p1++;
}
运用了#include<sstream>包头文件 从文本文件中读取字符到对象中,再把对象作为程序的输入流,既可把从文件中读取来的数字字符单个进行读取,从而进行处理。
这里只是对foods文本文件的读取。其余三个文本文件操作的代码类同。
(3)文件的保存
ofstream pout1("foods.txt");
for(j1=0;j1<p1;j1++)
{
pout1<<"\t\t"<<per1[j1].name<<"\t"<<per1[j1].price<<"\t"<<per1[j1].count<<" \t"<<per1[j1].changjia<<"\n";
}
pout1.close()
通过ofstream将改变了的信息写入文件中。
(4)商品销售的功能实现
void xiaoshou_goods(int p,goods *per)
{
int count, count1;string price,name,changjia;
cin>>name;
for(int j=0;j<p;j++)
{
if(per[j].name==name)
{
cout<<"销售的商品信息为:"<<endl;
print();
cout<<"\t\t"<<per[j].name<<"\t"<<per[j].price<<"\t "<<per[j].count<<"\t "<<per[j].changjia<<"\n";break;
}
}
if(j==p)
{
cout<<"\n对不起,未找到名称为"<<name<<"的商品";
}
else
{ int h=0;
while(h==0)
{
cout<<"请输入销售的库存量(件):";
cin>>count1;
if(panduan(count1,p,j,per))
{
per[j].count-=count1;
cout<<"购买成功!!"<<endl;
h=1;break;
}
else cout<<"库存量不足!请重新输入销售库存量:"<<endl;
}
}
}
bool panduan(int s,int p,int j,goods*per)
{
if(s<=per[j].count)
return true;
else
return false;
}
商品的销售实现运用了两个函数来实现,通过查找,找到需要销售的商品。然后通过另一个判断函数判断购买的件数是不是少于库存量,若多余库存量则重新购买。
(5)商品查找的功能实现
cout<<"\n\t================= 查找商品信息=====================\n\n";
cout<<"\t"<<"1按类别查找 2按名称查找 <请选择>:";
cin>>b;
switch(b)
{
case '1':
cout<<"请选择 : 1食品 2化妆品 3日用品 4饮料"<<endl; cin>>c;
switch(c)
{
case '1':
print();
for(j1=0;j1<p1;j1++) per1[j1].display();break;
case '2': .................; break;
case '3': .................; break;
case '4': .................; break;
default: cout<<"\n输入有误!"; break;
} break;
case '2':
cout<<"请输入名称 :";
cin>>name;
for(j=0;j<150;j++)
{
if(per1[j].name==name)
{
name="1"; break;
}
if(per2[j].name==name) {…………… }
if(per3[j].name==name){……………}
if(per4[j].name==name) {…………… }
else continue;
}
if(name=="1")
{
print();
cout<<"\t\t"<<per1[j].name<<"\t"<<per1[j].price<<"\t "<<per1[j].count<<"\t "<<per1[j].changjia<<"\n";
break;}
if(name=="2" ){………………}
if(name=="3" ){……………}
if(name=="4") {……………}
else
{
cout<<"没有关于该商品的信息!";
}break;
}
cout<<"\n"<<"请按任意键返回主菜单!";
cin>>z;
}
查找功能的实现代码直接写在主函数里面的,通过switch选择是通过类别查找还是名称查找。若通过类别查找只能查找一个类别里的所有商品。而通过名称查找可以查看单个商品的信息。
(6)商品删除的功能实现
cout<<"请输入要删除的食品的名称:";
cin>>name;
for(j=0;j<p1;j++)
{
if(name==per1[j].name)
{
break;
}
}
if(j==p1)
{
cout<<"\n对不起,未找到名称为"<<name<<"的商品";
cout<<"\n\n请输入任意键点回车键返回!";
cin>>z;
}
else
{ while(j!=p1)
{
per1[j]=per1[j+1];
j++;
}
p1--;
cout<<"删除成功!"<<endl;
}
删除商品的功能代码写在主函数里面。首先选择删除商品的类型。此处代码为删除类型为食品的商品。首先系统会根据你输入的需要删除的商品进行查找,若无此商品,系统将给出提示,若有此商品,系统将成功删除该商品。
(7)商品修改的功能实现
void change_goods(int p,goods *per)
{
char c;
string price,name,changjia;
int count;
cin>>name;
for(int j=0;j<p;j++)
{
if(per[j].name==name)
{
name="0";
break;
}
else
continue;
}
if(name=="0")
{
cout<<"\n"<<"名称为"<<per[j].name<<"的商品信息:\n";
print();
per[j].display();
cout<<"请选择要修改的商品信息<1名称 2价格 3库存 4生产厂家>:";
cin>>c;
switch(c)
{
case '1':
cout<<"请输入修改后的名称:";
cin>>name;
per[j].xiugainame(name);
cout<<"修改后的商品信息为:"<<endl;
per[j].display();
break;
case '2': ………………break;
case '3': ………………break;
case '4': ………………break;
default:cout<<"输入有误!";break;
}
}
else cout<<"\n没有该商品!";
}
通过一个函数来实现商品的修改,选择修改的内容对商品进行修改。
(8)商品添加的功能实现
cout<<"\n\t================ 添加商品信息 ===================\n\n";
cout<<"请选择添加的类型 : 1食品 2化妆品 3日用品 4饮料"<<endl;
cin>>c;
switch(c)
{
case'1':
cout<<"名称:"; cin>>per1[p1].name;
cout<<"价格:"; cin>>per1[p1].price;
cout<<"库存:"; cin>>per1[p1].count;
cout<<"生产厂家:"; cin>>per1[p1].changjia;
cout<<"你添加的商品信息为:"<<endl;
print();
cout<<"\t\t"<<per1[p1].name<<"\t"<<per1[p1].price<<"\t "<<per1[p1].count<<" \t"<<per1[p1].changjia<<"\n"; p1++; break;
case'2':………………..break;
case'3':………………..break;
case'4':………………..break;
default: cout<<"\n输入有误!"; break;
}
cout<<"\n"<<"请按任意键返回主菜单!";
cin>>z;
商品添加的代码是直接写在主函数里面。根据你添加商品选择商品的类型,根据提示输入添加商品的相关信息。
(9)商品统计的功能实现
void tongji_goods(int p,goods *per)
{
string price,name,changjia;
int count;
goods t;
for(int i=0;i<p-1;i++)
{
for(int j=0;j<p-1;j++)
{
if(per[j].count<per[j+1].count)
{
t=per[j];
per[j]=per[j+1];
per[j+1]=t;
}
}
}
print();
for(int j=0;j<p;j++) per[j].display();
}
运用了冒泡排序的方法对商品中各类库存量多少进行排序,库存量多的商品排在前面。
第四章 软件测试
1. 商品的销售:
图4.1 销售的yumi
图4.2yumi的库存量
2. 商品的查询:
图4.3按类别查找
图4.4按名称baobao查找
3. 商品的删除:
图4.5删除yumi的信息
4. 商品添加:
图4.5添加bibi商品
5. 商品的修改:
图4.6将shui的价格改为8$
6.商品统计:
图4.7 各类商品的排序
6. 商品修改的信息保存:
图4.8信息的保存
第五章 软件使用说明书
该商品管理操作系统主要是在界面内选择需要的功能,根据系统界面的提示,选择需要进行的操作。首先进入界面将看到的内容是:
图5.1
然后根据提示按任意键,再按回车键后就能进入商品管理的各项操作功能的选择菜单,主要有以下几个操作:销售、查询、添加、删除、修改、统计、显示。
图5.2
根据菜单的提示,选择所要进行的操作。例如选择销售功能,就输入”销售”前面的菜单编号A或者a 。进入销售管理系统,再根据界面的提示选择接下来的每一步操作。
不管进入了哪一个界面,系统都会给出相应界面的有关提示,只要根据提示进行每一步操作,就能正确使用该管理系统。
致谢
非常感谢裴老师、伍老师、焦老师、陈老师的指导,还有我的室友和同学的帮助,谢谢!.
签名
日期 2013年1月16日
参考文献
[1]Richard Johnsonbaugh. Martin Kalin.《面向对象程序设计—C++语言描述》.机械工业出版社.2009年
[2]钱能.《C++语言程序设计教程》.清华大学出版社.2005年
23
展开阅读全文