[关闭]
@SuHongjun 2020-06-15T09:41:34.000000Z 字数 5247 阅读 326

C语言-Day 25 - 综合作业StartKit(5)

C语言 2020春季学期


封面和Logo各小组八仙过海、各显神通,加油,我看好你们 :)

  1. /*
  2. ###系统分析:
  3. - 书的信息:
  4. 书号、书名、作者、出版日期、价格、捐赠人<会员号>、状态(借出、在馆、报废)
  5. - 会员信息:
  6. 会员号、姓名、手机、email、QQ、微信, 可借数量(动态计算), 捐赠列表(动态查询),当前借阅列表(动态查询), 借阅历史(可选)
  7. - 捐赠信息(总捐赠列表):
  8. 会员号 -- 书号,捐赠日期
  9. - 借阅信息(总借阅列表):
  10. 会员号 -- 书号,借出日期,应还日期(假定可借60天,计算得到),还书日期
  11. 上述信息的录入、保存、读取、查询显示、修改
  12. */
  13. #include "stdio.h"
  14. #include "string.h"
  15. #define BOOK_FILE "E:\\Try\\C\\004\\综合设计\\books.dat"
  16. #define MEMBER_FILE "E:\\Try\\C\\004\\综合设计\\members.dat"
  17. #define JZ_LIST_FILE "E:\\Try\\C\\004\\综合设计\\jz_list.dat"
  18. #define JY_LIST_FILE "E:\\Try\\C\\004\\综合设计\\jy_list.dat"
  19. struct DATE
  20. {
  21. int year;
  22. int month;
  23. int day;
  24. };
  25. struct BOOK
  26. {
  27. char sh[30];
  28. char bookName[200];
  29. char author[200];
  30. struct DATE publishDate; //结构体嵌套
  31. float price;
  32. char hyh[30];
  33. int status; //0:在馆、1:借出、-1:报废
  34. };
  35. struct MEMBER
  36. {
  37. char hyh[30];
  38. char hyName[200];
  39. char cell[15];
  40. char email[100];
  41. char QQ[30];
  42. char wx[100];
  43. int kjsl;
  44. //捐赠列表(动态查询),???
  45. //当前借阅列表(动态查询) ????
  46. };
  47. struct JUAN_ZEN_INFO
  48. {
  49. char hyh[30];
  50. char sh[30];
  51. struct DATE jzDate;
  52. };
  53. struct JIE_YUE_INFO
  54. {
  55. char hyh[30];
  56. char sh[30];
  57. struct DATE jcDate;
  58. struct DATE yhDate;
  59. struct DATE hsDate;
  60. };
  61. //......................函数原型声明:.........................
  62. void InputMember();
  63. void SaveAll();
  64. void LoadAll();
  65. void DisplayMembers();
  66. void Welcome();
  67. int DisplayMainMenu();
  68. void ByeBye();
  69. int DisplayMemberMenu();
  70. //......................全局变量:...............................
  71. struct BOOK g_books[10000];
  72. struct MEMBER g_members[5000];
  73. int g_members_count;
  74. struct JUAN_ZEN_INFO g_jz_list[30000];
  75. struct JIE_YUE_INFO g_jy_list[1000000];
  76. //.........................................
  77. main()
  78. {
  79. int iMainMenu, iSubMenu_1;
  80. Welcome();
  81. LoadAll();
  82. do
  83. {
  84. iMainMenu = DisplayMainMenu();
  85. switch(iMainMenu)
  86. {
  87. case 1:
  88. do
  89. {
  90. iSubMenu_1 = DisplayMemberMenu();
  91. switch(iSubMenu_1)
  92. {
  93. case 1: DisplayMembers();
  94. break;
  95. case 2: InputMember();
  96. break;
  97. case 3: ;
  98. break;
  99. case 4: ;
  100. break;
  101. }
  102. }while(iSubMenu_1 != 9);
  103. break;
  104. case 2:
  105. ;
  106. break;
  107. case 3:
  108. ;
  109. break;
  110. case 4:
  111. ;
  112. break;
  113. }
  114. }while(iMainMenu != 999);
  115. ByeBye();
  116. SaveAll();
  117. }
  118. void DisplayMembers()
  119. {
  120. int i;
  121. char jx = 'Y', buf[10];
  122. printf("\n会员信息:\n");
  123. printf("会员号\t\t姓名\t手机\t\temail\tQQ\t微信\t可借数量\n");
  124. printf("-----------------------------------------------------\n");
  125. for(i=0; i<5000;i++)
  126. {
  127. if(strcmp(g_members[i].hyh, "")!=0)
  128. printf("%s\t%s\t%s\t%s\t%s\t%s\t%d\n",
  129. g_members[i].hyh,
  130. g_members[i].hyName,
  131. g_members[i].cell,
  132. g_members[i].email,
  133. g_members[i].QQ,
  134. g_members[i].wx,
  135. g_members[i].kjsl
  136. );
  137. else
  138. break;
  139. }
  140. printf("-----------------------------------------------------\n");
  141. }
  142. int DisplayMemberMenu()
  143. {
  144. int iSel=0;
  145. char buf[100];
  146. printf("\n\t\t … 会员信息管理功能选择:…\n");
  147. printf("\t\t ------------------------------\n");
  148. printf("\t\t| |\n");
  149. printf("\t\t| 1.显示会员信息 |\n");
  150. printf("\t\t| |\n");
  151. printf("\t\t| 2.录入会员信息 |\n");
  152. printf("\t\t| |\n");
  153. printf("\t\t| 3.查询会员信息 |\n");
  154. printf("\t\t| |\n");
  155. printf("\t\t| 4.修改会员信息 |\n");
  156. printf("\t\t| |\n");
  157. printf("\t\t| ** 9. 退 出 ** |\n");
  158. printf("\t\t| |\n");
  159. printf("\t\t ------------------------------\n");
  160. printf("\t\t 请选择对应功能:");
  161. scanf("%d", &iSel);
  162. gets(buf);
  163. return iSel;
  164. }
  165. void ByeBye()
  166. {
  167. printf("\t欢迎下次使用!\t Bye bye!!\n");
  168. }
  169. int DisplayMainMenu()
  170. {
  171. int iSel=0;
  172. char buf[100];
  173. printf("\n\t\t ***** 主菜单 *****\n");
  174. printf("\t\t ==============================\n");
  175. printf("\t\t|| ||\n");
  176. printf("\t\t|| 1.会员信息管理 ||\n");
  177. printf("\t\t|| ||\n");
  178. printf("\t\t|| 2.书籍信息管理 ||\n");
  179. printf("\t\t|| ||\n");
  180. printf("\t\t|| 3.捐 赠 管 理 ||\n");
  181. printf("\t\t|| ||\n");
  182. printf("\t\t|| 4.借 阅 管 理 ||\n");
  183. printf("\t\t|| ||\n");
  184. printf("\t\t|| ** 999. 退 出 ** ||\n");
  185. printf("\t\t|| ||\n");
  186. printf("\t\t ==============================\n");
  187. printf("\t\t 请选择对应功能:");
  188. scanf("%d", &iSel);
  189. return iSel;
  190. }
  191. void Welcome()
  192. {
  193. printf("\t******************************************************\n");
  194. printf("\t******************************************************\n");
  195. printf("\t** **\n");
  196. printf("\t** **\n");
  197. printf("\t** 小书虫书友会管理系统 **\n");
  198. printf("\t** **\n");
  199. printf("\t** 开发人员: **\n");
  200. printf("\t** 张文定 13258479658 **\n");
  201. printf("\t** 李 明 13258479668 **\n");
  202. printf("\t** 赵志国 13258479688 **\n");
  203. printf("\t** **\n");
  204. printf("\t******************************************************\n");
  205. printf("\t******************************************************\n\n");
  206. }
  207. void LoadAll()
  208. {
  209. FILE *fp;
  210. fp = fopen(BOOK_FILE,"rb");
  211. if(fp !=NULL)
  212. {
  213. fread(g_books,sizeof(struct BOOK),10000,fp);
  214. fclose(fp);
  215. }
  216. fp = fopen(MEMBER_FILE,"rb");
  217. if(fp !=NULL)
  218. {
  219. fread(&g_members_count,sizeof(g_members_count),1,fp);
  220. fread(g_members,sizeof(struct MEMBER),5000,fp);
  221. fclose(fp);
  222. }
  223. fp = fopen(JZ_LIST_FILE,"rb");
  224. if(fp !=NULL)
  225. {
  226. fread(g_jz_list,sizeof(struct JUAN_ZEN_INFO),30000,fp);
  227. fclose(fp);
  228. }
  229. fp = fopen(JY_LIST_FILE,"rb");
  230. if(fp !=NULL)
  231. {
  232. fread(g_jy_list,sizeof(struct JIE_YUE_INFO),1000000,fp);
  233. fclose(fp);
  234. }
  235. }
  236. void SaveAll()
  237. {
  238. FILE *fp;
  239. fp = fopen(BOOK_FILE,"wb");
  240. if(fp !=NULL)
  241. {
  242. fwrite(g_books,sizeof(struct BOOK),10000,fp);
  243. fclose(fp);
  244. }
  245. fp = fopen(MEMBER_FILE,"wb");
  246. if(fp !=NULL)
  247. {
  248. fwrite(&g_members_count,sizeof(g_members_count),1,fp);
  249. fwrite(g_members,sizeof(struct MEMBER),5000,fp);
  250. fclose(fp);
  251. }
  252. fp = fopen(JZ_LIST_FILE,"wb");
  253. if(fp !=NULL)
  254. {
  255. fwrite(g_jz_list,sizeof(struct JUAN_ZEN_INFO),30000,fp);
  256. fclose(fp);
  257. }
  258. fp = fopen(JY_LIST_FILE,"wb");
  259. if(fp !=NULL)
  260. {
  261. fwrite(g_jy_list,sizeof(struct JIE_YUE_INFO),1000000,fp);
  262. fclose(fp);
  263. }
  264. }
  265. void InputMember()
  266. {
  267. int i;
  268. char jx = 'Y', buf[10];
  269. printf("请录入会员信息:\n");
  270. for(i=g_members_count; i<5000;i++)
  271. {
  272. printf("会员号:");
  273. gets(g_members[i].hyh);
  274. printf("姓名:");
  275. gets(g_members[i].hyName);
  276. printf("手机:");
  277. gets(g_members[i].cell);
  278. printf("email:");
  279. gets(g_members[i].email);
  280. printf("QQ:");
  281. gets(g_members[i].QQ);
  282. printf("微信:");
  283. gets(g_members[i].wx);
  284. g_members[i].kjsl = -1;
  285. printf("是否继续录入?(y/n):");
  286. jx = getchar();
  287. if(jx != 'y' && jx != 'Y')
  288. {
  289. g_members_count = i + 1;
  290. break;
  291. }
  292. gets(buf);
  293. }
  294. }
  295. //.........???????
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注