赞
踩
该案例使用了C语言中最具特色的结构体,将每个商品的所有信息存在结构体中,并且定义一个结构体类型的数组保存所有商品的信息,并且按照模块化的编程思想,将要实现的每个功能编写成独立的函数,这样即方便阅读同时也方便差错修改。
- //#include "stdafx.h"
- #include"stdlib.h"
- #include"stdio.h"
-
- #include"string.h"
- #include"conio.h"
- #define Pquantity 3
- #define MAX 1000
- #define N 5
- int k=0;
- //结构体
- typedef struct
- { int Good_num;/*编号*/
- char Good_name[20];/*商品名*/
- char Good_author[20];/*生产商*/
- char press[20];/*产地*/
- float Good_price;/*价格*/
- int Good_quantity;/*数量*/
-
-
- }Good;
-
- int Read(Good stu[])
- { FILE *fp;
- int i=0;
- if((fp=fopen("stu.txt","rt"))==NULL)
- {printf("\n\n—————文件不存在!请手动创建");
- return 0;
- }
- while(feof(fp)!=1)
- {
- fread(&stu[i],sizeof(Good),1,fp);
- if(stu[i].Good_num==0)
- break;
- else
- i++;
- }
- fclose(fp);
- return i;
- }
- void SAVE_INFO(Good stu[],int sum) // 将结构体数组中的商品信息保存到文件中
- {FILE*fp;
- int i;
- if((fp=fopen("stu.txt","wb"))==NULL) // 打开文件
- {printf("写文件错误!\n");
- return;
- }
- for(i=0;i<sum;i++) // 将结构体数组中的每个结构体都写入到文件中
- if(fwrite(&stu[i],sizeof(Good),1,fp)!=1)
- printf("写文件错误!\n");
- fclose(fp);
- }
-
-
- // 商品信息的录入
- int Input_Info(Good stu[])
- { int i,x;
- for(i=0;i<1000;i++)
- {
- system("cls");
- printf("\n\n 录入商品 (最多%d个)\n",MAX);
- printf(" ----------------------------\n");
-
- printf("\n 第%d个",k+1);
- printf("\n 请输入商品的编号:");
- scanf("%d",&stu[k].Good_num);
- printf("\n 请输入商品的名称:");
- scanf("%s",stu[k].Good_name);
- printf("\n 请输入商品的生产商:");
- scanf("%s",stu[k].Good_author);
- printf("\n 请输入商品的产地:");
- scanf("%s",stu[k].press);
- printf("\n 请输入商品的价格:");
- scanf("%f",&stu[k++].Good_price);
- printf("\n 请输入商品的数量:");
- scanf("%d",&stu[i].Good_quantity);
- printf("\n 请按1键返回菜单或按0键继续创建");
- scanf("%d",&x);
- if(x)
- break;
- }
-
- return k;
- }
-
-
- /*删除信息*/
- void Delete_Info(Good stu[])
- {
-
- int i,j;
-
- char Stuname2[20];
- system("cls");
-
-
- printf("请输入商品名称:");
- scanf("%s",Stuname2);
- printf("\n");
- for(i=0;i<k;i++)
- if(strcmp(stu[i].Good_name,Stuname2)==0)
- for(j=0;j<20;j++)
- stu[i].Good_name[j]=stu[i+1].Good_name[j];
- k--;
-
-
- printf("删除成功\n");
- printf("按任意键加回车返回主菜单!");
- scanf("%d",&i);
- getchar();
- }
-
- /*打印信息*/
- void Output_Info(Good stu[])
- {
- int i;
- system("cls");
-
- for(i=0;i<k;i++) // 格式输出
- printf("编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
- stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity);
- printf("按任意键加回车返回主菜单!");
- scanf("%d",&i);
- getchar();
- }
-
- /*查询信息*/
- void Slect_Info(Good stu[])
- { int i;
- char Good_name[20];
- system("cls");
- printf(" \n\n输入要查找的名称:");
- scanf("%s",&Good_name);
- for(i=0;i<k;i++)
- if(strcmp(Good_name,stu[i].Good_name)==0) // 比较
- printf("\n\n\n编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
- stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity);
- printf("按任意键加回车返回主菜单!");
- scanf("%d",&i);
- getchar();
- }
-
-
- /*修改信息*/
- void Revise_Info(Good stu[])
- { int Good_num,i,choice;
- system("cls");
- printf("\n\n\n 请输入您要修改的商品的编号");
- scanf("%d",&Good_num);
- for(i=0;i<k;i++)
- { if(Good_num==stu[i].Good_num) // 找到,则显示出
- printf("\n编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
- stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity);
-
- printf("\n\n\n ********请输入您想要修改的数据********\n\n"); // 根据提示显示需要修改的信息
- printf(" 1. 编号\n\n");
- printf(" 2. 名称\n\n");
- printf(" 3. 生产商\n\n");
- printf(" 4. 产地\n\n");
- printf(" 5. 价格\n\n");
- printf(" 6. 数量\n\n");
- printf(" 请选择(1-6):");
- scanf("%d",&choice);
- switch(choice)
- {case 1:{
- printf("\n 请输入你改的新编号");
- scanf("%d",&stu[i].Good_num);
- break;
- }
- case 2:{
- printf("\n 请输入你改的新名称");
- scanf("%s",stu[i].Good_name);
- break;
- }
- case 3:{
- printf("\n 请输入你改的新生产商");
- scanf("%s",stu[i].Good_author);
- break;
- }
- case 4:{
- printf("\n 请输入你改的新产地");
- scanf("%s",stu[i].press);
- break;
- }
- case 5:{
- printf("\n 请输入你改的新价格");
- scanf("%f",&stu[i].Good_price);
- break;
- case 6:{
- printf("\n 请输入你改的新数量");
- scanf("%d",&stu[i].Good_quantity);
- break;
- }
- }
- }
-
- printf("编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
- stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity); // 重新放到员数组中
- printf("按任意键加回车返回主菜单!");
- scanf("%d",&i);
- break;
- }
- }
-
-
- /*按照价格排序*/
- void sort(Good stu[])
- { int i,j,n=1,x;
- int t;
- system("cls");
-
- for(i=0;i<k-1;i++)
- for(j=i+1;j<k;j++) // 采用交换排序
- if(stu[i].Good_price<stu[j].Good_price)
- { t=stu[i].Good_price;
- stu[i].Good_price=stu[j].Good_price;
- stu[j].Good_price=t;
- t=stu[i].Good_num;
- stu[i].Good_num=stu[j].Good_num;
- stu[j].Good_num=t;
-
- }
- for(i=0;i<k;i++) // 排序
- printf("排名 编号 价格\n %d %d %.2f\n",n++,stu[i].Good_num,stu[i].Good_price);
- printf("按任意键加回车返回主菜单!");
- scanf("%d",&x);
- getchar();
- }
-
- void MENU() // 定义显示要显示的命令行界面
- {
- printf(" \n\n\n **********************************\n");
- printf(" * *\n");
- printf(" * *\n");
- printf(" * *\n");
- printf(" * 商品信息管理系统 *\n");
- printf(" * *\n");
- printf(" * *\n");
- printf(" * *\n");
- printf(" **********************************\n");
-
- }
- void Login() // 首先验证登录 只有正确输入密码和账户后才可以使用该软件
- // 没有数据库,我们将用户和密码固化到程序中,设定为123
- {
- char userName[5];/*用户名*/
- char userPWD[5];/*密码*/
- int i,sum;
- system("color 1d");
- for(i = 1; i < 4; i++)
- {
-
- printf("\n 请输入您的用户名:");
- gets(userName);
-
- printf("\n 请输入您的密码:");
- gets(userPWD);
-
- if ((strcmp(userName,"root")==0) && (strcmp(userPWD,"123456")==0))/*验证用户名和密码*/
- {
- printf("\n *用户名和密码正确,显示主菜单*");
- return;
- }
- else
- {
- if (i < 3)
- {
- printf("用户名或密码错误,提示用户重新输入");
- printf("用户名或密码错误,请重新输入!");
- }
- else
- {
- printf("连续3次输错用户名或密码,退出系统。");
- printf("您已连续3次将用户名或密码输错,系统将退出!");
- exit(1);
- }
- }
- }
- }
- void Main_Menu() // 主界面 (首先验证是否存在文本文档,没有的话提示需要手动创建),存在的话根据操作选择不同的功能
- {
- Good stu[20];
- int choice,k,sum;
- sum=Read(stu);
- if(sum==0)
- { printf("首先录入基本库存信息!按回车后进入—————\n");
- getch();
- sum=Input_Info(stu);
- }
-
- do
- { system("cls");
- printf("\n\n\n ********商品信息管理系统********\n\n");
- printf(" 1. 创建商品信息\n\n");
- printf(" 2. 打印商品信息\n\n");
- printf(" 3. 查询商品信息\n\n");
- printf(" 4. 修改商品信息\n\n");
- printf(" 5. 删除商品信息\n\n");
- printf(" 6. 商品价格信息排名\n\n");
- printf(" 0. 退出系统\n\n");
- printf(" 请选择(0-6):");
- scanf("%d",&choice);
- switch(choice)
- {
- case 1: k=Input_Info(stu); break;/*创建商品*/
- case 2: Output_Info( stu) ; break;/*打印信息*/
- case 3: Slect_Info(stu); break;/*查询信息*/
- case 4: Revise_Info(stu); break;/*修改信息*/
- case 5: Delete_Info(stu); break;/*删除信息*/
- case 6: sort(stu); break;/*价格排名*/
- case 0: break;
- }
- }while(choice!=0);
- SAVE_INFO(stu,sum); // 保存到结构体数组中
- }
- int main()
- {
-
- int i,sum;
- MENU();
- Login(); // 验证密码和账户
- Main_Menu(); // 进入主界面
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。