学生成绩管理系统85721.doc

上传人:仙人指路1688 文档编号:4059284 上传时间:2023-04-02 格式:DOC 页数:55 大小:767.50KB
返回 下载 相关 举报
学生成绩管理系统85721.doc_第1页
第1页 / 共55页
学生成绩管理系统85721.doc_第2页
第2页 / 共55页
学生成绩管理系统85721.doc_第3页
第3页 / 共55页
学生成绩管理系统85721.doc_第4页
第4页 / 共55页
学生成绩管理系统85721.doc_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《学生成绩管理系统85721.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统85721.doc(55页珍藏版)》请在三一办公上搜索。

1、研究生成绩管理系统目录1软件需求31.1设计目的31.2系统功能要求31.3需求分析31.3.1数据流图31.3.2数据词典51.3.3加工说明62概要设计72.1具体功能要求72.2开发环境72.2.1编写语言:72.2.2软件及语言版本:72.2.3开发环境:72.2.4运行环境:72.3基本设计概念和处理流程72.4结构82.5功能需求与程序的关系82.6尚未解决的问题82.7系统数据结构设计93详细设计93.1界面介绍及使用操作93.1.1登录界面93.1.2学生用户界面123.1.3教师用户界面163.1.4管理员用户界面183.2主要程序源代码203.2.1登录模块203.2.2学

2、生用户模块273.2.3教师用户模块333.2.4管理员用户模块393.2.5密码修改模块523.2.6主程序模块553.3可执行文件551软件需求1.1设计目的 加深、巩固所学专业课程(软件工程、数据结构)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。1.2系统功能要求(1)学生档案信息维护,包括注册、注销、更新等;(2)学生选课管理,从可选的课程(所列的课程)中选择若干课程;(3)学生成绩管理,实现学生成绩的登记;(4)学生信息、选课情况、成绩的查询和报表输出;满足以下限制:每个学生选择的课程数在710之间;(必须包含计算机应用技术课程)学生信息注销后,便不允许

3、对与之相关的信息作任何修改,但可查阅;成绩的登记是按照课程来登记的;学生只能实现上面的(2)、(4)功能,且只涉及与自身相关的内容;1.3需求分析1.3.1数据流图0层:学生成绩管理系统学生教师管理员选课信息选课、成绩、档案报表成绩选课、成绩、档案报表选课、成绩、档案报表成绩、档案1层:1.学生档案管理模块学生档案学生档案档案报表班级档案文件2.选课功能管理模块选课信息选课记录记录选课报表选课文件3.成绩管理模块学生成绩学生成绩成绩报表科目成绩文件2层: 1学生档案管理模块1.1学生档案注册1.2学生档案注销1.3学生档案更新学生档案班级档案文件学生档案1.4学生档案查询档案报表2选课功能管理

4、模块2.1选课信息录入2.2选课信息查询选课信息选课信息选课信息选课信息选课文件息3成绩管理模块3.1成绩录入3.2成绩查询成绩成绩报表成绩成绩成绩文件息1.3.2数据词典(1) 学生档案名字:学生档案数据类型:学号+是否注销+姓名+性别+单位+联系电话使用说明:录入档案时给出除是否注销外的其余5项解释性说明:输入文件时6项数据之间用?隔开(2) 选课记录名字:选课信息数据类型:学号+姓名+课程1+课程2+课程3+使用说明:课程数为710解释性说明:输入文件时各项数据之间用:隔开(3) 科目成绩名字:科目成绩数据类型:1(学号+姓名+成绩)+2(学号+姓名+成绩)+作为输出流的转换列表:单人成

5、绩(学号+姓名+成绩)作为输入流的转换列表:单人成绩(学号+姓名+成绩)使用说明:按单一科目 单一班级构成解释性说明:输入文件时各项数据之间用?隔开1.3.3加工说明(1) 学生档案注册逐个输入学生信息;将学生信息写入文件。(2) 学生档案注销从文件中读出该学生信息;将学生信息改为注销后重新写入文件。(3) 学生档案更新从文件中读出该学生信息;将学生信息更新后重新写入文件。(4) 学生档案查询从文件中读出该学生信息。(5) 选课信息录入输入学生选课内容;将选课信息写入文件。(6) 选课信息查询从文件中读出该选课信息。(7) 成绩录入读出班级成员;输入学生成绩;将该科目成绩写入文件。(8) 成绩

