VC++课程设计报告-小型超市商品管理系统

更新时间:2023-04-21 12:51:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

东莞理工学院

三级项目设计报告

课程: 学号:姓名: 班级: 教师:

2012年 1月 1日

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

目录

第一章 系统概述 ............................................................................................................................. 3

1.1 功能简介 ........................................................ 3 1.2 设计思路 ........................................................ 3 第二章 系统功能的分析和设计 ......................................... 4 2.1初始录入/添加函数................................................ 4 2.2修改/删除函数.................................................... 4 2.3 查询/显示全部(利润)函数 ....................................... 4 2.3.1 显示全部 ...................................................... 4 2.3.1 按条件查询 .................................................... 5 2.4 查看过期食品函数 ................................................ 5 2.5 退出系统 ........................................................ 5 第三章 调试及运行结果 ............................................... 6 3.1 主菜单 .......................................................... 6 3.2初始录入/添加功能................................................ 6 3.3修改/删除功能.................................................... 6 3.4查询/显示全部(利润)功能........................................ 7 3.5 查看过期食品功能 ................................................ 8 第四章 总结 ......................................................... 9 4.1 遇到的问题及解决方法 ............................................ 9 4.2 收获和体会 ...................................................... 9

附录:程序代码 ............................................................................................................................. 10

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

第一章 系统概述 1.1 功能简介

本软件是一个简单的小型超市商品管理系统,软件窗口为DOS页面。 小型超市商品管理系统的功能主要是实现小型超市商品的信息化管理。通过小型超市商品管理系统,商品管理人员可以实现对商品信息的增加、删除、修改、查询和计算利润等操作。本系统最大的优点就是操作简便快捷等。

1.2 设计思路

将商品信息定义为一个good类,在类中包含私有数据成员int num,string name,double cost,double price,string indate,int kpdate,string brand,string sort,string trademark,分别表示商品编号、商品名、进价、售价、食品出产日期、保质期、化妆品牌、日用品类型、饮料商标。

公有成员函数包括in( ) ,change( ) ,search( ) ,profit( ) ,分别通过其四个子函数分别对应四种不同的商品用来实现对商品信息的数据初始录入和增加数据、修改和删除数据、查询和显示全部数据、计算商品利润功能。

然后定义了一个menu( ) 菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作。

主函数是一个程序必不可少的,在主函数中,创建一个good类的对象one并运行one的menu()函数开始使用本系统。

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

第二章 系统功能的分析和设计

在本章中,主要是介绍各个功能函数的设计思路和实现方法。

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循环语句,显示全部该类别信息,并计算利润。

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

2.3.1 按条件查询

根据提示信息选择各种条件查询后,然后使用一个for循环语句,从第一个学生开始检索,如果该商品的信息和输入的条件一致,则输出该商品的信息。

当无查询结果时,则无显示 。

2.4 查看过期食品函数

此功能实现的功能主要是,创建了一个日期类date,方便对生产日期和保质期的计算。首先要求用户输入今日的日期。再以读的方式打开食品商品文件,读出文件的信息并对生产日期和保质期利用日期类date进行求和。再以用户输入的今日日期进行求差。若结果为负数则输出“已过期!”,若结果为正数则输出还剩余几天。

2.5 退出系统

当输入“0”时,就能退出系统,这是通过switch语句来控制实现的。当用户输入switch已定义的数字之外的数字,自动退出运用。再按任意键则退出DOS界面,

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

第三章 调试及运行结果 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修改/删除菜单

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

图3-3-1修改/删除过程

3.4查询/显示全部(利润)功能

进入主菜单后选择3,进入查询/显示全部功能菜单,如图3-4-1,根据相应操作输入需要查询的类型。根据相应操作进行查询。

图3-4-1 查询菜单 图3-4-2 食品查询菜单

图3-4-3查询全部(利润)

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

3.5 查看过期食品功能

进入主菜单后选择4,查看过期食品功能。

图3-5 查看食品

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

第四章 总结

4.1 遇到的问题及解决方法

1.P:商品分为四类,不像其他题目一样只有一类。

