VC++课程设计报告小型超市商品管理系统.docx
- 文档编号:6995050
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:44
- 大小:160.47KB
VC++课程设计报告小型超市商品管理系统.docx
《VC++课程设计报告小型超市商品管理系统.docx》由会员分享,可在线阅读,更多相关《VC++课程设计报告小型超市商品管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
VC++课程设计报告小型超市商品管理系统
东莞理工学院
三级项目设计报告
课程:
学号:
姓名:
班级:
教师:
2012年1月1日
第一章系统概述
1.1功能简介
本软件是一个简单的小型超市商品管理系统,软件窗口为DOS页面。
小型超市商品管理系统的功能主要是实现小型超市商品的信息化管理。
通过小型超市商品管理系统,商品管理人员可以实现对商品信息的增加、删除、修改、查询和计算利润等操作。
本系统最大的优点就是操作简便快捷等。
1.2设计思路
将商品信息定义为一个good类,在类中包含私有数据成员intnum,stringname,doublecost,doubleprice,stringindate,intkpdate,stringbrand,stringsort,stringtrademark,分别表示商品编号、商品名、进价、售价、食品出产日期、保质期、化妆品牌、日用品类型、饮料商标。
公有成员函数包括in(),change(),search(),profit(),分别通过其四个子函数分别对应四种不同的商品用来实现对商品信息的数据初始录入和增加数据、修改和删除数据、查询和显示全部数据、计算商品利润功能。
然后定义了一个menu()菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作。
主函数是一个程序必不可少的,在主函数中,创建一个good类的对象one并运行one的menu()函数开始使用本系统。
第二章系统功能的分析和设计
在本章中,主要是介绍各个功能函数的设计思路和实现方法。
2.1初始录入/添加函数
此函数实现的功能主要是,对商品信息的初始化录入以及增加功能,在初始时,文件中没有任何数据,可以通过次函数输入任意个商品的信息,在输入时通过一个if条件语句来实现控制循环,当输入的姓名是“0”时,使用break语句就跳出循环,即停止输入学生信息。
增加功能同此原理。
在此函数中使用文件处理的方式,先建立一个文件输出流对象,根据用户的需要操作分别以增加的方式打开d:
//food.txt;d:
//cosmetics.txt;d:
//dailyuse.txt;d:
//liquid.txt文件,分别对应食物,化妆品,日用品,饮料四种商品,使输入的商品信息都分类写入文件。
2.2修改/删除函数
此函数实现的功能主要是,修改/删除一个商品的信息。
在此函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,关闭文件。
用户再根据提示信息输入想要修改/删除的商品的商品编号,选择是删除还是修改该商品信息。
再以写的方式打开文件,以一个if条件语句控制,再重新将商品信息写入文件(选择删除功能的话则除了打算删除的那个商品的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。
2.3查询/显示全部(利润)函数
在查询/显示全部功能中,可以按多条件查询,若不按条件查询则可选择显示该类别全部商品信息且计算利润。
本系统有两个基本查询条件,即按商品编号查询和按商品名查询,也可根据商品的特殊信息进行查询。
使用if语句来选择查询条件。
2.3.1显示全部
根据提示信息输入需要查询哪种类型的商品后,然后再选择显示全部功能使用一个for循环语句,显示全部该类别信息,并计算利润。
2.3.1按条件查询
根据提示信息选择各种条件查询后,然后使用一个for循环语句,从第一个学生开始检索,如果该商品的信息和输入的条件一致,则输出该商品的信息。
当无查询结果时,则无显示。
2.4查看过期食品函数
此功能实现的功能主要是,创建了一个日期类date,方便对生产日期和保质期的计算。
首先要求用户输入今日的日期。
再以读的方式打开食品商品文件,读出文件的信息并对生产日期和保质期利用日期类date进行求和。
再以用户输入的今日日期进行求差。
若结果为负数则输出“已过期!
”,若结果为正数则输出还剩余几天。
2.5退出系统
当输入“0”时,就能退出系统,这是通过switch语句来控制实现的。
当用户输入switch已定义的数字之外的数字,自动退出运用。
再按任意键则退出DOS界面,
第三章调试及运行结果
3.1主菜单
主菜单显示如下:
图3-1主菜单
3.2初始录入/添加功能
按1则进入输入/添加菜单,如图3-2-1:
再选择相应的商品类型进行输入,如图3-2-2:
图3-2-1输入/添加菜单图3-2-2输入/添加过程
3.3修改/删除功能
进入主菜单后选择2,进入修改/删除功能,如图3-3-1;再选择相应的商品类型进行操作,根据提示进行操作,如图3-3-2;
图3-3-1修改/删除菜单
图3-3-1修改/删除过程
3.4查询/显示全部(利润)功能
进入主菜单后选择3,进入查询/显示全部功能菜单,如图3-4-1,根据相应操作输入需要查询的类型。
根据相应操作进行查询。
图3-4-1查询菜单图3-4-2食品查询菜单
图3-4-3查询全部(利润)
3.5查看过期食品功能
进入主菜单后选择4,查看过期食品功能。
图3-5查看食品
第四章总结
4.1遇到的问题及解决方法
1.P:
商品分为四类,不像其他题目一样只有一类。
S:
商品分为四类,若然创建一个商品类再派生四个类则函数不好连接。
所以把四种类型的变量,函数集中到一个类里。
2.P:
一个功能需要分成四个子函数来完成,并且要创建一个功能菜单,导致程序过长,并且出现下列错误:
fatalerrorC1076:
compilerlimit:
internalheaplimitreached;use
/Zmtospecifyahigherlimit
编译器限制:
达到内部堆限制;。
S:
将功能缩减整合,减少不必要的变量和多余的代码重复。
3.P:
如何做到检查食品是否过期功能。
S:
设定一个日期类。
编写关于日期计算的函数来达到。
4.P:
参考源程序第二次启动EXE不能查看全部数据。
S:
改为用数组一次读取全部数据,引入变量记录读取的数据数量再循环输出。
4.2收获和体会
个人感受
首先,老师给的那个参考源程序有些不完美。
例如程序第二次启动就不能查询到信息,不过里面倒是有很多代码可以复制下。
做了一晚上的程序,外加弄了一晚上的这份报告,其实也学到很多东西。
首先,不懂的东西要XX。
其次,大概是遇到问题要绕弯吧,很多问题不能直接解决。
总体来说这个题目应该是在十个题目里最难的,因为它的处理对象分成四个类型。
而且其他题目可以直接从参考源程序里复制修改下,甚至可以在网上找到全部。
附录:
程序代码
#include
#include
#include
#include
usingnamespacestd;
classgood//商品构造
{
private:
intnum,kpdate;//保质期
stringname;
stringindate;//食品出厂日期
stringbrand;//化妆品牌
stringsort;//日常用品分类
stringtrademark;//饮料商标
doublecost,price;
public:
voidmenu();
voidin();
voidsetfood();
voidsetcosmetics();
voidsetdailyuse();
voidsetliquid();
voidchange();
voidchangefood();
voidchangecosmetics();
voidchangedailyuse();
voidchangeliquid();
voidsearch();
voidsearchfood();
voidsearchcosmetics();
voidsearchdailyuse();
voidsearchliquid();
voidcheak();
};
classdate
{
private:
intyear,month,day;
public:
voidset(intx)
{
year=x/10000;
month=(x-year*10000)/100;
day=x-year*10000-month*100;
}
intcdate(intx,date&y)
{
intm;
m=-((y.year-year)*365+(y.month-month)*30+y.day-day)+x;
returnm;
}
};
voidgood:
:
menu()
{
cout<<"╔═════════════╗"< cout<<"║1.输入/添加║"< cout<<"║2.修改/删除║"< cout<<"║3.查询/利润║"< cout<<"║4.查看过期食品(new! )║"< cout<<"║0.退出║"< cout<<"╚═════════════╝"< intx; cin>>x; switch(x) { case1: in();break; case2: change();break; case3: search();break; case4: cheak(); } } voidgood: : in() { cout<<"╔═════════════╗"< cout<<"║请根据需要输入对应序号║"< cout<<"║1.输入食品信息║"< cout<<"║2.输入化妆品信息║"< cout<<"║3.输入日常用品信息║"< cout<<"║4.输入饮料信息║"< cout<<"║0.返回菜单║"< cout<<"╚═════════════╝"< intx; cin>>x; switch(x) { case1: setfood();break; case2: setcosmetics();break; case3: setdailyuse();break; case4: setliquid();break; case0: menu();break; } } voidgood: : setfood() { inti; ofstreamoutfile; outfile.open("d: \\food.txt",ios: : app); if(! outfile) { cerr<<"openerror"< exit (1); } for(i=0;;i++) { cout<<"当商品编号输入为'0'时,返回上一菜单。 "< cout<<"商品编号: "; cin>>num; if(num==0)break; if(num! =0) { cout<<"食品名: "; cin>>name; outfile< outfile< cout<<"成本价格: "; cin>>cost; outfile< cout<<"销售价格: "; cin>>price; outfile< cout<<"8位数生产日期: "; cin>>indate; outfile< cout<<"保质期(天): "; cin>>kpdate; outfile< } } outfile.close(); menu(); } voidgood: : setcosmetics() { inti; ofstreamoutfile; outfile.open("d: \\cosmetics.txt",ios: : app); if(! outfile) { cerr<<"openerror"< exit (1); } for(i=0;;i++) { cout<<"当商品编号输入为'0'时,返回上一菜单。 "< cout<<"请输入商品编号: "< cin>>num; if(num==0)break; if(num! =0) { cout<<"化妆品名: "; cin>>name; outfile< outfile< cout<<"成本价格: "; cin>>cost; outfile< cout<<"销售价格: "; cin>>price; outfile< cout<<"化妆品牌: "; cin>>brand; outfile< } } outfile.close(); menu(); } voidgood: : setdailyuse() { inti,x; ofstreamoutfile; outfile.open("d: \\dailyuse.txt",ios: : app); if(! outfile) { cerr<<"openerror"< exit (1); } for(i=0;;i++) { cout<<"当商品编号输入为'0'时,返回上一菜单。 "< cout<<"商品编号: "; cin>>num; if(num==0)break; if(num! =0) { cout<<"日常用品名: "; cin>>name; outfile< outfile< cout<<"成本价格: "; cin>>cost; outfile< cout<<"销售价格: "; cin>>price; outfile< cout<<"╔═════════════╗"< cout<<"║请根据分类输入对应序号║"< cout<<"║1.输入服装信息║"< cout<<"║2.输入鞋帽信息║"< cout<<"║3.输入清洁用品信息║"< cout<<"╚═════════════╝"< cin>>x; switch(x) { case1: sort="服装";break; case2: sort="鞋帽";break; case3: sort="清洁用品";break; } outfile< } } outfile.close(); menu(); } voidgood: : setliquid() { inti; ofstreamoutfile; outfile.open("d: \\liquid.txt",ios: : app); if(! outfile) { cerr<<"openerror"< exit (1); } for(i=0;;i++) { cout<<"当商品编号输入为'0'时,返回上一菜单。 "< cout<<"商品编号: "; cin>>num; if(num==0)break; if(num! =0) { cout<<"饮料名: "; cin>>name; outfile< cout<<"成本价格: "; cin>>cost; outfile< cout<<"销售价格: "; cin>>price; outfile< cout<<"饮料品牌: "; cin>>trademark; outfile< } } outfile.close(); menu(); } voidgood: : change() { cout<<"╔═════════════╗"< cout<<"║请根据需要输入对应序号║"< cout<<"║1.修改食品信息║"< cout<<"║2.修改化妆品信息║"< cout<<"║3.修改日常用品信息║"< cout<<"║4.修改饮料信息║"< cout<<"║0.返回菜单║"< cout<<"╚═════════════╝"< intx; cin>>x; switch(x) { case1: changefood();break; case2: changecosmetics();break; case3: changedailyuse();break; case4: changeliquid();break; case0: menu();break; } } voidgood: : changefood() { boolc; inti,k,m=0,kpdate[50]; intnum[50]; doublecost[50],price[50]; stringname[50],indate[50]; ifstreaminfile("d: \\food.txt",ios: : in); if(! infile) { cerr<<"openerror"< exit (1); } cout<<""; cout< cout< cout< cout< cout< cout< for(i=0;i<50;i++) { infile>>num[i]; infile>>name[i]; infile>>cost[i]; infile>>price[i]; infile>>indate[i]; infile>>kpdate[i]; m++; if(infile.eof())break; } m--; for(i=0;i { cout<<""; cout< cout< cout< cout< cout< cout< } cout< infile.close(); ofstreamoutfile("d: \\food.txt",ios: : out); if(! outfile) { cerr<<"openerror"< exit (1); } cout<<"请输入需要修改的商品的编号。 "< cin>>k; cout<<"修改: 1;删除: 0: "< cin>>c; if(c) { for(i=0;i {if(k==num[i])k=i;break;} cout<<"请输入新的数据: "< cout<<"食品名: "< cin>>name[k]; cout<<"成本价格: "; cin>>cost[k]; cout<<"销售价格: "; cin>>price[k]; cout<<"8位数生产日期: "; cin>>indate[k]; cout<<"保质期(天): "; cin>>kpdate[k]; for(i=0;i { outfile< outfile< outfile< outfile< outfile< outfile< } outfile.close(); cout<<"已修改成功! "< } else { for(i=0;i { if(i! =k) { outfile< outfile< outfile< outfile< outfile< outfile< } } outfile.close(); cout<<"已删除成功! "< } menu(); } voidgood: : changecosmetics() { boolc; inti,k,m=0; intnum[50]; doublecost[50],price[50]; stringname[50],brand[50]; ifstreaminfile("d: \\cosmetics.txt",ios: : in); if(! infile) { cerr<<"openerror"< exit (1); } cout<<""; cout< cout< cout< cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 课程设计 报告 小型 超市 商品 管理 系统