6、查询从文件中读出成绩。2概要设计2.1具体功能要求(1) 用汉化菜单实现或对话框实现(用图形用户界面实现做得好可以得优秀,如果只能用字符菜单实现,最多得良好)。(2) 学生信息包括学号、姓名及你在研究生学习期间学习的各门课程(如果不是自己做的,则不能及格)。(3) 提供按学号、姓名、班级查询学生成绩的功能。(4) 查询结果提供逐屏显示的功能,或用表格形式显示。(5) 删除和修改时要进行确认。(6) 将学生成绩以文件(也可以是数据库文件)的形式存在磁盘上;每次操作时将学生成绩调出,操作完毕后存盘。(7) 使用顺序表结构或单链表结构实现(如果是以数据库文件存储,则是对数据库文件进行操作)。2.2开

7、发环境2.2.1编写语言:本设计使用基于C+的图形用户界面软件Qt软件编写。Qt应用程序框架由奇趣科技公司开发(现属诺基亚公司),是一种基于C+语言的面向用户的图形界面语言,可以构建出工业级的跨平台应用程序。在源代码不经任何修改的情况下,程序即可流畅的运行于Windows、Linux/UNIX、Mac OS X和嵌入式Linux上,“一次编写,随处编译”。2.2.2软件及语言版本:本设计使用软件及语言版本为“qt-sdk-win-opensource-2010.05”。2.2.3开发环境:本设计在window vista操作系统下,使用qt-creator-win-opensource-2.0

8、.1程序编写。2.2.4运行环境:本程序在window操作系统下运行,需要为系统添加libgcc_s_dw2-1.dll、mingwm10.dll、QtCored4.dll、QtGuid4.dll四个应用程序拓展文件,程序安装文件中已包含,只需安装步骤安装即可。2.3基本设计概念和处理流程基本设计概念说明本系统采用用户友好的操作界面实行。1首先显示用户登录界面,有学生、教师、管理员三种身份可供选择。选择不同的登录身份进入不同的功能模块。2学生使用模块。学生可以进行选课管理,并可以查询自己的档案信息、选课记录、和各科成绩。3教师使用模块。教师可以对课程录入成绩,并可以查看学生的档案信息、选课记录

9、、和各科成绩。4管理员使用模块。管理员可实现一般教师的所有功能(对课程录入成绩,并可以查看学生的档案信息、选课记录、和各科成绩),另外,管理员可以对学生档案进行注册、注销、更改。5三种功能模块均可退回登录界面重新选择。2.4结构2.5功能需求与程序的关系登录界面学生使用界面教师使用界面管理员使用界面用户登录学生档案注册学生档案注销学生档案更新学生档案查询课程选择选课记录查询成绩录入成绩查询2.6尚未解决的问题由于时间有限,系统只考虑了一个班级的情况,对于多班级多年级情况尚未考虑。2.7系统数据结构设计(1) 学生用户登录信息数据结构:学号+密码存储方式:顺序存储存储媒介:文本文件存储(2) 教

10、师用户登录信息数据结构:教师姓名+密码存储方式:顺序存储存储媒介:文本文件存储(3) 学生档案数据类型:学号+是否注销+姓名+性别+单位+联系电话存储方式:顺序存储存储媒介:文本文件存储(4) 选课记录名字:选课信息数据类型:学号+姓名+课程1+课程2+课程3+存储方式:顺序存储存储媒介:文本文件存储(5) 科目成绩名字:科目成绩数据类型:学号+姓名+成绩存储方式:顺序存储存储媒介:文本文件存储3详细设计3.1界面介绍及使用操作3.1.1登录界面打开软件后显示登录界面。点击学生按钮后出现学生登录所需的学号和身份验证输入。点击教师按钮后出现教师登录所需的教师姓名和身份验证输入。点击管理员按钮后出

