对同学c语言大作业的改进与创新
对同学c语言大作业的改进与创新
-------通过对某位同学c语言大作业代码的解读,了解到其中的思想,再进行了思考与反思,得到了某些感悟与建议,从而产生了一些改进和创新的想法,写下了此篇文章。
一,项目名称,来源与简介
该项目来源于大一时同班同学的c语言大作业源代码;
该项目名称为:图书查阅系统;
该项目的主要功能有:
1 <所有图书> 7 <保存数据>
2 <查询书本> 8 <加载测试数据1.0>
3 <增加书籍> 9 <回收站>
4 <删除书籍> a <加载随机测试数据2.0>
5 <修改信息> b <设置系统>
6 <清空图书> 0 <保存退出>
该项目有600+行代码
二,项目主要分析
1,define 和typedef 的使用

源代码里多次使用了define ,当数据类型的简写时,熟悉使用 typedef 这个关键字会更加好。当数据类型为指针类型时,函数传参又为引用类型时,define的关键字使用会报错而typedef却不会。而且在编译器检查时也更为安全。
修改后的代码:

2,注释的使用
源代码里某些关键代码经常无注释,要知道代码不仅仅只是书写者知道就好,还要让其他人能看懂读懂才是一个好程序员的关键。我请教源代码主人时,因为缺少注释,源代码的主人在一年多后再读代码也是有好多地方不理解。

时间有限,我也只补充了一点点注释

3,16进制颜色取值范围的考虑

其中没有考虑到传入的参数不在16进制颜色值的范围这种情况
改正后

4,循环do while 和 while 的使用

源代码里使用的是do while ,这样固然能减少一次循环判定,然而也会使得判断变量cc的使用跨度大使人更加难读懂。
改进后:

5,switch的使用

虽然switch看起来很“高大上”,但是在子情况没有相同代码的情况下使用,非常容易出错,例如少了break导致很难debug,从而影响效率,一般情况下还是使用if-else并且用大括号括起来,简单易读好,结构感会更明显。
6,图书总览时无图书情况

应该给些提示

7,删除时应二次提示确认


8,链表插入时未考虑int型变量范围

源代码本意是使得插入的新节点永远不在表头和表尾,但是表头的最大值设置为99999999并不符合int型变量的要求。

9,回收站自动删除

源代码的回收站使用的是次数判断,应该改进为时间有效期判断自动粉碎。
而且源代码里程序使用次数的增加没有考虑到非正常退出的情况,应该添加非正常退出时的判断,从而再判断是否程序本次使用次数是否有效。
10,随机数的使用

使用随机数时,应当添加当前时间作为随机数种子,否则每次运行程序产生的随机数都是一样的!!!达不到随机的效果。

11,设置功能

源代码里作者制作了一个设置功能,其实。。。。


浙公网安备 33010602011771号