S: 商品分为四类,若然创建一个商品类再派生四个类则函数不好连接。所

以把四种类型的变量,函数集中到一个类里。

2.P:一个功能需要分成四个子函数来完成,并且要创建一个功能菜单,导致程序过长,并且出现下列错误:

fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit 编译器限制 : 达到内部堆限制;。

S:将功能缩减整合,减少不必要的变量和多余的代码重复。 3.P:如何做到检查食品是否过期功能。

S:设定一个日期类。编写关于日期计算的函数来达到。 4.P:参考源程序第二次启动EXE不能查看全部数据。

S:改为用数组一次读取全部数据,引入变量记录读取的数据数量再循环输出。

4.2 收获和体会

个人感受

首先,老师给的那个参考源程序有些不完美。例如程序第二次启动就不能查询到信息,不过里面倒是有很多代码可以复制下。做了一晚上的程序,外加弄了一晚上的这份报告,其实也学到很多东西。首先,不懂的东西要百度。其次,大概是遇到问题要绕弯吧,很多问题不能直接解决。总体来说这个题目应该是在十个题目里最难的,因为它的处理对象分成四个类型。而且其他题目可以直接从参考源程序里复制修改下,甚至可以在网上找到全部。

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

附录:程序代码

#include<iostream> #include<fstream> #include<string> #include<iomanip> using namespace std; class good //商品构造 {

private:

int num,kpdate;//保质期 string name;

string indate;//食品出厂日期 string brand;//化妆品牌 string sort;//日常用品分类 string trademark;//饮料商标 double cost,price; public:

void menu(); void in();

void setfood();

void setcosmetics(); void setdailyuse(); void setliquid(); void change(); void changefood();

void changecosmetics(); void changedailyuse(); void changeliquid(); void search(); void searchfood();

void searchcosmetics(); void searchdailyuse(); void searchliquid(); void cheak(); };

class date {

private:

int year,month,day; public:

void set(int x) {

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

year=x/10000;

month=(x-year*10000)/100; day=x-year*10000-month*100; }

int cdate(int x,date &y) {

int m;

m=-((y.year-year)*365+(y.month-month)*30+y.day-day)+x; return m; } };

void good::menu() {

cout<<"╔═════════════╗"<<endl; cout<<"║ 1.输入/添加 ║"<<endl; cout<<"║ 2.修改/删除 ║"<<endl; cout<<"║ 3.查询/利润 ║"<<endl; cout<<"║ 4.查看过期食品(new!) ║"<<endl; cout<<"║ 0.退出 ║"<<endl; cout<<"╚═════════════╝"<<endl; int x; cin>>x; switch(x) {

case 1:in();break; case 2:change();break; case 3:search();break; case 4:cheak(); } }

void good::in() {

cout<<"╔═════════════╗"<<endl; cout<<"║请根据需要输入对应序号 ║"<<endl; cout<<"║ 1.输入食品信息 ║"<<endl; cout<<"║ 2.输入化妆品信息 ║"<<endl; cout<<"║ 3.输入日常用品信息 ║"<<endl; cout<<"║ 4.输入饮料信息 ║"<<endl; cout<<"║ 0.返回菜单 ║"<<endl; cout<<"╚═════════════╝"<<endl; int x; cin>>x; switch(x) {

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

case 1:setfood();break;

case 2:setcosmetics();break; case 3:setdailyuse();break; case 4:setliquid();break; case 0:menu();break; } }

void good::setfood() {

int i;

ofstream outfile;

outfile.open("d:\\food.txt",ios::app); if(!outfile) {

cerr<<" open error"<<endl; exit(1); }

for(i=0;;i++) {

cout<<"当商品编号输入为'0'时,返回上一菜单。"<<endl; cout<<"商品编号:"; cin>>num;

if(num==0)break; if(num!=0) {

cout<<"食品名:"; cin>>name;

outfile<<num<<" "; outfile<<name<<" "; cout<<"成本价格:"; cin>>cost;

outfile<<cost<<" "; cout<<"销售价格:"; cin>>price;

outfile<<price<<" "; cout<<"8位数生产日期:"; cin>>indate;

outfile<<indate<<" "; cout<<"保质期(天):"; cin>>kpdate;

outfile<<kpdate<<endl; } }

outfile.close();

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

menu(); }

