资源描述
精品文档
#include "iostream"
#include "stdio.h"
#include "fstream"
#include "stdio.h"
#include "vector"
#include <iomanip>
using namespace std;
/*函数声明*/
#define CAPACITY 50 /*车库容量*/
void open_remain();/*打开文件传递数据*/
void sale_car(); /*销售车辆*/
void add_car(); /*添加车辆*/
void del_car();
void xg_car();
void search_car(); /*查询车辆*/
void find_name(); /*以车名查找*/
void find_price(); /*按价格查找*/
void sort_car(); /*模糊查询*/
void print_all(); /*打印车库中所有存车*/
void print(int); /*打印相应的车的信息*/
void printmenu(); /*打印菜单*/
void print_date();/*打印当日售车情况*/
void store_to_remain();/*保存数据,将剩余车辆保存 在remain.txt中*/
/*宏定义,结构体,全局静态变量声明*/
struct CAR
{
int ID ;
char name[20];
int jprice;
int sprice;
int number;
char cs[20];
char jdata[20];
};
int i;
static struct CAR car[CAPACITY] ;/*存储所有的车*/
static CAR *p=car;
static CAR *p1=p;
static struct CAR sale_cars[CAPACITY];/*存储当天买出的车*/
static int size=0; /*存车的种数*/
static int size1=0;/*售车的种数*/
static int now=0; /*销售车的数目*/
static int total=0; /*初定义*/
#define bool int
void key()
{ /* 建立初始密码 */
FILE *fp; char chs[10]="1234";
if((fp=fopen("code.txt","r"))==NULL)
{
fp=fopen("code.txt","w");
fputs(chs,fp);
}
fclose(fp);
}
void keychange() /*修改密码*/
{ /* 密码修改系统 */
FILE *fp;
char cha[10],chb[10],chc[10],chd[10];
int i=0;
fp=fopen("code.txt","r");
fgets(cha,10,fp);
fclose(fp);
printf("\n");
printf("\n");
printf("\n");
printf(" ************************************ \n");
printf(" * * \n");
printf(" * * \n");
printf(" * 课程序设计密码修改窗口 * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * * \n");
printf(" ************************************ \n");
printf("\n");
printf("\n");
printf(" 请输入密码 : ");
scanf("%s",&chb);
if(strcmp(cha,chb)==0)
{
printf(" 输入新密码 : "); scanf("%s",&chc);
printf(" 确认新密码 : "); scanf("%s",&chd);
while(strcmp(chc,chd)<0 || strcmp(chc,chd)>0)
{
i++;
if(i==3)
{
printf("\n\n");
printf(" 密码修改失败!!!"); return;
}
printf(" 输入新密码 : ");scanf("%s",&chc);
printf(" 确认新密码 : "); scanf("%s",&chd);
}
if(strcmp(chc,chd)==0)
{
fp=fopen("code.txt","w");
fputs(chd,fp);
fclose(fp);
printf("\n\n");
printf(" 密码修改成功!!!!\n");
}
getchar();
}
else {
printf(" 密码错误无权修改!谢谢使用!\n");
scanf("%*c");
return;
}
}
void jiemian() /*进入界面*/
{
int found=0;
char a[10],b[10];
FILE *fp;
key();
fp=fopen("code.txt","r");
fgets(b,10,fp);
rewind(fp);
printf("\n\n\n");
printf(" **********************************\n");
printf(" * *\n");
printf(" * 欢迎进入汽车销售管理系统 *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 设计人:08级05班 侯慧菊 *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 学号: 08307514 *\n");
printf(" **********************************\n");
printf("\n");
printf(" 初始密码:1234\n");
printf(" 请输入密码:");
scanf("%s",a);
loop:if(strcmp(a,b)==0)
{
cout<<" 欢迎进入汽车销售管理系统 "<<endl;
printmenu();
}
else
{
if(found==2)
exit(0);
else
{
printf(" 密码输入错误,请重新输入:");
scanf("%s",a);
++found;
goto loop;
}
}
fclose(fp);
}
main()
{
key();
jiemian();
open_remain();
int choice=0;
cout<<"请选择操作";
cin>>choice;
while(choice)
{
if(choice<10&&choice>0)
switch(choice)
{
case 1: add_car(); break;/*添加新进的车*/
case 2: sale_car();break;/*卖出汽车*/
case 3: search_car(); break;/*查 询 车*/
case 4: sort_car(); break;/*排 序*/
case 5: print_all(); break;/*打印所以的车的信息*/
case 6: print_date();break;/*打印当天销售情况*/
case 7: keychange();break;/*修改密码*/
case 8: del_car();break;
case 9: xg_car();break;
default: cout<<"输入错误!!"<<endl<<"请重新输入!"<<endl;break;
}
else
{
cout<<endl<<"输入错误!!\n请输入0-9范围内的数字!!"<<endl;
}
printmenu();
cout<<"请输入操作:";
cin>>choice;
}
if(now==0)
cout<<"今天没有卖出车!!"<<endl;
else
{ int i=0;
cout<<"今天售出的车为:"<<endl;
cout<<"车号 车名 进价 售价 剩余数量 厂商 进货日期"<<endl;
for(i=0;i<now;i++)
print(i);
cout<<"今天的总收入为:"<<endl<<total;
}
cout<<endl<<"谢谢使用!欢迎下次再使用!\n";
return 0;
}
/*菜单函数*/
void printmenu()
{
cout<<"\t┏═══════════════════════════┓"<<endl;
cout<<"\t┃ ┃★★欢迎进入汽车销售管理系统★★┃ ┃"<<endl;
cout<<"\t┠═══════════════════════════┨"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★1 添加新进的车型 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★2 车辆销售 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★3 查找车辆信息 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★4 车辆排序 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★5 查看车库的车型 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★6 查看当天销售情况 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★7 修改密码 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★8 删除某个车型 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ ★9 修改某个车型信息 ┃"<<endl;
cout<<"\t┃ ┃"<<endl;
cout<<"\t┃ 请按数字键选择(0或其它字符退出) ┃"<<endl;
cout<<"\t┗═══════════════════════════┛"<<endl;
}
/*打开remain.txt文件传递数据*/
void open_remain()
{
ifstream is("remain.txt",ios_base::binary);
if(is)
{
while(is.good())
{is.read((char *) &car[i],sizeof(car[i]));
i++;
}
size=i-1;
}
else
{
cout<<"车库信息为空!"<<endl;
system("pause");
}
}
/*打印函数*/
void print(int pos)
{
if(pos>=0&&pos<now)
cout<<"车号 车名 进价 售价 剩余数量 厂商 进货日期"<<endl;
else
cout<<"错误!"<<endl;
}
/*打印剩余车辆*/
void print_all()
{int i=0;
if(size>=1)
{cout<<"车号 车名 进价 售价 剩余数量 厂商 进货日期"<<endl;
cout<<"\t┏══════════════════════════════════┓"<<endl;
cout<<"\t┃ 车号┃ 车名 ┃进价(万)┃售价(万)┃剩余数量┃ 厂商 ┃ 进货日期 ┃"<<endl;
cout<<"\t┠══════════════════════════════════┨"<<endl;
for(i=0;i<size;i++)
cout<<"\t┃"<<setw(5)<<car[i].ID <<"┃"<<setw(6)<<car[i].name<<"┃"<<setw(8)<<car[i].jprice<<"┃"<<setw(8)<<car[i].sprice<<"┃"<<setw(7)<<car[i].number<<" ┃"<<setw(9)<<car[i].cs<<"┃"<<setw(12)<<car[i].jdata<<"┃"<<endl;
}
else if(size<1)
{cout<<"车库中没有任何车辆!请添加!"<<endl;}
system("pause");
}
/*添加车辆*/
void add_car()
{ int i=0;
char name[20];
char continue_find;
do
{
if(size>=CAPACITY)
{
cout<<"车库已满!不能再添加新车了!"<<endl;
return;
}
cout<<"请输入车名:";
cin>>name;
int have=0; /*表示车库中是否有新买进的车;有置1;无置0;*/
for(int i=0;i<size;i++)
{
if(strcmp(name,car[i].name)==0)
{have=1;break;}
}
if(have)
{
cout<<"请输入车的数量";
int number;
cin>>number;
car[i].number+=number;
have = 1;
ofstream outfile("remain.txt",ios_base::out);
outfile.write((char *) &(car[0]),sizeof(car[0]));
outfile.close();
for(int i=1;i<size;i++)
{
ofstream outfile("remain.txt",ios_base::app);
outfile.write((char *) &(car[i]),sizeof(car[i]));
outfile.close();
}
cout<<"添加已结束!且信息已存入文件remain.txt中"<<endl;
}
if(!have)
{
cout<<"清按顺序一次输入车号,车名,进价,售价,剩余数量 ,厂商 ,进货日期(注意中间用空格隔开)"<<endl;
cout<<"车号 车名 进价 售价 剩余数量 厂商 进货日期"<<endl;
cin>>car[size].ID>>car[size].name>>car[size].jprice>>car[size].sprice>>car[size].number>>car[size].cs>>car[size].jdata;
ofstream outfile("remain.txt",ios_base::app);
outfile.write((char *) &(car[size]),sizeof(car[size]));
outfile.close();
size++;
cout<<"添加已结束!且信息已存入文件remain.txt中"<<endl;
}
cout<<"是否继续添加(y/n):";
cin>>continue_find;
while(!(continue_find=='y'||continue_find=='Y'||continue_find=='n'||continue_find=='N'))
{
cout<<"输入错误!!"<<endl<<"请重新输入:";
cin>>continue_find;
}
}
while(continue_find=='y'||continue_find=='Y');
system("pause");
}
void xg_car()
{char n[20];
char l,v;
do
{
int s=0;
cout<<"请输入要修改的车型名:";
cin>>n;
for(int i=1;i<size;i++)
{
if(strcmp(n,car[i].name)==0 )
{s=1;break;}
}
if(s)
{
cout<<"该车型原信息为:"<<endl;
cout<<"车号 车名 进价 售价 剩余数量 厂商 进货日期"<<endl;
cout<<" "<<car[i].ID<<" "<<car[i].name<<" "<<car[i].jprice<<" "<<car[i].sprice<<" "<<car[i].number<<" "<<car[i].cs<<" "<<car[i].jdata<<endl;
cout<<"请输入新信息:"<<endl;
cout<<"清按顺序一次输入车名,车号,车价和数量(注意中间用空格隔开)"<<endl;
cout<<"车号 车名 进价 售价 剩余数量 厂商 进货日期"<<endl;
cin>>car[i].ID>>car[i].name>>car[i].jprice>>car[i].sprice>>car[i].number>>car[i].cs>>car[i].jdata;
cout<<"是否确定修改?(y/n)";
cin>>v;
while(!(v=='y'||v=='Y'||v=='n'||v=='N'))
{
cout<<"输入错误!!"<<endl<<"请重新输入(y/n):";
cin>>v;
}
if(v=='y')
{
ofstream outfile("remain.txt",ios_base::out);
outfile.write((char *) &(car[0]),sizeof(car[0]));
outfile.close();
for(int i=1;i<size;i++)
{
ofstream outfile("remain.txt",ios_base::app);
outfile.write((char *) &(car[i]),sizeof(car[i]));
outfile.close();
}
cout<<"修改成功!";
}
if(v=='n')
cout<<"您已放弃修改!";
}
if(!s)
cout<<"找不到该车型";
cout<<"是否继续修改(y/n):";
cin>>l;
while(!(l=='y'||l=='Y'||l=='n'||l=='N'))
{
cout<<"输入错误!!"<<endl<<"请重新输入:";
cin>>l;
}
}
while(l=='y'||l=='Y');
system("pause");
}
void del_car()
{
char n[20],l;
cout<<"请输入要删除的车型名字:"<<endl;
cin>>n;
cout<<"是否确定要删除所选的数据?(y/n)"<<endl;
cin>>l;
while(!(l=='y'||l=='Y'||l=='n'||l=='N'))
{
cout<<"输入错误!!"<<endl<<"请重新输入:";
cin>>l;
}
if(l=='y')
{
for(i=0;i<size;i++)
{
if(strcmp(n,car[i].name)==0 )
for(int k=i;k<size;k++)
{
car[k]=car[k+1];
}
}
size--;
ofstream outfile("remain.txt",ios_base::out);
outfile.write((char *) &(car[0]),sizeof(car[0]));
outfile.close();
for(int i=1;i<size;i++)
{
ofstream outfile("remain.txt",ios_base::app);
outfile.write((char *) &(car[i]),sizeof(car[i]));
outfile.close();
}
cout<<"删除已成功!"<<endl;
}
else
cout<<"您以放弃删除!"<<endl;
system("pause");
}
/*售出车辆模块*/
void sale_car()
{ int i=0;
p1=p;
cout<<"请输入车名:";
char name[20];
cin>>name;
for(i=0;i<size;i++)
{if(strcmp(name,(*(p1+i)).name)==0 )
{
int number;
char date[14];
cout<<"请输入售出车的数量:";
cin>>number;
if(car[i].number>0&&number<=car[i].number)
{
(*(p1+i)).number-=number;
now++;
total+=((*(p1+i)).sprice-(*(p1+i)).jprice)*number;
sale_cars[size1].number=number;
sale_cars[size1].ID=car[i].ID;
strcpy(sale_cars[size1].name,car[i].name);
sale_cars[size1].jprice=car[i].jprice;
sale_cars[size1].sprice=car[i].sprice;
strcpy(sale_cars[size1].cs,car[i].cs);
cout<<"请输入出售日期:";
cin>>date;
strcpy(sale_cars[size1].jdata,date);
size1++;
if (size1>1&&strcmp(sale_cars[size1-1].name,sale_cars[size1-2].name)==0)
{
sale_cars[size1-2].number+=sale_cars[size1-1].number;
size1--;
}
store_to_remain();
}
else if((*(p1+i)).number==0)
cout<<"您输入的车已售完!"<<endl;
else if(number>(*(p1+i)).number)
cout<<"开玩笑,车库中没有那么多车!"<<endl;
}
}
if(!size1)
cout<<"抱歉,车库中无此中车!"<<endl;
system("pause");
}
/*销售额查询*/
void print_date()
{ int i=0;
if(now==0)
cout<<"今日销售额为零!"<<endl;
else
{
cout<<"今日销售情况为:"<<endl;
cout<<"车号 车名 进价 售价 销售数量 厂商 出售日期"<<endl;
for(i=0;i<size1;i++)
{cout<<"车号 车名 进价 售价 剩余数量 厂商 进货日期"<<endl;
cout<<"\t┏══════════════════════════════════┓"<<endl;
cout<<"\t┃ 车号┃ 车名 ┃进价(万)┃售价(万)┃销售数量┃ 厂商 ┃ 进货日期 ┃"<<endl;
cout<<"\t┠══════════════════════════════════┨"<<endl;
for(i=0;i<size1;i++)
cout<<"\t┃"<<setw(5)<<sale_cars[i].ID <<"┃"<<setw(6)<<sale_cars[i].name<<"┃"<<setw(8)<<sale_cars[i].jprice<<"┃"<<setw(8)<<sale_cars[i].sprice<<"┃"<<setw(7)<<sale_cars[i].number<<" ┃"<<setw(9)<<sale_cars[i].cs<<"┃"<<setw(12)<<sale_cars[i].jdata<<"┃"<<endl;
}
cout<<"销售额为:"<<total<<endl;
}
system("pause");
}
/*排序函数*/
void sort_car()
{ int sor;
char continue_find;
do
{
int i=0,j=0;
cout<<"\t┏═══════════┓"<<endl;
cout<<"\t┃ 1 按售价排序 ┃"<<endl;
cout<<"\t┃ 2 按车号排序 ┃"<<endl;
cout<<"\t┃ 3 按车数排序 ┃"<<endl;
cout<<"\t┗═══════════┛"<<endl;
cout<<"\t请输入选择:";
cin>>sor;
bool sort_id;
while(sor<=0||sor>3)
{
cout<<"输入错误!!\n请重新输入:"<<endl;
cin>>sor;
}
for(i=0;i<size;i++)
{
for(j=size-1;j>0;j--)
{
switch(sor)
{
case 1:sort_id=(car[j].sprice<car[j-1].sprice); break;
case 2:sort_id=(car[j].ID<car[j-1].ID); break;
case 3:sort_id=(car[j].number<car[j-1].number); break;
}
if(sort_id)
{
struct CAR temp;
temp=car[j];
car[j]=car[j-1];
car[j-1]=temp;
}
}
}
cout<<"\t┏══════════════════════════════════┓"<<endl;
cout<<"\t┃ 车号┃ 车名 ┃进价(万)┃售价(万)┃剩余数量┃ 厂商 ┃ 进货日期 ┃"<<endl;
cout<<"\t┠══════════════════════════════════┨"<<endl;
for(i=0;i<size;i++)
{
cout<<"\t┃"<<setw(5)<<car[i].ID <<"┃"<<setw(6)<<car[i].name<<"┃"<<setw(8)<<car[i].jprice<<"┃"<<setw(8)<<car[i].sprice<<"┃"<<setw(7)<<car[i].number<<" ┃"<<setw(9)<<car[i].cs<<"┃"<<setw(12)<<car[i].jdata<<"┃"<<endl;
}
cout<<"是否继续(y/n):";
cin>>continue_find;
while(!(continue_find=='y'||continue_find=='Y'||continue_find=='n'||continue_find=='N'))
{
cout
展开阅读全文