版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 坚持就是胜利!HUNAN UNIVERSITY程序设计训练报 告学生姓名 学生学号 专业班级 指导老师 起 止 时 间 2009年11月8日-2009年11月20日 实训一 图书管理系统实训目的:1. 掌握结构化程序设计的基本思想;2. 熟练掌握结构以及指针的设计和应用;3. 熟练掌握文件的存取方法;4. 了解综合系统设计的基本原理;5. 提高C语言程序设计的综合应用能力。实训任务:开发一个简单的图书管理系统,具体功能要求如下:1 图书管理:增加图书、修改图书、删除图书、统计图书;2 借阅管理:查找图书、借阅图书、归还图书、借阅图书统计;3 读者管理:申请读者卡、删除读者卡、修改读者卡;4
2、馆员管理:添加管理员、修改管理员信息、删除管理员。根据以上功能说明,设计馆员信息、读者信息、读者卡信息、图书信息的存储结构,数据存储在文件中,界面要求有合理的提示,每个功能可以设立菜单,根据提示可以完成相关的功能要求。实训设计:1 基本数据结构设计:考虑到本程序有很多增删工作,故采用链表存储结构。在主函数中创建四个空链表:2系统结构设计:系统结构设计说明了整个系统的功能模块结构以及调用关系,本设计采用自顶向下的结构化方法,将每个模块自顶向下展开。3. 模块设计:(1) 主控模块在该模块中,提供系统的主菜单,通过主菜单用户选择图书管理、借阅管理、读者管理、馆员管理和退出系统。而这些功能,我没有写
3、成大函数,只是多写了几个界面显示函数,即二级菜单显示,再在二级菜单中选择,实现相应的功能。其中退出系统的实现很简单,在主函数main()中用return 0 语句退出main()函数即可。choiceone=1?choiceone=2?choiceone=3?choiceone=4?choiceone=0?进入图书管理模块进入借阅管理模块进入读者管理模块进入馆员管理模块(2) 图书管理模块在该模块中,提供子菜单供用户选择增加图书、修改图书、删除图书、统计图书、返回主菜单。增加图书通过提示输入,完成一条记录输入后,可以返回上一级菜单,再选择进行图书管理模块的操作。删除、修改通过图书,通过编号查找
4、到该书,然后再进行删除、修改。做完一条记录的删除、修改后可以返回上一级菜单。choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0? 返回主菜单统计图书,对存书进行统计输出显示图书编号、书名、作者、出版社、状态(0表示在馆,1表示已借出),显示完成后按任意键返回到图书管理模块,可以再进行相关操作。(3) 借阅管理模块在该模块中,提供子菜单,供用户选择查找图书、借阅图书、归还图书、借阅图书统计和返回主菜单的操作。查找图书可以通过图书编号、图书作者进行查找,然后将查找的结果输出。借阅图书首先输入读者卡号,然后输入所借图书编号或图书作者
5、,找到图书后,进行借阅登录。归还图书,首先输入所还图书编号,然后在图书库中找到这本书,并将其状态设置为0,表示此书在馆。借阅图书统计,把已经借出的图书的信息输出,具体实现即找到书的状态为1的图书,然后将结果输出。返回主菜单,我是直接在主函数中用了goto语句,直接跳到主菜单。choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0? 返回主菜单 返回主菜单(4) 读者管理模块choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0?在该模块中,提供子菜单供用户选择申请读者
6、卡、删除读者卡、修改读者卡、借阅情况统计和返回主菜单。申请读者卡通过数据录入向导逐项输入,完成一条记录输入后,添加到读者链表中。删除、修改读者卡通过读者卡号查找到该记录,然后再进行删除、修改,返回读者链表的头指针。借阅情况统计。则是对图书的状态为1的图书逐一进行统计,并输出统计结果。 返回主菜单(5) 馆员管理模块choicetwo=1?choicetwo=2?choicetwo=3?choicetwo=4?choicetwo=0? 返回主菜单在该模块中,提供子菜单供用户选择增加馆员、删除馆员、修改馆员、馆员统计和返回主菜单的操作。增加馆员通过数据录入向导逐项输入,完成一条记录输入后,添加到馆
7、员链表中;删除、修改馆员通过馆员号编号查找到该记录,然后再进行删除、修改,并将修改后的结果保存到馆员链表中;馆员统计对全体馆员进行逐项统计,并输出统计结果。具体实现: 设计好思路后,接下来就是具体写函数实现了,在这里我就不一一对函数进行说明了,只说说图书管理模块的addbook、modbook、delbook、countbook几个函数。addbook这个函数,就是在链表中增加新结点的操作,把头指针作为参数传进来,进行增加后再把头指针返回: modbook这个函数,就是修改链表中某一结点的内容,先通过编号找到要修改的图书,然后选择要修改的内容,再对其进行修改即可。同样把头指针作为参数传进来,进
8、行修改后再把头指针返回:delbook这个函数是删除链表中的某一个结点,链表的删除操作用两个指针即可,要注意的是,要对删除点位于头结点和尾结点进行讨论。同样把头指针作为参数传进来,进行删除后再把头指针返回:countbook这个函数,就是将链表中的节点的内容一一输出,用个循环即可:其他几个模块的函数,跟这几个函数有些类似,所以就不再一一解说了。软件使用说明:主菜单:选择后便可进入相应的管理模块。图书管理菜单:选择后,便可进行相应操作。借阅管理菜单:选择后,便可进行相应操作。读者管理菜单:选择后,便可进行相应操作。馆员管理菜单:选择后,便可进行相应操作。心得体会: 在做这个图书管理系统的过程中,
9、遇到了很多问题,正是在这些问题中,我的编程能力得到了一定的提高。现对一些问题进行总结:(1) 最开始,我想按照老师所说的,把要包含的库函数、数据结构的定义和函数申明都用一个头文件tsgl.h ,各函数的具体实现则用一个tsgl.cpp文件,main()函数则放在main.cpp里。在tsgl.cpp 和 main.cpp 包含自定义的头文件tsgl.h即可。开始我用了#include<tsgl.h>,可是调试时老报错,实在不理解后向老师请教的,才发现原来对于自定义的头文件是不能用<>的,只能这样写:#include “tsgl.h”。(2) 在写delbook函数的时候
10、,一开始并没有考虑到删除结点若位于头结点或尾结点的情况,只是笼统的写在一起。在编译运行后才发现,如果删除头结点或尾结点,再进行图书统计就会发现出现了问题。(3) 对链表进行操作,我是用的指针,而在指针进行移动往往会出现不可预料的问题: 对于这种问题,经常出现,而我解决的办法就是进行调试,看是哪个地方出错了,而这种错误往往是在对指针进行下移的地方,然后再进行修改。像这种问题是要一遍一 遍地调试的,多了就知道道儿了。(4) 如何把系统当前的日期(年月日)自动加载到借书日期里去?对于获得系统当前的时间,以前在学MFC的时候好像遇到过,但具体的忘了,所以只得上网查查。在库函数time.h里,就有相关的
11、函数。time_t currenttime; struct tm *timer; time(¤ttime); timer=localtime(¤ttime);可是这样得到的时间既有年月日也有时分秒,而我只需要年月日,所以只取年月日部分:c2->lenddate0=1900+timer->tm_year; /tm_year 从1900年计算,/所以要加1900c2->lenddate1=1+timer->tm_mon; / 月tm_mon,从0计算,/所以要加1 c2->lenddate2=timer->tm_mday;
12、附录1:参考资料 (1)C语言程序设计 李丽娟主编 人民邮电出版社 (2) (获取系统当前时间)附录2:程序清单 工程TSGL tsgl.h (自定义头文件) tsgl.cpp (除main函数外的所有函数的实现) main.cpp (main()函数的实现)各个函数:void display(); /主界面void display1(); /图书管理界面void display2(); /借阅管理界面void display3(); /读者管理界面void display4(); /馆员管理界面struct Book *addbook(struct Book *bookhead); /增加图
13、书struct Book *delbook(struct Book *bookhead); /删除图书struct Book *modbook(struct Book *bookhead); /修改图书void countbook(struct Book *bookhead); /统计图书struct Book *findbook(struct Book *bookhead); /查找图书struct Card *lendbook(struct Book *bookhead,struct Card *cardhead);/借阅图书struct Book *returnbook(struct B
14、ook *bookhead); /归还图书void countlend(struct Book *bookhead,struct Card *cardhead);/借阅统计struct Card *addcard(struct Card *cardhead); /增加读者卡struct Card *delcard(struct Card *cardhead); /删除读者卡struct Card *modcard(struct Card *cardhead); /修改读者卡void countcard(struct Card *cardhead,struct Book *bookhead);/统计读者卡struct Librari
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术平台评定报告
- 农村饮水安全的水质在线监测解决方案
- 集中式融合导航基本原理及特点
- 招聘1人!共和县高级中学2026年临聘教师招聘考试备考试题及答案详解
- 外墙抹灰及外墙贴砖分项工程协议书
- 2026浙江省文化广电和旅游厅直属事业单位招聘5人考试备考题库及答案详解
- 2026陕西西安高新区第三初级中学教师招聘考试参考题库及答案详解
- 2026年绍兴市柯桥区妇幼保健院招聘派遣制工作人员4人考试备考题库及答案详解
- 2026中山大学附属第七医院临床、行政科室招聘考试备考试题及答案详解
- 银行员工工作总结标准范本(4篇)
- 北京邮电大学《量子力学》2024 - 2025 学年第一学期期末试卷
- 备自投培训教学课件
- 小学三年级英语一般现在时简单句型课件
- 2025年广东省第一次普通高中学业水平合格性考试(春季高考)数学试题(含答案详解)
- 广州市南沙区南沙街道社区专职招聘考试真题2024
- 2025年医疗器械经营质量管理规范自查报告
- (已压缩)广东省工程勘察设计服务成本取费导则(2024版)
- 秋天行车安全教育课件
- GB/T 17473-2025电子浆料性能试验方法导体浆料测试
- EDSS神经功能状况评估
- 数学小讲师课件
评论
0/150
提交评论