超市管理系统
大家好,我是阿闲!
今天突然找到了,大二时所写的作业,一眨眼好多年过去了。
简单用C语言写的超市管理系统,没什么实际的用途,但是可以当学习时的作业练练手。
当时也已经改了很多次了,但还是有bug,不过不影响整体使用,bug已经改到最小了也不想改了。
全程用CodeBlock写的,在这软件上也是能完美运行,不要用VC打开,可能会报错。
下面看看几张效果图
开始分享代码,就四个文件
记得创建两个txt文件,分别是user和information
1、头文件
hearder.h
#ifndef HEADER_H_INCLUDED#define HEADER_H_INCLUDED#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<math.h>#include<string.h>#include<conio.h>#define N 100/*结构体定义*/typedef struct item{ char name[20];//商品名称 char category[20];//商品的所属种类 int inPrice;//商品进价 int outPrice;//商品售价 int num;//商品数量 int upperNum;//库存上限 int lowerNum;//库存下限}Item;Item item[N];typedef struct user{char id[20];char pass[20];}User;User user[N];/**函数声明**/void mainMenu();/**主菜单**/void boss();/**我是老板页面**/ void itemSelect();//商品信息查询 void findAll();//查询所有商品信息 void find_name();//按名字查询商品信息 void find_category();//按种类查询商品信息 void itemUpdate();//商品信息修改 void updateOutPrice();//修改商品售价 void updateUpperNum();//修改商品库存上限 void updateLowerNum();//修改商品库存下限void workers();/**我是员工页面**/ void inItem();//商品入库 void numError();//库存预警void customer();/**我是客户页面**/ void buyItem();//商品购买 void selectItem();//客户查询函数 void loginMain(); void registe(); void login(); void errors1();void colourful();//系统颜色设置void leave();//离开系统提示void errors();//非法操作提示//int nn();#endif // HEADER_H_INCLUDED
2、然后是超市代码
supermarket.c
开头
#include “header.h”main(){ int i; printf(“正在进入系统,请稍后”); for(i=0;i<8;i++){ Sleep(500); printf(“.”); } mainMenu();}/*主菜单*/
void mainMenu(){ int choose; system(“cls”); printf(“nnn”); printf(“tt★******★**********★*********★******★ n”); printf(“tt★ ★ n”); printf(“tt★ ★超市管理系统★ ★ n”); printf(“tt★ ★ n”); printf(“tt★*************************************★ n”); printf(“tt★**********★请选择操作[1-5]**********★ n”); printf(“tt★*************************************★ n”); printf(“tt★ ★ n”); printf(“tt★ ①我是老板 ★ n”); printf(“tt★ ②我是员工 ★ n”); printf(“tt★ ③我是客户 ★ n”); printf(“tt★ ④系统颜色 ★ n”); printf(“tt★ ⑤退出系统 ★ n”); printf(“tt★ ★ n”); printf(“tt★******★**********★*********★******★ n”); fflush(stdin); printf(“请选择您要的服务:”); scanf(“%d”,&choose); switch(choose){ case 1: system(“cls”); boss(); break; case 2: system(“cls”); workers(); break; case 3: system(“cls”); loginMain(); break; case 4: system(“cls”); colourful(); break; case 5: system(“cls”); leave(); default: system(“cls”); errors(); getch(); mainMenu(); break; }}
/*老板页面*/
void boss(){ int choose; printf(“nnntt******这里是老板页面*******nnnn”); printf(“tt 1.商品信息查询 nn”); printf(“tt 2.商品信息修改 nn”); printf(“tt 0.返回主页面 nn”); printf(“tt 请输入您的选项[0-2]:”); fflush(stdin); scanf(“%d”,&choose); switch(choose) { case 1: system(“cls”); itemSelect(); break; case 2: system(“cls”); itemUpdate(); break; case 0: mainMenu(); break; default: system(“cls”); errors(); getch(); system(“cls”); boss(); break; }}?
/*商品信息查询*/
void itemSelect(){ int choose; system(“cls”); printf(“nntt 请选择操作 nn”); printf(“nntt 1.查询所有商品信息 n”); printf(“nntt 2.按名称查询商品信息 n”); printf(“nntt 3.按所属种类查询商品信息 n”); printf(“nntt 0.返回 n”); fflush(stdin); scanf(“%d”,&choose); switch(choose) { case 1: system(“cls”); findAll(); break; case 2: system(“cls”); find_name(); break; case 3: system(“cls”); find_category(); break; case 0: system(“cls”); boss(); break; default: system(“cls”); errors(); getch(); system(“cls”); itemSelect(); break; }}
/*查询所有商品信息*/
void findAll(){ int i; printf(“nntt商品信息如下:nn”); FILE * fp=fopen(“information.txt”,”r+”); if(fp==NULL) { printf(“打开文件错误!n”); exit(0); } for(i=0;i<N;i++){ fscanf(fp,”%s%s%d%d%d%d%d”,item[i].name,item[i].category,&item[i].inPrice,&item[i].outPrice,&item[i].num, &item[i].upperNum,&item[i].lowerNum); if(item[i].outPrice!=0){ printf(“tt————————–n”); printf(“tt| 商品的名称: %s n”,item[i].name); printf(“tt| 商品的种类: %s n”,item[i].category); printf(“tt| 商品的进价: %d n”,item[i].inPrice); printf(“tt| 商品的售价: %d n”,item[i].outPrice); printf(“tt| 商品的数量: %d n”,item[i].num); printf(“tt| 商品的库存上限:%d n”,item[i].upperNum); printf(“tt| 商品的库存下限:%d n”,item[i].lowerNum); printf(“tt————————–nn”); } } fclose(fp); printf(“nn商品信息已查询,按任意键继续!”); getch(); system(“cls”); itemSelect();}/*按名称查询商品*/void find_name(){ int i; char thingName[20]; printf(“nntt请输入商品名称:”); fflush(stdin); scanf(“%s”,thingName); printf(“商品信息如下:nn”); FILE * fp=fopen(“information.txt”,”r+”); if(fp==NULL) { printf(“打开文件错误!n”); exit(0); } for(i=0;i<N;i++){ fscanf(fp,”%s%s%d%d%d%d%d”,item[i].name,item[i].category,&item[i].inPrice,&item[i].outPrice,&item[i].num, &item[i].upperNum,&item[i].lowerNum); if((item[i].outPrice!=0)&&(strcmp(thingName,item[i].name)==0)){ printf(“tt————————–n”); printf(“tt| 商品的名称: %s n”,item[i].name); printf(“tt| 商品的种类: %s n”,item[i].category); printf(“tt| 商品的进价: %d n”,item[i].inPrice); printf(“tt| 商品的售价: %d n”,item[i].outPrice); printf(“tt| 商品的数量: %d n”,item[i].num); printf(“tt| 商品的库存上限:%d n”,item[i].upperNum); printf(“tt| 商品的库存下限:%d n”,item[i].lowerNum); printf(“tt————————–nn”); } } fclose(fp); printf(“nn商品信息已查询,按任意键继续!”); getch(); system(“cls”); itemSelect();}?
/*按商品类别查询商品*/
void find_category(){ int i; char thingClass[20]; printf(“nn请输入商品种类:”); fflush(stdin); scanf(“%s”,thingClass); FILE * fp; if((fp=fopen(“information.txt”,”r+”))==NULL) { printf(“cannot open filen”); exit(0); } for(i=0;i<N;i++) { fscanf(fp,”%s%s%d%d%d%d%d”,item[i].name,item[i].category,&item[i].inPrice,&item[i].outPrice, &item[i].num,&item[i].upperNum,&item[i].lowerNum); if((item[i].outPrice!=0)&&(strcmp(item[i].category,thingClass)==0)){ printf(“tt————————–n”); printf(“tt| 商品的名称: %s n”,item[i].name); printf(“tt| 商品的种类: %s n”,item[i].category); printf(“tt| 商品的进价: %d n”,item[i].inPrice); printf(“tt| 商品的售价: %d n”,item[i].outPrice); printf(“tt| 商品的数量: %d n”,item[i].num); printf(“tt| 商品的库存上限:%d n”,item[i].upperNum); printf(“tt| 商品的库存下限:%d n”,item[i].lowerNum); printf(“tt————————–nn”); } } fclose(fp); printf(“nn商品信息已查询,按任意键继续!”); getch(); system(“cls”); itemSelect();}
/*修改商品信息的界面*/
void itemUpdate(){ int choose; printf(“nnntt请选择您的操作:[0-2]nn”); printf(“tt1.修改商品售价nn”); printf(“tt2.修改商品库存上限nn”); printf(“tt3.修改商品库存下限nn”); printf(“tt0.返回上一层nn”); fflush(stdin); scanf(“%d”,&choose); switch(choose){ case 1: system(“cls”); updateOutPrice(); break; case 2: system(“cls”); updateUpperNum(); break; case 3: system(“cls”); updateLowerNum(); break; case 0: system(“cls”); boss(); break; default: system(“cls”); errors(); getch(); boss(); }}
/*修改商品售价*/
void updateOutPrice(){ char thing[20]; int i,price; printf(“nnntt请输入要修改商品的名称:ntt”); fflush(stdin); scanf(“%s”,thing); printf(“tt请输入修改后的售价:ntt”); fflush(stdin); scanf(“%d”,&price); FILE * fp=fopen(“information.txt”,”r+”); if(fp==NULL){ printf(“读取文件错误!”); exit(0); } for(i=0;i<N;i++){ fscanf(fp,”%s%s%d%d%d%d%d”,item[i].name,item[i].category,&item[i].inPrice,&item[i].outPrice, &item[i].num,&item[i].upperNum,&item[i].lowerNum); if(strcmp(item[i].name,thing)==0){ item[i].outPrice=price; FILE * f=fopen(“information.txt”,”w”); if(f==NULL){ printf(“读取文件错误!”); exit(0); } for(i=0;i<N/2;i++){ fprintf(f,” %s %s %d %d %d %d %d”,item[i].name,item[i].category,item[i].inPrice,item[i].outPrice, item[i].num,item[i].upperNum,item[i].lowerNum); } fclose(f); } } fclose(fp);//关闭文件 printf(“nn商品信息已经修改,按任意键继续!”); getch(); system(“cls”); itemUpdate();}
/*修改商品库存上限*/
void updateUpperNum(){ char thing[20]; int i,upper; printf(“nnntt请输入要修改商品的名称:ntt”); fflush(stdin); scanf(“%s”,thing); printf(“tt请输入修改后的库存上限:ntt”); fflush(stdin); scanf(“%d”,&upper); FILE * fp=fopen(“information.txt”,”r+”); if(fp==NULL){ printf(“读取文件错误!”); exit(0); } for(i=0;i<N;i++){ fscanf(fp,”%s%s%d%d%d%d%d”,item[i].name,item[i].category,&item[i].inPrice,&item[i].outPrice, &item[i].num,&item[i].upperNum,&item[i].lowerNum); if(strcmp(item[i].name,thing)==0){ item[i].upperNum=upper; FILE * f=fopen(“information.txt”,”w”); if(f==NULL){ printf(“读取文件错误!”); exit(0); } for(i=0;i<N/2;i++){ fprintf(f,” %s %s %d %d %d %d %d”,item[i].name,item[i].category,item[i].inPrice,item[i].outPrice, item[i].num,item[i].upperNum,item[i].lowerNum); } fclose(f); } } fclose(fp); printf(“nn商品信息已经修改,按任意键继续!”); getch(); system(“cls”); itemUpdate();}
/*修改商品库存下限*/
void updateLowerNum(){ char thing[20]; int i,lower; printf(“nnntt请输入要修改商品的名称:ntt”); fflush(stdin); scanf(“%s”,thing); printf(“tt请输入修改后的库存下限:ntt”); fflush(stdin); scanf(“%d”,&lower); FILE * fp=fopen(“information.txt”,”r+”); if(fp==NULL){ printf(“读取文件错误!”); exit(0); } for(i=0;i<N;i++){ fscanf(fp,”%s%s%d%d%d%d%d”,item[i].name,item[i].category,&item[i].inPrice,&item[i].outPrice, &item[i].num,&item[i].upperNum,&item[i].lowerNum); if(strcmp(item[i].name,thing)==0){ item[i].lowerNum=lower; FILE * f=fopen(“information.txt”,”w”); if(f==NULL){ printf(“读取文件错误!”); exit(0); } for(i=0;i<N/2;i++){ fprintf(f,” %s %s %d %d %d %d %d”,item[i].name,item[i].category,item[i].inPrice,item[i].outPrice, item[i].num,item[i].upperNum,item[i].lowerNum); } fclose(f); } } fclose(fp); printf(“nn商品信息已经修改,按任意键继续!”); getch(); system(“cls”); itemUpdate();}/*进入我是员工的操作权限*/void workers(){ printf(“nnntt请选择您的操作:[0-2]nn”); printf(“tt1.商品入库nn”); printf(“tt2.库存预警nn”); printf(“tt0.返回主菜单nn”); int choose; fflush(stdin); scanf(“%d”,&choose); switch(choose){ case 1: system(“cls”); inItem(); break; case 2: system(“cls”); numError(); break; case 0: mainMenu(); break; default: system(“cls”); errors(); getch(); system(“cls”); workers(); break; }}void inItem(){//商品入库 /*int n=nn(); if(n>N-1){ printf(“商品信息已经达到上限!”); system(“pause”); return; }*/ int i,n=0; printf(“nnntt请依次输入商品信息!n”); printf(“tt********************n”); printf(“nnntt请输入商品名称:ntt”);fflush(stdin); scanf(“%s”,item[n].name); printf(“tt商品所属的种类:ntt”);fflush(stdin); scanf(“%s”,item[n].category); printf(“tt商品进价:ntt”);fflush(stdin); scanf(“%d”,&item[n].inPrice); printf(“tt商品售价:ntt”);fflush(stdin); scanf(“%d”,&item[n].outPrice); printf(“tt商品数量:ntt”);fflush(stdin); scanf(“%d”,&item[n].num); printf(“tt库存上限:ntt”);fflush(stdin); scanf(“%d”,&item[n].upperNum); printf(“tt库存下限:ntt”);fflush(stdin); scanf(“%d”,&item[n].lowerNum); n=n+1;/* FILE * f=fopen(“n.txt”,”w”); if(f==NULL){ printf(“打开文件错误!”); exit(0); } fprintf(f,”%d”,n); fclose(f);*/ printf(“nntt入库商品信息如下:n”); printf(“tt——————-n”); printf(“tt|商品名称:%sn”,item[n-1].name); printf(“tt|商品所属种类:%sn”,item[n-1].category); printf(“tt|商品进价:%dn”,item[n-1].inPrice); printf(“tt|商品售价:%dn”,item[n-1].outPrice); printf(“tt|商品数量:%dn”,item[n-1].num); printf(“tt|商品上限:%dn”,item[n-1].upperNum); printf(“tt|商品下限:%dn”,item[n-1].lowerNum); printf(“tt——————–n”); FILE * fp; fp=fopen(“information.txt”,”a”); if(fp==NULL){ printf(“打开文件失败!”); exit(0); }//将商品信息存入文件 fprintf(fp,” %s %s %d %d %d %d %d”,item[n-1].name,item[n-1].category,item[n-1].inPrice,item[n-1].outPrice,item[n-1].num, item[n-1].upperNum,item[n-1].lowerNum); fclose(fp); printf(“nn商品信息已经录入,按任意键继续!”); getch(); system(“cls”); workers();}
/*商品库存预警*/
void numError(){ int i; FILE * fp=fopen(“information.txt”,”r”); if(fp==NULL){ printf(“读取文件错误!”); exit(0); } printf(“ntt下面是库存预警的商品,请尽快进货:nnn”); for(i=0;i<N;i++){ fscanf(fp,”%s%s%d%d%d%d%d”,item[i].name,item[i].category,&item[i].inPrice,&item[i].outPrice, &item[i].num,&item[i].upperNum,&item[i].lowerNum); if((item[i].outPrice!=0)&&item[i].num<item[i].lowerNum){ printf(“tt———————-n”); printf(“tt|商品名称:%sn”,item[i].name); printf(“tt|商品所属种类:%sn”,item[i].category); printf(“tt|商品进价:%dn”,item[i].inPrice); printf(“tt|商品售价:%dn”,item[i].outPrice); printf(“tt|商品数量:%dn”,item[i].num); printf(“tt|商品上限:%dn”,item[i].upperNum); printf(“tt|商品下限:%dn”,item[i].lowerNum); printf(“tt———————-nn”); } } printf(“ntt按任意键继续!”); getch(); system(“cls”); workers();}void customer(){ system(“cls”); int a; printf(“nnn”); printf(“tt***************************************** n”); printf(“tt** ** n”); printf(“tt** **欢迎来到客户页面** ** n”); printf(“tt** ** n”); printf(“tt***************************************** n”); printf(“tt**************请选择操作[1-3]************ n”); printf(“tt***************************************** n”); printf(“tt** ** n”); printf(“tt** ①查询商品 ** n”); printf(“tt** ②购买 ** n”); printf(“tt** ③主菜单 ** n”); printf(“tt** ** n”); printf(“tt** ** n”); printf(“tt***************************************** n”); printf(“n”); printf(“请选择您要的服务:”); fflush(stdin);//清除缓存 scanf(“%d”,&a); switch(a) { case 1: system(“cls”); selectItem(); break; case 2: system(“cls”); buyItem(); break; case 3: system(“cls”); mainMenu(); break; default: system(“cls”); errors(); getch(); customer(); break;
} }
void loginMain(){ int i; printf(“nnnnn”); printf(“ttttt★*************************************★ n”); printf(“ttttt★ ★ n”); printf(“ttttt★ ①登录 ★ n”); printf(“ttttt★ ②注册 ★ n”); printf(“ttttt★ ③退出 ★ n”); printf(“ttttt★ ★ n”); printf(“ttttt★******★**********★*********★******★ n”); printf(“nn”); printf(“请选择您想要的服务:”); fflush(stdin); scanf(“%d”,&i);/*清理缓存*/ switch(i){ case 1: system(“cls”);/*清屏*/ login(); break; case 2: system(“cls”); registe(); break; case 3: system(“cls”); leave(); break; default : system(“cls”); errors1(); getch(); break; }
}void registe(){int i,n=0; printf(“tt********************n”); printf(“tt欢迎您注册n”); printf(“ntt请输入昵称:ntt”);fflush(stdin); scanf(“%s”,user[n].id); printf(“tt请设置账号密码:ntt”);fflush(stdin); scanf(“%s”,user[n].pass);
printf(“nntt注册信息如下:n”); printf(“tt——————-n”); printf(“tt|您的账号昵称:%sn”,user[n].id); printf(“tt|您的密码:%sn”,user[n].pass); printf(“tt——————–n”); FILE * fp; fp=fopen(“user.txt”,”a”); if(fp==NULL){ printf(“打开文件失败!”); exit(0); }//将商品信息存入文件 fprintf(fp,” %s %s “,user[n].id,user[n].pass); fclose(fp); printf(“nn恭喜注册成功,按任意键返回登录页面!”);&nbs