这一次我打算记录一下上学期期末老师让我们完成的一个大作业,就是一个商品管理系统的实验,花了不少时间呢,因为当时我很菜 。
完成这个实验感觉对函数的运用提高了,最显著的一个益处就是我对结构化编程有点感觉了(毕竟是第一次打三百多行代码嘛……)
俗话说,学习C++的人,第一个精通阶段是会写一些数学题,第二个精通阶段就是会写管理系统啦,各位朋友都可以学习一下如何结构化编程,一是美观,二是有条例和逻辑性,三是合理利用函数、提高运用函数能力。(当然不是学我,我的代码写得勉勉强强)
包括以后的类和对象亦是如此,封装是C++一个很有用的功能,有实现简化的作用。
来,放大招了,源代码如下↓:
#include //头文件的使用很关键
#include
#include
#include
#include
using namespace std;
//需要使用的全局变量
int flag1=0,flag2=0,flag3=0; //flag要记得赋初值为0
int t=0,i,j,m,n=0,z,s,b;
string cx1,cx2,cx3,cx4,n1,n2;
ofstream out; //定义一个全局输出流变量out
struct commidity
{
string name1; //商品名
string num; //商品编号
string name2; //生产商名
string type; //商品型号
string day; //生产日期
double price; //商品价格
}a[1000];
void main_menu(); //定义一个主菜单函数
int main() //主函数
{
main_menu(); //进入欢迎界面
return 0;
}
void Input() //定义一个录入信息的函数
{
cout<<"\n---------------------------------------------------请录入商品信息-------------------------------------------------------\n\n";
cout<<"请输入您要录入的商品数量:";
cin>>n;
cout<<endl;
cout<<"请依次输入“商品名”、“商品编号”、“生产商名”、“型号”、“生产日期”、“价格”\n\n";
for(s=0;s<n;s++)
{
cout<<"请输入商品名称:"<<endl; //输入商品名称
cin>>a[s].name1;
cout<<"请输入商品编号:"<<endl; //输入商品编号
cin>>a[s].num;
cout<<"请输入商品生产商名:"<<endl; //输入商品生产商名
cin>>a[s].name2;
cout<<"请输入商品型号:"<<endl; //输入型号
cin>>a[s].type;
cout<<"请输入商品生产日期:(格式为:年/月/日 例:2020/03/23)"<<endl; //输入生产日期
cin>>a[s].day;
cout<<"请输入商品价格:"<<endl; //输入商品价格
cin>>a[s].price;
}
ofstream out;
out.open("商品管理.txt"); //打开文件,将信息导入文件
for(s=0;s<n;s++)
out<<setw(10)<<a[s].name1<<setw(10)<<a[s].num<<setw(10)<<a[s].name2<<setw(10)<<a[s].type<<setw(10)<<a[s].day<<setw(10)<<a[s].price<<endl; //将信息导入文件
out.close(); //关闭文件
cout<<"\n录入成功,请在对应文件夹中查看!"<<endl;
cout<<endl;
}
void Browse() //定义一个浏览信息的函数
{
cout<<"\n----------------------------------------------------浏览商品信息--------------------------------------------------------\n\n";
if(n==0)
cout<<"系统当前尚未录入商品信息!\n\n";
else
{
for(i=0;i<n;i++)
{
cout<<"商品"<<i+1<<": "<<a[i].name1<<endl;
cout<<"商品编号:"<<a[i].num<<endl;
cout<<"生产商名名:"<<a[i].name2<<endl;
cout<<"商品型号:"<<a[i].type<<endl;
cout<<"生产日期:"<<a[i].day<<endl;
cout<<"商品价格:"<<a[i].price<<endl;
cout<<endl;
}
}
}
void Modify() //定义一个修改信息的函数
{
cout <<"\n----------------------------------------------------修改商品信息--------------------------------------------------------\n";
cout<<"请输入您想要修改的商品的商品编号:";
cin>>n1;
cout<<"\n该商品信息如下:"<<endl;
for(i=0;i<=n;i++)
{
if(n1==a[i].num)
{
cout<<"原商品名:"<<a[i].name1<<endl; //输出被修改的商品信息
cout<<"原商品编号:"<<a[i].num<<endl;
cout<<"原生产商名:"<<a[i].name2<<endl;
cout<<"原商品型号:"<<a[i].type<<endl;
cout<<"原生产日期:"<<a[i].day<<endl;
cout<<"原商品价格:"<<a[i].price<<endl;
m=i;
}
}
cout<<"\n修改后的商品名:";
cin>>a[m].name1;
cout<<"修改后的商品编号:";
cin>>a[m].num;
cout<<"修改后的生产商名:";
cin>>a[m].name2;
cout<<"修改后的商品型号:";
cin>>a[m].type;
cout<<"修改后的生产日期:";
cin>>a[m].day;
cout<<"修改后的商品价格:";
cin>>a[m].price;
out.open("商品管理.txt"); //打开文件,将信息导入文件
for(i=0;i<=n;i++)
out<<setw(10)<<a[i].name1<<setw(10)<<a[i].num<<setw(10)<<a[i].name2<<setw(10)<<a[i].type<<setw(10)<<a[i].day<<setw(10)<<a[i].price<<endl; //将信息导入文件
out.close(); //关闭文件
cout<<"\n★★★★★★★★★★★★★★★ 修改成功! ★★★★★★★★★★★★★★★\n\n";
}
void Delete() //定义一个删除信息的函数
{
cout <<"\n----------------------------------------------------删除商品信息--------------------------------------------------------\n";
cout<<"\n请输入要删除商品的商品编号:";
cin>>n2;
cout<<"\n该商品信息如下:"<<endl;
for(i=0;i<=n;i++)
{
if(n2==a[i].num)
{
cout<<"商品名:"<<a[i].name1<<endl; //输出被删除的商品信息
cout<<"商品编号:"<<a[i].num<<endl;
cout<<"生产商名:"<<a[i].name2<<endl;
cout<<"商品型号:"<<a[i].type<<endl;
cout<<"生产日期:"<<a[i].day<<endl;
cout<<"商品价格:"<<a[i].price<<endl;
cout<<endl;
m=i;
}
}
cout<<"确定删除?"<<endl;
cout<<"确定请输入1"<<" "<<"取消请输入除1外任意键返回主菜单\n\n";
cout<<"请输入:" ;
cin>>b;
if(b==1)
{
for(i=0;i<n;i++)
{
if(n2==a[i].num)
{
a[i].name1=a[i+1].name1; //使用后一项覆盖前一项的方法达到删除目的
a[i].num=a[i+1].num;
a[i].name2=a[i+1].name2;
a[i].type=a[i+1].type;
a[i].day=a[i+1].day;
a[i].price=a[i+1].price;
n--;
}
}
out.open("商品管理.txt");
for(i=0;i<n;i++)
out<<setw(10)<<a[i].name1<<setw(10)<<a[i].num<<setw(10)<<a[i].name2<<setw(10)<<a[i].type<<setw(10)<<a[i].day<<setw(10)<<a[i].price<<endl; //写入文件
out.close();
cout<<"\n\n删除成功!\n\n";
cout<<"输入任意键返回主菜单";
}
}
void Search() //定义一个查询信息的函数
{
cout <<"\n----------------------------------------------------查询商品信息--------------------------------------------------------\n";
cout<<"请选择你要进行的操作:\n";
cout<<"1.按商品名查询\n";
cout<<"2.按生产商名查询\n";
cout<<"3.按条件组合查询\n\n";
cout<<"请输入:"<<endl;
cin>>z;
switch(z) //另外使用switch函数
{
case 1:
//按商品名查询
system("cls");
cout<<"\n-----------------------------------------------------请输入商品名-------------------------------------------------------\n";
cin>>cx1;
cout<<endl;
for(i=0;i<=n;i++)
{
if(cx1==a[i].name1)
{
cout<<"商品名:"<<a[i].name1<<endl; //输出被修改的商品信息
cout<<"商品编号:"<<a[i].num<<endl;
cout<<"生产商名:"<<a[i].name2<<endl;
cout<<"商品型号:"<<a[i].type<<endl;
cout<<"生产日期:"<<a[i].day<<endl;
cout<<"商品价格:"<<a[i].price<<endl;
cout<<endl;
flag1=1;
}
}
if(flag1==1)
cout<<"\n★★★★★★★★★★★★★★★ 查询成功! ★★★★★★★★★★★★★★★\n";
else
cout<<"\n★★★★★★★★★★★★ 查询失败,没有此商品,请重试! ★★★★★★★★★★★\n"<<endl;
break;
case 2:
//按生产商名查询
system("cls");
cout<<"\n----------------------------------------------------请输入生产商名------------------------------------------------------\n";
cin>>cx2;
cout<<endl;
for(i=0;i<=n;i++)
{
if(cx2==a[i].name2)
{
cout<<"商品名:"<<a[i].name1<<endl; //输出被修改的商品信息
cout<<"商品编号:"<<a[i].num<<endl;
cout<<"生产商名:"<<a[i].name2<<endl;
cout<<"商品型号:"<<a[i].type<<endl;
cout<<"生产日期:"<<a[i].day<<endl;
cout<<"商品价格:"<<a[i].price<<endl;
cout<<endl;
flag2=1;
}
}
if(flag2==1)
cout<<"\n★★★★★★★★★★★★★★★ 查询成功! ★★★★★★★★★★★★★★★\n";
if(flag2==0)
cout<<"\n★★★★★★★★★★★★★ 查询失败,没有此商品,请重试! ★★★★★★★★★★★\n"<<endl;
break;
case 3:
//条件组合查询
system("cls");
cout<<"\n------------------------------------------请输入任意两个商品属性(除价格外)--------------------------------------------\n";
cin>>cx3;
cin>>cx4;
cout<<endl;
for(i=0;i<=n;i++)
{
if(cx3==a[i].num||cx3==a[i].name1||cx3==a[i].name2||cx3==a[i].type||cx3==a[i].day)
{
a[t]=a[i];
j++;
}
}
for(j=0;j<=t;j++)
{
if(cx4==a[j].num||cx4==a[j].name1||cx4==a[j].name2||cx4==a[j].type||cx4==a[j].day)
{
cout<<"商品名:"<<a[j].name1<<endl; //输出被修改的商品信息
cout<<"商品编号:"<<a[j].num<<endl;
cout<<"生产商名:"<<a[j].name2<<endl;
cout<<"商品型号:"<<a[j].type<<endl;
cout<<"生产日期:"<<a[j].day<<endl;
cout<<"商品价格:"<<a[j].price<<endl;
cout<<endl;
flag3=1;
}
if(flag1==1)
cout<<"\n★★★★★★★★★★★★★★★ 查询成功! ★★★★★★★★★★★★★★★\n";
if(flag1==0)
cout<<"\n★★★★★★★★★★★★★ 查询失败,没有此商品,请重试! ★★★★★★★★★★★\n"<<endl;
}
}
}
void main_menu() //欢迎界面
{
cout<<"\n-------------------------------------------------欢迎进入商品管理系统!------------------------------------------------";
int h;
cout<<"\n\n★★★★★★★★★★★★★★ 请选择你要进行的操作: ★★★★★★★★★★★★★★";
cout<<"\n\n★★★★★★★★★★★★★★ 1.录入商品信息 ★★★★★★★★★★★★★★\n";
cout<<"\n★★★★★★★★★★★★★★ 2.浏览商品信息 ★★★★★★★★★★★★★★\n";
cout<<"\n★★★★★★★★★★★★★★ 3.修改商品信息 ★★★★★★★★★★★★★★\n";
cout<<"\n★★★★★★★★★★★★★★ 4.删除商品信息 ★★★★★★★★★★★★★★\n";
cout<<"\n★★★★★★★★★★★★★★ 5.查询商品信息 ★★★★★★★★★★★★★★\n";
cout<<"\n★★★★★★★★★★★★★★ 6.安全退出系统 ★★★★★★★★★★★★★★";
cout<<"\n\n ";
cout<<"\n 请输入:";
cin>>h;
system("cls"); //清屏
switch(h)
{
case 1:
Input();
system("pause");
system("cls"); //清屏
main_menu();
break;
case 2:
Browse();
system("pause");
system("cls");
main_menu();
break;
case 3:
Modify();
system("pause");
system("cls");
main_menu();
break;
case 4:
Delete();
system("pause");
system("cls");
main_menu();
break;
case 5:
Search();
system("pause");
system("cls");
main_menu();
break;
case 6:
cout <<"\n------------------------------------您已经安全退出商品管理系统!感谢您的使用!------------------------------------------\n";
break;
default:
system("cls");
cout<<"\n★★★★★★★★★★★★★ 错误输入,请重试! ★★★★★★★★★★★★★\n";
system("pause");
system("cls");
main_menu();
break;
}
}