软件工程学生成绩管理系统.docx
- 文档编号:4964246
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:31
- 大小:334.08KB
软件工程学生成绩管理系统.docx
《软件工程学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程学生成绩管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
软件工程学生成绩管理系统
软件工程课程设计报告
题 目:
_____学生成绩管理系统____
专业班级:
___信息安全
******************_________*
学 号:
_____***********________
同组姓名:
__冯辉、王志文、张悬____
目 录
第1章绪论
随着互联网的发展,利用INTERNET技术来实现“无纸办公”这个概念已经深入人心,校园网作为学校信息化建设的一个平台在完成资源共享、互联网访问、教务管理、电子备课等方面发挥了重要作用。
服务教学、提高教学水平和教学结果查询是校园网建设的核心目标和核心价值,本系统立足于校园实际,争取做出一个方便快捷的成绩管理系统,实现成绩信息的管理。
该项目主要是服务于学生成绩管理方面,进一步方便教师的工作和学生的成绩查询,从而从侧面达到提高学校的管理质量。
它具有使用范围广,实用性强,使用简单,所花经费少等优点。
主要功能有两个方面:
管理员,登陆,进入系统,可以进行管理员操作,进行学生信息及成绩信息的编辑、查询、删除、修改、添加、排序等操作。
学生,登陆,进入系统,可以进行查询等操作。
软件系统目标:
(1)本系统具有很强的可靠行,可以对录入的学生信息进行效验,对数据进行修改、删除,规定各种权限。
(2)本系统中的模块具有很强的可续性,可以方便管理人员的修改与维护。
(3)本系统操作方便、灵活、简单。
(4)本系统可高效、快速的查询到学生的基本信息。
第2章系统分析
2.1系统目标
学生用户和管理员用户可以进入不同的管理模块,并且只有密码输入正确才能进入功能模块,学生用户只能查询学生信息,管理员用户可以对学生成绩实行各种操作。
2.2功能要求
1.性能:
学生成绩的增加、删除、修改,排序及查询
2.输入:
学生管理员密码
3.输出:
学生成绩信息
4.基本的数据流程和处理流程:
事务事务
管理员学生成绩管理系统学生
图2-1基本数据和处理流程
5.安全与保密要求:
登录系统时,需验证密码;不同身份的登录者,具有不同的使用权限。
2.3可行性研究方法
主要为对现有成绩管理系统的分析和研究比较的方法。
2.4系统可行性分析
可行性分析是为了清除的了解系统开发是否能够实际进行,是否能够带来一定效益,是否值得实现。
因而进行可行性分析是非常必要的,从下面几个方面来进行分析。
1.技术可行性:
设置不同权限,提高了数据的安全性。
2.运行可行性:
本系统作为一个小型的学生成绩管理系统,所耗费的资源非常的小。
已有软件和硬件配置均能满足需要。
3.经济可行性:
服务端及客户端的支出使用原有设备即可。
但是对软件有一次性软件费用支出和定期性软件维护支出。
软件使用后,能够减少人力的支出和维护。
4.法律可行性:
本软件属项目组开发,符合法律的各项规定。
5.使用可行性:
软件针对学校以及学院,对使用人员没有特殊限制,管理老师、学生等均可使用。
界面友好,操作简单,能够保证大多数用户使用该系统的要求。
2.5结论
通过可行性的一系列分析可得出结论,在现有的条件下,系统的开发方案是可行的。
开发条件具备,可以开始进行实际开发。
第3章需求分析
3.1引言
随着互联网的发展,利用INTERNET技术来实现“无纸办公”这个概念已经深入人心,校园网作为学校信息化建设的一个平台在完成资源共享、互联网访问、教务管理、电子设备等方面发挥了重要作用。
服务教学、提高教学水平和效果是校园网将设的核心目标和核心价值,本系统立足于校园实际,着眼于未来发展,实现信息资源的共享。
该项目主要是服务于教学方面,进一步方便教师的工作和学生的学习,从而从侧面达到提高学校的教学方面的“软件”质量。
3.2任务概述
3.2.1编写目的
解决学校对学生信息进行处理时,对各种数据的需求,并且能够有助于学校方面对学生的管理。
主要解决学生系你想查询困难等问题。
确定学生信息管理系统功能的需求,数据需求及软、硬件需求。
确定学生成绩管理系统所能实现的功能,本系统中主要是对数据进行操作,如学生信息及成绩的增加,删除,修改,查看,排序等功能。
3.2.2背景
这次待开发的系统名称为:
学生成绩管理系统
本次项目任务的完成者:
田丽霞、冯辉、王志文、张悬
用户:
管理老师,学生
3.3功能需求
3.3.1管理功能部分
从业务流程图可以看出,学生成绩管理系统分为大的两个方面:
管理员模块,学生模块,其主要管理功能有:
3.3.1.1管理员功能
管理员进入学生成绩管理的主要功能是:
实现对学生信息及成绩的添加,删除,修改,查询和排序等基本功能。
3.3.1.2学生功能
学生进入学生成绩管理系统的主要功能是:
每个学生登录系统后可以查询自己的个人信息以及成绩信息,查询的时候可以通过姓名也可以通过学号查询,同时学生登录时需要密码。
3.4数据流图
图3-1数据流顶层图
图3-2数据流细化图
3.5学生成绩管理系统逻辑结构图
图3-3逻辑结构图
3.6用例
主要参与者及用例表3-1
表3-1学生成绩管理系统用例表
参与者
用例编号
用例
管理员
1
登录
2
浏览信息
3
按成绩排序
4
查询
5
对学生成绩增、删、改
学生
1
登录
2
浏览信息
3
查找成绩
用例图
图3-4学生成绩系统用例图
3.7类图
图3-5类图的初步设计
第4章概要设计
4.1设计目标
概要设计师软件开发过程中的一个阶段就,在这个阶段需要完成一些明确的事情。
概要设计阶段的基本目的是回答“概括的说,系统应该如何实现?
”。
通过这个阶段,确定系统的组成模块。
本学生成绩管理系统由管理员、学生两个大模块组成。
每个模块又由自己的子模块组成。
4.2编写目的
基于现在的学生越来越多,老师的工作量越来越大。
伴随着网络信息化,学生成绩管理也必须迈进一个更加进步的时代。
那就是用网络来管理学生成绩,实现一个电子管理学生成绩的平台,减轻老师的负担,也便利教务处的管理工作。
在本系统中,学生可以选课,退课,查询成绩;老师在期中期末的时候给学生打分,并按百分比计算,提交之前可以修改学生的成绩;管理员可以对教师、学生、课程的信息进行增、删、查、改,并且可以发布公告,新闻。
如果学生,教师,管理员想进入这个系统,必须先进行登录,新用户要注册,可以进行个人信息的维护,如密码的修改等。
4.3任务概述
4.3.1目标
(1)本系统具有很强的可靠行,可以对录入的学生的成绩,对学生成绩进行修改、删除,并且可以对学生成绩进行排序。
(2)本系统中的模块具有很强的可续性,可以方便管理人员的修改与维护。
(3)本系统操作方便、灵活、简单。
(4)本系统可高效、快速的查询到学生的基本信息。
4.3.2需求概述
学生成绩管理系统是为方便教师学生实时掌握成绩、课程等相关信息,学生可以方便快捷的查询自己的成绩而研发的系统,旨在大幅度节约教师和学生们时间,提升教务系统办事效率。
4.4总体设计
4.4.1系统设计思想
总模块软件结构
图4-1学生成绩管理系统主模块
根据上面的需求分析,可以将这个系统分为以下模块:
学生子模块和管理员子模块
图4-2学生成绩管理系统层次图
表4-1模块功能
学生子模块
学生可以在该模块中查询自己的成绩
管理员子模块
管理员可以再此模块中浏览学生的成绩,对学生的成绩信息进行管理,并且可以对学生的成绩进行排序。
4.4.2学生成绩管理系统顺序图
图4-3学生成绩信息顺序图
4.4.3学生成绩管理系统协作图
图4-4学生成绩信息协作图
4.4.4学生成绩管理系统状态图
图4-5学生成绩信息状态图
4.5接口设计
4.5.1外部接口与用户界面
在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。
在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。
外观上也要做到合理化,考虑到用户多对WINDOW风格较熟悉,应尽量向这一方向靠拢。
在设计语言上,已决定使用VisualC++进行编程。
总的来说,系统的用户界面应作到可靠性、简单性、易学习和使用。
4.5.2内部接口
内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。
具体参数的结构将在下面数据结构设计的内容中说明。
接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
第5章详细设计
5.1根本任务
依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,具体来说就是把经过总体设计得到的各个模块详细的加以描述。
5.2程序流程图
1.系统主程序流程图
图5-1主程序流程图
2.学生登录模块
图5-2学生用户流程图
3.管理员管理流程图
图5-3管理员管理流程图
4.系统类图
图5-4成绩管理系统类图
5.3详细设计说明
管理模块包括以下内容:
界面设计
用户登陆:
该系统根据用户的身份实现了不同的功能,用户登陆时需要选择一种登陆方式(默认情况下是学生),系统再根据用户选择的登陆方式到相应的表中去搜索。
例如,登陆时选择了教师登陆方式,系统将会在教师信息表中搜索是否存在与该用户的输入相符的信息,如果存在则进入教师主页,否则提示用户输入有误,请重新输入。
学生用户界面
1.按照学号查找
学生可以查询自己指定的学号查询成绩,方便学生了解成绩情况。
2.按照学生姓名查找
学生可以查询自己指定姓名查询成绩,方便学生了解自身情况。
管理员界面
1.增加学生成绩
管理员可以增加某个学生的某门科目的成绩。
2.显示学生成绩
管理员可以显示所有学生所有科目的成绩。
3.排序统计成绩
管理员可以根据学生成绩进行排序和统计。
4.查找学生成绩
管理员可以查询某个学生的成绩。
5.删除学生成绩
管理员可以删除某个学生的成绩。
6.修改学生成绩
管理员可以修改学生的成绩。
第六章软件测试
测试用例设计
表6-1
用例编号
C001
测试对象
“学生登录”功能
用例目的
测试学生登录系统的功能是否正确实现
输入/动作
预期输出/结果
实际结果
选择学生登录,输入错误密码
提示“输入错误密码,请重新输入”
提示“输入错误密码,请重新输入”
选择学生登录,输入密码,输入错误名字
提示“无法找到该学生”
提示“无法找到该学生”
选择学生登录,输入账号,输入密码,单击登录
进入学生登录子系统
进入学生登录子系统
表6-2
用例编号
C002
测试对象
“管理员登录”子系统界面
用例目的
测试管理员登录子系统界面的功能是否正确实现
输入/动作
预期输出/结果
实际结果
选择管理员登录,输入错误密码
提示“输入错误密码,请重新输入”
提示“输入错误密码,请重新输入”
选择管理员登录,输入密码
进入管理员登录子系统
进入管理员登录子系统
观察界面是否正确显示操作按钮
显示“增加学生成绩”,“显示学生成绩”,“排序统计成绩”,“查找学生成绩,“删除学生成绩”,“修改学生信息”
显示“增加学生成绩”,“显示学生成绩”,“排序统计成绩”,“查找学生成绩,“删除学生成绩”,“修改学生信息”
表6-3
用例编号
C003
测试对象
“管理员登录”子系统增加学生成绩功能
用例目的
测试“管理员登录”子系统增加学生成绩功能是否正确实现
输入/动作
预期输出/结果
实际结果
在“教师登录”子系统中选择增加学生成绩功能
显示要增加的学生的姓名和学号和各科成绩
显示要增加的学生的姓名和学号和各科成绩
表6-4
用例编号
C004
测试对象
“管理员登录”子系统排序统计学生成绩功能
用例目的
测试“管理员登录”子系统排序统计学生成绩功能是否正确实现
输入/动作
预期输出/结果
实际结果
在“管理员登录”子系统中选择排序查询功能
显示排序成功
显示排序成功
表6-5
用例编号
C005
测试对象
“管理员登录”子系统显示学生成绩功能
用例目的
测试“管理员登录”子系统显示学生成绩功能是否正确实现
输入/动作
预期输出/结果
实际结果
在“教师登录”子系统中选择显示学生成绩功能
显示所有学生的姓名和学号和各科成绩
显示所有学生的姓名和学号和各科成绩
第七章实验结果截图显示
7.1代码运行之后的主界面
图7-1
7.2学生模块显示
图7-2
图7-3
7.3管理员模块显示
图7-4
第八章程序源代码
#include
#include
#include
#include
usingnamespacestd;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
classStudent
{
public:
charname[20];
charId[20];
intCnum;//C++课程得分
intMnum;//汇编课程得分
intEnum;//嵌入式操作系统课程得分
intsum;//总分
Student*Next;
voidInput()
{
cout<<"\t\t请输入学生的姓名:
";cin>>name;
cout<<"\t\t请输入学生的学号:
";cin>>Id;
cout<<"\t\t请输入C++课程的成绩:
";cin>>Cnum;
cout<<"\t\t请输入汇编课程的成绩:
";cin>>Mnum;
cout<<"\t\t请输入嵌入式操作系统课程的成绩:
";cin>>Enum;
sum=Cnum+Mnum+Enum;
}
voidReadFile(istream&in)
{in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;}
voidShow()
{
cout<<"姓名:
"< "< "< <<"汇编: "< "< "< } }; //﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ classStudentmassage { public: Studentmassage(); ~Studentmassage(); voidShowMenu(); voidFind(); voidSave(); voidModifyItem(); voidRemoveItem(); voidSwap(Student*,Student*); voidSort(); intListCount(); voidDisplay() { for(Student*p=Head->Next;p! =End;p=p->Next) p->Show();cout<<"输入任意字符! 继续……";getch(); } voidAddItem() { End->Input(); End->Next=newStudent; End=End->Next; cout<<"添加成功! "< cout<<"输入任意字符! 继续……"; getch(); } private: Student*Head,*End; ifstreamin; ofstreamout; Student*FindItem(char*name) { for(Student*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(! strcmp(p->Next->name,name))returnp; returnNULL; } Student*FindID(char*Id) { for(Student*p=Head;p->Next! =End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(! strcmp(p->Next->Id,Id))returnp; returnNULL; } }; //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Studentmassage: : Studentmassage() { Head=newStudent; Head->Next=newStudent; End=Head->Next; in.open("sort.txt"); if(! in) cout<<"这是一个新系统,无学生信息。 请先输入。 "< else { while(! in.eof()) { End->ReadFile(in); if(End->name[0]=='\0')break; End->Next=newStudent; End=End->Next; } in.close(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Studentmassage: : ~Studentmassage() { Save(); for(Student*temp;Head->Next! =End;) { temp=Head->Next; Head->Next=Head->Next->Next; deletetemp; } deleteHead,End; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage: : ShowMenu() { cout<<"********************************************************************************"< cout<<"〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统☆〓〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓★★★★★★★★★★★★★★★★★〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆1.增加学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆2.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆3.排序统计成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆4.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆5.删除学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆6.修改学生信息☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"< cout<<"\n\t\t\n\t\t请选择: "; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage: : Find() { charname[20],Id[10]; intx; Student*p=NULL; cout<<"\n\t\t*********************************\n"; cout<<"\t\t※1.按学生的姓名查找\n\t\t※2.按学生学号查找"; cout<<"\n\t\t*********************************\n请选择: "; cin>>x; switch(x) { case1: {cout<<"\t\t请输入要查找的学生的姓名: ";cin>>name; if(p=FindItem(name)) { p->Next->Show(); cout<<"输入任意字符! 继续……"; getch(); } else { cout<<"\t\t没有找到该姓名的学生! "<<'\n'< cout<<"输入任意字符! 继续……"; getch(); } }break; case2: { cout<<"\t\t请输入要查找的学生的学号: ";cin>>Id; if(p=FindID(Id)) { p->Next->Show(); cout<<"输入任意字符! 继续……"; getch(); } else { cout<<"\t\t没有找到该学好的学生! "<<'\n'< cout<<"输入任意字符! 继续……"; getch(); } }break; } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage: : ModifyItem()//修改信息 { charname[20]; Student*p=NULL; cout<<"\t\t请输入要修改的人的姓名: ";cin>>name; if(p=FindItem(name)) { cout<<"\t\t已找到学生的信息,请输入新的信息! "< p->Next->Input(); cout<<"修改成功! "< cout<<"输入任意字符! 继续……"; getch(); } else { cout<<"\t\t没有找到! "< cout<<"输入任意字符! 继续……"; getch(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 学生 成绩管理系统