登录系统

# include <stdio.h> //头文件
# include <string.h> //字符串头文件
# include <stdlib.h> typedef struct in
{
char id[20];//会员账号
char key[20];//会员密码
int sum;//会员积分
struct in *next;
}member; struct im//商品信息 以下是私有成员
{
int id;//商品编号
char name[50];//商品名称
int stoct;//商品库存
}goods[1000]; member *registe(member *t);//注册;
void buy(); int main(void)
{
member *head = (member *)malloc(sizeof(member));
strcpy(head->id, "0"), strcpy(head->key, "0");//超市管理员
head->next = NULL;
int i, a, n, boo=0; while(1)
{
printf("注册会员请按1: \n");
printf("会员直接登入请按2:\n");
printf("推出请按0: \n");
scanf("%d", &a);
if (a == 0)
break;
if (a == 1)
head = registe(head);
else if (a == 2)
boo = login(head);
if (boo)
break;
}
if (a && boo==1)
{
printf ("尊贵的会员,您登入成功!\n");
buy();
}
printf ("已经安全推出\n");
return 0;
}
member *registe(member *t)//注册
{
printf ("现在开始会员注册\n\n");
char id[20], key[20];
member *p, *q, *r;
p = t;
while(p->next) p = p->next;//寻找链表中最后一个节点
while(1)
{
printf ("请输入您注册的账号, 密码:\n");
scanf ("%s %s", id, key);
q = t;
while(q)//判断该账号是否已经被注册
{
if (strcmp (q->id, id)==0)
break;
else q = q->next;
}
if (q == NULL)//账号没有注册
{
r = (member *)malloc(sizeof(member));
r->next = NULL;
p->next = r;
strcpy (r->id, id);
strcpy (r->key, key);
r->sum = 1000;//会员默认的积分为1000;
break;
}
else
printf ("该账号已被注册,请重新输入账号,密码\n");
}
printf ("恭喜您,已经注册成功,现在可以登入了\n\n"); return t;
} int login (member *t)//登入
{
printf ("现在开始登入");
member *p;
char id[20],key[20];
int a, boo = 0;
while (1)
{
printf ("请输入您的账号,密码: \n");
scanf ("%s", id);
if (strcmp(id, "#")==0)
break;
scanf ("%s", key);
p = t;
while (p)
{
if (strcmp(p->id, id)==0 &&strcmp(p->key, key)==0)
break;
else
p = p->next;
}
if (p == NULL)
{
printf ("对不起,该账号和密码错误,请重新登入\n");
printf ("推出登入请按#\n");
}
else if
(strcmp(id, "0")!=0)
{
boo = 1;
break;
}
}
return boo;
}
void buy()
{
char s[20];
int n;
int i;
while(1)
{
printf ("请输入商品的编号或者名称:\n");
scanf ("%s", s);
if (strcmp(s, "0")==0)
break;
if (s[0]>='1' && s[0]<='9')
{
n = atoi(s);
for (i=0; i<1000; i++)
{
if (goods[i].id == n)
break;
}
if (i > 1000)
{
printf ("商品不存在请重新输入,推出请按0\n");
}
else
{
printf ("您已购买成功。\n");
}
}
else
{
for (i=0; i<1000; i++)
{
if (strcmp(goods[i].name, s)==0) //编译器的提示信息看了没,看了的话应该会发现是函数参数类型不匹配
break;
}
if (i > 1000)
{
printf ("商品不存在,请重新输入,推出请安0\n");
}
else
{
printf ("您购买成功.\n");
}
} }
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170

主菜单系统

#ifndef MARKET_H
#define MARKET_H #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<windows.h>
#define N 20 struct mar//该结构体为存储货物信息
{
char ID[10];//货号
char brand[20];//品名
double inprice;//进价
double outprice;//售价
int storage;//存储量
}; struct node//该结构体为存储购物车中的信息
{
struct mar buy;//货物信息
int number;//购物的数量
struct node *next; //指向下一个购物节点
}; struct mar goods[N];//结构体数组
struct node *cart;//购物车头结点 int menu();//打印主菜单函数
void WenJianKucun();//文件建立库存信息
void ShouJianKucun();//手动建立库存信息
void DisKucun();//显示库存信息函数
void ShopCart();//对购物车进行操作
int ShopCartMenu();//打印购物车菜单
void XianShi();//显示购物列表
void add();//在购物车里添加商品
void UpdateKu();//更新购物车信息函数
void calculate();//计算所购商品价格并修改保存 #endif /
int main()
{//主函数
printf("\n\n");
printf("\t*******************************************************************\n");
printf("\t| 欢迎使用 |\n"); printf("\t| 惺惺惜惺惺小超市系统 |\n"); printf("\t| 祝您使用愉快 |\n"); printf("\t*******************************************************************\n"); int find=0; while(1)
{
switch(menu())
{//menu()函数为输入选项
case 1: WenJianKucun();
find=1;
break;//选项1 文件建立库存信息 case 2: //if(find==0)
ShouJianKucun();
/*else
printf("库存信息已存在\n");*/
break;//选项2 手动建立库存信息 case 3: DisKucun();
break;//选项3 显示库存信息函数 case 4: ShopCart();
break;
//选项4 对购物车进行操作 case 5: calculate();
break;//选项5 计算所购商品价格并修改保存 case 6: system("cls");
printf("感谢您的使用,再见!\n");
Sleep(2000);
exit(0);
}
}
return 0;
} /
int menu()
{//打印主菜单函数
char s[5];//输入的选项
int n;//选项为整数
printf("\n\n-----------------请选择下面的数字进行操作:-----------------\n");
printf("----------------------------------------------------------------\n");
printf(" 1\. 文件建立库存信息 \n");
printf(" 2\. 手动建立库存信息 \n");
printf(" 3\. 显示所有商品信息 \n");
printf(" 4\. 购物车 \n");
printf(" 5\. 结算 \n");
printf(" 6\. 退出程序 \n");
printf("----------------------------------------------------------------\n");
printf("-------------------请选择对应数字1~6(1,2选其一)---------------\n"); while(1)
{
fflush(stdin);//清空输入流
gets(s);//输入一串字符串
n=atoi(s);//字符串转化为整数 if(n<1||n>6)//判断输入的选项是否正确
printf("输入错误,请重新输入:\n");
else//输入正确,结束循环
break;
}
return n;//返回输入选项
} /
void WenJianKucun()
{//文件建立库存信息
FILE *fp;//定义文件指针
if((fp=fopen("库存.txt","at"))==NULL)
{//创建文件
printf("创建文件失败\n");
return ;
}
//向文件中写入信息
fprintf(fp,"69011111 飘柔日常护理 12.00 15.00 30\n");
fprintf(fp,"69021111 优酸乳 1.50 2.00 200\n");
fprintf(fp,"69031111 红富士苹果 2.50 3.50 300\n");
fprintf(fp,"69041111 晨光笔芯 0.70 1.00 150\n");
fprintf(fp,"69051111 胡医生面膜 12.00 16.50 100\n");
fclose(fp);//关闭文件
printf("成功导入信息\n");
return ;
} /
void ShouJianKucun()
{//手动建立库存信息
FILE *fp;//定义文件指针
int i;
int number;
printf("请输入数量!");
scanf("%d",&number);
printf("请依次输入货物信息:\n");
printf("--------------------------------------------\n");
for(i=0;i<number;i++)
{//向文件中写入信息
printf("第%d个商品:\n",i+1);
printf("货号:");
fflush(stdin);//清空输入流
gets(goods[i].ID);//输入货号 printf("品名:");
fflush(stdin);//清空输入流
gets(goods[i].brand);//输入品名 printf("进价: ");
fflush(stdin);//清空输入流
scanf("%lf",&goods[i].inprice);//输入进价 printf("售价:");
fflush(stdin);//清空输入流
scanf("%lf",&goods[i].outprice);//输入售价 printf("数量:");
fflush(stdin);//清空输入流
scanf("%d",&goods[i].storage);//输入数量
printf("\n");
}
if((fp=fopen("库存.txt","at"))==NULL)
{//判断文件是否创建失败
printf("创建文件失败。\n");
return ;
}
//fprintf(fp,"货号 品名 单价 库存量\n");
for(i=0;i<number;i++)
{//把货物信息写进文件
fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
}
//fwrite(goods,sizeof(struct mar),N,cun);二进制文件输出
fclose(fp);//关闭文件
printf("信息导入成功\n");
return ;
} /
void DisKucun()
{//显示库存信息函数
FILE *fp;//定义文件指针
int i;
if((fp=fopen("库存.txt","r"))==NULL)
{//判断是否打开了文件
printf("打开文件失败\n");
return ;
} for(i=0;i<N;i++)
{//输出物品信息
//读取文件信息
fscanf(fp,"%s%s%lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].inprice,&goods[i].outprice,&goods[i].storage);
printf("--------------------------------------------\n");
//输出文件信息
printf("货号 品名 单价 库存量\n");
printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage);
}
fclose(fp);//关闭文件
} /
void ShopCart()
{//对购物车进行操作
while(1)
{
switch(ShopCartMenu())
{//ShopCartMenu()为输入选项
case 1: XianShi();
break;//选项1 显示购物车物品信息
case 2: add();
break;//选项2 添加购物车物品
//case 3: deleteitem();//删除购物车中的某项商品
// break;
case 3: return ;//选项3 退出
}
}
} /
int ShopCartMenu()
{//打印购物车菜单
int n;//为整数
char s[5];//输入一串字符串
printf("\n\n请选择操作:\n");
printf("--------------------------------------------\n");
printf("1\. 显示当前可以购物列表\n");
printf("2\. 在购物车里添加商品\n");
//printf("3\. 删除购物车商品\n");
printf("3\. 退出\n");
printf("--------------------------------------------\n");
printf("请选择对应数字1~3\n"); while(1)
{
fflush(stdin);//清空输入流
gets(s);//输入一串字符串
n=atoi(s);//字符串转化为整数
if(n<1||n>3)//判断输入的选项是否正确
printf("输入错误,请重新输入: \n");
else//输入正确,结束循环
break;
}
return n;//返回输入选项
} /
void XianShi()
{//显示购物列表
struct node *p; //定义节点指针
p=cart;//把购物车链表赋给p
FILE *fp1;//定义文件指针
if((fp1=fopen("cart.txt","r"))==NULL)
{//判断是否打开了文件
printf("打开文件失败\n");
//return ;
} if(p==NULL)
{//购物车为空
printf("目前购物车为空:");
return ;
}
else
{//购物车不为空
while(p!=NULL)
{//把购物车物品不断减一,直到为空
printf("--------------------------------------------\n");
printf("货号 品名 单价 数量\n");
printf("%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number); //输出物品信息
p=p->next;
}
}
fclose(fp1);//关闭文件
return ;
} /
void add()
{//在购物车里添加商品
FILE *fp,*fp1;//fp表示kucun文件,fp1表示cart文件
struct node *p1,*p,*p2;//定义节点指针
int i,n;//n表示商品数量
char s[20];//表示货号或者品名
char choice1[20],choice2[20];//选择项(y继续,n继续) do{
printf("输入所需物品的名称或货号:\n");
fflush(stdin);//清空输入流
gets(s);//输入货号或者品名
if((fp=fopen("库存.txt","r"))==NULL)
{//打开文件kucun
printf("打开文件失败\n");
continue;
}
for(i=0;i<N;i++)
{//循环N次
fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);//从文件中读取货物信息 if((strcmp(goods[i].ID,s)==0||strcmp(goods[i].brand,s)==0)&&goods[i].storage>0)//找输入对应的商品
{
printf("已找到所需商品:\n");
printf("--------------------------------------------\n");
printf("货号 品名 单价 数量\n");
printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage);//输出所需物品信息 printf("请输入所需商品数量: ");
scanf("%d",&n);//商品数量
if(n>goods[i].storage)
{//判断是否还可以购买不
printf("该商品库存不足\n");
break;
}
printf("\n是否购买此商品?(Y/N)\n");
fflush(stdin);//清空输入流
scanf("%s",choice1);//输入一个选项
if(strcmp(choice1,"Y")==0||strcmp(choice1,"y")==0)
{//输入y/Y表示购买此商品 if(p==NULL)
{//分配内存失败
printf("内存申请失败!\n");
exit(1);//退出
}
p->number=n;//商品数量
p->buy=goods[i];//货物信息
p->next=NULL;
p1=cart;//把头结点赋给p1
if(cart==NULL)//头结点为空
cart=p;//把节点赋值给头结点
else
{
while(p1->next!=NULL)
p1=p1->next;//把链表循环到尾部
p->next=p1->next;
p1->next=p;//把新节点p挂在链表尾部
}
}
else
printf("输入错误\n");
break;//找到商品结束循环
}
}
if(i==N)//循环完毕还没找到对应商品
printf("未找到所需物品\n");
fclose(fp);//关闭文件 UpdateKu();//更新库存信息函数
printf("是否继续购物?(Y/N)\n");
fflush(stdin);//清空输入流
scanf("%s",choice2);//输入选项
if(strcmp(choice2,"y")!=0&&strcmp(choice2,"Y")!=0)
{printf("放弃购买,返回菜单!\n"); }
}while(strcmp(choice2,"y")==0||strcmp(choice2,"Y")==0);//y/Y继续循环
menu();
calculate();
return ; } /
//更新购物车信息函数
void UpdateKu()
{
FILE *fp;
struct node *p;
if((fp=fopen("cart.txt","w"))==NULL)
{//判断文件是否创建失败
printf("创建文件失败。\n");
return ;
} p=cart;//把购物车链表赋给p2
while(p!=NULL)
{
// fprintf(fp1,"货号 品名 单价 库存量\n");
//把货物信息写进文件
fprintf(fp,"%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number);
p=p->next;//指向下一个节点
}
fclose(fp);//关闭文件 return ;
} void calculate()
{//计算所购商品价格并修改保存
struct node *p;
p=cart;//把购物车(cart)链表赋给p
double sum=0;//购买商品应付钱数
double pay;//购买商品实付钱数
FILE *fp;//定义文件指针
int i;
printf("以下是购物清单:\n");
XianShi();//调用函数显示购物列表信息 if((fp=fopen("库存.txt","r"))==NULL)
{//打开文件
printf("打开文件失败\n");
return ;
} for(i=0;i<N;i++)
{//从文件中读取信息
fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);
}
fclose(fp);//关闭文件 while(p!=NULL)
{//当链表不为空时
sum=sum+p->buy.outprice*p->number;//计算应付钱数
for(i=0;i<N;i++)
{//找出对应商品库存量
if(strcmp(goods[i].ID,p->buy.ID)==0)
{//找到对应商品
goods[i].storage=goods[i].storage-p->number;//库存量变化
break;
}
}
p=p->next;//指向下一个节点
} printf("总计:%-8.3f\n",sum);//输出购买物品共需多少钱
printf("输入实付金额:");
scanf("%lf",&pay);
printf("实付: %-8.3f 找零: %8.3f\n",pay,pay-sum); if((fp=fopen("库存.txt","w"))==NULL)
{//打开文件
printf("写入文件失败\n");
return ;
}
for(i=0;i<N;i++)
{//向文件中写入信息
fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
}
fclose(fp);//关闭文件 return ; }
 
image
#ifndef MARKET_H
#define MARKET_H #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<windows.h>
#define N 20 struct mar//该结构体为存储货物信息
{
char ID[10];//货号
char brand[20];//品名
double inprice;//进价
double outprice;//售价
int storage;//存储量
}; struct node//该结构体为存储购物车中的信息
{
struct mar buy;//货物信息
int number;//购物的数量
struct node *next; //指向下一个购物节点
}; struct mar goods[N];//结构体数组
struct node *cart;//购物车头结点 int menu();//打印主菜单函数
void WenJianKucun();//文件建立库存信息
void ShouJianKucun();//手动建立库存信息
void DisKucun();//显示库存信息函数
void ShopCart();//对购物车进行操作
int ShopCartMenu();//打印购物车菜单
void XianShi();//显示购物列表
void add();//在购物车里添加商品
void UpdateKu();//更新购物车信息函数
void calculate();//计算所购商品价格并修改保存 #endif /
int main()
{//主函数
printf("\n\n");
printf("\t*******************************************************************\n");
printf("\t| 欢迎使用 |\n"); printf("\t| 惺惺惜惺惺小超市系统 |\n"); printf("\t| 祝您使用愉快 |\n"); printf("\t*******************************************************************\n"); int find=0; while(1)
{
switch(menu())
{//menu()函数为输入选项
case 1: WenJianKucun();
find=1;
break;//选项1 文件建立库存信息 case 2: //if(find==0)
ShouJianKucun();
/*else
printf("库存信息已存在\n");*/
break;//选项2 手动建立库存信息 case 3: DisKucun();
break;//选项3 显示库存信息函数 case 4: ShopCart();
break;
//选项4 对购物车进行操作 case 5: calculate();
break;//选项5 计算所购商品价格并修改保存 case 6: system("cls");
printf("感谢您的使用,再见!\n");
Sleep(2000);
exit(0);
}
}
return 0;
} /
int menu()
{//打印主菜单函数
char s[5];//输入的选项
int n;//选项为整数
printf("\n\n-----------------请选择下面的数字进行操作:-----------------\n");
printf("----------------------------------------------------------------\n");
printf(" 1\. 文件建立库存信息 \n");
printf(" 2\. 手动建立库存信息 \n");
printf(" 3\. 显示所有商品信息 \n");
printf(" 4\. 购物车 \n");
printf(" 5\. 结算 \n");
printf(" 6\. 退出程序 \n");
printf("----------------------------------------------------------------\n");
printf("-------------------请选择对应数字1~6(1,2选其一)---------------\n"); while(1)
{
fflush(stdin);//清空输入流
gets(s);//输入一串字符串
n=atoi(s);//字符串转化为整数 if(n<1||n>6)//判断输入的选项是否正确
printf("输入错误,请重新输入:\n");
else//输入正确,结束循环
break;
}
return n;//返回输入选项
} /
void WenJianKucun()
{//文件建立库存信息
FILE *fp;//定义文件指针
if((fp=fopen("库存.txt","at"))==NULL)
{//创建文件
printf("创建文件失败\n");
return ;
}
//向文件中写入信息
fprintf(fp,"69011111 飘柔日常护理 12.00 15.00 30\n");
fprintf(fp,"69021111 优酸乳 1.50 2.00 200\n");
fprintf(fp,"69031111 红富士苹果 2.50 3.50 300\n");
fprintf(fp,"69041111 晨光笔芯 0.70 1.00 150\n");
fprintf(fp,"69051111 胡医生面膜 12.00 16.50 100\n");
fclose(fp);//关闭文件
printf("成功导入信息\n");
return ;
} /
void ShouJianKucun()
{//手动建立库存信息
FILE *fp;//定义文件指针
int i;
int number;
printf("请输入数量!");
scanf("%d",&number);
printf("请依次输入货物信息:\n");
printf("--------------------------------------------\n");
for(i=0;i<number;i++)
{//向文件中写入信息
printf("第%d个商品:\n",i+1);
printf("货号:");
fflush(stdin);//清空输入流
gets(goods[i].ID);//输入货号 printf("品名:");
fflush(stdin);//清空输入流
gets(goods[i].brand);//输入品名 printf("进价: ");
fflush(stdin);//清空输入流
scanf("%lf",&goods[i].inprice);//输入进价 printf("售价:");
fflush(stdin);//清空输入流
scanf("%lf",&goods[i].outprice);//输入售价 printf("数量:");
fflush(stdin);//清空输入流
scanf("%d",&goods[i].storage);//输入数量
printf("\n");
}
if((fp=fopen("库存.txt","at"))==NULL)
{//判断文件是否创建失败
printf("创建文件失败。\n");
return ;
}
//fprintf(fp,"货号 品名 单价 库存量\n");
for(i=0;i<number;i++)
{//把货物信息写进文件
fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
}
//fwrite(goods,sizeof(struct mar),N,cun);二进制文件输出
fclose(fp);//关闭文件
printf("信息导入成功\n");
return ;
} /
void DisKucun()
{//显示库存信息函数
FILE *fp;//定义文件指针
int i;
if((fp=fopen("库存.txt","r"))==NULL)
{//判断是否打开了文件
printf("打开文件失败\n");
return ;
} for(i=0;i<N;i++)
{//输出物品信息
//读取文件信息
fscanf(fp,"%s%s%lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].inprice,&goods[i].outprice,&goods[i].storage);
printf("--------------------------------------------\n");
//输出文件信息
printf("货号 品名 单价 库存量\n");
printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage);
}
fclose(fp);//关闭文件
} /
void ShopCart()
{//对购物车进行操作
while(1)
{
switch(ShopCartMenu())
{//ShopCartMenu()为输入选项
case 1: XianShi();
break;//选项1 显示购物车物品信息
case 2: add();
break;//选项2 添加购物车物品
//case 3: deleteitem();//删除购物车中的某项商品
// break;
case 3: return ;//选项3 退出
}
}
} /
int ShopCartMenu()
{//打印购物车菜单
int n;//为整数
char s[5];//输入一串字符串
printf("\n\n请选择操作:\n");
printf("--------------------------------------------\n");
printf("1\. 显示当前可以购物列表\n");
printf("2\. 在购物车里添加商品\n");
//printf("3\. 删除购物车商品\n");
printf("3\. 退出\n");
printf("--------------------------------------------\n");
printf("请选择对应数字1~3\n"); while(1)
{
fflush(stdin);//清空输入流
gets(s);//输入一串字符串
n=atoi(s);//字符串转化为整数
if(n<1||n>3)//判断输入的选项是否正确
printf("输入错误,请重新输入: \n");
else//输入正确,结束循环
break;
}
return n;//返回输入选项
} /
void XianShi()
{//显示购物列表
struct node *p; //定义节点指针
p=cart;//把购物车链表赋给p
FILE *fp1;//定义文件指针
if((fp1=fopen("cart.txt","r"))==NULL)
{//判断是否打开了文件
printf("打开文件失败\n");
//return ;
} if(p==NULL)
{//购物车为空
printf("目前购物车为空:");
return ;
}
else
{//购物车不为空
while(p!=NULL)
{//把购物车物品不断减一,直到为空
printf("--------------------------------------------\n");
printf("货号 品名 单价 数量\n");
printf("%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number); //输出物品信息
p=p->next;
}
}
fclose(fp1);//关闭文件
return ;
} /
void add()
{//在购物车里添加商品
FILE *fp,*fp1;//fp表示kucun文件,fp1表示cart文件
struct node *p1,*p,*p2;//定义节点指针
int i,n;//n表示商品数量
char s[20];//表示货号或者品名
char choice1[20],choice2[20];//选择项(y继续,n继续) do{
printf("输入所需物品的名称或货号:\n");
fflush(stdin);//清空输入流
gets(s);//输入货号或者品名
if((fp=fopen("库存.txt","r"))==NULL)
{//打开文件kucun
printf("打开文件失败\n");
continue;
}
for(i=0;i<N;i++)
{//循环N次
fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);//从文件中读取货物信息 if((strcmp(goods[i].ID,s)==0||strcmp(goods[i].brand,s)==0)&&goods[i].storage>0)//找输入对应的商品
{
printf("已找到所需商品:\n");
printf("--------------------------------------------\n");
printf("货号 品名 单价 数量\n");
printf("%-11s%-15s%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].outprice,goods[i].storage);//输出所需物品信息 printf("请输入所需商品数量: ");
scanf("%d",&n);//商品数量
if(n>goods[i].storage)
{//判断是否还可以购买不
printf("该商品库存不足\n");
break;
}
printf("\n是否购买此商品?(Y/N)\n");
fflush(stdin);//清空输入流
scanf("%s",choice1);//输入一个选项
if(strcmp(choice1,"Y")==0||strcmp(choice1,"y")==0)
{//输入y/Y表示购买此商品 if(p==NULL)
{//分配内存失败
printf("内存申请失败!\n");
exit(1);//退出
}
p->number=n;//商品数量
p->buy=goods[i];//货物信息
p->next=NULL;
p1=cart;//把头结点赋给p1
if(cart==NULL)//头结点为空
cart=p;//把节点赋值给头结点
else
{
while(p1->next!=NULL)
p1=p1->next;//把链表循环到尾部
p->next=p1->next;
p1->next=p;//把新节点p挂在链表尾部
}
}
else
printf("输入错误\n");
break;//找到商品结束循环
}
}
if(i==N)//循环完毕还没找到对应商品
printf("未找到所需物品\n");
fclose(fp);//关闭文件 UpdateKu();//更新库存信息函数
printf("是否继续购物?(Y/N)\n");
fflush(stdin);//清空输入流
scanf("%s",choice2);//输入选项
if(strcmp(choice2,"y")!=0&&strcmp(choice2,"Y")!=0)
{printf("放弃购买,返回菜单!\n"); }
}while(strcmp(choice2,"y")==0||strcmp(choice2,"Y")==0);//y/Y继续循环
menu();
calculate();
return ; } /
//更新购物车信息函数
void UpdateKu()
{
FILE *fp;
struct node *p;
if((fp=fopen("cart.txt","w"))==NULL)
{//判断文件是否创建失败
printf("创建文件失败。\n");
return ;
} p=cart;//把购物车链表赋给p2
while(p!=NULL)
{
// fprintf(fp1,"货号 品名 单价 库存量\n");
//把货物信息写进文件
fprintf(fp,"%-11s%-15s%-8.3f%-7d\n",p->buy.ID,p->buy.brand,p->buy.outprice,p->number);
p=p->next;//指向下一个节点
}
fclose(fp);//关闭文件 return ;
} void calculate()
{//计算所购商品价格并修改保存
struct node *p;
p=cart;//把购物车(cart)链表赋给p
double sum=0;//购买商品应付钱数
double pay;//购买商品实付钱数
FILE *fp;//定义文件指针
int i;
printf("以下是购物清单:\n");
XianShi();//调用函数显示购物列表信息 if((fp=fopen("库存.txt","r"))==NULL)
{//打开文件
printf("打开文件失败\n");
return ;
} for(i=0;i<N;i++)
{//从文件中读取信息
fscanf(fp,"%s%s%*lf%lf%d",goods[i].ID,goods[i].brand,&goods[i].outprice,&goods[i].storage);
}
fclose(fp);//关闭文件 while(p!=NULL)
{//当链表不为空时
sum=sum+p->buy.outprice*p->number;//计算应付钱数
for(i=0;i<N;i++)
{//找出对应商品库存量
if(strcmp(goods[i].ID,p->buy.ID)==0)
{//找到对应商品
goods[i].storage=goods[i].storage-p->number;//库存量变化
break;
}
}
p=p->next;//指向下一个节点
} printf("总计:%-8.3f\n",sum);//输出购买物品共需多少钱
printf("输入实付金额:");
scanf("%lf",&pay);
printf("实付: %-8.3f 找零: %8.3f\n",pay,pay-sum); if((fp=fopen("库存.txt","w"))==NULL)
{//打开文件
printf("写入文件失败\n");
return ;
}
for(i=0;i<N;i++)
{//向文件中写入信息
fprintf(fp,"%-11s%-15s%-8.3f%-8.3f%-7d\n",goods[i].ID,goods[i].brand,goods[i].inprice,goods[i].outprice,goods[i].storage);
}
fclose(fp);//关闭文件 return ; }

超市管理系统C语言的更多相关文章

  1. 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发

    项目下载:https://download.csdn.net/download/weixin_44893902/13715024 1.9元付费赞助下载:https://download.csdn.ne ...

  2. 超市管理系统—NABCD模型

    1) N (Need 需求) 需求分析: 超市的数据和业务越来越庞大,而计算机就是一种高效的管理系统,这就需要我们把超市的管理与计算机结合起来,从而超市管理系统应运而生.依靠现代化的计算机信息处理技术 ...

  3. 08_java超市管理系统

    超市管理系统功能介绍 * A:超市管理系统功能介绍 * a: 显示主菜单 ============欢迎光临ItCast超市============ 1: 货物 清单 2: 添加货物 3: 删除货物 4 ...

  4. 文献综述十七:基于 sql环境下超市管理系统的设计与实现

    一.基本信息 标题:基于 sql环境下超市管理系统的设计与实现 时间:2018 出版源:智能计算机与应用 文件分类:uml技术的研究 二.研究背景 从超市管理系统的实际应用出发,在系统分析过程中,从功 ...

  5. Java 实现一个 能够 进行简单的增删改查的 超市管理系统

    1. 首先编写一个 Fruitltem 的商品类, 描述 商品的基本信息. 代码如下: 保证详细, 运行的起来, 有什么 问题也可以评论留言. /* * 自定义类, 描述商品信息 * * 商品的属性: ...

  6. 大一结业项目之一(C#晨曦超市管理系统 )

                                             C#晨曦超市管理系统                            我现是湖南工程职业技术学院大一的学生,很快 ...

  7. 2019年7月16日 abp(net core)+easyui+efcore实现仓储管理系统——多语言(十)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. 职工工资管理系统 --C语言

    #include<stdio.h> #include<string.h> #include<stdlib.h> #define NUM 1000 void ente ...

  9. 通用权限管理系统多语言开发接口 - java,php 调用接口程序,多业务子系统集成

    1:公司里有多个业务系统,需要进行统一重构,有PHP的.有Java的.有.NET的,甚至还有delphi的. 2:公司里有多个数据库系统,有mysql的.有sqlserver的.还有oracel的,甚 ...

随机推荐

  1. Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform!

    原文链接:https://blog.csdn.net/u012700515/article/details/56009429 Maven 打包时有标题中警告,需要在pom.xml文件中添加 <p ...

  2. 在sharepoint 2010创建级联下拉菜单

    SPServices是一个jQuery库,它提取SharePoint Web服务,并使其更容易使用.它可以使用不同的Web服务操作提供更有用且很酷的功能.它完全安装在客户端,不需要服务器. 用SPSe ...

  3. 如何使用 PHP 语言来编码和解码 JSON 对象

    PHP JSON 本章节我们将为大家介绍如何使用 PHP 语言来编码和解码 JSON 对象. 环境配置 在 php5.2.0 及以上版本已经内置 JSON 扩展. JSON 函数 函数 描述 json ...

  4. 为什么 2020 还要学 Node.js

    更佳阅读体验 https://www.yuque.com/sunluyong/node 前言 前些日子刷知乎看到个 2019 年初的问题 2019年nodejs凉了吗?凉到什么程度了?才看到问题的时候 ...

  5. 笨办法学python3练习代码ex21.py

    def add(a, b): print(f"ADDING {a} + {b}") return (a + b) def subtract(a, b): #subtract :减去 ...

  6. 再也不怕别人动电脑了!用Python实时监控

    作者:美图博客 https://www.meitubk.com/zatan/386.html 前言 最近突然有个奇妙的想法,就是当我对着电脑屏幕的时候,电脑会先识别屏幕上的人脸是否是本人,如果识别是本 ...

  7. Python爬虫开发:反爬虫措施以及爬虫编写注意事项

  8. Django REST framework 单元测试

    Django REST framework 单元测试 只是简单记录一下测试代码怎么写 环境 Win10 Python3.7 Django2.2 项目 参照官网 快速开始 写了一个 demo 测试 参照 ...

  9. java中ThrealLocal的理解

    目录 java中threadlocal的理解 一.threadlocal的生命周期和ThreadLocalMap的生命周期 二.ThreadLocal的作用 三.threadlocal示例 四.Inh ...

  10. C#设计模式之17-中介者模式

    中介者模式(Mediator Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/419 访问. 中介者模式 ...