void good::setcosmetics() {

int i;

ofstream outfile;

outfile.open("d:\\cosmetics.txt",ios::app); if(!outfile) {

cerr<<" open error"<<endl; exit(1); }

for(i=0;;i++) {

cout<<"当商品编号输入为'0'时,返回上一菜单。"<<endl; cout<<"请输入商品编号:"<<endl; cin>>num;

if(num==0)break; if(num!=0) {

cout<<"化妆品名:"; cin>>name;

outfile<<num<<" "; outfile<<name<<" "; cout<<"成本价格:"; cin>>cost;

outfile<<cost<<" "; cout<<"销售价格:"; cin>>price;

outfile<<price<<" "; cout<<"化妆品牌:"; cin>>brand;

outfile<<brand<<endl; } }

outfile.close(); menu(); }

void good::setdailyuse() {

int i,x;

ofstream outfile;

outfile.open("d:\\dailyuse.txt",ios::app); if(!outfile)

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

{

cerr<<" open error"<<endl; exit(1); }

for(i=0;;i++) {

cout<<"当商品编号输入为'0'时,返回上一菜单。"<<endl; cout<<"商品编号:"; cin>>num;

if(num==0)break; if(num!=0) {

cout<<"日常用品名:"; cin>>name;

outfile<<num<<" "; outfile<<name<<" "; cout<<"成本价格:"; cin>>cost;

outfile<<cost<<" "; cout<<"销售价格:"; cin>>price;

outfile<<price<<" ";

cout<<"╔═════════════╗"<<endl; cout<<"║请根据分类输入对应序号 ║"<<endl; cout<<"║ 1.输入服装信息 ║"<<endl; cout<<"║ 2.输入鞋帽信息 ║"<<endl; cout<<"║ 3.输入清洁用品信息 ║"<<endl; cout<<"╚═════════════╝"<<endl; cin>>x; switch(x) {

case 1:sort="服装";break; case 2:sort="鞋帽";break; case 3:sort="清洁用品";break; }

outfile<<sort<<endl; } }

outfile.close(); menu(); }

void good::setliquid() {

int i;

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

ofstream outfile;

outfile.open("d:\\liquid.txt",ios::app); if(!outfile) {

cerr<<" open error"<<endl; exit(1); }

for(i=0;;i++) {

cout<<"当商品编号输入为'0'时,返回上一菜单。"<<endl; cout<<"商品编号:"; cin>>num;

if(num==0)break; if(num!=0) {

cout<<"饮料名:"; cin>>name;

outfile<<num<<" "; cout<<"成本价格:"; cin>>cost;

outfile<<cost<<" "; cout<<"销售价格:"; cin>>price;

outfile<<price<<" "; cout<<"饮料品牌:"; cin>>trademark;

outfile<<trademark<<endl; } }

outfile.close(); menu(); }

void good::change() {

cout<<"╔═════════════╗"<<endl; cout<<"║请根据需要输入对应序号 ║"<<endl; cout<<"║ 1.修改食品信息 ║"<<endl; cout<<"║ 2.修改化妆品信息 ║"<<endl; cout<<"║ 3.修改日常用品信息 ║"<<endl; cout<<"║ 4.修改饮料信息 ║"<<endl; cout<<"║ 0.返回菜单 ║"<<endl; cout<<"╚═════════════╝"<<endl; int x; cin>>x;

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

switch(x) {

case 1:changefood();break;

case 2:changecosmetics();break; case 3:changedailyuse();break; case 4:changeliquid();break; case 0:menu();break; } }

