HUNAN UNIVERSITY
程序设计训练 报 告
设计题目
学生姓名
学生学号
专业班级 指导老师
起 止 时 间 2011年6月16 日----2011年7月10日
目录
一 目的分析..................................................................2 二 系统简介..................................................................2 三 设计过程..................................................................3 四 本人完成的主要工作 ......................................................3 五 实训设计 ........................................................... ...6 六 实训分析 ......................................... ....................7 七 调试过程所遇到的问题及解决方案 .........................................7 八 实训总结 ....... ......................................................7 附录1 源代码................................................................8 附录2 截图.................................................................37
一、 目的分析
今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面: 首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率; 第四,计算机可以使敏感文档更加安全,等等。 在单位图书室使用计算机管理图书的意义:
现在我国的很多单位图书室图书馆中图书的管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。 归纳起来,好处大约有以下几点:
(1) 可以存储所有的图书档案,安全、高效;
(2) 只需一到二名图书录入员即可操作系统,节省大量人力; (3) 可以迅速查到所需信息。
二、 系统简介
1. 管理员系统
(1)增加用户:增添一个新的用户。
(2)增加书籍:添加新的书籍包括出版社、本数、价格、书号、分类、作者、书名等信息。 (3)删除书籍:将已经存在的书籍信息删除。
(4)查询书籍:按书名,类别,书号,作者,出版社对书本信息进行查找。 (5)显示全部记录:将所有存在系统中的书籍记录显示出来。
2. 用户系统
(6)查询书本:按书名,类别,作者,出版社对书本信息进行查找。 (7) 借书:如果书还有库存且用户借书小于10本则可借书。 (8) 还书:归还用户所借的书。
三、 设计过程
首先搜集相关资料,了解一个图书管理系统应该有哪些功能。
画出相应的主界面流程图和人机界面图。
在了解了应有功能之后根据自己的实际能力选择一些能够编写的模块,对模块的功能进行分析和制定相应的编写计划。
画出相应模块的流程图。
对相应模块进行编写之后插入程序中进行调试。 对调试中出现的问题进行修改。
将所有功能组合在一起,对整个程序的各个功能再多输入一些数据进行调试。检查是否有功能的错误,各个模块在调用其他模块的数据时是否会出错,检查一个模块调用完后是否会影响其他模块运行和文件中保存的数据是否被某个模块破坏。
检查系统的容错性,检查在输入数据非法的情况下程序是否能做出应有的正确反映。
对系统的外观界面进行优化,并对在运行时发现的不符合操作习惯的功能进行修改,提高运行时的界面友好性。
四、 本人完成的主要工作
前期搜集图书管理系统应有的相应功能,程序应有功能模块的分析,策划。程序相关信息的查找和功能模块的组合。错误的修正,流程图的绘制,借还书模块和显示用户全部信息、显示全部用户信息代码的功能分析编写,查找内容、用户,显示全部书籍信息,创建新图书、新用户模块的修改。报告的编辑,流程图手工版本的绘制。
五、 实训设计
1.开发平台:vc++6.0 企业版。 2.工具:记事本。
3.使用系统:winXP以上。 4.核心数据结构设计:
typedef struct bookinfo//将bookinfo类型定义为BOOKINFO {
char number[15];/*产品编号*/ char name[30];/*产品名称*/ float price;/*单价*/
char auther[20];/*作者*/ BOOL isExit;/*存在状态*/
char sort[20];/*书籍类别*/ char published[30];/*出版社*/ int bookcount;/*剩余书籍数量*/ }
typedef struct student /*借书卡的数据类型*/ {
int studentnum; //学号 int cardnum;//卡号
char studentname[10];//会员姓名 char studentclass[10]; //会员班级 char lendbook[10]; //存临时书名 int count;//借书数组 最多借书十本 char bookname[11][10];//存放书名 }
5.基本运行原理:
a) 通过主菜单调用菜单函数输出菜单
b) 根据所选择的选项用case语句进行判断 c) 通过case语句调用相应函数
d) 将文件的内容存入数组进行查找修改 e) 操作完毕后将数组里的内容写回文件
f) 询问是否继续操作否的话则返回主菜单继续选择 g) 通过主菜单调用菜单函数输出菜单
h) 根据所选择的选项用case语句进行判断 i) 通过case语句调用相应函数
j) 将文件的内容存入数组进行查找修改 k) 操作完毕后将数组里的内容写回文件
l) 询问是否继续操作否的话则返回主菜单继续选择
3.核心算法描述(程序流程图)
六、 实训分析
设计并实现该课程设计的目的主要在于:
1) 对一定规模的综合软件编程有一定的经历与认识。在做的过程中,我们
发现,提前的规划即分析与设计重要过编程过程,否则会走很多弯。 2) 综合并结合现实应用使用C语言的知识。这个设计会用到C语言这门
课的全部知识,其中以文件、数组与函数为主,书中提到的主要及重点
算法都会使用到。
3) 不仅涉及编程,还涉及到功能分析、模块规划等方面的知识,这些知识
在后续课程学习时,会经常使用。而且这些知识在今后单片机编程过程中,都会用到。 4) 每项功能的实现,一般有多种方法,这在这里我们并没有在所有模块中
采用最简单的方法,而是采用了自己平时最常用最熟悉的方法,以尽可能保证程序的正常运行,在此基础之上使算法尽可能简化。 5) 涵盖了图书管理所需要的几个最基本功能,让我们对今后一个系统的整
体分析设计与完成有了一个初步的了解。
七、 调试过程所遇到的问题及解决方案
6) 一:在调试过程中发现在进行过一次输入之后,缓冲区会有内容存在。
当选择继续添加或选择其他内容进行输入时,系统会直接将缓冲区的内容给gets函数,造成输入错误。 解决方法:用fflush()函数在每次输入前清空缓冲区。 7) 二:在调试过程中发现缺少对用户是否借了书本的验证,在还书时只要
书名在书库中存在即可还书,在操作不当时会导致错误。解决方案:在还书增加了对用户借书数组中书名的校对。 8) 三:在输出所有用户信息时不知因何原因会输出空的信息列表,而且增
加的数目(用户)越多所输出的空信息列表也越多。 解决方法:采取了在输出前先判断,屏蔽掉那些空信息。
9) 四:在要对文件某项进行修改时无法准确地将指针定位到那一项内容。
解决方法:采取先将文件内容全部存至数组,在对数组进行修改后整体重新写回文件。
八、 实训结论
经过一个多月的设计和开发,《图书管理系统》已经基本开发完成。其功能基本符合用户需求。我认为在这次课程设计的过程中,通过将所的理论知识与实际情况相结合,独立思考,全面分析,灵活运用所学知识,解决具体问题,将有力地促进理论水平的进一步提高。同时,对心理素质的锻炼和工作作风的培养,将有助于今后的工作与生活。但是,由于课程设计时间较短,工作任务繁重,加上本人能力有限,所以该系统还有许多不尽如人意的地方,比如:文档比较少,用户界面不够美观,出错处理机制不够等一些问题,这些都有待进一步的改善。
非常感谢我的同学们我的老师们当我在毕业设计过程中遇到问题和困难时,是你们给我提出许多关键性的意见和建议,使我对整个毕业设计的思路有了总体的把握,并耐心的帮我解决了许多实际问题,使我获益良多。是你们教授了我丰富的知识,教会了我学习知识的能力。
九、 附录1:源代码
十、 附录2:截图
湖南大学程序设计训练报告
9
湖南大学程序设计训练报告
10
湖南大学程序设计训练报告
11