C超市商品信息查询系统

一、系统界面介绍

1. 超市商品信息查询系统

1、显示商品信息,包括:商品名称、商品种类(休闲食品、奶品水饮、生鲜水果)、商品价格、商品保质期、商品生产日期;
C超市商品信息查询系统_第1张图片

2、从文件中导入数据、显示、排序、查询的功能。(由于顾客没有更改信息的需要所以没设置修改、添加等功能,注:必须先导入数据);
C超市商品信息查询系统_第2张图片

3、系统提供按照不同方式查询的功能,如按照商品名称或类型查询;
C超市商品信息查询系统_第3张图片

4、系统能将商品信息排序之后顺序输出(排序可以有多种选择);
C超市商品信息查询系统_第4张图片

2.超市商品信息管理系统

1、显示商品信息(同查询系统)
2、首先输入密码,若输入错误3次则退出系统。密码存储在文件中并可在进入系统后修改密码(密码为字符串)
C超市商品信息查询系统_第5张图片

3、从文件中导入数据、显示、添加、修改、删除、查询、排序、导出、修改密码;(注:必须先导入)
C超市商品信息查询系统_第6张图片

4.信息显示

C超市商品信息查询系统_第7张图片

5.信息添加:

C超市商品信息查询系统_第8张图片

6.信息删除:

C超市商品信息查询系统_第9张图片

7.信息修改(按名称):

C超市商品信息查询系统_第10张图片

8.信息查询(可根据不同需要进行不同查询):

C超市商品信息查询系统_第11张图片

9.信息排序(可按需要排序):

C超市商品信息查询系统_第12张图片

10.修改登录密码(若两次输入新密码不相同则返回主界面,修改成功后密码保存至文件中):

C超市商品信息查询系统_第13张图片

11.退出系统

C超市商品信息查询系统_第14张图片

二、程序源代码介绍:

1.源代码

#include
#include
#include
#include
typedef struct _goods//商品结构体
    {
       char name[20];
       int category;
       float prize;
       int shelf_life;
       char time[15];
    }goods;
    goods b[20];

