推荐高校校园通自行车借还服务系统软件系统设计报告.docx
《推荐高校校园通自行车借还服务系统软件系统设计报告.docx》由会员分享,可在线阅读,更多相关《推荐高校校园通自行车借还服务系统软件系统设计报告.docx(34页珍藏版)》请在冰点文库上搜索。
![推荐高校校园通自行车借还服务系统软件系统设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-6/27/6f605501-6bc1-4027-86d2-b75b98ec8cff/6f605501-6bc1-4027-86d2-b75b98ec8cff1.gif)
推荐高校校园通自行车借还服务系统软件系统设计报告
软件系统设计报告
题目
校园通自行车借还系统
专 业:
班级:
小组成员:
指导教师:
职称:
xx大学计算机科学与技术学院
年月
附表3:
题目
校园通自行车借还服务系统
设计日期
20XX年9月10日至20XX年1月12日
小组成员
在本次设计中承担的任务
文档成绩
可行性研究报告、系统策划、软件测试
可行性研究报告、系统策划、软件测试
可行性研究报告、系统策划、软件测试
软件需求分析、软件测试
软件需求分析、软件详细设计、编码
指导教师签字:
年月日
题目
可行性研究报告
作者:
日期:
20XX/9/28
1项目背景
一骑黄红学子倚,半打驿站笑脸迎。
这是高校中的一道人性化的风景线——校园通自行车借还服务项目。
学生、教职工们可以凭借有效证件方便地在各个自行车借还点处借、还自行车。
这项服务方便了学生、教职工们的出行,为之节省了一定的时间,意义深刻。
然而在为全校几千学子服务的同时,我们的服务队同学却还要每天手工整理、登记和统计自行车的借还情况,工序繁杂、费时劳神。
为减轻相关工作人员的负担,同时减少工作出错率、展现为同学服务的精神,我们小组决定开发一套旨在更好地为同学们服务的“校园通自行车借还服务系统”。
2任务概述
1
2
2.1项目目标
2.1.1减轻自行车服务队同学的工作负担、节省经费。
2.1.2提高自行车借还登记处理速度。
2.1.3减少登记出错率。
2.1.4更好、更有效地为同学、教职工服务。
2.2项目范围
2.2.1功能:
一、自行车以编号形式的录入、删除、修改、查询、检索;
二、设立管理面板,使系统管理员拥有本系统数据处理的所有权限
三、对自行车借还的登记;
四、对借还记录进行检查以发现车辆未归还等异常情况;
五、生成借还报告以指导工作人员去找回相应数量的未还自行车。
2.2.2性能:
本软件是基于LINUXGCC环境下字符界面的软件,采用数据文件操作作为数据记录形式,具有较好的移植性。
2.2.3系统输入说明:
一、输入自行车编号信息,以查询借还状态。
二、输入用户有效证件。
2.2.4系统输出说明:
一、即时服务自行车编号输出:
对有效证件进行合法性检测,同时对可借自行车通过对应编号进行检索,如果证件合法且有可用的自行车,则系统输出一个自行车编号。
二、用户借还记录报告:
用于记录用户对自行车的借还信息,报告输出借还自行车的日期、当前借还次数、站点服务人员编号。
本报告用于对服务工作成果的展示,按需要生成。
三、每日借还总结报告文档:
用于对每日服务结束后对自行车的数量的检测,先计算当前自行车的数量,发现比原来少时,输出缺少的车辆编号,以指导工作人员去找回。
2.2.5基本数据流程和处理流程流程图:
一、系统流程
图表1系统数据流程
二、处理流程
图表2系统管理员控制流程
图表3借车处理流程
图表4还车处理流程
2.2.6安全与保密:
系统设立一个管理员入口,负责管理自行车的借还情况和工作人员的服务情况,数据文件采用二进制文件以本系统的数据结构读写,以保密。
本系统拟定的完成期限为一个月。
2.3初步想法
本系统为简单起见,采用了数据文件的数据储存方法,这是由于精力和时间限制所造成的。
本简单版本只考虑了只有一个工作站的情况,因此,不用考虑数据文件间的同步问题。
3对现有系统的分析
本软件采用Linux操作系统,因为软件的设计限制比较大,所以本软件只考虑了最简单的情形。
而针对这个软件简化版,在数据库设计模式上存在着不较合理的因素:
校园通的服务站是有多个的,在实际中还要考虑数据的同步问题。
3
3.1局限性
受软件开发平台限制,所以本软件只考虑了最简单的单个校园通工作站的情形而设计了本管理软件的简化版。
其在数据库设计模式上存在着不较合理的因素:
校园通的服务站是有多个的,在实际中还要考虑数据的同步问题。
4所建议的系统
4
4.1对所建议系统的说明
本系统所涉及的功能、性能是基于GCC中文件操作函数上的。
因此,在Linux环境下,这些功能都是可以实现的。
4.2改进之处
可在本软件的简化版上进一步修改,在后续的升级版本中,设计成C/S模式,在每个自行车服务站设一个终端,连接到主服务器,以实现数据间的同步。
4.3可行性分析
在建立所建议系统时,我们预期了将带来的影响,包括:
4.3.1经济可行性
本软件采用的是字符界面操作,一方面节省了开发时间,另一方面也避免了因为开发平台的限制而面临的技术难关。
在经济和时间上也是符合我们小组的预算的。
软件投入使用后,用户要有一定的字符界面操作适应期。
由于数据储存方式简单,功能要求不高,在用户需求没有明显提高的情况下,软件的维护是易于进行的,这给用户减轻了一定的使用和维护经济负担。
4.3.2技术可行性
本软件采用的是字符界面操作,开发平台为Linux+QT+GCC编译器,不考虑美工因素,因此,对单纯的字符界面来说,在Linux下用GCC来编译软件项目是可行的。
拟定的开发时间为4个月,经过本组详细讨论和分工下,估计开发时间的偏差不会超过3周。
4.3.3运行可行性
本软件主要使用对象是大学生,大学生的计算机基础是足够好的,软件的使用者技术水平是可以保证的。
如果只考虑单一的自行车服务工作站,本软件可以胜任这一假设下的情况。
4.3.4法律可行性
本软件是专用软件,具有较强的针对性。
在我们的编码和设计中,除了参阅相关的资料,不涉及已存在的设计专利、不侵犯国家、学校的相关制度,因此具法律可行性。
5结论
经过可行性研究分析后,我们得出如下结论:
“校园通自行车借还服务系统”在最简化的情况下具有经济、技术、运行、法律可行性,该项目可以立刻开始进行。
题目
软件需求说明书
作者:
日期:
20XX/9/29
1需求分析概述
本系统的工作范围为在校园里,提供了自行车借还、管理等服务,主要服务对象为学校里的师生们。
目的是为服务站的工作人员、师生提供进一步的便利,使工作、使用更加有效和愉快。
本软件采用Linux下字符界面管理面板,C语言中数据文件操作作为数据存取方法,形成一个具有简单数据库应用功能的完整系统。
2数据流图
5
6
6.1顶层数据流图
图表1顶层数据流图
6.2分层数据流图
6.2.1二层数据流图
图表2二层数据流图
6.2.2三层数据流图
图表3借车子系统
图表4还车子系统
图表5每日自行车整顿子系统
3数据字典
7
7.1数据元素
下面逐项叙述数据流图中涉及到的基本数据元素。
表1:
“自行车编号”
名称
自行车编号
别名
BID
取值类型
字符串
长度
4个字节
描述
自行车的唯一编号,作为关键字。
位置
自行车状态表、用户使用记录表
表2:
“用户编号”
名称
用户编号
别名
UID
取值类型
字符串
长度
4个字节
描述
用户的唯一编号,作为关键字。
位置
用户使用记录表、用户列表
表3:
“管理员编号”
名称
管理员编号
别名
AID
取值类型
字符串
长度
2个字节
描述
管理员的唯一编号,作为关键字。
位置
管理员信息表
7.2数据流
下面逐项叙述数据流图中的数据流。
表4:
“自行车状态表”
名称
自行车状态表
描述
自行车是否已经被借出
来源
1.2,1.3,3.2
去处
2.2,无,2.1
组成
自行车编号+借/还标记位+当前借出用户编号+借出时间
流程量
无
表5:
“用户使用记录表”
名称
用户使用记录表
描述
记录用户对自行车的使用情况
来源
1.3,2.2,3.2
去处
无,无
组成
用户编号+借出自行车编号+借/还标记位+借出时间
流程量
无
表6:
“未归还自行车表”
名称
未归还自行车表
描述
报告未归还自行车的编号
来源
3.1
去处
服务队
组成
自行车编号+借出时间
流程量
无
7.3数据存储
下面逐项叙述数据流图中的数据存储。
表6:
“自行车状态表”
名称
自行车状态表
输入数据流
自行车的编号
输出数据流
对应编号自行车借还状态
描述
某编号自行车的借还状态
组成
自行车编号+借/还标志位+当前借出用户编号+借出时间
组织方式
按借出时间,编号由小到大排列
表7:
“用户使用记录表”
名称
用户使用记录表
输入数据流
用户编号
输出数据流
该用户是否有未还车
描述
及时了解用户借还车情况
组成
用户编号+自行车编号+借/还标志位+借出时间+当前诚信度
组织方式
按借出时间,编号由小到大排列
4加工逻辑描述
下面逐项叙述数据流图中所提出的功能要求。
表8:
“审查有效性”
名称
审查有效性
编号
1.1,2.1
输入
用户编号
输出
合法用户,非法用户
功能描述
说明该用户是否合法
加工处理
若发现没有该编号的用户,则说明该用户是非法的
表9:
“可用自行车编号,自行车状态更新”
名称
可用自行车编号,自行车状态更新
编号
1.2
输入
自行车状态表
输出
最先得到的一辆可用自行车
功能描述
为用户提供可用的自行车,并及时更新自行车状态表
加工处理
在自行车状态表中检索,发现借出标志位为0,表明该车可用,即找到了一辆可用自行车。
借出后更新标志位。
表10:
“用户使用记录、自行车状态更新”
名称
用户使用记录、自行车状态更新
编号
1.3,2.2
输入
分别输入用户编号、自行车编号
输出
该编号的用户自行车使用情况
功能描述
可生成未归还自行车的用户编号;该编号自行车借还状态的更新
加工处理
对每个用户按编号进行检索,发现借出标志位为1,表明尚未归还,输出到报告中
表11:
“当日未归还自行车”
名称
当日未归还自行车
编号
3.1
输入
自行车使用状态表
输出
当日未归还的自行车编号,即表F4.
功能描述
查询当日未归还的自行车
加工处理
对每个自行车按编号进行检索,发现借出标志位为1,表明尚未归还,输出到报告中
表12:
“用户诚信记录更新修改、附加对应惩罚策略”
名称
用户诚信记录更新修改、附加对应惩罚策略
编号
3.2
输入
自行车使用状态表、用户列表
输出
用户诚信分数,对应惩罚策略
功能描述
根据用户能否及时借还的情况,制定对策以促使用户及时归还
加工处理
先进行3.1,发现有未归还自行车后,由输出结果可知未归还自行车的用户,再结合用户列表可找到该用户的详细信息,即可对用户的诚信记录进行更新。
“诚信分数”是拖借自行车的次数,累加次数达到一定值后,可由相关“惩罚策略”进行对该用户的惩罚。
题目
概要设计说明书
作者:
日期:
20XX.1.1
目录
1软件结构设计
8
8.1软件结构
为进一步说明本系统的事务流程,我们作出了本系统的事务型软件结构图(SC图)如下:
图表1系统事务型SC图
下面使用IPO图扼要说明每个模块的标识符和功能:
图表2借车模块IPO图
图表3还车模块IPO图
图表4每日整顿模块IPO图
8.2功能需求与模块的关系
为说明各项功能需求的实现同主要模块的分配关系,下面以矩阵图说明:
借车模块
还车模块
每日整顿模块
登陆验证
√
√
√
查询可用自行车
√
更新自行车状态
√
√
√
更新用户使用记录
√
√
√
生成未归还车辆
√
8.3人工处理过程
8.3.1人工借还
本软件系统要在服务站设置值班人员,用户来借还车时,为用户派用或者回收车辆。
1
1.1
1.2
1.3
8.3.2人工寻车
每日整顿车辆时,要求值班人员根据当日未归还车辆表去看看找回缺失车辆。
8.4尚未解决的问题
8.4.1多服务站模式问题
本系统只能应用于只有一个自行车服务站的情况,对于多个服务站,本系统暂时无法胜任。
8.4.2智能化程度问题
本系统还未实现全自动的智能借还车辆模式,需要工作人员时刻在服务站进行人工服务。
2软件接口设计
9
9.1用户接口
9.1.1登陆界面
2
2.1
输入用户名,为一定数位的字符串数据。
系统应答该用户是否存在,如果是管理员,还要判断密码是否正确。
9.1.2数据表显示界面
对产生的数据表进行显示,系统应答显示包括当前的用户使用状态表;当前自行车状态表;当前活动的用户列表。
表结构请参考相关列表说明。
9.2外部接口
本系统同外界的接口安排有硬件系统的普通电脑支撑设备,软件系统的Linux操作系统,搭配GCC编译器支持。
3数据库结构设计
10
10.1概念结构设计
图表5系统ER图
10.2逻辑结构设计
下面是各数据项的逻辑结构设计说明
实体:
用户User
名称
用户
别名
User
取值类型
自定义结构体
长度
2+30个字节
描述
内含用户编号、用户资料说明
实体:
使用记录
名称
使用记录
别名
User_Using
取值类型
自定义结构体
长度
4+20+20+4个字节
描述
内含用户编号、借出时间、归还时间、违纪次数
实体:
服务人员
名称
服务人员
别名
Admin
取值类型
结构体
长度
2+20个字节
描述
服务编号、值班时间
实体:
自行车
名称
自行车
别名
Bicycle
取值类型
自定义结构体
长度
4+4+4+1字节
描述
内含自行车编号、借出时间、归还时间、借还标志位
10.3物理结构设计
为方便程序员编写程序,建立系统程序员视图说明如下:
数据以二进制方式储存,随机读写机制进行读写;
一个便于操作数据文件的数据库引擎;
视图如下:
图表6程序员数据库视图
4运用设计
11
11.1数据字典设计
在数据字典设计中,我们充分考虑了实际情况,如自行车数量、用户数量等。
详细设计请参考已有陈述的相关文档。
11.2安全保密设计
我们以二进制数据文件结合数据结构体读写的方式进行数据的安全保密,外人即使拿到本系统的数据库物理文件,不知道其数据结构,也不容易轻易地进行数据偷窥。
题目
详细设计说明书
作者:
日期:
20XX.1.11
目录
1详细设计任务
12
12.1模块算法和数据组织
在详细设计阶段,我们按之前的概要设计,结合实际的编程可实现性,设计了4个模块,模块对应共同的数据结构,说明如下:
structBicycle
{
charnumber[4];
charlendtime[20];//借出时间
charreturntime[6];//即将归还的时间
intisused;//标志位,是否占用
};//自行车实体
structAdmin
{
charnumber[2];
charsn[8];//最多8位密码
charworktime[20];//值班时间
};//服务人员实体
structUser
{
charnumber[4];
charProperty[30];//用户属性描述
};//用户列表
structUser_Using
{
charnumber[4];
charlendtime[20];//借出时间
charreturntime[20];//归还时间
unsignedintdisobey;//违纪次数
};//用户用车记录
12.1.1登陆或者验证模块
本模块为一验证函数,函数说明如下:
intLogins(char*dbstr,structAdmin*admin,structUser*user){}
算法中设置dbstr为数据文件路径字符串,admin,user为验证的信息。
当结构体指针admin,user非空时,表示验证的是管理员,用户身份。
验证管理员时,除了要验证是否存在该角色编号外,还要验证管理员的密码是否正确。
验证通过时,返回1,否则返回0.
12.1.2注册模块
本模块提供了注册用户、管理员、添加新的自行车的功能,函数体如下:
intRegister(char*dbstr,structAdmin*admin,structUser*user,structBicycle*bike){}
结构体指针非空时说明是要注册的角色。
注册成功返回1,否则返回0.
12.1.3用户借车模块
本模块提供了找到自行车状态表中最近一辆可用的自行车实体和实时修改相应数据文件(自行车状态表、用户使用记录表)的功能。
函数体说明如下:
structBicycle*LendBike(char*db_bikestr,char*db_usingstr,char*user_number){}
通过自行车状态表的数据文件路径,查询可用的自行车,并修改相应数据表数据,将结果返回。
如果没有可用的自行车,则返回空指针。
12.1.4用户还车模块
本模块提供了用户归还自行车时实时修改相应数据文件(自行车状态表、用户使用记录表)的功能。
函数体说明如下:
intReturnBike(char*db_bikestr,chardb_usingstr,char*user_number){}
db_bikestr为自行车状态表数据文件路径,db_usingstr为用户使用记录数据文件路径,user_number表明还车用户编号。
归还成功返回1,否则返回0。
12.2模块测试
12.2.1登陆或者验证模块
本模块主要验证数据文件是否正确被打开和读取,用条件覆盖法,输入已存在的用户和不存在的用户编号进行测试,期望结果应为登陆成功和登陆失败,并给出相应的提示界面。
12.2.2注册模块
本模块主要验证数据文件是否正确被打开和读写,直接选择相应的注册实例进行测试。
12.2.3用户借、还车模块
本模块涉及的数据文件操作比较多,主要测试数据文件是否被正确连接、读写和更新。
采用模拟借还车实例进行测试,看函数返回的结果是否正确。
2详细设计工具
13
13.1模块间协作和运行流程
为更好地表达系统运行时逻辑,体现模块间协作和运行的关系,设计系统程序流程图如下:
图表1系统程序流程图
13.2模块代码管理软件
为体现软件工程化观点,我们小组运用代码管理软件进行代码编写、测试的方法。
采用的软件有VisualSVNServer2.1.4;TortoiseSVN1.6.5;VisualSVN-Server-Trac-2.1.1。
以下为小组代码管理的截图:
13.2.1我们的代码库
图表2VisualSVN代码库
13.2.2上传程序文档
图表3上传程序文档
13.2.3版本控制
图表4版本控制
13.2.4利用Trac代码在线管理
图表5Trac代码在线管理
13.2.5代码更新即时知道
图表6代码更新
3人机界面设计
14
14.1界面简介
因本系统是基于Linux+Gcc的环境,所以界面采用简约的类DOS界面,可在linux终端中输入运行指令即可使用。
14.2界面截图
14.2.1初始运行时
图表3初始运行时
14.2.2管理员登陆
图表4验证通过
图表5验证不通过
14.2.3查询自行车状态
图表6查询自行车状态
此处要说明的是由于C语言中文件操作特性,读到最后一个数据项时会重复读一次才令文件结束标志位有效。
14.2.4用户借车测试
图表8管理员尚未登陆时
图表9管理员已经登陆时
图表10用户未注册
用户来借车时有两步判断,先判断管理员是否已经登陆,再判断该用户是否存在。
14.2.5其他说明
因时间仓促,本系统所陈述的功能尚未完全完成。
以上界面截图仅是本系统一部分的功能截图,作测试用。
4个人设计总结
15
15.1Captain:
15.2作为本次团队性项目的Captain,从可行性分析到最后的详细设计、编码测试等,我都以身作则,督促和安排了各种工作的进行。
在小组中又作为惟一一个程序员的情况下,依然积极地参与到队员们尚未解决的问题中,大家一起讨论,拿出解决问题的方法和结论。
虽然在其他课程较多的艰苦情况下,我们依然能处理好设计与其他课程的学习时间上分配。
在编码的环节上,因为采用的是纯粹的C语言编程,难免会与熟悉的C++有所不同,为此特意查看了相关的书籍,与队员们总结C语言与C++的不同之处,写出本系统的第一个测试版本。
在测试的环节上,与队员们一起探讨软件工程角度上的测试方法,选择合适的测试用例,保证系统的基本正确。
关于本系统更详尽的更新信息和相关的执行文件、程序、数据等,请关注我的个人网站:
15.3Member:
通过对本项目的开发,提高了我们团队合作的意识、分析解决实际问题的能力。
最主要的是提高了我们的自学能力,本项目中我参与了可行性报告、系统策划、软件测试、软件需求分析等环节,与队长和其他队员一起,掌握了软件工程化的一些基本理念和一些软件工程相关的辅助软件如VisualSVNServer,Trac的配置和使用,受益匪浅。
在开发本系统的过程中,要查询翻阅大量的参考文献以及网上搜索资料,培养了我们调查研究、查阅中外文献资料,运用国家标准、行业规范、手册、图册等资料的能力。
通过这次实验,把所学的理论知识与实际应用联系了起来,为我们今后走向社会打下了坚实的基础。