版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C语言课程设计课程设计报告 目录 1 设计内容、任务及基本要求2 1.1 设计内容2 1.2 设计任务2 1.3 设计基本要求2 2 总体设计思路4 2.1 系统功能4 2.2 各个模块之间的主要关系4 2.3 总体程序框图5 2.4 系统的总体流程图5 3 功能模块的具体设计7 3.1 main() 函数模块7 3.2查询所有图书信息函数模块8 3.3查询一本图书信息函数模块8 3.4添加图书信息函数模块9 3.5删除图书信息函数模块10 3.6 借阅图书模块12 4 功能模块的调试与测试 13 4.1主菜单运行界面13 4.2查询所有图书信息模块运行界面13 4.3查找某一本图书信息模块
2、运行界面14 4.4 添加图书信息模块运行界面16 4.5 删除图书信息模块运行界面17 4.6 借阅图书模块信息运行界面79 5 总结22 6 致谢23 7 参考文献24 9 程序清单25 - 1 - C语言课程设计课程设计报告 1.设计内容、任务以及基本要求 1.1设计内容 主要利用c语言的文件操作能力设计开发一个小型的图书管信息管理系统,至少具有如下功能:查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息 、删除图书信息 以及通过学生学号实现图书借阅功能。操作界面要符合用户的一般习惯,界面易于读者明白理解,图形或文本界面都可以。 1. 2设计任务 要求:明确课程设计
3、的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识; 提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤; 提高撰写技术文档的能力。掌握模块化编程的基本方法与步骤;巩固和加深学生对C语言课程基本知识的理解与掌握,培养学生利用C语言进行软件操作的能力和技巧。 1.3基本要求 (1)通过提示菜单选择可以进行的操作。 (2)将图书的信息存入文件中,并命名为BookInfo.txt。 (3)将图书借阅情况信息存入文件中,并命名为SendInfo.txt。 (4)在本系统中可以进行管理系统包含的基本操作,其中包括
4、 a)查看所有图书的信息。 b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。 c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。 d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的- 2 - C语言课程设计课程设计报告 图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。 e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.
5、txt文件中。 (5)图书基本信息包括图书编号、书名、作者、出版社和价钱这些简单信息。 (6)图书信息文件中每一行存放一本图书的信息。 (7)借阅信息文件中每一行存放一本书的借阅情况。 - 3 - C语言课程设计课程设计报告 2 总体设计思路 2.1系统功能 图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管理。此程序包含了图书信息的录入、图书信息的浏览、图书的查询和排序、图书信息的删除与修改,借书,还书,统计等。通过编译一个C语言函数,其中包含一个主函数,多个子函数,主函数调用其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的 信息的功能。1、查询所有图书信息:将所有图
6、书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。 2、查找一本图书的信息:通过输入图书编号完成图书信息的查找,并在屏幕上显示。 3、修改图书信息:通过输入编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号。 4、删除图书信息:通过输入编号,判断此图书是否存在,若存在, 则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书编号。 5、借书:通过输入图书编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号,若图书已借出则提示用户是否继续借书,若没借出则将此图书的编号和学生的学号存入图书借阅文件中。 6、退出系统:返回主页面。 2.2各个模块之间的主要关系 图书信
7、息管理系统可划分为5个模块:查询所有图书模块、查找一本图书信息模块、修改图书信息模块、删除图书信息模块、借阅图书模块。各模块之间均有着或多或少的联系,比如: 查找一本图书信息模块、修改信息模块、删除信息模块、借阅图书模块都需要先判断该图书是否存在,然后再进行其它操作。理解了各模块之间的主要关系有利于程序的设计与完成,使程序的层次结构清晰,便于程序的编写、阅读和调试。 - 4 - C语言课程设计课程设计报告 2.3总体程序框图 图书馆信息管理系统 查询所有图书信息 开始 编译运行 main 书图输入 编号 是书入图输 相关信息否提示是 图书信息 输入编号打开文件,应出相给的新输入 结束 信息:
8、strcmp(比较两个字符串的大小) 书图输入 是 编号入提示输 结束 学号 编将学号、新存入号 的文件中 显 查找一本 图书的信息 添加图书信息 示打开文件,重 查找存 在中在文件在文查找 存在 删除图书信息 的添后加 是新写 不存在中件不存在否是存 在 借阅图书 否结束入的提示提示是否继续借 阅否 退出系统 图2.1 系统总框架图 2.4系统的总体流程图 打开文件 数据读入 结构体中 执 行选择 调用不同函数 - 5 - C语言课程设计课程设计报告 系统总流程图图2.2 - 6 - C语言课程设计课程设计报告 3 功能模块的具体设计 3.1 main() 函数模块 根据图书馆信息管理系统的
9、要求,可设计一个主函数,及定义多个用户自定义函数。在主函数中定义全局变量,即是在函数外部定义的变量,其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用。通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。运用fscanf语句在主函数中将文件中的内容赋给结构体变量,便于在自定义函数中对结构体的调用。 具体如下: 在主函数中定义一个存放图书信息的结构体 struct list char num20 ; /*图书编号*/ char name40 ; /*书名*/ char author40 ; /*作者*/ char publish 40; /*出版社*/
10、 double price; /*价格*/ ; 以及各函数的申明*/ void search_allinformation(struct list b) ; /*查看全部图书信息*/ void check_bookinformation (struct list b ); /*查找图书信息*/ void add_bookinformation (struct list b ); /*添加图书信息*/ 删除图书信息void delete_bookinformation (struct list b ); /*/ void borrow_book (struct list b ) ; /*借阅图书
11、 breakswitch 通过将语句与语句联合使用来实现多分支选择结构程序的设计。switch (choice1) case 1 : search_allinformation (b); - 7 - C语言课程设计课程设计报告 break ; case 2 : check_bookinformation( b ); break ; case 3 : add_bookinformation (b ); break ; case 4 : delete_bookinformation( b); break ; case 5 : borrow_book( b); break ; case 0 : br
12、eak ; 3.2查询所有图书信息函数模块 void search_allinformation (struct list b) 通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加printf()实现图书信息的循环输出显示。 3.3 查询一本图书信息函数模块 void check_bookinformation(struct list b ) 用户先输入图书编号后,先用strcmp(s1, s2)函数进行比较两个字符串数组的大小,从而查找出该图书是否存在,若不存在则提示用户是否要继续查找,运用switch语句 ,若继续则再次调用函
13、数本身进行第二次查找,直到找到为止,若否则结束循环,不再进行查找。 通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。运用fscanf语句在主函数中将文件中的内容赋给结构体。 其主要流程图如下: - 8 - C语言课程设计课程设计报告 开始 是提示图示显该查找编号续否继 不存在存在 书信息 是否存在 查找 (输出信息) printf判断 比较字符串关键代码:strcmp() case.break() ) switch(实现选择功能分支 3.4 添加图书信息函数模块 void add_bookinformation(struct list b )输入图书的基本信息包括
14、编号、书名、出版社、作者、价格,由于原有的图书信息是按 strcmp函数找出输入的图书和循环照编号的大小顺序排列的,所以只需运用for 应该插入的位置,再将所添加的图书信息插入即可。 其主要流程图如下:- 9 - C语言课程设计课程设计报告 开始 ) 关键代码: printf(输出信息) scanf (输入信息 switch(实现多分支结构程序设计)(实现功能的选择)case-break 删除图书信息函数模块3.5void delete_bookinformation (struct list b ) 用户输入所要删除的图书编号,先查找该图书编号是否存在,若存在,这提示用户是否 要显示删除后的
15、信息,若不存在则提示重新输入。 - 10 - C语言课程设计课程设计报告 开始关键代码 switch(实现多分支结构程序设计) if(条件选择) 3.6 借阅图书模块 void borrow_book(struct list b )用户先输入所借图书的编号,调用函数查找该图书有没有借出,若已借出,则提示用户该图书已借出,并提示用户是否继续借阅其他书籍。若继续,则继续进行新的查找。 - 11 - C语言课程设计课程设计报告 开始 关键代码:if-else(实现分支选择) getchar (从键盘上输入一个字符) (使程序的执行流程直接转接到标号对应的那条语句)goto (比较两个字符串的大小)s
16、trcmp - 12 - C语言课程设计课程设计报告 4功能模块的调试及测试 4.1主菜单运行界面 图4.1 主菜单运行界面图 4.2查询所有图书信息模块运行界面 操作查询所有图书信息,1按(1)打开源程序,编译程序,单击Compile按钮,出现错误,如图: - 13 - C语言课程设计课程设计报告 (2)错误均指向55行,经检查发现调用函数时调用的是整个结构体,而非某一个,所以应该为 search_allinformation (b) . (3)改正后重新运行,即的如下所示的界面如下: 图4.2查询所有图书信息模块界面 4.3查找某一本图书信息模块运行界面 按2选择按书名查询某一本图书信息,
17、 若图书编号存在则界面如下: - 14 - C语言课程设计课程设计报告 图4.3 按编号查询图书信息界面 若图书编号不存在, (1)输入y ,没有进行继续查找的操作 (2)调试程序,可查出输入的y对程序无影响,由于输入的是一个字符,而”0”本身也是一个字符,则可将scanf(“%s” , /*图书编号*/ char name40 ; /*书名*/ char author40 ; /*作者*/ char publish 40; /*出版社*/ double price ; /*价格*/ ; struct list b40 ; int w=0; /*定义一个全局变量,用来记录bookinfo.tx
18、t文件中的数据个数*/ void search_allinformation(struct list b) ; /*查看全部图书信息*/ void check_bookinformation (struct list b ); /*查找图书信息*/ void add_bookinformation (struct list b ); /*添加图书信息*/ void delete_bookinformation (struct list b ); /*删除图书信息*/ void borrow_book (struct list b ) ; /*借阅图书*/ int main () int i =
19、 0 ; int choice1; FILE *fp ; printf( * * *n); printf( * 欢迎进入图书馆信息管理系统 *n); printf( * * *n); fp = fopen (e:BookInfo.txt , ) ; if(fp = NULL) printf(Can not open the file !n) ; exit (0) ; while (! feof(fp) fscanf(fp,%s%s%s%s%lf , /*调用函数将文件中的数据读入结构变量中*/ bi.num,,bi.author,bi.publish, i+ ; w=i-1; f
20、close (fp) ; do - 25 - C语言课程设计课程设计报告 printf(#); printf( 功能选项: n); printf( 1:查看全部图书信息 n) ; printf( 2:查找图书信息 n) ; printf( 3:添加图书信息 n) ; printf( 4:删除图书信息 n) ; printf( 5:借阅图书 n) ; printf( 0:退出系统 n) ; printf(#); 牰湩晴尨请选择操作:); scanf(%d , switch (choice1) case 1 : search_allinformation (b); break ; case 2 :
21、 check_bookinformation( b ); break ; case 3 : add_bookinformation (b ); break ; case 4 : delete_bookinformation( b); break ; case 5 : borrow_book( b); break ; case 0 : break ; while (choice1 != 0); ?牰湩晴尨谢谢使用!n); return 0; - 26 - C语言课程设计课程设计报告 /*查看全部图书信息*/ void search_allinformation (struct list b) i
22、nt i; printf( #n); printf( # 查看全部图书信息! #n); printf( #n); ?牰湩晴尨图书的相关信息: 编号 书名 作者 出版社 价格n); for(i=0;iw;i+) printf( %s %s %s %s %.2fn, /*将数据输出到屏幕中*/ bi.num, , bi.author, bi.publish, bi.price); printf(%d , w); printf(#n); /*查找图书信息*/ void check_bookinformation(struct list b ) int i, flag=0; char s
23、20; ?牰湩晴尨输入编号:n) ; /*提示输入图书编号*/ scanf(%s , s); printf( #n); printf( # 查找图书信息! #n); printf( #n); for(i=0;iw;i+) if (strcmp(s, bi.num)=0) ?瀠楲瑮?该图书的相关信息: 编号 书名 作者 出版社 价格n); printf( %s %s %s %s %.2fn, bi.num, , bi.author, bi.publish, bi.price); flag = 1; break; if (flag = 0) ?瀠楲瑮?该图书编号不存在!n); - 2
24、7 - C语言课程设计课程设计报告 ?瀠楲瑮?是否要继续查找? y:是 ; n:否n) ; getchar(); switch(getchar() case y: check_bookinformation( b ) ; /*调用函数本身继续查找*/ case n : break ; printf(#n); /*添加图书信息*/ void add_bookinformation(struct list b ) int i, count=0, choice3; struct list p ; FILE *fp2 ; printf( #n); printf( # 添加图书信息! #n); prin
25、tf( #n); ?牰湩晴尨请输入该图书的相关信息:n) ; ?牰湩晴尨编号 书名 作者 出版社 价格n); scanf( %s %s %s %s %lf, p.num , ,p.author,p.publish, printf( 添加成功 !n); printf( 是否显示添加后的信息? 1:是 ; 2:否 n); printf( 请选择:); scanf(%d , switch (choice3) case 1 : for(i=0;i0) count + ; for(i=w;icount;i-) bi = bi-1 ; bi = p ; w+; /*每添加一本图书,图书数目都会
26、增加一个*/ fp2 = fopen (e:BookInfo.txt , w) ; - 28 - C语言课程设计课程设计报告 if(fp2 = NULL) printf(Can not open the file !n); exit (0) ; for(i=0;iw;i+) fprintf(fp2, %s %s %s %s %.2fn , bi.num,,bi.author,bi.publish,bi.price); fclose (fp2) ; for(i=0;iw;i+) printf( %s %s %s %s %.2fn , bi.num,,bi.author
27、,bi.publish,bi.price); case 2 : break ; printf(#n); /*删除图书信息*/ void delete_bookinformation (struct list b ) int i, flag= 0,choice4; char s20 ; printf( #n); printf( # 删除图书信息 #n); printf( #n); 牰湩晴尨请输入图书编号:); scanf(%s, s); for(i=0;iw;i+) if(strcmp(s,bi.num)=0) printf( 删除成功 !n); printf( 是否显示删除后的信息? 1:是
28、; 2:否 n); printf( 请选择:); scanf(%d , switch (choice4) case 1 : - 29 - C语言课程设计课程设计报告 ?牰湩晴尨删除后的图书信息: 编号 书名 作者 出版社 价格n); for(i=0;iw;i+) if(strcmp(s,bi.num)!=0) printf( %s %s %s %s %.2fn, bi.num, , bi.author, bi.publish, bi.price); case 2 : break ; flag = 1 ; break ; if(flag = 0) 牰湩晴尨该图书编号不存在!n); printf(#n); /*借阅图书*/ void borrow_book(struct list b ) int i=0, n=0,flag=0, x=0; int m; /*定义一个变量用来记录sendinfo.txt文件中的数据个数*/ struct list q; struct student char name20 ; char number40 ; ; struct student stu50 ; FILE *fp ; FILE *fp4 ; printf( #n); printf( # 借阅图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械设备的三级保养制度
- 景区检票口制度
- 全科医学考试题库及答案
- 2026全球葡萄种植技术发展现状及未来趋势研究报告
- 2026儿童防走失产品技术路线与市场教育难点分析报告
- 基于iFIAS的熟手-新手教师初中英语听说课堂言语互动比较研究
- 基于情境创设的高中生物学概念教学的模式建构与应用研究
- 内蒙古绿色金融与经济高质量发展的耦合协调研究
- 2026儿童绘本出行业市场格局与数字化转型分析报告
- “全球英国”背景下的英国文化外交研究-以英国文化教育协会为例
- (完整版)医学节肢动物
- 2024年山东省青岛市中考化学真题(解析版)
- YYT 0689-2008 血液和体液防护装备 防护服材料抗血液传播病原体穿透性能测试 Phi-X174噬菌体试验方法
- 心脑血管疾病急救知识讲稿
- 医务社会工作
- 幼儿园故事课件:《笨蛋汉斯》
- 国际法论文完整版
- 职业卫生档案范本
- YC/Z 575-2018打叶复烤初烤烟选叶指南
- JJG 52-2013弹性元件式一般压力表、压力真空表和真空表
- GB/T 13235.3-1995石油和液体石油产品立式圆筒形金属油罐容积标定法(光电内测距法)
评论
0/150
提交评论