大家好,我是阿闲。
这是我发表的第一篇文章,这也是我大二时所写的作业。这个超市管理系统勉强可以说过得去了。但是还是有bug,但是不影响整体使用,bug已经改到最小了也不想改了。
全程用CodeBlock写的,在这软件也是能完美运行。不要用VC打开,可能会报错。
下面看看几张效果图
开始分享代码
就四个文件
记得创建两个txt文件
1、头文件
hearder.h
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
#include
#include
#include
#include
#include
#include
#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("\n\n\n");
printf("\t\t★******★**********★*********★******★ \n");
printf("\t\t★ ★ \n");
printf("\t\t★ ★超市管理系统★ ★ \n");
printf("\t\t★ ★ \n");
printf("\t\t★*************************************★ \n");
printf("\t\t★**********★请选择操作[1-5]**********★ \n");
printf("\t\t★*************************************★ \n");
printf("\t\t★ ★ \n");
printf("\t\t★ ①我是老板 ★ \n");
printf("\t\t★ ②我是员工 ★ \n");
printf("\t\t★ ③我是客户 ★ \n");
printf("\t\t★ ④系统颜色 ★ \n");
printf("\t\t★ ⑤退出系统 ★ \n");
printf("\t\t★ ★ \n");
printf("\t\t★******★**********★*********★******★ \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("\n\n\n\t\t******这里是老板页面*******\n\n\n\n");
printf("\t\t 1.商品信息查询 \n\n");
printf("\t\t 2.商品信息修改 \n\n");
printf("\t\t 0.返回主页面 \n\n");
printf("\t\t 请输入您的选项[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("\n\n\t\t 请选择操作 \n\n");
printf("\n\n\t\t 1.查询所有商品信息 \n");
printf("\n\n\t\t 2.按名称查询商品信息 \n");
printf("\n\n\t\t 3.按所属种类查询商品信息 \n");
printf("\n\n\t\t 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("\n\n\t\t商品信息如下:\n\n");
FILE * fp=fopen("information.txt","r+");
if(fp==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
for(i=0;i
&item[i].upperNum,&item[i].lowerNum);
if(item[i].outPrice!=0){
printf("\t\t--------------------------\n");
printf("\t\t| 商品的名称: %s \n",item[i].name);
printf("\t\t| 商品的种类: %s \n",item[i].category);
printf("\t\t| 商品的进价: %d \n",item[i].inPrice);
printf("\t\t| 商品的售价: %d \n",item[i].outPrice);
printf("\t\t| 商品的数量: %d \n",item[i].num);
printf("\t\t| 商品的库存上限:%d \n",item[i].upperNum);
printf("\t\t| 商品的库存下限:%d \n",item[i].lowerNum);
printf("\t\t--------------------------\n\n");
}
}
fclose(fp);
printf("\n\n商品信息已查询,按任意键继续!");
getch();
system("cls");
itemSelect();
}
/*按名称查询商品*/
void find_name()
{
int i;
char thingName[20];
printf("\n\n\t\t请输入商品名称:");
fflush(stdin);
scanf("%s",thingName);
printf("商品信息如下:\n\n");
FILE * fp=fopen("information.txt","r+");
if(fp==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
for(i=0;i
&item[i].upperNum,&item[i].lowerNum);
if((item[i].outPrice!=0)&&(strcmp(thingName,item[i].name)==0)){
printf("\t\t--------------------------\n");
printf("\t\t| 商品的名称: %s \n",item[i].name);
printf("\t\t| 商品的种类: %s \n",item[i].category);
printf("\t\t| 商品的进价: %d \n",item[i].inPrice);
printf("\t\t| 商品的售价: %d \n",item[i].outPrice);
printf("\t\t| 商品的数量: %d \n",item[i].num);
printf("\t\t| 商品的库存上限:%d \n",item[i].upperNum);
printf("\t\t| 商品的库存下限:%d \n",item[i].lowerNum);
printf("\t\t--------------------------\n\n");
}
}
fclose(fp);
printf("\n\n商品信息已查询,按任意键继续!");
getch();
system("cls");
itemSelect();
}
/*按商品类别查询商品*/
void find_category()
{
int i;
char thingClass[20];
printf("\n\n请输入商品种类:");
fflush(stdin);
scanf("%s",thingClass);
FILE * fp;
if((fp=fopen("information.txt","r+"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
for(i=0;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("\t\t--------------------------\n");
printf("\t\t| 商品的名称: %s \n",item[i].name);
printf("\t\t| 商品的种类: %s \n",item[i].category);
printf("\t\t| 商品的进价: %d \n",item[i].inPrice);
printf("\t\t| 商品的售价: %d \n",item[i].outPrice);
printf("\t\t| 商品的数量: %d \n",item[i].num);
printf("\t\t| 商品的库存上限:%d \n",item[i].upperNum);
printf("\t\t| 商品的库存下限:%d \n",item[i].lowerNum);
printf("\t\t--------------------------\n\n");
}
}
fclose(fp);
printf("\n\n商品信息已查询,按任意键继续!");
getch();
system("cls");
itemSelect();
}
/*修改商品信息的界面*/
void itemUpdate(){
int choose;
printf("\n\n\n\t\t请选择您的操作:[0-2]\n\n");
printf("\t\t1.修改商品售价\n\n");
printf("\t\t2.修改商品库存上限\n\n");
printf("\t\t3.修改商品库存下限\n\n");
printf("\t\t0.返回上一层\n\n");
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("\n\n\n\t\t请输入要修改商品的名称:\n\t\t");
fflush(stdin);
scanf("%s",thing);
printf("\t\t请输入修改后的售价:\n\t\t");
fflush(stdin);
scanf("%d",&price);
FILE * fp=fopen("information.txt","r+");
if(fp==NULL){
printf("读取文件错误!");
exit(0);
}
for(i=0;i
&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
item[i].num,item[i].upperNum,item[i].lowerNum);
}
fclose(f);
}
}
fclose(fp);//关闭文件
printf("\n\n商品信息已经修改,按任意键继续!");
getch();
system("cls");
itemUpdate();
}
/*修改商品库存上限*/
void updateUpperNum(){
char thing[20];
int i,upper;
printf("\n\n\n\t\t请输入要修改商品的名称:\n\t\t");
fflush(stdin);
scanf("%s",thing);
printf("\t\t请输入修改后的库存上限:\n\t\t");
fflush(stdin);
scanf("%d",&upper);
FILE * fp=fopen("information.txt","r+");
if(fp==NULL){
printf("读取文件错误!");
exit(0);
}
for(i=0;i
&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
item[i].num,item[i].upperNum,item[i].lowerNum);
}
fclose(f);
}
}
fclose(fp);
printf("\n\n商品信息已经修改,按任意键继续!");
getch();
system("cls");
itemUpdate();
}
/*修改商品库存下限*/
void updateLowerNum(){
char thing[20];
int i,lower;
printf("\n\n\n\t\t请输入要修改商品的名称:\n\t\t");
fflush(stdin);
scanf("%s",thing);
printf("\t\t请输入修改后的库存下限:\n\t\t");
fflush(stdin);
scanf("%d",&lower);
FILE * fp=fopen("information.txt","r+");
if(fp==NULL){
printf("读取文件错误!");
exit(0);
}
for(i=0;i
&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
item[i].num,item[i].upperNum,item[i].lowerNum);
}
fclose(f);
}
}
fclose(fp);
printf("\n\n商品信息已经修改,按任意键继续!");
getch();
system("cls");
itemUpdate();
}
/*进入我是员工的操作权限*/
void workers(){
printf("\n\n\n\t\t请选择您的操作:[0-2]\n\n");
printf("\t\t1.商品入库\n\n");
printf("\t\t2.库存预警\n\n");
printf("\t\t0.返回主菜单\n\n");
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("\n\n\n\t\t请依次输入商品信息!\n");
printf("\t\t********************\n");
printf("\n\n\n\t\t请输入商品名称:\n\t\t");fflush(stdin);
scanf("%s",item[n].name);
printf("\t\t商品所属的种类:\n\t\t");fflush(stdin);
scanf("%s",item[n].category);
printf("\t\t商品进价:\n\t\t");fflush(stdin);
scanf("%d",&item[n].inPrice);
printf("\t\t商品售价:\n\t\t");fflush(stdin);
scanf("%d",&item[n].outPrice);
printf("\t\t商品数量:\n\t\t");fflush(stdin);
scanf("%d",&item[n].num);
printf("\t\t库存上限:\n\t\t");fflush(stdin);
scanf("%d",&item[n].upperNum);
printf("\t\t库存下限:\n\t\t");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("\n\n\t\t入库商品信息如下:\n");
printf("\t\t-------------------\n");
printf("\t\t|商品名称:%s\n",item[n-1].name);
printf("\t\t|商品所属种类:%s\n",item[n-1].category);
printf("\t\t|商品进价:%d\n",item[n-1].inPrice);
printf("\t\t|商品售价:%d\n",item[n-1].outPrice);
printf("\t\t|商品数量:%d\n",item[n-1].num);
printf("\t\t|商品上限:%d\n",item[n-1].upperNum);
printf("\t\t|商品下限:%d\n",item[n-1].lowerNum);
printf("\t\t--------------------\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("\n\n商品信息已经录入,按任意键继续!");
getch();
system("cls");
workers();
}
/*商品库存预警*/
void numError(){
int i;
FILE * fp=fopen("information.txt","r");
if(fp==NULL){
printf("读取文件错误!");
exit(0);
}
printf("\n\t\t下面是库存预警的商品,请尽快进货:\n\n\n");
for(i=0;i
&item[i].num,&item[i].upperNum,&item[i].lowerNum);
if((item[i].outPrice!=0)&&item[i].num
printf("\t\t|商品名称:%s\n",item[i].name);
printf("\t\t|商品所属种类:%s\n",item[i].category);
printf("\t\t|商品进价:%d\n",item[i].inPrice);
printf("\t\t|商品售价:%d\n",item[i].outPrice);
printf("\t\t|商品数量:%d\n",item[i].num);
printf("\t\t|商品上限:%d\n",item[i].upperNum);
printf("\t\t|商品下限:%d\n",item[i].lowerNum);
printf("\t\t----------------------\n\n");
}
}
printf("\n\t\t按任意键继续!");
getch();
system("cls");
workers();
}
void customer()
{
system("cls");
int a;
printf("\n\n\n");
printf("\t\t***************************************** \n");
printf("\t\t** ** \n");
printf("\t\t** **欢迎来到客户页面** ** \n");
printf("\t\t** ** \n");
printf("\t\t***************************************** \n");
printf("\t\t**************请选择操作[1-3]************ \n");
printf("\t\t***************************************** \n");
printf("\t\t** ** \n");
printf("\t\t** ①查询商品 ** \n");
printf("\t\t** ②购买 ** \n");
printf("\t\t** ③主菜单 ** \n");
printf("\t\t** ** \n");
printf("\t\t** ** \n");
printf("\t\t***************************************** \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("\n\n\n\n\n");
printf("\t\t\t\t\t★*************************************★ \n");
printf("\t\t\t\t\t★ ★ \n");
printf("\t\t\t\t\t★ ①登录 ★ \n");
printf("\t\t\t\t\t★ ②注册 ★ \n");
printf("\t\t\t\t\t★ ③退出 ★ \n");
printf("\t\t\t\t\t★ ★ \n");
printf("\t\t\t\t\t★******★**********★*********★******★ \n");
printf("\n\n");
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("\t\t********************\n");
printf("\t\t欢迎您注册\n");
printf("\n\t\t请输入昵称:\n\t\t");fflush(stdin);
scanf("%s",user[n].id);
printf("\t\t请设置账号密码:\n\t\t");fflush(stdin);
scanf("%s",user[n].pass);
printf("\n\n\t\t注册信息如下:\n");
printf("\t\t-------------------\n");
printf("\t\t|您的账号昵称:%s\n",user[n].id);
printf("\t\t|您的密码:%s\n",user[n].pass);
printf("\t\t--------------------\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("\n\n恭喜注册成功,按任意键返回登录页面!");
getch();
system("cls");
login();
}
void login()
{
int i;
char thingName[20];
char password[20];
printf("\n\n----------欢迎您登录!----------\n\n");
printf("请输入账号昵称:\n");
printf("\n");
fflush(stdin);
scanf("%s",thingName);
printf("请输入账号密码:\n");
fflush(stdin);
scanf("%s",password);
FILE * fp=fopen("user.txt","r+");
if(fp==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
for(i=0;i
if((strcmp(password,user[i].pass)==0)&&(strcmp(thingName,user[i].id)==0)){
printf("\t\t---------------------------------\n");
printf("\t\t| 恭喜登录成功! |\n");
printf("\t\t| %s欢迎您到来,祝您购物愉快!|\n",user[i].id);
printf("\t\t---------------------------------\n\n");
fclose(fp);
printf("\n\n登录成功,请按任意键进入购买页面!");
getch();
system("cls");
customer();
}
}
if((strcmp(password,user[i].pass)!=0)&&(strcmp(thingName,user[i].id)!=0))
{
printf("您输入的账号或密码错误,请按任意键返回!\n");
getch();
system("cls");
loginMain();
}
}
/**客户查询函数**/
void selectItem()
{
int i;
FILE * fp; //文件指针
char ch;
fp=fopen("information.txt","r");//打开文件
for(i=0;i
&item[i].upperNum,&item[i].lowerNum);
if(item[i].outPrice!=0){
printf("\t\t--------------------------\n");
printf("\t\t| 商品的名称: %s \n",item[i].name);
printf("\t\t| 商品的种类: %s \n",item[i].category);
printf("\t\t| 商品的售价: %d \n",item[i].outPrice);
printf("\t\t| 商品的数量: %d \n",item[i].num);
printf("\t\t--------------------------\n\n");
}
}
fclose(fp);
printf("\n\n商品信息已查询,按任意键继续!");
getch();
system("cls");
customer();
}
/**购买函数**/
void buyItem()
{
int price;
char name[20];
FILE *fp;//定义文件指针
int i;
printf("请输入商品名字:\n");
fflush(stdin);
scanf("%s",name);
fp=fopen("information.txt","r");//打开文件information.txt
for(i=0;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].name,name)==0))
{
printf("------------------------------------------\n");
printf("商品名字是:%s\n",item[i].name);
printf("商品种类是:%s\n",item[i].category);
printf("商品数量是:%d\n",item[i].num);
printf("商品销售价格是:%d\n",item[i].outPrice);
printf("------------------------------------------\n");
price=item[i].outPrice;
item[i].num-=1;
FILE * f=fopen("information.txt","w");
if(f==NULL){
printf("打开文件出错!");
exit(0);
}
for(i=0;i
item[i].upperNum,item[i].lowerNum);
}
fclose(f);
}
}
fclose(fp);//关闭文件
printf("\n您购买商品的价格为:%d\n",price);
printf("\n\n商品信息已查询,按任意键继续!");
getch();
system("cls");
customer();
}
/*控制系统颜色函数*/
void colourful(){
system("cls");
int choose1;
char choose2;
printf("\n\n\t\t请选择你的配色方案![0-5]");
printf("\n\n\t\t*******1.红底黑字");
printf("\n\n\t\t*******2.白底黑字");
printf("\n\n\t\t*******3.黑底红字");
printf("\n\n\t\t*******4.绿底蓝字");
printf("\n\n\t\t*******5.黄底紫字");
printf("\n\n\t\t*******0.回主菜单");
fflush(stdin);
scanf("%d",&choose1);
switch(choose1){
case 1:
system("color c0");break;//红底黑字
case 2:
system("color f0");break;//白底黑字
case 3:
system("color 0c");break;//黑底红字
case 4:
system("color b1");break;//绿底蓝字
case 5:
system("color e5");break;//黄底紫字
case 0:
mainMenu();
default:
system("cls");errors();getch();
mainMenu();
}
printf("\n选择的颜色您还满意吗?(y/Y返回主菜单n/N继续选择)");
fflush(stdin);
scanf("%c",&choose2);
if(choose2=='Y'||choose2=='y'){
system("cls");
mainMenu();
}
else{
system("cls");
colourful();
}
}
/*错误函数*/
void errors(){
printf("\n\n\n\n\n\t\t|\t\t选择错误!请重新选择\t\t|\n");
printf("\n\n\n\t\t\t 请输入任意键返回上一级菜单\n");
}
void errors1()
{
printf("非法输入,请按任意键返回登录或注册!\n");
getch();
system("cls");
loginMain();
}
/*离开函数*/
void leave(){
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t|--------感谢使用,再见!------|\t\n\n\n\n\n");
exit(0);
}
好了分享完了,希望有用得上的。
如果对软件啊、资源、教程感兴趣的话可以关注我的微信公众号:吾优