me();
}
第二部分编程体会
感想
22013427张仕超
C++图书管理系统的编程作业终于完成了!
!
感觉到很轻松!
!
回顾这两周所做过的工作和努力,感觉到收获不少,这里面除了编程的具体内容外,还包括许许多多超乎编程本身意义之外的东西。
说实话本来我对程序编写这相关的都不怎么感兴趣,甚至可以说是害怕,因为上课的时候就总是有很多的地方听不懂,平时上机实验的时候也总感觉自己学的很差,总是觉得一个学期就这样懵懵懂懂的学过来了,感觉只是学到了皮毛,没有学到什么实际的东西。
但是这次作业给了我不一样的感觉,可以说我觉得这次作业给我带来的最大的帮助就是使我对这门课程有了兴趣,并使我相信,原来我也是可以编出一些东西来的。
有时候我自己都会感到很奇怪为什么自己会突然迷上了编程,以前下了课堂书本就扔的远远的,但是自从开始做这个作业,我就一直抱着课本去啃了,上课也更有兴趣了。
从以前的“惧怕”上课到现在的“期盼”上课,我自己都说不上来是什么原因,如果非要找出一点理由的话,我想应该是从这个作业的完成过程中我已经渐渐地开始有点“入门”,相对于以前我只是站在“程序设计”的大门外徘徊,可以说现在我基本上独立完成这个作业,变化是巨大的,这种变化还主要原因还在于程序设计给我带来了一种信息,一种前所未有的成就感。
此次我们实习的内容是用C++开发一个图书管理系统,根据图书管理系统的功能需求编写代码。
说实话,一开始真的觉得很恐惧。
这对我们来说绝对是一个庞大的项目,以至于开始的时候我都怀疑班上是否有人能够完成。
后来两周下来,我才发现这种怀疑和担忧是没有必要的。
因为我们这次编写的图书管理系统虽然是一个系统,但其实图书管理系统所要实现的功能有很多是平常我们练习过的,所以我们独立完成起来并不是不可能的。
现在我来介绍一下我具体的成果吧。
这次图书管理系统的编程要求是实现以下的功能模块:
1、查询模块
提示输入待查询书名,搜索到匹配项后在屏幕上显示书名、作者、该书在库数量(有几本书);若库中无匹配书目,则屏幕提示“书库无此书!
”。
查寻范围为从文件中读出的结构体数组。
2、浏览模块
在屏幕上显示目前书库信息,即结构体数组信息。
若库中读出的图书种类数为0,说明还没有图书,此时提示“库中无图书!
”。
3、借书模块
从库中读出信息,如果图书种类数=0,表明库中无图书,则提示“库中无图书,暂不能借阅!
”,否则提示输入待借图书名,如未搜索到匹配项,提示“库中无此书!
”,如果搜索到的图书在库数量已经为0,则提示“抱歉,该书全部借出!
”,否则提示“借阅成功”,同时将该书在库数量-1。
并将图书信息写入文件。
4、还书模块
从库中读出信息,如果图书种类数=0,库中无图书,提示“库中无图书,暂不能还书!
”,否则提示输入待还书名,如未搜索到匹配项提示“库中无此书!
”,否则提示“还书成功”,同时该书在库数量+1。
并将信息写入文件。
5、管理模块
该模块可向库中添加图书。
有权限者方可进入管理,运行后首先提示输入口令,可以有三次输入机会,若口令不对提示“抱歉,无权限,按回车返回主菜单”。
否则可以向书库中添加图书。
系统提示“输入添加图书的书名、作者、在库数量:
”,可一次添加多种图书。
管理模块的口令自行预定。
修改信息后写入文件。
6、退出模块
首先需要解决的是函数的定义与调用的问题。
因为在我开始做的时候还没有讲函数,我先是把我们的教材上的相关章节看了一遍,不过国外教材真是伤不起,因为书上几乎没有一个完整的源代码的例子,于是我又参考了清华大学出版社出版的谭浩强教授的书,同时在XX的大力支持下学会了函数的定义与声明、调用。
接下来就要一个模块一个模块地去定义函数了。
其中,最难搞定的是管理模块。
管理模块是要最先完成的,因为它是其他模块的基础。
在编写的过程中我又遇到了一个大问题,那就是输入输出流的问题。
老师虽然在课上提了一下输入输出流,但只是蜻蜓点水,我基本上没听懂,于是又是一通查资料。
不过幸运的是我手头有一本谭浩强教授的书,对于输入输出流谭浩强教授的书上虽然讲的远没有C++Primer上讲得多,但这却恰好更有助于我解决当前的问题。
最赞的是谭教授的书上有一道关于职工的工号,工资等例题,恰好为我编写管理模块提供了一个模板。
所以,关于输入输出流的相关内容我基本上是从那道例题上得到启发的。
不过万事开头难,我在管理模块上花费的时间大概就有8个小时吧。
说实话,当时我几乎都快要崩溃了。
8个小时啊,整整一个周六我都泡在图书馆的机房里,连中午饭都没吃,晚上回去的时候真有种作死的感觉。
后面的各个模块就像对顺利了。
当然,中间也遇到了不少的问题,比如,如何按一个键返回主菜单并可以继续执行其他模块就让我花费了将近2个小时的时间。
关于如何返回主菜单的圆满解决还多亏了我的舍友薛启凡,他告诉我了一个清屏函数system("cls")。
另外,我也想到了要继续执行只要在清屏后调用我的代码中的me()函数就可以了。
至此,这个问题也算是解决了。
再就是关于类数组的使用,说实话,到现在我都没怎么搞得清楚,我的源代码中关于类数组的内容基本上是照葫芦画瓢搬上去的,所幸的是它确实能完成相关功能。
还有一个问题就是我在开始编的时候,对于借阅模块,还书模块和查询模块这三个模块在找到书目或者没找到书目后竟然忘了加break标号,导致运行的时候总是出错,不过好在这个问题的解决没有耗费太长的时间。
新手毕竟是新手,虽然最终我也能够完成这个任务,但是在我还不是很熟练的情况下,编写出这一个系统还是有一定的压力的,关于整个程序的完成我大概用了17个小时吧,过程中虽然不乏痛苦的领悟,但我一直很享受这个过程。
无论是XX查资料,还是查阅相关书籍,当你真正解决一个问题的时候,那种欢快是只有自己体会得到的。
就这样在最后时间内,我终于完