int N;
int switch_num;
int return_num;
char password1[20];
int num_star;


    int input(goods b[],int N);//从系统中导入数据
    void display(goods b[],int N);//显示信息
    void change(goods b[],int N);//修改信息
    void _search(goods b[],int N);//查找信息
    int  _insert(goods b[],int N);//添加信息
    int  _delete(goods b[],int N);//删除信息
    void _sort(goods b[],int N);//排序信息
    void save(goods b[],int N);//保存信息
    void menu_customer();//顾客系统界面
    void menu_manager();//管理员系统界面
    void system_manager();//顾客系统
    void password();//密码函数
    void modify_password();//更改密码函数

    //导入函数已完善
    int input(goods b[],int N)
    {
        N=0;
        FILE *fp;//打开文件
        fp=fopen("data.txt","r+");
        if(fp==NULL)//判断文件是否为空
        {
              printf("can't open this file");
              exit(0);
        }
        while(!feof(fp))//导入
        {
             fscanf(fp,"%s%d%f%d%s",b[N].name,&b[N].category,&b[N].prize,&b[N].shelf_life,b[N].time);
             N++;

        }
        Sleep(100);
        printf("恭");
        Sleep(50);
        printf("喜");
        Sleep(50);
        printf("您");
        Sleep(50);
        printf("导");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("成");
        Sleep(50);
        printf("功");
        Sleep(50);
        fclose(fp);

        return N-1;//商品数目
     }

    //显示函数已完善
     void display(goods b[],int N)
     {
        int i;
        for(num_star=0;num_star<18;num_star++)//显示*符号
        {
            printf("*");
            Sleep(5);
        }
        printf("商");
        Sleep(50);
        printf("品");
        Sleep(50);
        printf("信");
        Sleep(50);
        printf("息");
        Sleep(50);
        printf("如");
        Sleep(50);
        printf("下");
        Sleep(50);
        for(num_star=0;num_star<18;num_star++){
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
        printf("商品名称          类别  价格    保质期  生产日期\n");
        for(i=0;i<N;i++){
        printf("%-8s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);//显示信息
        }
        printf("\n【注;类别1.休闲食品    2.奶品水饮   3.生鲜水果】\n\n");
        for(num_star=0;num_star<48;num_star++)//显示*符号
        {
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
        printf("按1后回车返回");
        scanf("%d",&return_num);
        if(return_num==1)//返回主界面
        {
            system("cls");
            return;
        }


     }
     //修改函数已完善
     void change(goods b[],int N)
     {
        int i,n;
        char a[10];
        for(num_star=0;num_star<18;num_star++)
        {
            printf("*");
            Sleep(10);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("修");
        Sleep(50);
        printf("改");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<18;num_star++){
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
        printf("-1-请输入需要修改的商品的名称\n   ");//需要修改的名称
        loop:
        scanf("%s",a);
        for(i=0;i<N;i++)//比较是哪个商品
        {
            if(!strcmp(b[i].name,a))
                break;
        }
        if(i==N)
        {
            printf("\n-1-对不起找不到该商品,请重新输入\n   ");
            goto loop;
        }
        else
            printf("\n-2-您需要的修改的商品信息如下:\n   (1)商品名称(2)类别 (3)价格  (4)保质期 (5)生产日期\n   %-9s\t%-3d\t%.2f\t%5d\t%10s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);//输出并左右对齐
            printf("\n-3-请输入需要修改的商品信息编号\n   ");
            loop2:
            scanf("%d",&n);
            switch(n)//选择修改什么信息
            {
            case 1:
                printf("\n-4-请输入该商品的名称\n   ");
                scanf("%s",b[i].name);
                break;
            case 2:
                printf("\n-4-请选择商品类别*1.休闲食品2.奶品水饮3.生鲜水果\n   ");
                scanf("%d",&b[i].category);
                break;
            case 3:
                printf("\n-4-请输入该商品的价格\n   ");
                scanf("%f",&b[i].prize);
                break;
            case 4:
                printf("\n-4-请输入该商品的保质期*按月计(即输入1-12之间的整数)\n   ");
                scanf("%d",&b[i].shelf_life);
                break;
            case 5:
                printf("\n-4-请输入该商品的生产日期*例如20170920\n   ");
                scanf("%s",b[i].time);
                break;
            default:
                printf("\n-3-你输入的信息有误请重新输入:\n   ");
                goto loop2;

            }
            printf("\n-5-修改成功\n\n");
            for(num_star=0;num_star<52;num_star++)
            {
                printf("*");
                Sleep(5);
            }
            printf("\n\n");
            printf("按1后回车返回");
            scanf("%d",&return_num);//返回主界面
            if(return_num==1)
            {
            system("cls");
            return;
            }
     }
     //搜索程序已完善
     void _search(goods b[],int N)
     {
        int i,n;
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("搜");
        Sleep(50);
        printf("索");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
           printf("-1-请输入需要查询的内容*1.按名称查询2.按类型查询\n   ");
           scanf("%d",&switch_num);
           switch(switch_num)//查询内容
           {
                case 1:
                    char a[10];
                    loop:
                    printf("\n-2-请输入需要查询的商品的名称:\n   ");
                    scanf("%s",a);
                    for(i=0;i<N;i++)//逐个比较商品名称
                    {
                        if(!strcmp(b[i].name,a))
                        {
                            break;
                        }

                    }
                    if(i==N)
                        {
                        printf("\n-2-对不起找不到该商品*1.返回主菜单2.继续查询\n   ");
                        scanf("%d",&switch_num);
                        if(switch_num==1)
                        {
                            goto loop7;
                        }
                        else goto loop;
                    }
                    else
                    {
                    printf("\n-3-您查询的商品信息如下:\n   商品名称       类别  价格    保质期  生产日期\n   %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
                    break;
                    }
                case 2:
                    int kind,_count=0;
                    printf("\n-2-请输入商品的类别*1.休闲食品2.奶品水饮3.生鲜水果\n   ");
                    loop3:
                    scanf("%d",&kind);
                    printf("\n-3-您查询的商品信息如下:\n   商品名称       类别  价格    保质期  生产日期\n");
                    for(i=0;i<N;i++)
                        {
                        if(b[i].category==kind)
                        {
                            printf("   %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
                            _count++;
                        }
                    }
                    if(_count==0)//记录类别商品的数量
                    {
                    Sleep(100);
                    printf("\n-3-对不起找不到该类别信息请重新输入\n   ");
                    goto loop3;
                    }

           }
                    loop7:
                    printf("\n");
                    for(num_star=0;num_star<50;num_star++)
                    {
                    printf("*");
                    Sleep(5);
                    }
                    printf("\n\n");
                    printf("按1后回车返回");
                    scanf("%d",&return_num);
                    if(return_num==1)
                    {
                    system("cls");
                    return;
                    }
     }
     //添加函数已完善
     int _insert(goods b[],int N)
     {
         int n,i=1,t;
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("添");
        Sleep(50);
        printf("加");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
         printf("\n\n-1-请输入需要添加的商品的个数:\n   ");
         scanf("%d",&n);
         t=n;
         while(n)
         {
            printf("\n-%d-输入第%d条商品信息:\n",i+1,i);
            printf("   1.名称:");scanf("%s",b[N+i-1].name);
            printf("\n   2.类别*1.休闲食品2.奶品水饮3.生鲜水果:");scanf("%d",&b[N+i-1].category);
            printf("\n   3.价格:");scanf("%f",&b[N+i-1].prize);
            printf("\n   4.保质期*按月计(即输入1-12之间的整数):");scanf("%d",&b[N+i-1].shelf_life);
            printf("\n   5.生产日期*例如20170920:");scanf("%s",b[N+i-1].time);
            n--;
            i++;
         }
         printf("\n-%d-添加成功\n\n",i+1);
         for(num_star=0;num_star<50;num_star++)
                    {
                    printf("*");
                    Sleep(10);
                    }
        printf("\n\n");
        printf("按1后回车返回");
        scanf("%d",&return_num);
        if(return_num==1)
        {
            system("cls");
            return N+t;
        }
     }
     //删除函数已完善
     int _delete(goods b[],int N)
     {
        int i,q;
        char c[10];
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("删");
        Sleep(50);
        printf("除");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(10);
        }
        printf("\n\n-1-请输入需要删除的商品的名称\n   ");
        loop4:
        scanf("%s",c);
        for(i=0;i<N;i++)//寻找商品信息
        {
            if(!strcmp(b[i].name,c))
                break;
        }
        if(i==N)
        {
            printf("\n-1-对不起找不到该商品,请重新输入\n   ");
            goto loop4;
        }
        else
            printf("\n-1-您删除的商品信息如下:\n   商品名称       类别  价格    保质期  生产日期\n   %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
            printf("\n-2-确认删除?*1.确认2.取消\n   ");
            loop5:
            scanf("%d",&q);
            if(q!=2&&q!=1)
            {
                printf("错误请重新输入");
                goto loop5;
            }
            else if(q==1)
            {
                while(i<N-1)
                {
                    b[i]=b[i+1];
                    i++;
                }
                printf("\n-3-删除成功\n\n");
            for(num_star=0;num_star<48;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
                printf("按1后回车返回");
                scanf("%d",&return_num);
                if(return_num==1)
        {
                system("cls");
                return N-1;
        }

            }
            else
            printf("\n");
            for(num_star=0;num_star<50;num_star++){
                printf("*");
                Sleep(5);
            }
            printf("\n\n\n");
            printf("按1后回车返回");
            scanf("%d",&return_num);
            if(return_num==1)
            {
            system("cls");
            return N;
            }


     }
     //保存信息已完善
     void save(goods b[],int N)
     {
            int i;
            FILE *point;
            point=fopen("data.txt","w");
            if(point==NULL)
            {
                printf("can't find the file");
                exit(0);
            }
            for(i=0;i<N;i++)
            fprintf(point,"%-8s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
            printf("恭");
            Sleep(50);
            printf("喜");
            Sleep(50);
            printf("您");
            Sleep(50);
            printf("导");
            Sleep(50);
            printf("入");
            Sleep(50);
            printf("成");
            Sleep(50);
            printf("功");
            Sleep(50);
            fclose(point);
     }
     //排序函数已完善
     void _sort(goods b[],int N)
     {
            goods temp;
            int n,i,j;
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("排");
        Sleep(50);
        printf("序");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(5);
        }
            printf("\n\n-1-请问您需要按什么排序【1价格        2生产日期】\n   ");//选择排序类型
            scanf("%d",&switch_num);
            switch(switch_num)
            {
            case 1:
                printf("\n-2-请选择排序类型【1.价格从高到低排序2.从低到高】\n   ");
                loop5:
                scanf("%d",&switch_num);
                if(switch_num==1)//降序排列
                    {
                    for(i=0;i<N-1;i++)
                    {
                        for(j=0;j<N-1-i;j++)
                        {
                            if(b[j].prize<b[j+1].prize)
                            {
                                    temp=b[j];
                                    b[j]=b[j+1];
                                    b[j+1]=temp;
                            }
                        }

                    }
                }
                else if(switch_num==2)//升序排列
                    {
                    for(i=0;i<N-1;i++)
                    {
                        for(j=0;j<N-1-i;j++)
                        {
                            if(b[j].prize>b[j+1].prize)
                            {
                                    temp=b[j];
                                    b[j]=b[j+1];
                                    b[j+1]=temp;
                            }
                        }
                    }
                }
                else{
                    printf("输入错误请重新输入:\n");
                    goto loop5;
                }
                break;


            case 2:
                {
                printf("\n-2-请选择排序类型【1.生产日期从早到晚2.从晚到早】\n   ");
                loop6:
                scanf("%d",&switch_num);
                if(switch_num==1)//升序排列
                    {
                    for(i=0;i<N-1;i++)
                    {
                        for(j=0;j<N-1-i;j++)
                        {
                            if(strcmp(b[j].time,b[j+1].time)>0)
                            {
                                    temp=b[j];
                                    b[j]=b[j+1];
                                    b[j+1]=temp;

                            }
                        }
                    }
                }

2.修改密码系统功能

我们参照日常生活中密码功能,密码为字符串,保存在password的文件中,若修改密码在管理员系统的修改密码程序下进行,修改过程中两次输入的新密码需一致才能成功,修改完成的密码保存在文件中。另外,我们将输入密码错误上限设为三次,输错三次自动退出系统,和现实生活很相似。

3.进入系统的渐进画面

简单的静态界面十分枯燥,所以我们用Sleep和system(“cls”)完成了进入系统的渐进画面。
Sleep(1000);
system(“cls”);
printf(“请稍等.”);
Sleep(200);
system(“cls”);
printf(“请稍等…”);
Sleep(200);
system(“cls”);
printf(“请稍等…”);
Sleep(700);
system(“cls”);
printf(“欢”);
Sleep(50);
printf(“迎”);
Sleep(50);
printf(“进”);
Sleep(50);
printf(“入”);
Sleep(50);
printf(“密”);
Sleep(50);
printf(“码”);
Sleep(50);
printf(“修”);
Sleep(50);
printf(“改”);
Sleep(50);
printf(“系”);
Sleep(50);
printf(“统”);
Sleep(50);

4.简洁明了的交互画面

我们在每个单独的功能界面通过序号的使用使界面更加简洁

我们在界面的顶部和底部都使用了大量的*使得界面凸显出强烈的层次感,也给使用者更加舒适的使用环境。

五、联系与交流

q:969060742 文档、完整代码、程序资源

你可能感兴趣的:(C语言课设,c语言,java,算法)