登录系统

# 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. PHP get_resource_type() 函数

    get_resource_type() 返回资源(resource)类型. 版本要求:PHP 4 >= 4.0.2, PHP 5, PHP 7高佣联盟 www.cgewang.com 语法 st ...

  2. PHP decoct() 函数

    实例 把十进制转换为八进制: <?phpecho decoct("30") . "<br>";echo decoct("10&quo ...

  3. PHP localeconv() 函数

    实例 查找美国本地的数字格式化信息: <?php setlocale(LC_ALL,"US"); $locale_info = localeconv(); print_r($ ...

  4. Java并发学习(一):进程和线程

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 前言 俗话说得好"一人 ...

  5. 苹果挖矿恶意程序处理(OSX/CoinMiner.X)

    背景 近期通过流量告警发现多起外连矿池的告警,均外连至43.249.204.231 威胁情报信息如下: 系统表象 1.通过ps -ef|grep osascript发现在/library/Launch ...

  6. cryptopp使用Qt mingw编译,以及海思平台交叉编译

    编译工程生成,使用qmake生成qt工程文件(海思平台时,要用海思平台的qmake),将 TEMPLATE = app 修改为: TEMPLATE = lib 添加如下: win32:LIBS += ...

  7. 趣讲 PowerJob 超强大的调度层,开始表演真正的技术了

    本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列. 写在前面的碎碎念:终于到了万众期待的调度层原理了. ...

  8. Python | 常见的反爬及解决方法,值得收藏

    我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起.很多人学习python,掌 ...

  9. Python3 网络爬虫:漫画下载,动态加载、反爬虫这都不叫事

    一.前言 作者:Jack Cui 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那 ...

  10. Java对象与类—对象与类

    1.类 类(class)是构造对象的模板,具体点说类就是对具有相同性质,相同行为的一群对象的抽象说明.由类构造(construst)对象的过程称为创建类的实例(instance). 2.对象 对象是类 ...