管理信息系统大作业.docx
《管理信息系统大作业.docx》由会员分享,可在线阅读,更多相关《管理信息系统大作业.docx(21页珍藏版)》请在冰豆网上搜索。
管理信息系统大作业
计算机
《管理信息系统课程设计》
实验报告
专业:
班级:
学号:
_
姓名:
指导老师:
__________
学生成绩管理系统的分析与设计
一、设计目的与意义
现在我国的大中专院校的学生成绩管理水平普遍不高,有的还停留在纸介质基础上,这种管理手段已不能适应时代的发展,因为它浪费了了许多的人力和物力。
在当今信息时代这种传统的管理方法必然被计算机为基础的信息管理系统所代替。
如果本系统能被学校所采用,将会改变以前靠手工管理学生成绩的状况,可以树立良好的办学形象,提高工作效率。
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。
为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:
(1)系统应具有实用性、可靠性和适用性,同时注意到先进性。
(2)对各个数据库进行动态管理,防止混乱。
(3)不同用户有不同的查询和修改权限,防止非法查询,非法修改。
(4)能够对查询结果进行分类汇总,实现报表打印和下载。
(5)方便用户的操作,尽量减少用户的操作。
二、系统分析
1.需求分析
1)系统需求简介
该学生成绩管理系统提供学生成绩的录入、修改、查询、等各种功能。
成绩由各系的任课老师录入,修改。
管理员拥有对教师、学生、选课信息记录的操作权限。
2)用户需求描述
a.教师
教师可以看到学生信息和成绩信息。
学生信息包括学号、姓名、班级、生日、性别、地址、电话等基本信息。
当教师要查看某一学生信息时,可以自动显示出该课程的这个学生所有课程的学习成绩,并同时自动计算出这个学生的总分和平均分。
在成绩信息中,教师可以对学习成绩进行增加、修改和删除,并能够打印报表。
特别是可以对学生成绩进行分析,便于在以后的教学和出卷中改进。
b.学生
学生用户登录后,学生可以看到自己的学生信息和成绩信息。
学生信息包括学号、姓名、班级、生日、性别、地址、电话等信息。
成绩信息包括这个学生的所有课程的成绩信息。
c.管理员
与老师的功能相似,另外管理员具有用户管理功能,能够对新上任的老师和新注册的学生行进添加,并能删除已经毕业和退休的学生和老师。
3)功能需求
a.密码修改
用户在登录的状态下可以输入自己的旧密码,验证成功后可以设置新的密码
b.忘记密码
用户在未登录状态下可以输入自己的用户名和相关的验证信息,如果验证成功,则可以直接设置新的密码来作为自己账户的密码。
c.信息录入
需要输入的记录里包含的外码ID必须存在,用户才能正确录入信息。
d.查询
用户输入要查询的条件,输入的内容必须在数据库中存在,才能在控件中显示出来
e.修改
用户输入条件查询,然后在显示的表格框中修改需要修改的信息。
f.删除
有删除权限的用户输入需要删除记录的主码,若存在,则提示删除成功。
4)性能需求
a.时间特性
一般操作的响应时间应在1~2秒内
b.适应性
满足个人使用的需求(记录量控制在50项内)。
对运行环境要求不应存在困难。
2.系统逻辑方案
1)系统框架设计
2)业务流程分析(图)
3)数据流图(DFD)
4)数据字典
数据结构:
admin
描述:
管理员的基本信息表
定义:
admin=admin_username+admin_password+admin_name+admin_age+admin_sex+admin_job+admin_information+admin_image
admin_username={限三个字符以内}
admin_password={限10个字符以内}
------------------------------------------------------
数据结构:
course
描述:
学校课程信息表
定义:
course=course_id+course_name+course_point+teacher_username
course_id={限4个字符以内}
teacher_username={限4个字符以内}
----------------—-------------------------------------
数据结构:
score
描述:
成绩表
定义:
score=scoreid+teacher_username+student_username+course_id+scoreyear+score
scoreid={限4个字符以内}
scoreyear={整数型}
score={整数型}
-------------------------------------------------------
数据结构:
student
描述:
学生基本信息表
定义:
student=student_username+student_password+student_name+student_age+student_sex+student_startyear+student_department+student_student_profession+student_student_studentclass+student_student_information+student_image
student_username={限9个字符以内}
student_password={限10个字符以内}
--------------------—---------------------------------
数据结构:
teacher
描述:
教师基本信息表
定义:
teacher=teacher_username+teacher_password+teacher_name+teacher_age+teacher_sex+teacher_job+teacher_information+teacher_image
teacher_username={限4个字符以内}
teacher_password={限10个字符以内}
--------------------—---------------------------------
数据流名:
忘记密码
来源:
判断核对
去向:
用户信息表
组成:
{用户名+用户类型+用户信息+新密码}
备注:
当用户忘记密码时可以通过验证信息修改掉旧密码。
数据流名:
成绩单
来源:
教师
去向:
学生
组成:
{学号+教师号+课程号+分数+学年}
备注:
教师录入成绩后生成成绩单,学生可查询。
--------------------—---------------------------------
数据处理名:
管理员查询
输入:
查询条件
处理逻辑:
根据输入的条件判断是否有对应记录,并提示结果
输出:
信息显示
备注:
用于查询和显示需要的信息
数据处理名:
管理员修改
输入:
要修改的信息
处理逻辑:
判断输入的记录的主码是否存在,给出提示显示结果
输出:
提示结果
备注:
用于管理员修改需要的对应信息
数据处理名:
管理员删除
输入:
需要删除的记录的主码
处理逻辑:
判断是否存在,给出提示
输出:
提示结果
备注:
用于管理员删除不需要的对应记录
数据处理名:
修改密码
输入:
用户名、旧密码、新密码
处理逻辑:
判断输入的用户名旧密码是否有对应记录,并给出提示
输出:
提示结果
备注:
用于修改用户密码
数据处理名:
成绩录入
输入:
学号、教师号、课程号、成绩、学年
处理逻辑:
判断输入的学号、教师号、课程号是否有对应记录,并给出提示
输出:
提示结果
备注:
用于教师录入学生成绩
--------------------—---------------------------------
数据存储:
学生成绩情况
说明:
存放的是每个学生的成绩情况
输入数据流:
各门功课的成绩情况
流出数据流:
学生的成绩单
数据量:
由学生的人数决定
存储方式:
按学号先后顺序排列。
三、数据库设计
1.数据库概念结构设计(ER图)
2.逻辑结构设计(ER图转换为关系模型)
以下是最终的数据库表:
四、系统设计
1.模块结构设计
由前面的系统需求分析得到实体主要有5个:
教师、学生、管理员、课程、成绩。
学生有属性:
学号、姓名、性别、系名、专业、出生日期
教师有属性:
教师号、姓名、性别、院系、联系电话
管理员属性:
用户名、密码
课程有属性:
课程号、课程名、学分、教师
成绩有属性:
学号、姓名、课程号、课程名、成绩、授课老师
学生功能模块:
1、修改密码:
学生进入页面后可以修改自己的密码,以达到保密性;
2、学籍维护:
学生可以查看自己的基本信息(基本信息由管理员录入不能修改);
3、查看成绩:
学生可以查看自己的必修课成绩。
教师功能模块
1、学生管理:
该模块的主要功能是查询学生基本信息和对学生选课的管理以及成绩的录入修改。
2、教师进入页面后可以查看自己的基本资料和修改自己的密码,以达到保密性;
管理员功能模块:
1、进入页面后可以修改自己的密码,以达到保密性
2、教师管理,对教师和课程进行修改和添加删除信息
3、学生管理,查询修改添加学生基本信息
2.代码设计
在我们小组本次承担的课题“学生成绩管理系统”中,我负责的模块是教师部分。
下面介绍下教师可实现的操作:
第一部分是:
教师个人管理
包括:
1)查看个人资料
2)修改密码
第二部分是:
学生信息管理
包括:
1)学生信息查询
2)添加学生选课信息
3)学生成绩录入
通过以上设计,教师可以实施一些简单的基本操作。
教师个人管理:
1)查看个人资料
运行界面:
主要代码:
<%
session.setAttribute("username",login.getUsername());
SelectTeacherdaol=newSelectTeacherdao();
%>
教师个人基本信息
教师照片
\HB的天地\成果天地\JAVA\student_manage\WebRoot\photo<%=l.getTeacheruser(login.getUsername()).getTeacherimage()%>"width="240"height="320"alt="">
教师工号:
<%=l.getTeacheruser(login.getUsername()).getTeacherusername()%>
教师姓名:
<%=l.getTeacheruser(login.getUsername()).getTeachername()%>
教师年龄:
<%=l.getTeacheruser(login.getUsername()).getTeacherage()%>
教师性别:
<%=l.getTeacheruser(login.getUsername()).getTeachersex()%>
教师系别:
<%=l.getTeacheruser(login.getUsername()).getTeacherjob()%>
教师个人信息:
<%=l.getTeacheruser(login.getUsername()).getTeacherinformation()%>
2)修改密码
运行界面:
主要代码:
functionchecksubmit(){
if(form1.password.value=="")
{
alert("请输入原密码!
");
returnfalse;
}
elseif(form1.newpassword.value==""){
alert("新密码不能为空!
!
");
returnfalse;
}
elseif(form1.newpassword1.value==""){
alert("请确认新密码!
!
");
returnfalse;
}
elseif(form1.newpassword.value!
=form1.newpassword1.value){
alert("两次输入的新密码不一致,请重新输入!
");
returnfalse;
}
form1.submit();
}
functionfreset(){
form1.reset();
returnfalse;
}
<%
session.setAttribute("username",login.getUsername());
SelectTeacherdaol=newSelectTeacherdao();
%>
学生信息管理:
1)学生信息查询
运行界面:
主要代码:
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
<%
ArrayListarr=l.getStudent(student.getStudentusername(),student.getStudentdepartment()
student.getStudentprofession(),student.getStudentclass());
%>
<%
for(inti=start;i<=end;i++){
%>
<%=l.getStudentuser(arr.get(i)).getStudentusername()%>
<%=l.getStudentuser(arr.get(i)).getStudentname()%>
<%=l.getStudentuser(arr.get(i)).getStudentage()%>
<%=l.getStudentuser(arr.get(i)).getStudentsex()%>
<%=l.getStudentuser(arr.get(i)).getStudentstartyear()%>
<%=l.getStudentuser(arr.get(i)).getStudentdepartment()%>
<%=l.getStudentuser(arr.get(i)).getStudentprofession()%>
<%=l.getStudentuser(arr.get(i)).getStudentclass()%>
<%=l.getStudentuser(arr.get(i)).getStudentinformation()%>
<%
2)添加学生选课信息
运行界面:
主要代码
functioncheck(){
if(form1.scoreid.value==""){
alert("选课号不能为空");
returnfalse;
}
if(form1.teacherusername.value==""){
alert("教师工号不能为空!
");
returnfalse;
}
elseif(form1.studentusername.value==""){
alert("学生号不能为空!
");
returnfalse;
}
elseif(form1.courseid.value==""){
alert("课程号不能为空!
");
returnfalse;}
elseif(form1.scoreyear.value==""){
alert("课程学期不能为空!
");
}
form1.submit();
}
functionfreset(){
form1.reset();
returnfalse;
<%
ScoreDaol=newScoreDao();
scores=newscore();
s.setScoreid(score.getScoreid());
s.setTeacherusername(score.getTeacherusername());
s.setStudentusername(score.getStudentusername());
s.setCourseid(score.getCourseid());
s.setScoreyear(score.getScoreyear());
s.setScore(score.getScore());if(score.getScoreid().equals(l.getScore(score.getScoreid()).getScoreid())){
%>
alert("此选课信息已对应一个课程名,请重新输入正确的课程名!
");
window.location.href="student_class.jsp";
<%
}
else{
l.insertScore(s);
%>
alert("新选课添加成功!
!
");
window.location.href="student_class.jsp";
3)学生成绩录入
运行界面:
主要代码:
<%
ArrayListarr=l.getScoreteacher(login.getUsername(),score.getCourseid());
if(score.getCourseid()!
=null&&!
score.getCourseid().equals(l.getCourseid(login.getUsername(),score.getCourseid()).getCourseid())){
%>
alert("你没有查询和录入该课程成绩的权限!
!
");
window.location.href="teacher_score.jsp";
<%
}
elseif(score.getCourseid()!
=null){
%>
for(inti=start;i<=end;i++){
%>
<%=l.getScore(arr.get(i)).getScoreid()%><%=l.getScore(arr.get(i)).getTeacherusername()%>height="30"align=center><%=l.getScore(arr.get(i)).getStudentusername()%> | <%=l.getScore(arr.get(i)).getCourseid()%><%=l.getScore(arr.get(i)).getScoreyear()%>
"size="16"maxlength="3">
">
五、实验总结
这次课设对我来说意义重大,作为我们组的组长,我需要明确大家的分工,并且协调好组员的合作,做好动员的同时,还要注意时间的把握。
在