C超市商品信息查询系统
一、系统界面介绍
1. 超市商品信息查询系统
1、显示商品信息,包括:商品名称、商品种类(休闲食品、奶品水饮、生鲜水果)、商品价格、商品保质期、商品生产日期;
2、从文件中导入数据、显示、排序、查询的功能。(由于顾客没有更改信息的需要所以没设置修改、添加等功能,注:必须先导入数据);
3、系统提供按照不同方式查询的功能,如按照商品名称或类型查询;
4、系统能将商品信息排序之后顺序输出(排序可以有多种选择);
2.超市商品信息管理系统
1、显示商品信息(同查询系统)
2、首先输入密码,若输入错误3次则退出系统。密码存储在文件中并可在进入系统后修改密码(密码为字符串)
3、从文件中导入数据、显示、添加、修改、删除、查询、排序、导出、修改密码;(注:必须先导入)
4.信息显示
5.信息添加:
6.信息删除:
7.信息修改(按名称):
8.信息查询(可根据不同需要进行不同查询):
9.信息排序(可按需要排序):
10.修改登录密码(若两次输入新密码不相同则返回主界面,修改成功后密码保存至文件中):
11.退出系统
二、程序源代码介绍:
1.源代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
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;}elseprintf("\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;}elseprintf("\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;}}elseprintf("\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 文档、完整代码、程序资源