浅谈系统开发

构建系统的第N天,是时候总结一下自己的“经验”了,总得来说,构建系统需要以下条件:一定的c++基础,到底有多基础?大致知道类怎么用就可以。基本的逻辑思考能力,足够多的时间以及不轻易放弃的精神。有了这些就可以进行系统开发了,系统开发一般分三步:
1.需求分析
2.需求的代码实现
3.调试运行
第一步是整个系统开发的最关键之处,以图书馆系统为例,用户分为两类——读者和图书管理员,对于图书管理员而言,要实现对书和读者的操作,一个图书管理员可以增删查改所有的图书和读者信息,对数据的操作权限最高。对于读者而言,只能实现查找和借阅归还图书的操作,操作权限远低于图书管理员,还可以查看个人名下的图书信息以及曾经的借阅记录,这是对用户的合理分类。一般用户的要求都是模糊,只提供自己想要最终看到的结果,因此具体的数据组织与功能实现依赖于编程人员。所以需求分析不止用户预期结果的分析,还有数据组织和功能实现的具体分析。
通过以上分析不难发现,系统可大致分为两种类——操作类与数据类,也就是数据组织和功能实现。数据类顾名思义就是主要包含数据的类,它的成员函数不包含具体的功能实现,图书馆系统的基本数据类主要有图书类、读者类以及操作记录。操作类主要包括对数据类的操作,对于数据而言,增删查改是最基本也是最前面的操作,可以这么说,增删查改包括了对数据的所有操作,任何对数据进行的操作都可以归于四种基本操作中的一种。
划分好数据类和操作类,之后就是对具体需求的具体分析。图书类主要包含的内容有书名、出版社、作者、出版年限、价格、馆藏数量、可借数量等等。学生类主要包含的内容有姓名、学号、入学时间、学院、专业、班级、可借图书数等。做为一个读者,需要查找图书信息,选择操作,可以只查不借,也可以查完即借。这其中包含的数据类是图书类和图书类的一部分。对于图书管理员来说,要在新生报到时录入新生信息和删除毕业生信息,更新读者数据,新书入库也是一个道理,在日常办公中还有对学生及图书信息的查看,并在学生借书还书时实现对图书和学生信息的实时更新,这其中主要包括所有数据类。
基本类并不能满足复杂的操作,因此需要通过组合或继承构建新的复杂类。数据类一般采用组合,因为通过组合可以更灵活的操控数据之间的关系,简单易懂,束缚少。操作类一般采用继承,封装性更好,逻辑关系清晰。
需求分析完成之后,是构建系统的根本——代码实现。代码实现过程中需要考虑的是数据类和操作类之间的逻辑关系和简明的代码组织。继续以图书馆系统为例,读者可以查看的是书的部分信息,即读者、出版社和出版年限,因此需要构建小的图书类供学生类使用,操作记录包含整个图书类和学生类以及操作时间、操作类型,是更加复杂的类。管理端可以组合图书和读者,并增加增删查改功能。读者端可以组合图书,并自动生成操作记录,增加查改功能。这两个操作类共有的操作就是对图书的查看,因此可以将查找图书的功能单独拿出来构建图书查找操作类。通过继承包含在两个客户端,以此来减少代码量。由此可以看出,在构建系统的过程中,公有的数据部分或操作可以写成基类,方便继承,使代码简洁明了。
对于数据组织,可以借助STL中现成的数据结构进行数据存储,特别是其中的容器中的查找操作,快捷方便。虽然现在只用到一些vector和multimap的内容,但是随着用户要求的提高,其他数据结构独有的优势也会显现。
数据查找功能可借助现有方法,也可以自己写更高级的查找方法(这就比较依赖于个人能力了),查的方式有很多种,除去通过基本信息查询外,还可以综合多个信息查询。通过查,可以找到具体想要操作的数据,缩小数据范围。删改一般基于查,增加功能则比较容易实现,可以逐个增加也可以批量增加。
为了增加代码可读性,在构建代码的时候要规范命名方式,尽量采用简单易懂的英文简写,不喜欢使用汉语拼音,因为low而且很容易重复。另外,每写完一个类或者类的某个功能就要进行简单的测试,一般最少包含两种数据——正确的数据与错误的数据,该功能顺利实现后再进行下一步的构建。这种滚雪球写法比起写完再调试的写法有很多优点,首先写完再调好比闭着眼睛走路,最后的预期结果实现了还好说,如果实现不了,很难找到修改的切入点,很多时候都是越改越乱,最后不得不重构代码。而滚雪球则是走一步看一步,这步不行绝不走下一步,这样一步一步下来,提高预期结果实现的可能性,并且在修改时有处可循。
最后一步就是代码调试运行阶段,站在用户的角度搜集数据测试各项功能,其实调运行是在代码实现时同步进行的,也只有通过测试的功能才可以投入使用。测试使用的数据最好是实际数据而不是自己编造的符合个人想法的伪数据,不具有代表性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值