谁都知道大学里的程序设计扯淡而又无聊.
但是把程序作业玩出不一样的风情,则是一件雅事.
这次程序设计的课题是<图书馆后台管理系统> //***系统历来是无能的老师最喜欢布置的课题OTZ
要求
1.书以两种数据结构存储,分别是书的信息和借还相关的信息.
2.实现各类统计
3.文件操作 //这点也是老师最喜欢考察的,虽然是最没意义的,就那么点方法,整天写有意思么
-------------------------------------------------------------
struct or class ?
list or map or vector or just array ?
function or method ?
c or c++ // 因为是小组作业,限选大家学过的,>__<
---------------那么,很多人会怎么做呢?--------------
我已经见到了很多糟糕的实现,他们开了一个又一个结构体数组来表达各种数据
写了二十多个函数来结构化每个单元,但是函数之间又互相牵扯,接口与实现完全没能分离!
还有那些糟糕的命名方式,xx1,xx2,a,aa......
如果他们把文件以.c结尾,那么我也没什么好说的,毕竟c不适合普通学生去书写.
但甚至有些人把这些玩意以.cpp结尾.....
---------------半年前我也会这么做!但是,现在不同了------------------
虽然对于很多人来说,c++就是把c的printf和scanf改成cout和cin,但是c++真的不是这样.
对于一个学了半年c++的新手中的新手来说,就算解决不了各种内存泄漏,忍受不了模板的痛苦,
一些基本而不钻牛角尖的OO还是写的出来的吧...
-----------------------------------------------------------------------------------
首先,我构思的大概架构是以两个互不继承的类分别表示书信息和借阅信息,然后以映射map将两者结合起来
为什么我不把他们写在一个类中呢 ? 首先,两者分别存在不同的文件中,而且顺序不一定一致,其次,书就是书,借阅信息就是借阅信息,两者唯一的共性就是都有一个书本编号,那么不如做两层映射,将其联系起来.
其次是函数的调用,我构造了一个handler类来实现各种方法,这有利于加深我的逻辑,同时也方便后半部分代码的堆叠.
---------------------------------------------------------------------------------
有了大概的构思后,码起来真的很快,每天白天都很忙的情况下,花了两个晚上就搞定了....