超市管理系统(C语言写的简单的超市管理系统)

超市管理系统
大家好,我是阿闲!

今天突然找到了,大二时所写的作业,一眨眼好多年过去了。

简单用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


为您推荐