11、现管理员登录所需的身份验证输入。点击学生和教师时出现的密码修改按钮,出现密码修改界面。此界面已做错误警告处理(密码输入为空,原密码输入错误,新密码两次输入不一致,新密码包含“:”)。点击学生按钮,输入学号及密码(初始密码即学号),此时点击登录按钮可进入学生用户界面。此界面已做错误警告处理(学号输入错误,密码输入错误)。点击教师按钮,输入教师姓名及密码(初始密码即姓名全拼),此时点击登录按钮可进入教师用户界面。此界面已做错误警告处理(教师姓名输入错误,密码输入错误)。点击管理员按钮,输入密码(密码为“iamadmin”),此时点击登录按钮可进入管理员用户界面。此界面已做错误警告处理(密码输入错误

12、)。3.1.2学生用户界面点击左侧的选课录入按钮,进入选课录入界面(与上图一致)。从可选课程中选择需要选择的课程,双击或者点击“-”按钮,可将该课程加入已选课程行列。从已选课程中选择不需要的课程,点击“-”按钮,可将该课程放回可选课程行列。选择完毕后点击确定按钮,系统将选课信息存入文件。如果是被注销过的用户,不能够进入选课系统。点击左侧的基本信息按钮,出现基本信息显示界面。点击左侧的选课信息按钮,出现选课记录显示界面。点击左侧的成绩信息,出现成绩查询界面。选择科目点击查询,可以查到想查的成绩。如果该课程成绩尚未录入,显示查询失败。点击左侧的推出登录,可以退回到登录界面。3.1.3教师用户界面点

13、击左侧的成绩录入按钮,进入成绩录入界面(与上图一致)。选择需要选择的课程和班级。在成绩栏可以输入每个学生的成绩,按确定按钮完成录入。点击左侧的基本信息按钮,输入要查询的学号或姓名,点击查询按钮。点击左侧的选课信息,输入要查询的学号或姓名,点击查询按钮。点击左侧的成绩信息按钮,选择需要查询的科目与班级,点击查询按钮。点击左侧的推出登录,可以退回到登录界面。3.1.4管理员用户界面点击左侧的注册新生按钮,进入注册新生界面(与上图一致)。输入所需的各项信息,点击注册按钮,系统将判断注册是否成功。注册成功。注册失败。点击左侧的注销档案按钮,进入注销档案界面。输入需要注销的学号,点击查询按钮。点击注销该

14、学生信息按钮,系统将提示是否确认执行注销操作。点击yes按钮,系统将执行注销操作。点击左侧的更新档案按钮,进入更新档案界面。输入需要更新的学号,点击查询按钮。选择需要修改的信息后,点击更新按钮,系统将询问是否更新注册信息。点击yes按钮,系统将执行更新操作。管理员用户的成绩登记与信息查询操作与教师用户完全一致,这里不再重复。3.2主要程序源代码3.2.1登录模块/*登录界面头文件*/#ifndef LOGIN_H#define LOGIN_H#include #include ui_login.h/界面文件class LoginForm:public QDialog,public Ui:Log

15、inForm Q_OBJECTpublic: LoginForm(QWidget *parent=0);public slots: void pushstudentOk(); void pushstudentPw(); void pushteacherOk(); void pushteacherPw(); void pushadminOk();#endif / LOGIN_H/*登录界面源文件*/#include#includelogin.h#includestudent.h#includeteacher.h#includeadmin.h#includepassword.hLoginForm:

