对同学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,设置功能

 

 

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

 

 

posted @ 2022-02-27 21:39  六二猕猴  阅读(264)  评论(0)    收藏  举报