2022年C语言图书馆管理系统课程设计报告 .pdf
一、 目的要求C语言程序设计是一门讲述C语言的基本知识和编程方法的课程。在讲述 C语言数据类型的基础上对C语言的五类语句做了简单的介绍,另外还讨论了 C语言的三种程序结构:顺序、选择和循环。对函数的使用、指针的概念、结构体的应用、文件的操作做了详细的介绍。同时结合高职的实际要求和学生的具体情况,在实际教学过程当中强调技能操作的具体指导,鉴于此,编写了 C语言课程设计实训大纲。希望同学们能通过实训大纲对C语言有更全面的认识。通过综合训练,要求学生掌握C 语言的各种数据结构,熟练应用C 语言的各种程序结构,熟悉函数的定义、函数的调用,灵活应用指针,能够解决一般的程序设计问题。图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。设计一图书信息管理系统, 使之能提供以下功能:1) 系统以菜单方式工作;2) 图书信息录入功能 ( 图书信息用文件保存) 输入;3) 图书信息浏览功能输出;4) 查询和排序功能 :( 至少一种查询方式 ) 算法;5) 按书名查询;6) 按作者名查询;7) 图书信息的删除与修改(可选项 )。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - 二、 设计思路根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。1、系统需求分析经过以上对本系统的调研及可行性分析后,下面将对系统在功能上以及性能上进行进一步的需求分析。2、功能介绍输入图书信息 , 出现一个 图书信息管理系统的主界面,其中有6 个数字代表的选项 ,可以按相关的数字进行操作。每一条记录包括一本书的书名、图书号、 作者、出版时间、出版社名、价格。 0)退出:如果在图书管理系统的主界面,则退出的是系统,如果是在子菜单下则返回到主界面。 1)录入新图书:可以完成一条信息的输入,也可以完成多条信息的输入。 2)浏览图书信息:学生可以浏览图书的相关信息,包括一本书的书名、图书号、作者、出版时间、出版社名、价格。 3)自主查询图书信息:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 可以按书名或按作者查找图书的相关信息并显示。 4) 删除图书信息:只能通过图书号删除一本书的相关信息。 5) 修改图书信息:只能通过图书号进行修改该图书的相关信息。3、模块划分图 1 系统功能模块图4、数据流图图 2 系统数据流程图显示一系列功能选输入 n,判断 n 是否是 05?根据 n 的值调用各功能模块函数n 信息查询信息浏览信息删除信息修改信息录入图 书 管 理 系开始结束退出系统名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - 三、 设计步骤#include #include #include typedef struct char number10;/书号char name20;/书名char author20;/作者char publish50;/出版社char time20;/出版时间float price; mbook; typedef struct int count;/书的本数mbook book100;/最大可有 100本书mlibrary; mlibrary library; void save()/保存图书信息。 FILE *fp; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - - - if(fp=fopen(library.doc,w)=NULL) printf(n 不能保存图书信息 n); return; fwrite(&library.count,sizeof(int),1,fp); fwrite(library.book,sizeof(library.book0),library.count,fp); void putin() /* 定义录入函数 */ int y=1; system(cls); while(y) printf(t 请输入您的书籍的书号 :); scanf(%s,library.booklibrary.count.number); printf(t 请输入书名 :); scanf(%s,library.booklibrary.count.name); printf(t 请输入作者名 :); scanf(%s,library.booklibrary.count.author); printf(t 请输入出版社 :); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - scanf(%s,library.booklibrary.count.publish); printf(t 请输入出版时间 :); scanf(%s,library.booklibrary.count.time); printf(t 请输入该书的价格 :); fflush(stdin); scanf(%f,&library.booklibrary.count.price); library.count+; printf( 录入成功,恭喜您! ); printf(n 是否继续录入 (1.继续;0,退出录入 ):); fflush(stdin); scanf(%d,&y); if (y!=1) y=0; break; save(); void lookup() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - system(cls); printf( 图书号 t 图书名 t 作者名 t 出版社 t 出版日期 t 图书价格 n); for (int i=0;ilibrary.count;i+) printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price); printf(n 查询结果如上按 0 键返回主菜单 : ); fflush(stdin); getchar(); void search_by_name() /*定义按书名查询 */ char s220; int flag=1; printf(n 请输入要查询的书名 : ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - fflush(stdin); scanf(%s,s2); printf( 图书号 t 图书名 t 作者名 t 出版社 t 出版日期 t 图书价格 n); for(int i=0;ilibrary.count;i+ ) if(strcmp(s2,library.booki.name)=0) flag=0; printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price); if (flag) printf( 查询错误 !按 0 键返回主菜单:); fflush(stdin); getchar(); void search_by_author() /*定义按作者名查询 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - char s320; int flag=1; printf( 请输入要查询的书的作者: ); fflush(stdin); scanf(%s,s3); printf( 图书号 t 图书名 t 作者名 t 出版社 t 出版日期 t 图书价格 n); for(int i=0;ilibrary.count;i+ ) if(strcmp(s3,library.booki.author)=0) flag=0; printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price); if (flag) printf( 查询出错 !按 0键返回主菜单:); fflush(stdin); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - getchar(); void search() /*定义查询函数 */ int a; system(cls); /*进行清屏 */ printf(tt*n); printf( 开始查询 n); printf(ttt1- 按书名查询 n); printf(ttt2- 按作者名查询 n); printf(ttt0- 退出n); printf(tt*n) ; printf(tt 请选择你想要的查询方式:); fflush(stdin); scanf(%d,&a); switch(a) case 1: search_by_name(); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - case 2: search_by_author(); break; case 0: return; void del() /*定义删除函数 */ char number10; system(cls); /* 清屏*/ printf(n 请输入想要删除的书名:); fflush(stdin); scanf(%s,number); int i; for (i=0;ilibrary.count;i+) if(strcmp(number,library.booki.number)=0)break; if (i!=library.count) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - for(;ilibrary.count-1;i+) strcpy(library.booki.name,library.booki+1.name); strcpy(library.booki.number,library.booki+1.number); strcpy(library.booki.publish,library.booki+1.publish); strcpy(library.booki.author,library.booki+1.author); strcpy(library.booki.time,library.booki+1.time); library.booki.price=library.booki+1.price; library.count-; else printf(n cannot found!n); printf( 删除成功按 0 键返回主菜单 ); save(); fflush(stdin); getchar(); void update()/修改图书信息 char number10; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - system(cls); /* 清屏*/ printf(n 请输入你要更改的图书名:); fflush(stdin); scanf(%s,number); int i; for (i=0;ilibrary.count;i+) if(strcmp(number,library.booki.number)=0) printf( 图书号 t 图书名t 作者名 t 出版社 t 出版日期 t 图书价格n); printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price); break; if (i!=library.count) mbook book; printf(ntt 请输入修改后此图书的信息n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - printf(t 请输入图书号 :); scanf(%s,book.number); printf(t 请输入图书名 :); scanf(%s,book.name); printf(t 请输入作者名 :); scanf(%s,book.author); printf(t 请输入出版社 :); scanf(%s,book.publish); printf(t 请输入出版时间 :); scanf(%s,book.time); printf(t 请输入该书的价格 :); fflush(stdin); scanf(%f,&book.price); strcpy(library.booki.name,book.name); strcpy(library.booki.number,book.number); strcpy(library.booki.publish,book.publish); strcpy(library.booki.author,book.author); strcpy(library.booki.time,book.time); library.booki.price=book.price; save(); printf(n 修改成功请按0 键返回主菜单: ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - else printf(n 修改出错 !请按 0 键返回主菜单: n); fflush(stdin); getchar(); void main() FILE *fp; if(fp=fopen(library.doc,r)=NULL) printf(n 不能打开图书信息库n); fp=fopen(library.doc,w+); printf(n 初始化图书信息库 ,初始化之后要重启程序 n); library.count=0; fwrite(&library.count,sizeof(int),1,fp); fclose(fp); fread(&library.count,sizeof(int),1,fp); fread(library.book,sizeof(library.book0),library.count,fp); fclose(fp); int a; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - do system(cls); printf(nnnnntttt 图书信息管理系统 ttttn); printf(tt*n); printf(ttt1 - 图书信息录入 n); printf(ttt2 - 图书信息浏览 n); printf(ttt3 - 图书信息查询 n); printf(ttt4 - 图书信息删除 n); printf(ttt5 - 图书信息修改 n); printf(ttt0 - 退出图书信息系统 n); printf(tt*n); printf(tt 请输入操作类型 : ); fflush(stdin); scanf(%d,&a); switch(a) case 1: putin(); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - case 2: lookup(); break; case 3: search(); break; case 4: del(); break; case 5: update(); break; case 0: printf(nn 退出 nn); break; default: printf(n 序号不对 n); while(a!=0); save(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - 四、 课程设计总结通过为期一周的课程设计,对C 语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -