当前位置:   article > 正文

商品信息管理系统(C语言)

商品信息管理系统(C语言)

系统分析

该案例使用了C语言中最具特色的结构体,将每个商品的所有信息存在结构体中,并且定义一个结构体类型的数组保存所有商品的信息,并且按照模块化的编程思想,将要实现的每个功能编写成独立的函数,这样即方便阅读同时也方便差错修改。

该系统的主要功能如下:
(1) 登录系统。
(2) 创建商品信息。
(3) 打印商品信息。
(4) 查询商品信息。
(5) 修改商品信息。
(6) 删除商品信息。
(7) 商品价格排名显示。
(8) 退出系统。

具体代码 

  1. //#include "stdafx.h"
  2. #include"stdlib.h"
  3. #include"stdio.h"
  4. #include"string.h"
  5. #include"conio.h"
  6. #define Pquantity 3
  7. #define MAX 1000
  8. #define N 5
  9. int k=0;
  10. //结构体
  11. typedef struct
  12. { int Good_num;/*编号*/
  13. char Good_name[20];/*商品名*/
  14. char Good_author[20];/*生产商*/
  15. char press[20];/*产地*/
  16. float Good_price;/*价格*/
  17. int Good_quantity;/*数量*/
  18. }Good;
  19. int Read(Good stu[])
  20. { FILE *fp;
  21. int i=0;
  22. if((fp=fopen("stu.txt","rt"))==NULL)
  23. {printf("\n\n—————文件不存在!请手动创建");
  24. return 0;
  25. }
  26. while(feof(fp)!=1)
  27. {
  28. fread(&stu[i],sizeof(Good),1,fp);
  29. if(stu[i].Good_num==0)
  30. break;
  31. else
  32. i++;
  33. }
  34. fclose(fp);
  35. return i;
  36. }
  37. void SAVE_INFO(Good stu[],int sum) // 将结构体数组中的商品信息保存到文件中
  38. {FILE*fp;
  39. int i;
  40. if((fp=fopen("stu.txt","wb"))==NULL) // 打开文件
  41. {printf("写文件错误!\n");
  42. return;
  43. }
  44. for(i=0;i<sum;i++) // 将结构体数组中的每个结构体都写入到文件中
  45. if(fwrite(&stu[i],sizeof(Good),1,fp)!=1)
  46. printf("写文件错误!\n");
  47. fclose(fp);
  48. }
  49. // 商品信息的录入
  50. int Input_Info(Good stu[])
  51. { int i,x;
  52. for(i=0;i<1000;i++)
  53. {
  54. system("cls");
  55. printf("\n\n 录入商品 (最多%d个)\n",MAX);
  56. printf(" ----------------------------\n");
  57. printf("\n 第%d个",k+1);
  58. printf("\n 请输入商品的编号:");
  59. scanf("%d",&stu[k].Good_num);
  60. printf("\n 请输入商品的名称:");
  61. scanf("%s",stu[k].Good_name);
  62. printf("\n 请输入商品的生产商:");
  63. scanf("%s",stu[k].Good_author);
  64. printf("\n 请输入商品的产地:");
  65. scanf("%s",stu[k].press);
  66. printf("\n 请输入商品的价格:");
  67. scanf("%f",&stu[k++].Good_price);
  68. printf("\n 请输入商品的数量:");
  69. scanf("%d",&stu[i].Good_quantity);
  70. printf("\n 请按1键返回菜单或按0键继续创建");
  71. scanf("%d",&x);
  72. if(x)
  73. break;
  74. }
  75. return k;
  76. }
  77. /*删除信息*/
  78. void Delete_Info(Good stu[])
  79. {
  80. int i,j;
  81. char Stuname2[20];
  82. system("cls");
  83. printf("请输入商品名称:");
  84. scanf("%s",Stuname2);
  85. printf("\n");
  86. for(i=0;i<k;i++)
  87. if(strcmp(stu[i].Good_name,Stuname2)==0)
  88. for(j=0;j<20;j++)
  89. stu[i].Good_name[j]=stu[i+1].Good_name[j];
  90. k--;
  91. printf("删除成功\n");
  92. printf("按任意键加回车返回主菜单!");
  93. scanf("%d",&i);
  94. getchar();
  95. }
  96. /*打印信息*/
  97. void Output_Info(Good stu[])
  98. {
  99. int i;
  100. system("cls");
  101. for(i=0;i<k;i++) // 格式输出
  102. printf("编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
  103. stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity);
  104. printf("按任意键加回车返回主菜单!");
  105. scanf("%d",&i);
  106. getchar();
  107. }
  108. /*查询信息*/
  109. void Slect_Info(Good stu[])
  110. { int i;
  111. char Good_name[20];
  112. system("cls");
  113. printf(" \n\n输入要查找的名称:");
  114. scanf("%s",&Good_name);
  115. for(i=0;i<k;i++)
  116. if(strcmp(Good_name,stu[i].Good_name)==0) // 比较
  117. printf("\n\n\n编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
  118. stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity);
  119. printf("按任意键加回车返回主菜单!");
  120. scanf("%d",&i);
  121. getchar();
  122. }
  123. /*修改信息*/
  124. void Revise_Info(Good stu[])
  125. { int Good_num,i,choice;
  126. system("cls");
  127. printf("\n\n\n 请输入您要修改的商品的编号");
  128. scanf("%d",&Good_num);
  129. for(i=0;i<k;i++)
  130. { if(Good_num==stu[i].Good_num) // 找到,则显示出
  131. printf("\n编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
  132. stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity);
  133. printf("\n\n\n ********请输入您想要修改的数据********\n\n"); // 根据提示显示需要修改的信息
  134. printf(" 1. 编号\n\n");
  135. printf(" 2. 名称\n\n");
  136. printf(" 3. 生产商\n\n");
  137. printf(" 4. 产地\n\n");
  138. printf(" 5. 价格\n\n");
  139. printf(" 6. 数量\n\n");
  140. printf(" 请选择(1-6):");
  141. scanf("%d",&choice);
  142. switch(choice)
  143. {case 1:{
  144. printf("\n 请输入你改的新编号");
  145. scanf("%d",&stu[i].Good_num);
  146. break;
  147. }
  148. case 2:{
  149. printf("\n 请输入你改的新名称");
  150. scanf("%s",stu[i].Good_name);
  151. break;
  152. }
  153. case 3:{
  154. printf("\n 请输入你改的新生产商");
  155. scanf("%s",stu[i].Good_author);
  156. break;
  157. }
  158. case 4:{
  159. printf("\n 请输入你改的新产地");
  160. scanf("%s",stu[i].press);
  161. break;
  162. }
  163. case 5:{
  164. printf("\n 请输入你改的新价格");
  165. scanf("%f",&stu[i].Good_price);
  166. break;
  167. case 6:{
  168. printf("\n 请输入你改的新数量");
  169. scanf("%d",&stu[i].Good_quantity);
  170. break;
  171. }
  172. }
  173. }
  174. printf("编号:%d,名称:%s,生产商:%s,产地:%s,价格: %.2f,数量:%d\n",stu[i].Good_num,stu[i].Good_name,
  175. stu[i].Good_author,stu[i].press,stu[i].Good_price,stu[i].Good_quantity); // 重新放到员数组中
  176. printf("按任意键加回车返回主菜单!");
  177. scanf("%d",&i);
  178. break;
  179. }
  180. }
  181. /*按照价格排序*/
  182. void sort(Good stu[])
  183. { int i,j,n=1,x;
  184. int t;
  185. system("cls");
  186. for(i=0;i<k-1;i++)
  187. for(j=i+1;j<k;j++) // 采用交换排序
  188. if(stu[i].Good_price<stu[j].Good_price)
  189. { t=stu[i].Good_price;
  190. stu[i].Good_price=stu[j].Good_price;
  191. stu[j].Good_price=t;
  192. t=stu[i].Good_num;
  193. stu[i].Good_num=stu[j].Good_num;
  194. stu[j].Good_num=t;
  195. }
  196. for(i=0;i<k;i++) // 排序
  197. printf("排名 编号 价格\n %d %d %.2f\n",n++,stu[i].Good_num,stu[i].Good_price);
  198. printf("按任意键加回车返回主菜单!");
  199. scanf("%d",&x);
  200. getchar();
  201. }
  202. void MENU() // 定义显示要显示的命令行界面
  203. {
  204. printf(" \n\n\n **********************************\n");
  205. printf(" * *\n");
  206. printf(" * *\n");
  207. printf(" * *\n");
  208. printf(" * 商品信息管理系统 *\n");
  209. printf(" * *\n");
  210. printf(" * *\n");
  211. printf(" * *\n");
  212. printf(" **********************************\n");
  213. }
  214. void Login() // 首先验证登录 只有正确输入密码和账户后才可以使用该软件
  215. // 没有数据库,我们将用户和密码固化到程序中,设定为123
  216. {
  217. char userName[5];/*用户名*/
  218. char userPWD[5];/*密码*/
  219. int i,sum;
  220. system("color 1d");
  221. for(i = 1; i < 4; i++)
  222. {
  223. printf("\n 请输入您的用户名:");
  224. gets(userName);
  225. printf("\n 请输入您的密码:");
  226. gets(userPWD);
  227. if ((strcmp(userName,"root")==0) && (strcmp(userPWD,"123456")==0))/*验证用户名和密码*/
  228. {
  229. printf("\n *用户名和密码正确,显示主菜单*");
  230. return;
  231. }
  232. else
  233. {
  234. if (i < 3)
  235. {
  236. printf("用户名或密码错误,提示用户重新输入");
  237. printf("用户名或密码错误,请重新输入!");
  238. }
  239. else
  240. {
  241. printf("连续3次输错用户名或密码,退出系统。");
  242. printf("您已连续3次将用户名或密码输错,系统将退出!");
  243. exit(1);
  244. }
  245. }
  246. }
  247. }
  248. void Main_Menu() // 主界面 (首先验证是否存在文本文档,没有的话提示需要手动创建),存在的话根据操作选择不同的功能
  249. {
  250. Good stu[20];
  251. int choice,k,sum;
  252. sum=Read(stu);
  253. if(sum==0)
  254. { printf("首先录入基本库存信息!按回车后进入—————\n");
  255. getch();
  256. sum=Input_Info(stu);
  257. }
  258. do
  259. { system("cls");
  260. printf("\n\n\n ********商品信息管理系统********\n\n");
  261. printf(" 1. 创建商品信息\n\n");
  262. printf(" 2. 打印商品信息\n\n");
  263. printf(" 3. 查询商品信息\n\n");
  264. printf(" 4. 修改商品信息\n\n");
  265. printf(" 5. 删除商品信息\n\n");
  266. printf(" 6. 商品价格信息排名\n\n");
  267. printf(" 0. 退出系统\n\n");
  268. printf(" 请选择(0-6):");
  269. scanf("%d",&choice);
  270. switch(choice)
  271. {
  272. case 1: k=Input_Info(stu); break;/*创建商品*/
  273. case 2: Output_Info( stu) ; break;/*打印信息*/
  274. case 3: Slect_Info(stu); break;/*查询信息*/
  275. case 4: Revise_Info(stu); break;/*修改信息*/
  276. case 5: Delete_Info(stu); break;/*删除信息*/
  277. case 6: sort(stu); break;/*价格排名*/
  278. case 0: break;
  279. }
  280. }while(choice!=0);
  281. SAVE_INFO(stu,sum); // 保存到结构体数组中
  282. }
  283. int main()
  284. {
  285. int i,sum;
  286. MENU();
  287. Login(); // 验证密码和账户
  288. Main_Menu(); // 进入主界面
  289. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/868877
推荐阅读
相关标签
  

闽ICP备14008679号