资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
学生管理系统需求分析说明书
一.需求细则 1
1.对功能的规定 1
1.1 学生信息定义 1
1.2、 登陆功能定义 2
1.3学生信息录入功能( 学生信息用文件形式保存) ----输入 2
1.4 学生信息浏览功能----输出 3
1.5修改信息 3
1.6删除操作: 3
1.7排序操作: 4
1.8保存学生信息 4
1.9界面友好 4
二.模块分析和介绍 5
二.对性能的规定 6
三.对排版的规定 6
四.对可维护性的规定 7
五.对个性的规定 8
六.对项目过程的规定 8
一.需求细则
1.对功能的规定
1.1 学生信息定义
分必选项和可选项, 其中, 必选项是必须完成的, 属于项目答辩的入口条件, 所有人都要做, 未完成者取消答辩资格; 可选项不是入口条件, 但每完成一项都会加分, 对于完成了必选项的同学, 尽可能地多完成一些可选项, 以期获得更高的答辩成绩。如果所有项( 包括必选和可选) 都完成, 那么功能分就是满分。如果设计思路、 界面效果、 代码组织等方面有个性( 或和别人的不同) , 则获得附加分。
学生信息管理系统的目标是为方便统一管理学生的信息并为管理员和学生提供一个信息共享和查询的平台。
要求使用链表实现存储、 读写以及管理学生信息。
属性: 必选
描述: 学生信息必须包含如下项( 包括但不限于) :
● 学号( ID) ;
● 姓名
● 密码
● 年龄
● 班级
● 性别
● 数学成绩
● 语文成绩
● C语言成绩
:
:
1.2、 登陆功能定义
运行学生信息管理系统之后, 使之能提供以下几项功能:
1.2.1 该系统以菜单方式工作; 比如: 管理员à查找à按序号查找
1.2.2 登录功能:
系统启动后有提示进入登录界面; 使用超级管理员用户名和密码登录, 比如用户名”admin”, 密码: ”123456”。
学生用用户名和密码登录。
属性: 必选
可选项:
对于密码可选择实现隐藏密码功能。
◆管理员
1.3学生信息录入功能( 学生信息用文件形式保存) ----输入
属性: 必选
描述: 实现对学生信息基本信息的录入, 其中名次根据成绩自动计算( 添加) 。
注意: ( 1) 学号不能重复, 名字可重复;
1.4 学生信息浏览功能----输出
属性: 必选
描述: ( 1) 按学号顺序显示;
( 2) 按名次显示;
( 3) 按某一学科成绩顺序显示, 并在最后显示出该学科平均分;
( 4) 按分数段来显示学员信息( 可选项) 。
1.5修改信息
1.5.1修改密码( 包括管理员和学生个人)
属性: ( 可选项)
1.5.2 修改学生信息
( 1) 管理员身份: 能够修改学生的所有信息;
( 2) 可设置不同课程角色的管理员能够修改对应的成绩; ( 可选项)
( 3) 学生身份: 修改密码; ( 可选项) 。
1.6删除操作:
属性: 必选
描述: 根据不同需求对文件中的学生信息进行删除操作
a)根据ID删除;
b)根据姓名删除( 注意考虑重名情况) ;
c)根据班级ID号删除( 属于某个班级的学生全部删除) ;
※注意: 在查找到某一条学生信息后, 需要删除时, 需要有提示是否确认删除?
确认删除后, 要释放内存空间。
1.7排序操作:
属性: 必选
描述: 根据不同的需求和选项对学生信息进行排序和打印输出。
a)根据学号排序;
b)根据单科成绩;
c)根据总分排序;
1.8保存学生信息;
□ 系统中的数据如果有增, 删, 改等改动, 在退出时要提示是否保存;
□ 退出系统时, 记得要回收资源。
1.9界面友好
属性: 必选
描述: 用户的一些操作前后做出一些必要的提示或确认。所有完成的功能都需要友好。
例如:
● 增加失败提示;
● 删除失败和成功提示、 删除前的确认;
● 修改失败和成功提示、 修改前/后的确认;
● 查找失败提示、 查找成功的确认;
● 退出系统时, 如果有修改要提示是否保存;
● 其它方面的界面问题;
◆学生身份
学生以自己的学号作为登陆账号, 结合管理员在录入学生信息时设定的原始密码进行登陆;
登陆方式与管理员登陆方式一样( 详细见登陆功能定义部分) 。
属性: 必选
描述: ( 1) 登陆之后学生能够查看自己的学生信息( 包括个人基本信息和有关成绩的信息) 。
( 2) 可修改自己的登陆密码。
( 3) 其它个性功能( 可查看自己在全班以及全校的排名) 作为可选项。
二.模块分析和介绍
对学生管理系统进行分析后可做如下的模块化设计:
系统主界面模块实现功能: 完成系统的界面处理, 如主菜单界面。
●输入模块实现功能: 按顺序将由学号, 姓名、 性别、 密码、 年龄、 班级、 数学成绩、 语文成绩、 C语言成绩, 名次等依次输入, 并建立链表将其连接。当有提示是否继续录入时, 选择No时, 数据输入完毕。并同时将所输入的数据写入文件中, 比如( stud_txt) 。
●删除模块实现功能: 在已经存储的文件中删除指定的或者经过查找后找到的学生信息, 并释放内存空间, 删除所有相关的信息。
●查找模块实现功能: 在已经存储的文件中查找任一指定的学生信息, 能够按照姓名, 学号, 班级群体来实现查找。
●输出模块实现功能: 当实行显示信息功能时, 输出所创立的文件中包含的全部学生信息。
●排序模块实现功能: 对已经存储在文件中的学生信息, 根据成绩从高到低排序, 存储, 并在名次中显示出来排序结果。
●修改模块实现功能: 在已经存储在文件中的学生的信息进行修改, 根据学生学号找到要修改的学生信息, 然后对其进行修改, 可修改所有信息, 如果遇到不需修改部分, 输入回车键跳过。
二.对性能的规定
本系统在设计方面本着方便、 实用的宗旨, 性能方面应遵循如下原则:
● 执行效率( 时间) : 软件运行应该尽量高效; 避免没有必要的循环处理、 重复处理;
● 资源损耗( 空间) : 设计尽量节约资源( 内存、 数组、 链表等) ; 不用的资源要及时释放;
● 初始化: 变量、 数组、 内存块、 链表节点( 其next要置NULL) 等都要初始化;
● 健壮性: 不能出现野指针、 内存泄露、 数组越界访问等等:
◎ 申请内存之后, 应该立即检查指针值是否为NULL; 动态内存的申请与释放必须配对, 防止内存泄漏。释放了内存之后, 立即将指针设置为NULL, 防止产生”野指针”;
◎ 函数的入参要进行有效性判断;
◎ 不允许出现goto语句;
◎ 数组的下标不要发生”多1”或者”少1”操作。
三.对排版的规定
● 缩进要对齐;
● 长行拆分;
● 二元操作符的前后应当加空格, 包括如下操作符:
● 赋值操作符、 比较操作符、 算术操作符、 逻辑操作符、 位域操作符, 如"="、 "+=" ">="、 "<="、 "+"、 "*"、 "%"、 "&&"、 "||"、 "<<", "^" 等;
● 空行:
◎ 结构体 声明之后、 每个函数定义结束之后都要加2行空行;
◎ 逻揖上密切相关的语句之间不加空行, 其它地方应加空行分隔;
◎ 一行代码只做一件事情;
◎ "if"、 "for"、 "while"、 "do"等语句自占一行, 执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }";
4. 对可维护性的规定
对可维护性的最终要求: 别人能够轻松上手你的代码。
● 结构清晰:
◎ 模块化: 对界面( 显示) 、 菜单管理、 逻辑管理、 文件操作等等代码要独立;
◎ 封装: 一个函数只做一件事, 函数功能要单一; 一个函数不能超过100行;
避免重复、 冗余代码;
◎ 代码块清晰。
● 变量命名规范, 变量名应该具有自明性:
◎ 常量, 枚举和宏定义命名
常量名,宏和枚举值由全大写字母组成, 单词间经过下划线来界定;
◎ 函数的命名:
使用"动词"或者"动词+名词"( 动宾词组) 的形式, 由一个或多个单词组成且以小写字母开头, 以后每个单词的首字母要大写便于界定
◎ 变量的命名与定义
应当使用"名词"或者"形容词+名词", 由一个或多个单词组成且以小写字母开头, 以后每个单词的首字母要大写便于界定。
● 注释充分: 变量、 函数( 包括参数、 返回值) 、 代码功能块、 一些复杂算法……等都需要
清晰明了地说明;
5. 对个性的规定
把项目做出个性出来。下列各项中有和比人不同之处、 或很有创意, 即可认为有个性。独立设计的软件, 一般都会出现一些个性。参考、 抄袭不会出现个性。
● 设计思路: 包括软件的整体架构、 功能块的设计思路、 函数封装等等;
● 功能实现: 从用户的角度, 使用上发现与众不同的地方;
● 其它方面;
6. 对项目过程的规定
本着紧张但不急躁、 不参考、 不拷贝的原则进行。
ü 紧张但不慌张
项目周期只有一周, 这还包括项目答辩时间。因此项目时间比较紧张, 但不能慌张。要有自己明确的设计思路, 一步步沿着思路走下去, 以此来巩固自己所学, 锻炼自己的独立工作能力。
ü 能自己做, 绝不参考别人
自己还没有做, 还没有想, 就去看比人的, 这样尽管功能做出来了, 但却没有什么意义, 真正面试时还是不会。作者和读者, 天壤之别。
如果自己实在无法搞定, 一个问题卡了快一天了, 则能够咨询别人一下想法, 再行编码; 尽量不直接看别人代码。
ü 不拷贝
一旦发现拷贝, 取消答辩资格。答辩时发现, 答辩成绩减半。
copy别人的代码, 甚至直接运行别人的代码, 以此作为自己的项目进展, 这是严禁的。严禁运行效果出来了, 却不知道是哪些代码造成的, 严禁明明是自己写的代码, 但却不知道为什么这么写。
展开阅读全文