16、LoginForm(QWidget *parent):QDialog(parent) setupUi(this);/读取界面 studentFrame-hide(); teacherFrame-hide(); adminFrame-hide(); /teacherPwButton-hide(); /studentPwButton-hide(); /连接各信号与槽 connect(studentOkButton,SIGNAL(clicked(),this,SLOT(pushstudentOk(); connect(studentPwButton,SIGNAL(clicked(),this,SLO

17、T(pushstudentPw(); connect(teacherOkButton,SIGNAL(clicked(),this,SLOT(pushteacherOk(); connect(teacherPwButton,SIGNAL(clicked(),this,SLOT(pushteacherPw(); connect(adminOkButton,SIGNAL(clicked(),this,SLOT(pushadminOk();void LoginForm:pushstudentOk()/登录学生用户界面 if(studentNumEdit-text().isEmpty()/如果未输入学号

18、 QMessageBox:warning(this,tr(登录错误),tr(学号不能为空),tr(确认); else/学号不为空 int numright=0;/用来判断有没有这个学号 0是没有 1是有 QString filename1=QString(tr(files/注册.txt);/打开 注册 文件 QFile file1(filename1); if(!file1.open(QIODevice:ReadOnly|QIODevice:Text) qDebug(Cannot open file for reading:); return; QTextStream in1(&file1);

19、 while(!in1.atEnd() QString line1=in1.readLine(); QStringList fields1=line1.split(:); if (studentNumEdit-text()=fields10)/找到这个学号了 numright=1; if(fields1.count()1)&(studentPwEdit-text()!=fields11)/已经设置过密码 但是输入的密码不正确 QMessageBox:warning(this,tr(密码错误),tr(您输入的密码不正确),tr(确认); else if(fields1.count()=1)&(s

20、tudentPwEdit-text()!=fields10)/尚未设置过密码 但是输入的初始密码不正确 QMessageBox:warning(this,tr(密码错误),tr(您输入的密码不正确n初始密码为学号),tr(确认); else/密码输入正确 登录学生操作界面 QString filename=QString(tr(files/电子与通信工程.txt); QFile file(filename); if(!file.open(QIODevice:ReadOnly|QIODevice:Text) qDebug(Cannot open file for reading:); retur

21、n; QTextStream in(&file); while(!in.atEnd() QString line=in.readLine(); QStringList fields=line.split(?); if (studentNumEdit-text()=fields0) StudentForm *studentDialog=new StudentForm(); studentDialog-studentnum=fields0; studentDialog-studentname=fields2; studentDialog-studentsex=fields3; studentDia

22、log-studentwork=fields4; studentDialog-studentphone=fields5; studentDialog-nameExLabel-setText(studentDialog-studentname); studentDialog-numExLabel-setText(studentDialog-studentnum); studentDialog-sexExLabel-setText(studentDialog-studentsex); studentDialog-workExLabel-setText(studentDialog-studentwo

23、rk); studentDialog-phoneExLabel-setText(studentDialog-studentphone); QTime timenow; int h=timenow.currentTime().hour(); if(h=5)&(hwelcomeLabel-setText(QString(tr(早上好,%1同学).arg(studentDialog-studentname); else if(h=11)&(hwelcomeLabel-setText(QString(tr(中午好,%1同学).arg(studentDialog-studentname); else i

24、f(h=14)&(hwelcomeLabel-setText(QString(tr(下午好,%1同学).arg(studentDialog-studentname); else studentDialog-welcomeLabel-setText(QString(tr(晚上好,%1同学).arg(studentDialog-studentname); if(fields1=tr(注销)/如果该生的学生信息被注销过 那么该生不能选课 studentDialog-courseEnterWarnLabel-show(); studentDialog-courseEnterInfoLabel-hide

25、(); studentDialog-courseChooseButtonBox-setEnabled(false); studentDialog-show(); close(); file.close(); if(numright=0)/没有这个学号 QMessageBox:warning(this,tr(登录错误),tr(您输入的学号尚未注册),tr(确认); file1.close(); void LoginForm:pushstudentPw()/学生用户更改密码 if(studentNumEdit-text().isEmpty()/如果未输入学号 QMessageBox:warning

26、(this,tr(登录错误),tr(学号不能为空),tr(确认); else/学号不为空 int numright=0;/用来判断有没有这个学号 0是没有 1是有 QString filename1=QString(tr(files/注册.txt);/打开 注册 文件 QFile file1(filename1); if(!file1.open(QIODevice:ReadOnly|QIODevice:Text) qDebug(Cannot open file for reading:); return; QTextStream in1(&file1); while(!in1.atEnd()

27、QString line1=in1.readLine(); QStringList fields1=line1.split(:); if (studentNumEdit-text()=fields10)/找到这个学号了 numright=1; PasswordForm *passwordDailog=new PasswordForm(); if(fields1.count()1)/已经设置过密码 passwordDailog-oldpassword=fields11; else if(fields1.count()=1)/尚未设置过密码 passwordDailog-oldpassword=f

28、ields10; passwordDailog-ID=fields10; passwordDailog-loginType=tr(学生); passwordDailog-show(); if(numright=0)/没有这个学号 QMessageBox:warning(this,tr(登录错误),tr(您输入的学号尚未注册),tr(确认); file1.close(); void LoginForm:pushteacherOk()/登录教师用户界面 if(teacherNumEdit-text().isEmpty()/如果未输入姓名 QMessageBox:warning(this,tr(登录

29、错误),tr(姓名不能为空),tr(确认); else int nameright=0;/用来判断有没有这个名字 0是没有 1是有 QString filename=QString(tr(files/教师.txt); QFile file(filename); if(!file.open(QIODevice:ReadOnly|QIODevice:Text) qDebug(Cannot open file for reading:); return; QTextStream in(&file); while(!in.atEnd() QString line=in.readLine(); QStr

30、ingList fields=line.split(:); if (teacherNumEdit-text()=fields0) nameright=1; if(teacherPwEdit-text()!=fields1) QMessageBox:warning(this,tr(密码错误),tr(您输入的密码不正确n初始密码为姓名全拼),tr(确认); else TeacherForm *teacherDialog=new TeacherForm(); QTime timenow; int h=timenow.currentTime().hour(); if(h=5)&(hwelcomeLab

31、el-setText(QString(tr(早上好,%1老师).arg(fields0); else if(h=11)&(hwelcomeLabel-setText(QString(tr(中午好,%1老师).arg(fields0); else if(h=14)&(hwelcomeLabel-setText(QString(tr(下午好,%1老师).arg(fields0); else teacherDialog-welcomeLabel-setText(QString(tr(晚上好,%1老师).arg(fields0); teacherDialog-show(); close(); if(n

32、ameright=0)/没有这个姓名 QMessageBox:warning(this,tr(登录错误),tr(您输入的姓名不正确n请输入正确的中文全名),tr(确认); file.close(); void LoginForm:pushteacherPw()/教师用户更改密码 if(teacherNumEdit-text().isEmpty()/如果未输入姓名 QMessageBox:warning(this,tr(登录错误),tr(姓名不能为空),tr(确认); else int nameright=0;/用来判断有没有这个名字 0是没有 1是有 QString filename=QStr

33、ing(tr(files/教师.txt); QFile file(filename); if(!file.open(QIODevice:ReadOnly|QIODevice:Text) qDebug(Cannot open file for reading:); return; QTextStream in(&file); while(!in.atEnd() QString line=in.readLine(); QStringList fields=line.split(:); if (teacherNumEdit-text()=fields0) nameright=1; PasswordF

34、orm *passwordDailog=new PasswordForm(); passwordDailog-oldpassword=fields1; passwordDailog-ID=fields0; passwordDailog-loginType=tr(教师); passwordDailog-show(); if(nameright=0)/没有这个姓名 QMessageBox:warning(this,tr(登录错误),tr(您输入的姓名不正确n请输入正确的中文全名),tr(确认); file.close(); void LoginForm:pushadminOk()/登录管理员用户界面 if(adminPwEdit-text()=iamadmin) AdminForm *adminDialog=new AdminForm(); QTime timenow; int h=timenow.currentTime().hour(); if(h=5)&(hwelcomeLabel-setText(tr(早上好,管理员); else if(h=11)&(h14) adminDi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号