void good::changefood() {

bool c;

int i,k,m=0,kpdate[50]; int num[50];

double cost[50],price[50]; string name[50],indate[50];

ifstream infile("d:\\food.txt",ios::in); if(!infile) {

cerr<<" open error"<<endl; exit(1); }

cout<<" ";

cout<<setw(9)<<"商品编号"; cout<<setw(9)<<"商品名"; cout<<setw(9)<<"进价"; cout<<setw(9)<<"售价"; cout<<setw(9)<<"生产日期";

cout<<setw(9)<<"保质期"<<endl; 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<m;i++) {

cout<<" ";

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

cout<<setw(9)<<num[i]; cout<<setw(9)<<name[i]; cout<<setw(9)<<cost[i]; cout<<setw(9)<<price[i]; cout<<setw(9)<<indate[i];

cout<<setw(9)<<kpdate[i]<<endl; }

cout<<m<<endl; infile.close();

ofstream outfile("d:\\food.txt",ios::out); if(!outfile) {

cerr<<" open error"<<endl; exit(1); }

cout<<"请输入需要修改的商品的编号。"<<endl; cin>>k;

cout<<"修改:1;删除:0:"<<endl; cin>>c; if(c) {

for(i=0;i<m;i++)

{if(k==num[i])k=i;break;}

cout<<"请输入新的数据:"<<endl; cout<<"食品名:"<<endl; cin>>name[k];

cout<<"成本价格:"; cin>>cost[k];

cout<<"销售价格:"; cin>>price[k];

cout<<"8位数生产日期:"; cin>>indate[k];

cout<<"保质期(天):"; cin>>kpdate[k]; for(i=0;i<m;i++) {

outfile<<num[i]<<" "; outfile<<name[i]<<" "; outfile<<cost[i]<<" "; outfile<<price[i]<<" "; outfile<<indate[i]<<" ";

outfile<<kpdate[i]<<" "<<endl; }

outfile.close();

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

cout<<"已修改成功!"<<endl; } else {

for(i=0;i<m;i++) {

if(i!=k) {

outfile<<num[i]<<" "; outfile<<name[i]<<" "; outfile<<cost[i]<<" "; outfile<<price[i]<<" "; outfile<<indate[i]<<" ";

outfile<<kpdate[i]<<" "<<endl; } }

outfile.close();

cout<<"已删除成功!"<<endl; }

menu(); }

void good::changecosmetics() {

bool c;

int i,k,m=0; int num[50];

double cost[50],price[50]; string name[50],brand[50];

ifstream infile("d:\\cosmetics.txt",ios::in); if(!infile) {

cerr<<" open error"<<endl; exit(1); }

cout<<" ";

cout<<setw(9)<<"商品编号"; cout<<setw(9)<<"商品名"; cout<<setw(9)<<"进价"; cout<<setw(9)<<"售价";

cout<<setw(9)<<"品牌"<<endl; for(i=0;i<50;i++) {

cout<<" "; infile>>num[i];

VC++ 课程设计报告 火车票管理系统 (内涵源程序)

infile>>name[i]; infile>>cost[i]; infile>>price[i]; infile>>brand[i]; m++;

if(infile.eof())break; } m++;

for(i=0;i<m;i++) {

cout<<" ";

cout<<setw(9)<<num[i]; cout<<setw(9)<<name[i]; cout<<setw(9)<<cost[i]; cout<<setw(9)<<price[i];

cout<<setw(9)<<brand[i]<<endl; }

infile.close();

ofstream outfile("d:\\cosmetics.txt",ios::out); if(!outfile) {

cerr<<" open error"<<endl; exit(1); }

cout<<"请输入需要修改的商品的编号。"<<endl; cin>>k;

cout<<"修改:1;删除:0:"<<endl; cin>>c; if(c) {

for(i=0;i<m;i++)

{if(k==num[i])k=i;break;} cout<<"新的数据:"; cout<<"化妆品:"; cin>>name[k];

cout<<"成本价格:"; cin>>cost[k];

cout<<"销售价格:"; cin>>price[k];

cout<<"化妆品牌:"; cin>>brand[k]; for(i=0;i<m;i++) {

outfile<<num[i]<<" ";

本文来源:https://www.bwwdw.com/article/cuhq.html

Top