什么是TTMS?
TTMS是西安邮电大学计算机学院软件工程系的自立项目,拟为中小规模剧院(包含电影院、歌剧院、演唱会等)开发一个通用的票务管理软件,有对剧院演出厅、剧目、演出计划、售票、销售分析及统计等售票相关业务实现全程计算机管理的功能。分为初级、中级和高级,每个阶段的实现方法不同,难度也不一样,现在做的是最初级的版本,为字符单机版。
设计阶段:
对于一个项目,首先要分析需求是什么:这个东西在什么环境下运行,要给什么人使用,需要具备怎样的功能等等。
**环境:**对于实际场景,演出厅使用windows的环境更多,但是因为学习Linux,所以两个版本都有写。其实只是个别函数库和汉字编码等一些小问题。整体设计的思想是没有区别的,这个小程序对于电脑的配置没有太大的要求,基本一般的电脑都可以运行。
**使用者:**一个演出厅的角色有管理员,经理与售票员,每个人有不同的功能和权限。
管理员:管理账户,管理演出厅。
经理:查看演出厅,管理剧目,管理演出计划,查看票房及销售统计,修改密码等
售票员:查看演出厅,剧目,演出计划,票房及部分统计数据,卖票退票,修改密码等
**基本功能:**对于账户,演出厅,剧目,演出计划的增、删、改、查;而且不同人的权限不同,有可能只具备查看功能等
**界面:**不要求多华丽,美观大方即可。
设计思想:
老师给了一个框架,一个文件夹(如下图)
通过上面的文件夹,可以看到一个程序应该从三个层面来设计:持久化层、服务层、界面层。持久化层与文件打交道,界面层是设计展现给使用者的界面,而服务层是连接界面层与持久化层的桥梁;其实没有服务层也是ok的,我们可以直接在界面层来调用持久化层,但是一般来说,在服务层有时我们也做一些操作,所以最好不要省去服务层。
上面有很多后缀为.c或者.h的文件,若我在Play_UI.c要用到Play.c,只用在Play_UI.c中将Play.h包含进去即可(如果我直接包含Play.c,那么会出现重定义,无法生成可执行程序)。在.c文件中我们定义函数,在.h文件中进行函数声明,更具体的可以查询多文件编译等相关内容。
开发阶段:
这次开发主要是模块化开发,每个小功能都是一个模块,然后提供相应的接口,需要使用的时候直接调用即可。分工合作,每个人都完成一部分功能,然后将各个功能整合起来,一个团队中必须有核心领导者,控制着整个团队的开发进度和开发方向,同时作为领导者一定要与各个成员多交流,了解每个成员完成的情况以及他们所遇到的一些问题,多鼓励他们自己解决,并且自己也要考虑有没有更好的解决方案,尽力把各个功能都做全,在测试的时候,要多找几个人进行全面的测试,把有可能出现的bug全部找出来。
要将界面设计的美观大方,Linux下汉字采用utf-8编码,有可能出现无法对齐的情况,所以要尽量避免汉字和英文的混用。
大体上这个小程序进行的流程:登录–>功能菜单–>某个具体的功能
菜单切换采用无缓冲输入,提高效率。
根据卖票退票来更新排行榜,并且实时同步,退票的实现方式是将订单删除(当然也可以改变订单的状态)。
演出厅,剧目,演出计划,票的信息相关联;同一个剧目或者演出厅在不同时间段可以有多个演出计划,生成演出计划时会自动抓取要放映的演出厅的可用座位数和剧目相关的信息,并同时生成票。
只有管理员才能管理所有的账户信息,其他用户只可以修改自己的密码。
总的来说,一开始不知如何下手,毫无思路,过了两天才找到正确的路子,从底层一层一层的往上写。一般来说,持久化层被服务层调用,服务层被界面层调用。开发完一个功能就把这个功能接入,然后进行测试,一个功能搞定之后再去开发下一个功能,千万不要一手抓所有的功能。基本上每个模块都有增删
改查功能,所以一个开放出来,其他的差别也不会特别大;最令人头疼的大概就是界面层了,每个模块的页面都有挺大的差别,而且输出格式的对齐也很麻烦,怎么能既美观又对齐。然后将各个功能整合在一起,也会出现一些细节的小问题,还需要修改。
心得体会:
通过这次课程设计,知道了开发程序大概是什么思路,要从哪些方面考虑,然后怎么设计和开发,事后怎么去调试和修改,怎么去和组内成员交流协作,怎么去编写用户手册和测试报告等。如果下次再进行某个项目的开发时,有一定的借鉴意义,大体来说都是按照这个思路来走。