图书信息管理系统设计c语言课程设计实验报告内容摘要:

} printf(成功删除 \n)。 system(pause)。 } ⑦ 修改模块:( 1)根据输入的 书籍名修改信息;( 2)根据输入的登录号修改信息 ( 1) void ChangeMarkByName(void) { book *p。 char bookName[20]。 char flag=0。 float mark1。 char kind。 float mark2。 p=headLinknext。 printf(请输入书名: \n)。 scanf(%s,amp。 bookName)。 while(p) { if(strcmp(pbookName,bookName)==0) { printf(请输入新的价格: \n)。 scanf(%f,amp。 mark1)。 printf(请输入新的分类号( A 办公类 B 文学类 C 商务类 D 科学历史类): \n)。 10 scanf(%s,amp。 kind)。 printf(请输入新的出版时间 (年 .月 ): \n)。 scanf(%f,amp。 mark2)。 pmark1=mark1。 pkind=kind。 pmark2=mark2。 flag=1。 printf(修改成功 \n)。 system(pause)。 break。 } p=pnext。 } if(!flag) printf(对不起,不存在书籍名为 %s 的书籍 \n,bookName)。 } ( 2) void ChangeMarkByNumber(void) { book *p。 char bookNumber[20]。 char flag=0。 float mark1。 char kind。 float mark2。 p=headLinknext。 printf(请输入书籍登录号: \n)。 scanf(%s,bookNumber)。 while(p) { if(strcmp(pbookNumber,bookNumber)==0) { printf(请输入新的价格: \n)。 scanf(%f,amp。 mark1)。 printf(请输入新的分类号( A 办公类 B 文学类 C 商务类 D科学历史类 ): \n)。 scanf(%s,amp。 kind)。 printf(请输入新的出版时间 (年 .月 ): \n)。 scanf(%f,amp。 mark2)。 pmark1=mark1。 pkind=kind。 pmark2=mark2。 flag=1。 printf(修改成功 \n)。 system(pause)。 11 break。 } p=pnext。 } if(!flag) printf(对不起,不存在登录号为 %s 的书籍 \n,bookNumber)。 } ⑧ 排序模块:按价格排序 void CompositorByMark1(void) { book exchange,*r,*p,*q。 r=headLinknext。 if(r==NULL) { printf(现在还没书籍信息 ,请先输入书籍信息 \n)。 return。 } while(r) /*两层 while循环实现排序 */ { p=r。 q=rnext。 while(q) { if((qmark1)(pmark1)) { strcpy(,qbookNumber)。 /*先复制 q 结点信息到exchange*/ strcpy(,qbookName)。 strcpy(,qwriterName)。 =qmark1。 =qkind。 =qmark2。 strcpy(qbookNumber,pbookNumber)。 /*再复制 p结点信息到 q*/ strcpy(qbookName,pbookName)。 strcpy(qwriterName,pwriterName)。 qmark1=pmark1。 qkind=pkind。 qmark2=pmark2。 strcpy(pbookNumber,)。 /*最后复制 exchange结点信息到 p*/ strcpy(pbookName,)。 strcpy(pwriterName,)。 12 pmark1=。 pkind=。 pmark2=。 } q=qnext。 } r=rnext。 } OutputInformation()。 } ⑨ 保存、退出模块:保存链表数据到文件中 void SaveLinkToFile(void) { book *p。 FILE *fp。 p=headLinknext。 if(p==NULL) { printf(注意:没有书籍信息。 继续操作推出。 \n\n)。 system(pause)。 return。 } fp=fopen(,wb)。 if(!fp) { printf(文件不存在 \n)。 return。 } while(p) { fprintf(fp,%8s,pbookNumber)。 fprintf(fp,%8s,pbookName)。 fprintf(fp,%8s,pbookconcernName)。 fprintf(fp,%8s,pwriterName)。 fprintf(fp,%,pmark1)。 fprintf(fp,%8c,pkind)。 fprintf(fp,%,pmark2)。 fprintf(fp,\n)。 p=pnext。 } fclose(fp)。 printf(保存成 功,按任意键安全退出 )。 13 } 程序的运行和测试结果 ( 1)初始界面 ( 2)菜单界面测试: 14 ( 3)浏览功能测试 ( 4)查询功能测试 15 ( 5)增加功能测试 16 ( 6)删除功能测试 17 ( 7)修改功能测试 18 ( 8)排序功能测试 19 四、 实验中的问题及心得 遇到的问题: 对链表运用不熟悉,对链表中的头指针和头结点经常搞错,导致程序错误。 面对程序中所出现的错误,往往不知道如何修改,不知道如何通过调试手段对程序进行改进。 程序中所包含的步骤较多,不分步编写将造成较大麻烦。 心得: 写好一段有效的程序应该注重格式, 分步书写,方便 在后期的调试中找出错误。 学会了 单步调试, 比如通过判断是否赋值成功等, 比单独的思考 更有帮助 ,有利于 快速找出错误, 学会了建立 断点 , 可以节省时间。 另外虽然对 C 语言的语法上有所掌握, 学会使用链表,因为 链表 方便动态变化,比如插入一个数据很容易,而在一个数 组中插入一个数组,要移动一堆数据,删除也是 虽然很多问题是通过网络搜索解决,但是同时学会了更多程序其它头文件的调用,也发现了 算法 需要一步一步 细想 ,锻炼了我们的逻辑思维能力。 最后就是此次 课程设计 ,主张用划分功能模块的思想来整体编程 , 这样的方法 有助于我们理清思绪, 对此次的编程有很大帮助,避免了以往较长程序杂乱现象,做到主函数、功能实现模块、接口模块分开。 而且主函数之前的函数声明,也让我们对整个程序的构成更有思考方向,避免了之后继续编程或修改的思路混乱。 20 五、 附录(程序清单) include include /*如 用 getchar()、 getch()就要包含 ” ” */ include include include include include iostream /*如用 system是便需要包含 ”iostream”*/ typedef struct book { char bookNumber[10]。 /*登录号 */ char bookName[20]。 /*书名 */ char bookconcernName[20]。 /*出版社名 */ char writerName[20]。 /*作者名 */ float mark1。 /*价格 */ float mark2。 /*出版时间 (年 .月 )*/ char kind。 /*分类号( A 办公类 B 文学类 C 商务类 D科学历史类) */ struct book *next。 }book。 book *headLink。 /*链表表头指针 : 告诉第一个元素的地址 */ void logo(char logos[10]) /*界面优化代码 (清屏) */ { system(cls)。 } void ReadInfoFormFile(void)。 /*以下是函数声明 */ void DesplayMenu(void)。 void CreateHeadLink(void)。 book *MallocNode(void)。 void GetInformation(book *t)。 void OutputInformation(void)。 void D。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。