《图书管理系统报告模板》由会员分享,可在线阅读,更多相关《图书管理系统报告模板(17页珍藏版)》请在金锄头文库上搜索。
1、西安郵電大學西安郵電大學C 语言课程设计报告题题 目:图书信息管理系统目:图书信息管理系统院系名称:计算机学院院系名称:计算机学院专业名称:计算机科学与技术专业名称:计算机科学与技术班班 级:级:11 级级 03 班班学生姓名:王贞学生姓名:王贞学号(学号(8 位):位):04111094指导教师:宋辉指导教师:宋辉设计起止时间:设计起止时间:2012 年 6 月 6 日2012 年 6 月 15 日一一. . 设计目的设计目的1.强化上机动手能力,在理论和实践的基础上进一步巩固C 语言程序设计课程学习的内 容,掌握工程化软件设计的基本方法 2.学会将知识应用于实际的方法,提高分析和解决问题的
2、能力,增加综合能力 3.为后续各门计算机课程的学习打下坚实基础 4.熟练掌握 C 语言开发平台的相关操作2. 设计内容设计内容(1)运用链表编辑一个简单的图书信息管理系统,使之能够完成图书基本信息的创建(录 入) 、修改、借出与未借出图书信息、存储图书信息、读取图书细信息,查询、删除、 排序、输出、退出操作。 (2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。(3)执行运行操作,单独列出每一个模块并对每个模块逐一进行调试。直到全部程序运行 成功为止。 (4)请老师检查,向老师演示此程序,并能回答老师提出的相关问题。三概要设计三概要设计1 1功能模块图;功能模块图
3、;图书信息管理系统图书信息管理系统图书信息 录入模块图书信息查询 记录模块图书信息更新 记录模块图书信息统 计记录模块图书信息 输出模块从 文 件 读 入从 键 盘 输 入按 序 号 查 询按 书 名 查 询按 类 型 查 询修 改 记 录删 除 记 录插 入 记 录排 序 记 录按借出与在库 图书信息统计, 并按序号、书 名和类型统计输 出 至 文 件输 出 至 屏 幕附:本图书信息管理系统还有借出与在库图书信息查询,以方便用户的使用和查询。附:本图书信息管理系统还有借出与在库图书信息查询,以方便用户的使用和查询。2 2、各个模块详细的功能描述。、各个模块详细的功能描述。 (1)主函数在该模
4、块中,调用其他各子函数,利用 switch 语句进行对应功能选择,然后进入该功能;(2 2)图书信息录入模块图书信息录入模块对定义的图书信息结构体变量,利用链表从键盘输入或者从文件读取图书信息,其中,对定义的图书信息结构体变量,利用链表从键盘输入或者从文件读取图书信息,其中,图书序号、出版时间(年份和月份)定义为整型,图书价格定义为实型,书名、作者、出版社、图书序号、出版时间(年份和月份)定义为整型,图书价格定义为实型,书名、作者、出版社、图书在库和借出和图书类型均定义为字符型;同时也可从以二进制形式存储的数据文件中直接图书在库和借出和图书类型均定义为字符型;同时也可从以二进制形式存储的数据文
5、件中直接读取图书信息;读取图书信息;(3)图书信息输出模块 输出记录模块主要完成两个任务:第一,利用读取 print 函数,实现将链表中的图书记 录信息以表格的形式在屏幕上打印出来;第二,实现对图书信息的存盘操作,即将链表中的图 书信息写入数据文件中; (4)图书信息更新模块A、删除模块 该模块分为按序号、书名和类型三种删除方式,用户可任意从键盘输入 选项前面的序号进行选择,成功删除后,用户可按任意键进入选择菜单栏,浏览图书信息,即 可确定是否已删除;B、插入模块 该模块首先需要输入图书信息,以序号 0 结束输入,清屏后输出所有的 图书信息;C、排序模块 该模块有两种排序方式:按序号大小和按图
6、书价格从高到低排序,比较 两种数据,利用链表交换数据,最后显示排序成功后的图书信息; D、修改模块 该模块对所有的图书信息都可实现修改,修改后调用输出函数将修改后 的结果打印出来; (5)图书信息查询模块 该模块同删除模块,分为按序号、书名和类型三种方式查询,利用 switch 语句的思想,找到对应选项进行功能查询; (6)图书信息统计模块 该模块统计在库图书信息和借出图书信息,以及按序号,书名和类别统计,定义一个 数组并初始化为 0,最后输出统计的结果; (7)在库图书和借出图书模块 在该模块中,定义一个字符数组,若输入为“是”则为借出图书, “否”即为在库图 书,然后在图书信息浏览模块可以
7、查询图书信息。四详细设计四详细设计1功能函数的调用关系图图2 2各功能函数的数据流程图各功能函数的数据流程图(1)输入模块登录系统登录系统主 函 数删除模块函数修改模块函数按所选项目 前的序号进 行选择统计模块函 数查询模块函 数插入模块函 数排序模块函数按序号和书 名删除按图书价格 和序号排序借出图书和 在库图书函 数将图书信息从文 件中读取和存入 函数退出系统退出系统否否是是2 2、 (输出模块)(输出模块)3、删除模块输入模块输入模块输输 入入 图图 书书 信信 息息输输 入入 完完 毕毕返返 回回 主主 菜菜 单单存存 入入 至至 文文 件件输输出出模模块块输出至屏幕输出至文件3 3重
8、点设计及编码重点设计及编码1、图书信息录入模块 按提示输入图书信息,图书序号为 0 结束。 struct library1 *input() /*图书信息输入函数*/ struct library1 *head=NULL,*p1,*p2;/*定义结构体指针*/ int n=0; p1=p2=(struct library1 *)malloc(LEN); /*创建结点*/printf(“-n“);printf(“请输入序号(按 0 键结束):n“);scanf(“%d“,if(p1-num=0)return(head); /*p1 为 0 时返回 head 的值*/printf(“请输入书名:n
9、“);/*输入图书信息*/scanf(“%s“,p1-name );printf(“请输入出版年份:n“);scanf(“%d“,printf(“请输入出版月份:n“);scanf(“%d“,printf(“请输入出版社:n“);scanf(“%s“,p1-pub);printf(“请输入作者姓名:n“);scanf(“%s“,p1-auth);printf(“请输入是否借出(是或否):n“);scanf(“%s“,p1-lend );printf(“请输入该书价格:n“);scanf(“%f“,printf(“请输入类型(数理、文艺、计算机、外语、杂志、其他)n“);scanf(“%s“,p
10、1-types); while(p1-num!=0) n=n+1; if(n=1)head=p1; else p2-next=p1;p2=p1;p1=(struct library1 *)malloc(LEN); /*开辟一个长度为 LEN 的内存区*/printf(“-n“);printf(“请输入序号(按 0 键结束):n“);scanf(“%d“,if(p1-num =0)break; /*图书的序号为 0 时直接跳出循环*/printf(“请输入书名:n“);scanf(“%s“,p1-name );printf(“请输入出版年份n“);scanf(“%d“,printf(“请输入出版
11、月份:n“);scanf(“%d“, /*多次输入图书信息*/printf(“请输入出版社:n“);scanf(“%s“,p1-pub );printf(“请输入作者姓名:n“);scanf(“%s“,p1-auth );printf(“请输入是否借出(是或否):n“);scanf(“%s“,p1-lend );printf(“请输入该书价格:n“);scanf(“%f“, printf(“请输入类型(数理、文艺、计算机、外语、杂志、其他)n“);scanf(“%s“, p2-next=NULL; /*p1 指向开辟的新结点,p2 指向链表中的最后一个结点*/ return (head); /
12、*返回链表的头地址*/ 2、图书信息输出模块 void print(struct library1 *head) /*输出函数*/ struct library1 *p; printf(“图书信息如下:nn“); p=head; if(head!=NULL) do printf(“ | 序号 |书名 |出版日期(年份) | 出版日期(月份) |出版社 | 作者姓 名 | 此书价格 |此书类型 |是否借出|nn “); printf(“- -n“);printf(“%10d%8s%18d%20d%10s%13s%11.1f%15s%11snn“,p-num ,p-name ,p- book_pu
13、blish.year ,p-book_publish.month,p-pub ,p-auth ,p-price,p-types,p-lend ); p=p-next ; while(p!=NULL); 3、删除模块五测试数据及运行结果五测试数据及运行结果1 1正常测试数据和运行结果正常测试数据和运行结果(1 1)输入模块输入模块(2 2) 、输出模块、输出模块(3 3)插入模块插入模块插入后的图书信息插入后的图书信息4 4、删除模块删除模块(5 5)查询模块查询模块6、修改模块修改模块7 7、统计模块统计模块8 8、排序模块排序模块9 9、未借出的图书信息未借出的图书信息2 2异常测试数据及运
14、行结果异常测试数据及运行结果六调试情况,设计技巧及体会六调试情况,设计技巧及体会1 1改进方案改进方案我对本次的课程设计基本上满意,但也存在很多不足,比如说用户登录和管理员登录,设置密码,对于这个 问题,我应该再编写一个登录函数,同样用刚开始的界面不是很友好,程序设计过程中对用户的提示信息也 不够完整,同时,图书信息也不是很完整,比如说在库的图书信息和借出的图书信息查询,对于这个问题, 我想我应该在借出与在库图书信息函数里调用 print 函数,显示图书信息,再者,在本次课程设计中,我只 是单一的使用 switch 语句,没有开发思维去考虑其他方法,虽然最后功能都基本实现,但却没有把所学的 知
15、识扩展开来,这是需要改进的一个大问题。再应该注意的就是要尽力把程序的界面整理的更友好一些。2 2体会体会在本次课程设计中,有成功也有失败,有泪水也有汗水,但最终的结果我认为还是很不错的,基本实现了 图书管理的一些必备功能,也从另一方面提高了我对 C 语言学习的兴趣和独立解决问题的能力,感觉一年 的 C 语言学习就在课程设计这两个星期里有了质的飞跃和提高。刚看到本次课程设计的题目,我脑子还是一片空白,后来几天里我努力询问别人的思路查找图书,最后在 脑子里建立起了一个基本框架,然后才开始写代码,感觉这个过程是我在本次课程设计中最难跨越的一个坎, 却也是一个重中之重,我也终于体会到那句“宏观主宰全局,细节决定成败”的道理,即使在平常一个小分 号也会让程序很难正确运行。同时这次的课程设计融合了前面所学的所有