一个用c语言编写的商品结算系统
玛丽莲梦兔
693次浏览
2020年08月02日 09:09
最佳经验
本文由作者推荐
anyway是什么意思-襄理
#include
#include
#include
#include
#define SIZE sizeof(struct wares_message)
struct wares_message
{
long int num;
char name[20];
float price;
long int number;
struct wares_message *next;
};
typedef struct wares_message ware;
int w; char ch; //全局变量(子界面)
int menu1() //主界面(切换模式)
{
int k;
time_t now;
now = time (NULL);
system("cls");
system("color a");
printf("
");
printf("tt==========================================
");
printf("tt****** 欢迎使用结账管理系统 ******
");
printf("tt==========================================
");
printf("tt* *
");
printf("tt* 1.商品信息管理模式 *
");
printf("tt* *
");
printf("tt* 2.结账模式 *
");
printf("tt* *
");
printf("tt* 3.退出系统 *
");
printf("tt__________________________________________
");
printf("tt %s
",ctime(&now));
printf("
tt请输入您要进行的操作(1~~3)[ ]bb");
scanf("%d",&k);
return k;
}
int menu2() //商品信息管界面
{
int k;
time_t now;
now = time (NULL);
system("cls");
system("color b");
printf("
");
printf(" 商品管理模式
");
printf(" t/---------------------------------------------------------
");
printf(" t| 商品信息管理系统 |
");
printf(" t|---------------------------------------------------------|
");
printf(" t| 1:商品初次录入 2:显示库存信息 |
");
printf(" t| |
");
printf(" t| 3:增加商品信息 4:删除商品信息 |
");
printf(" t| |
");
printf(" t| 5:修改商品信息 6:智能查找 |
");
printf(" t| |
");
printf(" t| 7:保存商品信息 8:退出系统 |
");
printf(" t|_________________________________________________________|
");
printf(" t %s
",ctime(&now));
printf(" t__________________________________________________________
");
printf("
t请输入您要进行的操作(1~~8)[ ]bb");
scanf("%d",&k);
return k;
}
ware *creat(ware *head) //录入商品信息
{
in
t i,n;
ware *p1,*p2;
if(head!=NULL) //判断系统中是否有信息
{t
printf("请选择 3,商品信息初次录入已完成!
");
getch();
return (head);
}
else
system("cls");
printf("
t******************** 商品信息初次录入 ********************
");
p1=p2=(ware *)malloc(SIZE);
head=p1;
printf("ttt请输入您要输入的商品(种类数):");
scanf("%d",&n);
printf("ttt注意!输入的编号不要重复!!!
");
if(n<=0)
return(NULL);
else
for(i=0;i
printf("ttt请输入第%d种商品的编号:",i+1);
scanf("%ld",&p1->num);
printf("ttt请输入第%d种商品的名称:",i+1);
scanf("%s",p1->name);
printf("ttt请输入第%d种商品的价格:",i+1);
scanf("%f",&p1->price);tt
printf("ttt请输入第%d种商品的数量:",i+1);
scanf("%ld",&p1->number);
printf("
");
if(i==0)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(ware *)malloc(SIZE);
}
p2->next=NULL;
return(head);
}
int print(ware *head) //显示商品信息
{
ware *p;
if(head==NULL) //判断系统中是否有信息
{t
printf("系统内无信息!!
");
getch();
return 0;
}
else
system("cls");
printf("
t********************** 当前库存全部信息 **********************
");
p=head;
while(p!=NULL)
{
printf("tt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
");
printf("tt 编号:%ld 名称:%s 单价:%6.2f元 数量:%ld件
",p->num,p->name,p->price,p->number);
p=p->next;
}
printf("tt~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
");
getch();
return 0;
}
int add(ware *head) //增加商品信息
{
ware *p1,*p2;
if(head==NULL) //判断系统中是否有信息
{t
printf("请选择 1,先进行商品信息录入!
");
getch();
return (-1);
}
system("cls");
printf("
t******************** 增加商品信息 ********************
");
do
{
p2=head;
p1=(ware *)malloc(SIZE);
printf("ttt请输入商品的编号:");
scanf("%ld",&p1->num);
while(p2!=NULL) //判断添加的信息是否重复
{
if(p1->num==p2->num)
{
printf("ttt添加的商品编号已存在!添加失败!
");
getch();
return (-1); // 若重复,返回
}
p2=p2->next;t
}
printf("ttt请输入商品的名称:");
scanf("%s",p1->name);
printf("ttt请输入商品的价格:");
scanf("%f",&p1->price);tt
printf("ttt请输入商品的数量:");
scanf("%ld",&p1->number);
p2=head;
while(p2->next!=NULL)
p2=p2->next;t
p2->next=p1;
p1->next=NULL;
printf("
您要继续添加吗?
< >bb");
getchar();
ch = getchar();
}while(ch=='y'||ch=='Y');
return 0;
}
void find(ware *head) //查找商品信息
{
int k,i,j=0;
long int NUM;
ware *p1,*p2;
if(head==NULL) //判断系统中是否有信息
{t
getch();
return;
}
else
system("cls");
printf("
t*********************** 智能查找 ***********************
");
printf("tttt1.随机查找
tttt2.缺货商品查找
tttt3.返回主界面
");
printf("
tttt输入您的操作:[ ]bb");
scanf("%d",&k);
if(k==1)
{
p1=head;
printf("
ttt请输入您要查找的商品编号:");
scanf("%d",&NUM);t
while(p1!=NULL)
{
if(p1->num==NUM)
break;
p1=p1->next;
}
if(p1!=NULL)
{
printf("ttt商品的编号: %ld
",p1->num);
printf("ttt商品的名称: %s
",p1->name);
printf("ttt商品的价格: %-6.2f元
",p1->price);
printf("ttt商品的数量: %ld
",p1->number);
getch();
}
else //判断系统中是否有查找的信息
{
printf("
");
printf("ttt对不起!,系统中无该商品信息!");
getch();
}
}
if(k==2)
{
if(head==NULL) //判断系统中是否有信息
{t
printf("系统内无信息!!
");
getch();
return;
}
printf("
");
p2=head;
printf("t缺货商品有:
");
for(i=0;i
p1=p2;
while(p1!=NULL)
{
if(p1->number==0)
{
printf("ttt编号:%ld 名称:%s
",p1->num,p1->name);
p2=p1->next;
j++;
break;
}
p1=p1->next;tt
}
}
printf("
tt系统提醒!共有 %d 种商品缺货.",j);
getch();
}
if(k==3)
return;
}
ware *modify(ware *head) //修改商品信息
{
long int NUM;
ware *p1;
if(head==NULL) //判断系统中是否有信息
{t
printf("系统内无信息!!
");
getch();
return (NULL);
}
else
system("cls");
printf("
t******************** 修改商品信息 ********************
");
p1=head;
printf("ttt请输入您要修改商品的编号:");
scanf("%d",&NUM);
while(p1!=NULL)
{
if(p1->num==NUM)
break;
p1=p1->next;
}
if(p1!=NULL)
{
if(p1->number<=0)
{
printf("
ttt该商品缺货!开始供货。。
");
getch();
}
printf("ttt
商品的名称: ");
scanf("%s",p1->name);
printf("ttt商品的价格: ");
scanf("%f",&p1->price);
printf("ttt商品的数量: ");
scanf("%ld",&p1->number);
printf("
ttt修改成功!");
getch();
return(head);
}
else //判断系统中是否有要修改的信息
{
printf("
");
printf("ttt对不起!,系统中无该商品信息!
");
getch();
return (head); // 若无,返回
}
}
ware *delet(ware *head) //删除商品信息
{
long int NUM;
ware *p1,*p2;
if(head==NULL) //判断系统中是否有信息
{t
printf("系统内无信息!!
");
getch();
return (NULL);
}
else
system("cls");
printf("
t******************** 删除商品信息 ********************
");
p1=head;
printf("ttt请输入您要删除的商品编号:");
scanf("%d",&NUM);
while(p1!=NULL)
{
if(p1->num==NUM)
break;
p2=p1;
p1=p1->next;
}
if(p1!=NULL)
{
if(NUM==head->num)
{
head=head->next;
printf("
ttt删除成功!
");
getch();
return(head);
}
else
{
p2->next=p1->next;
free(p1);
printf("
ttt删除成功!
");
getch();
return(head);
}
}
else //判断系统中是否有要删除的信息
{
printf("
");
printf("ttt对不起!,系统中无该商品信息!
");
getch();
return (head); // 若无,返回
}
}
void check(ware *head)
{
int k,i,b;
float SUM=0,sum[30],pay,back;
ware a[30];
ware *p,*q;
if(head==NULL) //判断系统中是否有信息
{t
printf("对不起!,库存无商品。请选择1,先进行商品信息录入!
");
getch();
return
}
else
system("cls");
system("color e");
p=head;
printf("
");
printf("t =========================================================
");
printf("t 结账系统
");
printf("t =========================================================
");
printf("ttt1.开始结账tt2.切换模式
");
printf("
ttt输入您的操作:[ ]bb");
scanf("%d",&b);
if(b==1)
{
printf("
ttt输入所购商品的(种类数)<0~~%d>:",w);
scanf("%d",&k);
printf("
");
for(i=0;i
printf("ttt输入所购第%d种商品的条形码(编码):",i+1);
scanf("%ld",&a[i].num);
q=head;
while(q!=NULL)
{
if(a[i].num==q->num)
{
if(q->number<=0) //判断购买的商品是否有货
{
printf("
对不起,该商品已经售完!请重新输入
");
break;
}
break;
}
q=q->next;
}
if(q!=NULL)
{
if(q->number>0)
{
printf("ttt输入所购第%d种商品购买的数量<0~~%d>:",i+1,q->number);
scanf("%ld",&a[i].number);
q->number=q->number-a[i].number; //温馨提醒,补充缺货商品
if(q->number<=0)
printf("
ttt购买成功.系统提醒!%d号商品已经卖完,需要及时供货!!
",q->num);
printf("
");
}
else
i=i-1;
}
else
{
printf("无该商品!
");
i=i-1;
}
}
while(p!=NULL)
{
for(i=0;i
if(a[i].num==p->num) // 计算消费总金额
{
SUM=SUM+(p->price)*(a[i].number);
sum[i]=(p->price)*(a[i].number);
}
}
p=p->next;
}
printf("
ttt本次消费金额为:%-6.2f元
",SUM);
printf("ttt实收金额:");
scanf("%f",&pay);
while(pay
printf("
ttt金额不足!
");
printf("
tt1.重新付款t0.放弃购物————请选择[ ]bb");
scanf("%d",&w);
if(w==0) return;
else
printf("
ttt实收金额:");
scanf("%f",&pay);
}
back=pay-SUM;
printf("
ttt ------------------------
");
printf("ttt|应收金额:%-6.2f元|
",SUM);
printf("ttt|实收金额:%-6.2f元|
",pay);
printf("ttt|找零:%-6.2f元|
",back);
printf("ttt ------------------------
");
printf("
tt1.打印小票t0.返回主界面————请选择[ ]bb");
scanf("%d",&w);
if(w==1) //提醒,是否要打印小票
{
time_t now;
now = time (NULL);
system("cls");
printf("
ttt**************购物小票**************
");
printf("
ttt====================================
");
printf("ttt 名称 数量 单价 金额(元)
");
p=head;
while(p!=NULL)
{
for(i=0;i
if(a[i].num==p->num)
printf("ttt %s %ld %-6.2f %-6.2f
",p->name,a[i].number,p->price,sum[i]);
}
p=p->next;
}
printf("ttt==================================
==
");
printf("
ttt合计:%-6.2f元
",SUM);
printf("ttt实收金额:%-6.2f元
",pay);
printf("ttt找零:%-6.2f元
",back);
printf("ttt——————————————————
");
printf("ttt 谢谢惠顾!
");
printf("ttt——————————————————
");
printf("ttt %s
",ctime(&now));
}
if(w==0);
getch();
}
if(b==2) return;
}
void save(ware *head) //保存商品信息
{
FILE *fp;
ware *p;
if(head==NULL) //判断系统中是否有信息
{t
printf("系统内无信息!!
");
return;
}
p=head;
if((fp=fopen("","wb"))==NULL)
{
printf("error! (open)
");
return;
}
w=0;
while(p!=NULL)
{
if(fwrite(p,SIZE,1,fp)!=1)
break;
p=p->next;
w++;
}
if(p==NULL)
printf("保存成功!当前有%d件商品录
",w);
else
printf("保存失败!
");
fclose(fp);
return;
}
ware *load() //读取是商品信息
{
FILE *fp;
ware *p1,*p2,*head;
if((fp=fopen("","rb"))==NULL)
{
return (NULL);
}
w=0;
while(p2->next!=NULL)
{
p1=(ware *)malloc(SIZE);
if(fread(p1,SIZE,1,fp)!=1)
break;
if(w==0)
head=p1;
else
p2->next=p1;
p2=p1;
w++;
}
if(p2->next==NULL)
{
fclose(fp);
return(head);
}
else
{
fclose(fp);
return(NULL);
}
}
void ADDUP(ware *head) // 实时跟踪商品信息(库存数量)
{
ware *p;
w=1;
p=head;
while(p!=NULL)
{
p=p->next;
w++;
}
}
int main()
{
int n,i,f1,f2;
char A[20],B[20],C[20],D[20];
ware *head=NULL;
head=load();
system("color e");t
printf("
ttt初次使用系统,请注册管理员账户.
");
printf("ttt输入用户名:");
gets(A);
printf("
ttt输入密码:");
gets(B);
system("cls");
for(i=3;i>0;i--)
{
printf("
");
printf("tt==========================================
");
printf("tt 系统登录
");
printf("tt==========================================
");
printf("
ttt输入用户名:");
gets(C);
f1=strcmp(A,C);
printf("
ttt输入密码:");
gets(D);
f2=strcmp(B,D);
if((f1==0)&&(f2==0))
{
printf("
ttt登录成功!!");
getch();
system("cls");
system("color f");
printf("
ttt系统正在启动,请稍候 ");
fo
r(i=0;i<7;i++)
{
printf(" .");
sleep(500);
}t
while(1)
{
switch(menu1())
{
case 1:
{
while(1)
{
switch(menu2())
{
case 1: //录入商品信息
printf("
");
head=creat(head);
break;
case 2: //显示商品信息
printf("
");
print(head);
break;
case 3: //增加商品信息
printf("
");
n=add(head);
if(n==0)
{
printf("
");
printf("************显示当前全部的商品信息**********
");
print(head);
}
break;
case 4: //删除商品信息
printf("
");
head=delet(head);
if(head!=NULL)
{
printf("
");
printf("************显示当前全部的商品信息**********
");
print(head);
}
break;
case 5: //修改商品信息
printf("
");
head=modify(head);
break;
case 6: //查找商品信息
printf("
");
save(head);
find(head);
break;
case 7: //保存商品信息
printf("
");
save(head);
getch();
break;
case 8: //退出系统
printf("
请再次确认是否退出!(y n) [ ]bb");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y') //再次确认
{
save(head);
system("cls");
printf("
ttt谢谢使用!再见");
for(i=0;i<7;i++)
{
printf(" .");
sleep(400);
}
exit(0);
}
else
break;
default:system("cls");
}
}
}
case 2:
{
printf("
");
check(head);
break;
}
case 3:
{
printf("
请再次确认是否退出!(y n) [ ]bb");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y') //再次确认
{
save(head);
system("cls");
printf("
ttt谢谢使用!再见");
for(i=0;i<7;i++)
{
printf(" .");
sleep(400);
}
exit(0);
}
}
}
}
}
else
printf("
ttt用户名或密码错误!你还有 %d 次机会!
",i-1);
getch();
system("cls");
}
printf("
ttt系统自动关闭");
for(i=0;i<7;i++)
{
printf(" .");
sleep(500);
}
exit(0);
}