📄 main.cpp
字号:
#include<iostream.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
typedef struct shopping
{
int key;
char name[16];
char type[16];
float price;
int total;
struct shopping *next;
}ShopNode;
ShopNode *head,*sn_now;//head头指针,sn_now插入点
void ShopAdd()//在最后一个商品后增加一个商品
{
ShopNode *sn=new ShopNode;//p过渡,sn变量
int key=1;
char name[20],type[20];
if(head==NULL) {head=sn_now=sn;} //初始化
else
{
sn_now=head;
while(sn_now->next) {sn_now=sn_now->next;key+=1;}
sn_now->next=sn;sn_now=sn;//开辟空间
key+=1;
}
sn_now->key=key;
sn_now->next=NULL;
cout<<"商品名:";cin>>name;strcpy(sn_now->name,name);
cout<<"型号:";cin>>type;
sn_now=head;
while(sn_now->next)//型号相同处理
{
if(strcmp(sn_now->type,type)==0)
{cout<<"\a这个商品型号已经存在了!"<<endl;cout<<"型号:";cin>>type;sn_now=head;continue;}
sn_now=sn_now->next;
}
strcpy(sn_now->type,type);
cout<<"价格:";cin>>sn_now->price;
cout<<"进货总数:";cin>>sn_now->total;
sn->next=NULL;
}
void ShopDisplay()//总浏商品
{
ShopNode *p=head;
cout<<"===================================================================\n";
cout<<"序号\t商品名\t\t型号\t\t价格\t\t进货总量"<<endl;
if(head==NULL) cout<<"\a***没有任何储存商品名***\n";
else
while(p)
{
cout<<p->key<<"\t"<<p->name<<"\t\t"<<p->type<<"\t\t$"<<p->price<<"\t\t1"<<p->total<<endl;
p=p->next;
}
cout<<"===================================================================\n";
}
void ShopLookUp()
{
ShopNode *p=head;//q记录名字相同
int choose_1=0,choose_2=0;//choose_1选择商品的操作,choose_2选择商品属性的操作
float price=-1.0;
int total=-1,key=0;
char name[20],type[20];
cout<<"\t\t1.序号 2.商品名 3.型号"<<endl;
cout<<"请按属性选择要查找的商品:";cin>>choose_1;
switch(choose_1)
{
case 1:
cout<<"请输入序号:";cin>>key;
if(p==NULL) {cout<<"\a***没有任何储存商品名***\n";break;}//没商品
while(p)//确认此序号存在,名字相同
{
if(p->key!=key) p=p->next;
else break;
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;break;}
while(p)//显示要查找的商品的所有属性
{
if(p->key==key)
{cout<<p->key<<"\t"<<p->name<<"\t"<<p->type<<"\t"<<p->price<<"\t"<<p->total<<endl;break;}
p=p->next;
}
break;
case 2:
cout<<"请输入商品名:";cin>>name;
if(p==NULL) {cout<<"\a***没有任何储存商品名***\n";break;}//没商品
while(p)//确认此商品名存在,名字相同
{
if(strcmp(p->name,name)!=0) p=p->next;
else {break;}
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;break;}
while(p)//显示要查找的商品的所有属性
{
if(strcmp(p->name,name)==0)
{cout<<p->key<<"\t"<<p->name<<"\t"<<p->type<<"\t"<<p->price<<"\t"<<p->total<<endl;}
p=p->next;
}
break;
case 3:
cout<<"请输入型号:"<<endl;cin>>type;
while(p)//确认此商品型号存在
{
if(strcmp(p->type,type)!=0) p=p->next;
else break;
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;break;}
if(p==NULL) {cout<<"\a***没有任何储存商品型号***";break;}//没商品
while(p)//显示要修改的商品的所有属性
{
if(strcmp(p->type,type)==0)
{cout<<p->key<<"\t"<<p->name<<"\t"<<p->type<<"\t"<<p->price<<"\t"<<p->total<<endl;break;}
p=p->next;
}
break;
}
}
void ShopDel()//删除商品
{
ShopNode *p=head,*q=NULL,*q_first=NULL,*q_last=NULL;
int choose=0,key=0;//choose选择商品的操作
char name[20],type[20];
cout<<"\t\t1.序号 2.商品名 3.型号"<<endl;
cout<<"请按属性选择要清仓的商品:";cin>>choose;
switch(choose)
{
case 1:
cout<<"请输入序号:";cin>>key;
if(p==NULL) {cout<<"\a***没有任何储存商品名***\n";break;}//没商品
while(p)//确认此序号存在,名字相同
{
if(p->key!=key) p=p->next;
else break;
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;break;}
if(p&&p->key==key)
{
head=p->next;p=head;
while(p) {p->key=p->key-1;p=p->next;}
break;
}//清除第一个商品
while(p->next)//清除中间的商品,清除最后商品
{
if(p->next->key==key) {p->next=p->next->next;break;}
p=p->next;
}
while(p->next) {p->next->key=p->next->key-1;p=p->next;}
break;
case 2:
cout<<"请输入商品名:";cin>>name;
if(p==NULL) {cout<<"\a***没有任何储存商品名***";break;}//没商品
while(p)//确认此商品名存在
{
if(strcmp(p->name,name)!=0) p=p->next;
else {q=q_first=p;break;}
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;break;}
// if(p&&strcmp(p->name,name)==0) {head=p->next;p=head;}//清除第一个商品
while(p)//清除中间的商品,清除最后商品
{
if(strcmp(p->name,name)==0)
{cout<<p->key<<"\t"<<p->name<<"\t"<<p->type<<"\t"<<p->price<<"\t"<<p->total<<endl;q_last=p;}
p=p->next;
}
if(p==q) p->next=p->next->next;
else
{
cout<<"***请在上面几种同各不同型号中选择一种型号!***\n";
cout<<"请输入型号:";cin>>type;
while(q)//确认此商品型号存在
{
if(strcmp(q->type,type)!=0) q=q->next;
else break;
}
if(q) q=q_first;
else {cout<<"\a***储存室没有这个商品型号!请继续进行操作!***"<<endl;break;}
if(q==head&&strcmp(q->type,type)==0)//清除第一个商品
{
head=q->next;q=head;
while(q){q->key-=1;q=q->next;}
break;
}
while(q->next&&q->next->key<=q_last->key)//清除中间的商品,清除最后商品
{
if(strcmp(q->next->type,type)==0)
{
q->next=q->next->next;
while(q->next){q->next->key-=1;q=q->next;}
break;
}
q=q->next;
}
}
break;
case 3:
cout<<"请输入型号:";cin>>type;
if(p==NULL) {cout<<"\a***没有任何储存商品型号***";break;}//没商品
while(p)//确认此商品型号存在
{
if(strcmp(p->type,type)!=0) p=p->next;
else break;
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品型号!请继续进行操作!***"<<endl;break;}
if(p&&strcmp(p->type,type)==0)//清除第一个商品
{
head=p->next;p=head;
while(p){p->key-=1;p=p->next;}
break;
}
while(p->next)//清除中间的商品,清除最后商品
{
if(strcmp(p->next->type,type)==0)
{
p->next=p->next->next;
while(p->next){p->next->key-=1;p=p->next;}
break;
}
p=p->next;
}
break;
default:
cout<<"\a***请继续其它操作!***\n";
break;
}
}
void ShopModify()//修改商品属性 相同名末处理
{
ShopNode *p=head,*q=NULL;//q记录名字相同
int choose_1=0,choose_2=0;//choose_1选择商品的操作,choose_2选择商品属性的操作
float price=-1.0,key=0;
int total=-1;
char name[20],type[20];
cout<<"\t\t1.序号 2.商品名 2.型号"<<endl;
cout<<"请按属性选择要修改的商品:";cin>>choose_1;
switch(choose_1)
{
case 1:
cout<<"请输入序号:";cin>>key;
while(p)//确认此序号存在,名字相同
{
if(p->key!=key) p=p->next;
else break;
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;goto OVER;}//没商品
while(p)//显示要查找的商品的所有属性
{
if(p->key==key)
{cout<<p->key<<"\t"<<p->name<<"\t"<<p->type<<"\t"<<p->price<<"\t"<<p->total<<endl;break;}
p=p->next;
}
break;
case 2:
cout<<"请输入商品名:";cin>>name;
while(p)//确认此商品名存在,名字相同
{
if(strcmp(p->name,name)!=0) p=p->next;
else {q=p;break;}
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;goto OVER;}//没商品
while(p)//显示要修改的商品的所有属性
{
if(strcmp(p->name,name)==0)
{cout<<p->key<<"\t"<<p->name<<"\t"<<p->type<<"\t"<<p->price<<"\t"<<p->total<<endl;break;}
p=p->next;
}
break;
case 3:
cout<<"请输入型号:"<<endl;cin>>type;
while(p)//确认此商品型号存在
{
if(strcmp(p->type,type)!=0) p=p->next;
else break;
}
if(p) p=head;
else {cout<<"\a***储存室没有这个商品!请继续进行操作!***"<<endl;goto OVER;}
if(p==NULL) {cout<<"\a***没有任何储存商品型号***";break;}//没商品
while(p)//显示要修改的商品的所有属性
{
if(strcmp(p->type,type)==0)
{cout<<p->key<<"\t"<<p->name<<"\t"<<p->type<<"\t"<<p->price<<"\t"<<p->total<<endl;break;}
p=p->next;
}
break;
}
cout<<"\t\t1.商品名 2.型号 3.价格 4.进货总量"<<endl;
cout<<"请选择要修改的商品的属性:";cin>>choose_2;
switch(choose_2)
{
case 1:
cout<<"# "<<p->name<<" # 请输入修改后的商品名:";cin>>name;
strcpy(p->name,name);
break;
case 2:
cout<<"# "<<p->type<<" # 请输入修改后的型号:";cin>>type;
strcpy(p->type,type);
break;
case 3:
cout<<"# "<<p->price<<" # 请输入修改后的价格:";cin>>price;
p->price=price;
break;
case 4:
cout<<"# "<<p->total<<" # 请输入修改后的进货总量:";cin>>total;
p->total=total;
break;
default:
cout<<"\a***请继续其它操作!***\n";
break;
}
OVER:;
}
void WriteFile(shopping &s1)//保存文件
{
ShopNode *sn=head;
FILE *fptr;
char filename[20];
char note[]="";
sn_now=head;
if(sn_now==NULL)
{
cout<<"\a对不起,不能保存空的记录!\n";return;
}
cout<<"请输入文件名称:";
cin>>filename;
if((fptr=fopen(filename,"wb"))==NULL)
{
cout<<"\n对不起,不能保存您的文件!\n";
exit(0);
}
else
{
while(sn)
{
fwrite(&s1,sizeof(s1),1,fptr);
sn=sn->next;
}
fclose(fptr);
cout<<"\n恭喜你,保存成功!总有"<<6<<"条记录!\n";
}
}//WriteFile
void ReadFile(shopping &s)//读取文件
{
ShopNode *sn=head;
FILE *fptr;
char filename[20];
cout<<"请输入文件的名称:";
cin>>filename;
if((fptr=fopen(filename,"rb"))==NULL)
{
cout<<"\n对不起,不能打开您要的文件!\n";
// exit(0);
}
else
{
while(fread(&s,sizeof(s),1,fptr)==1)
{
sn->key=s.key;
strcpy(sn->name,s.name);
strcpy(sn->type,s.type);
sn->price=s.price;
sn->total=s.total;
sn=sn->next;}
fclose(fptr);
cout<<"\n恭喜你,导入成功!\n";
}
}
void main()
{
shopping s1;
char choose=' ',op[]="";//选择操作
while(choose!='^')
{ cout<<"****************************************************"<<endl
<<" ****************彩电销售系统********************"<<endl
<<"****************************************************"<<endl
<<"** 1.写入 2.删除 **"<<endl
<<"** 3.浏览 4.修改 **"<<endl
<<"** 5.保存 6.打开 **"<<endl
<<"** 7.退出 8.查找 **"<<endl
<<"****************************************************"<<endl
<<"请选择要进行的操作:";cin>>op;//接收正确字符
if(strlen(op)>1) {cout<<"\a操作错误!"<<endl;continue;}
else choose=op[0];
switch(choose)
{
case '1':
ShopAdd();
break;
case '2':
ShopDel();
break;
case '3':
ShopDisplay();
break;
case '4':
ShopModify();
break;
case '5':
WriteFile(s1);
break;
case '6':
ReadFile(s1);
break;
case '8':
ShopLookUp();
break;
case '7':
cout<<"\a确定退出系统!(Y/N):";cin>>op;
if(strcmp(op,"Y")==0) choose='^';
else if(strcmp(op,"y")==0) choose='^';
break;
default:
cout<<"\a操作错误!"<<endl;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -