管理信息系统.docx
《管理信息系统.docx》由会员分享,可在线阅读,更多相关《管理信息系统.docx(23页珍藏版)》请在冰点文库上搜索。
![管理信息系统.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/359bb057-8a38-4edf-a414-839825f484d2/359bb057-8a38-4edf-a414-839825f484d21.gif)
管理信息系统
天津农学院
课程设计报告
(2010—2011学年第二学期)
题目:
学生选课系统设计
课程名称计算机信息管理基础
任课教师
学生姓名
学号
系别计算机科学与信息工程系
专业班级2008级信息管理与信息系统1班
成绩评定
1.系统设计目的及方法
验证有关概念和理论,加深对概念和知识的理解和认识;熟悉和掌握有关工具的使用方法;初步具备利用所学知识和工具开发管理信息系统的能力。
应用理论课程讲授的管理信息系统的系统分析方法、模块化系统设计方法以及系统的调试方法进行财务管理系统(可选择其它系统)的分析、设计、实现与调试。
系统结构可以选择单机、C/S结构或B/S结构任意一种。
2.系统设计开发工具及环境
本系统的实验环境是Windowsxp,主要采用的开发环境是MyEclipse8.0。
以Tomcat6.0作为本地服务器。
编程语言为基于JAVA语言的JSP技术。
该技术可以使所编写的程序具有很强的健壮性,同时可移植性强。
数据库采用的是SQLServer2005通过数据库连接驱动sqljdbc.jar进行数据库德连接及传递相关的操作程序指令代码。
3.系统需求分析
3.1系统数据流程图
毕业设计选题系统第一层数据流程图:
毕业设计选题系统第二层教师管理子系统数据流程图:
毕业设计选题第二层——学生管理子系统数据流程图:
毕业设计选题第二层——管理员子系统数据流程图:
3.2典型模块(或程序)的程序流程图
下面以管理员管理系统及教师管理系统为例画出如下程序流程图:
3.3典型处理的表达
用户在登录系统时需要根据用户的不同身份来选择进入不同的子系统,用户可以在DropDownList下拉菜单中选择相应的身份,然后可以登录不同的子系统。
可用决策树表示如下图所示:
图登录子系统决策树图
通过上图可知,用户在登录系统时选择不同的登录条件,系统可以根据用户提供的用户ID来选择该用户所要进入的子系统。
如当用户选择教师登录并输入教师ID及其密码后,系统将自动加载教师管理子界面。
3.3系统设计划分
该毕业设计选题系统主要包括三个子系统分别是教师管理子系统、管理员子系统及学生管理子系统。
教师管理子系统主要是提供教师录入毕业选题;查询该教师的相关选题结果;下载相关表格;查看相关管理制度以及修改个人信息。
4数据库设计
4.1数据库的E-R图
编号
编号
4.2数据库的数据表
表1后台管理员表
表2学生信息表
\
表3信息表
表4课程信息表
表5选课信息表
表6选课结果表
表7教师信息表
5.系统实现
本系统主要功能是为毕业生提供选择毕业设计课题及导师的选择的平台,具体的流程是:
教师可以通过教师管理信息系统上传课题,学生通过学生管理信息系统进行毕业设计选题及导师的选择,并将所选择的结果信息反馈给教师端,同时也为教务处管理人员提供管理其后台的功能。
系统的首页如下所示:
图1系统界面图
通过上图所示,系统用DropDownList控件供不同的用户选择,主要有教师登录、学生登录及管理员登录。
不同的用户通过登录不同的系统来进行选择相关的服务,这里只选择教师管理信息系统为例进行详细说明。
其教师端登录时相关的Login.Java中的Severlet代码如下所示:
switch(selecting)
{//教师跳转页面
case1:
//数据库操作,匹配用户名等
try{
con.getConnection();//看一下源文件db.properties
}catch(InstantiationExceptione){e.printStackTrace()
}catch(IllegalAccessExceptione){
e.printStackTrace();
}catch(ClassNotFoundExceptione){e.printStackTrace()}
Stringsqluser1="select*fromteacherInfwhereteacherID='"+request.getParameter("userID")+"'andteacherPassword='"+request.getParameter("password")+"'";
Statementstmt1=null;
try{
stmt1=con.getConnection().createStatement();
}catch(SQLExceptione1){
e1.printStackTrace();
}catch(InstantiationExceptione1)
e1.printStackTrace();
}catch(IllegalAccessExceptione1){
e1.printStackTrace();
}catch(ClassNotFoundExceptione1){
e1.printStackTrace();
}
ResultSetrsuser1=null;
try{
rsuser1=stmt1.executeQuery(sqluser1);
}catch(SQLExceptione1){
e1.printStackTrace();}
try{
while(rsuser1.next()){
Teachertea=newTeacher();
tea.setTeacherID(request.getParameter("userID"));
tea.setTeacherPassword(request.getParameter("password"));
try{tea.setEmail(rsuser1.getObject("email").toString());tea.setTeacherPostion(rsuser1.getObject("teacherPostion").toString());tea.setTeacherName(rsuser1.getObject("teacherName").toString());tea.setEducation(rsuser1.getObject("education").toString());
tea.setRemark(rsuser1.getObject("remark").toString());
tea.setSubjectNumber((Integer)rsuser1.getObject("subjectNumber"));
tea.setTeacherID(rsuser1.getObject("teacherID").toString());
tea.setTeacherPassword(rsuser1.getObject("teacherPassword").toString());
tea.setUpdatepeo((Integer)rsuser1.getObject("updatepeo"));
tea.setUpdatetime(rsuser1.getObject("updatetime").toString());
tea.setUplaodtime(rsuser1.getObject("uplaodtime").toString());
tea.setUploadpeo((Integer)rsuser1.getObject("uploadpeo"));
}catch(SQLExceptione2){
e2.printStackTrace();}
request.getSession().setAttribute("user",tea);
//关闭数据库
ServletContextsc2=getServletContext();
//request.setAttribute("msg","登录信息错误!
");
RequestDispatcherrdp2=sc2
.getRequestDispatcher("/userLogined/teacher/Teacher.jsp");
rdp2.forward(request,response);}
}catch(SQLExceptione){
e.printStackTrace();
}
try{
rsuser1.close();
stmt1.close();
}catch(SQLExceptione){
e.printStackTrace();
}
con.closeConnection();
break;
用户登录成功后进入到教师系统界面,教师通过该系统可以自行修改自己的信息;录入该教师的课题;查询学生的选题结果;查看相应的管理制度及下载相关的表格。
界面图如下所示:
图2教师管理信息系统界面图
通过上图发现右侧的导航可以提供教师的基本服务,例如当用户点击修改个人信息时进入如下用户界面:
图3信息更改界面图
通过上图可以发现当用户进入该界面时,该用户的所有信息出现在相应的文本框中,这里主要是当用户登录时将用户所用的信息都放在Session中这样在加载该界面时可以将该用户的所有信息从Session里取出来在界面中显示出来。
其读Session中数据的相关Update.jsp页面主要代码如下:
//获取Session里的数据
Teachert=(Teacher)request.getSession().getAttribute("user");
StringEdu=t.getEducation();
StringPw=t.getTeacherPassword();
StringPosition=t.getTeacherPostion();
StringEmail=t.getEmail();
StringRemark=t.getRemark();
//禁止修改值
StringTea_id=t.getTeacherID();
StringTea_name=t.getTeacherName();
StringTea_ult=t.getUplaodtime();
IntegerTea_ulp=t.getUploadpeo();
StringTea_udt=t.getUpdatetime();
IntegerTea_udp=t.getUpdatepeo();
IntegerTea_subNum=t.getSubjectNumber();
//显示数据
编号: <%=Tea_id%> | 姓名: <%=Tea_name%> | 学历: "/> | 密码: "/> | 职称: "/> | 邮箱: "/> | 上传时间: <%=Tea_ult%> | 上传人: <%=Tea_ulp%> | 更新时间: <%=Tea_udt%> | 课题数量: <%=Tea_subNum%> | 更新人: <%=Tea_udp%> | 备注: "/> 通过上图也可以发现并不是用户可以更改所有的信息,这样做的目的一方面油的信息并不需要更改如姓名、编号等可以提高程序的执行效率减少数据的冗余,另一方面有些信息使系统自动更新的不用用户自行设置,如更新时间、上传时间等字段。 用户更新的相关Update.Java中的Severlet代码如下所示: TeacherteachInf=(Teacher)request.getSession().getAttribute("user"); //创建数据库连接对象 DbConnectiondb=newDbConnection(); //获取Session里要修改的对应字段值 Teachert=(Teacher)request.getSession().getAttribute("user"); Stringedu_tea=t.getEducation(); Stringpw_tea=t.getTeacherPassword(); Stringpo_tea=t.getTeacherPostion(); Stringem_tea=t.getEmail(); Stringrm_tea=t.getRemark(); Stringtea_id=t.getTeacherID(); //获取页面文本框的值 Stringedu1=(String)request.getParameter("education"); Stringpw1=(String)request.getParameter("teacherPassword"); Stringpos1=(String)request.getParameter("teacherPosition"); Stringem1=(String)request.getParameter("email"); Stringre1=(String)request.getParameter("remark"); //如果存在违规操作即某个文本框置空则不予以更新跳转更新失败页面 if(edu1==""||edu1.equals(null)||pw1==""||pw1.equals(null)||pos1==""||pos1.equals(null)||em1==""||em1.equals(null)||re1==""||re1.equals(null)) { ServletContextsctea=getServletContext(); request.setAttribute("msg","修改信息错误! "); RequestDispatcherrdptea=sctea .getRequestDispatcher("/userLogined/teacher/error.jsp"); rdptea.forward(request,response);}//执行数据更新 else {//连接数据库 try{db.getConnection(); }catch(InstantiationExceptione){ e.printStackTrace(); }catch(IllegalAccessExceptione){ e.printStackTrace(); }catch(ClassNotFoundExceptione){ e.printStackTrace();} //创建List对象并存放要修改的字段名称 Listparatea=newArrayList(); paratea.add(edu1);//参数集合 booleanlisttea=false; //paratea.add(edu_tea); paratea.add(pw1); paratea.add(pos1); paratea.add(em1); paratea.add(re1); //获取系统当前时间 paratea.add(time.getDateAndTime()); paratea.add(tea_id); //数据库更新 try{ listtea=db.excuteUpdateBySql("updateteacherInfseteducation=? teacherPassword=? teacherPostion=? email=? remark=? updatetime=? whereteacherID=? ",paratea); }catch(SQLExceptione){e.printStackTrace();} //判断是否更新成功,若成功跳转成功页面否则跳转错误页面 if(listtea==true) {t.setEducation(edu1); t.setTeacherPassword(pw1); t.setTeacherPostion(pos1); t.setEmail(em1); t.setRemark(re1); t.setUpdatetime(time.getDateAndTime()); request.getSession().setAttribute("user",t); ServletContextsctea=getServletContext(); RequestDispatcherrdptea=sctea.getRequestDispatcher("/userLogined/teacher/UpdateSuc.jsp"); rdptea.forward(request,response); } else{ ServletContextsctea=getServletContext(); RequestDispatcherrdptea=sctea.getRequestDispatcher("/userLogined/teacher/UpdateFai.jsp"); rdptea.forward(request,response);} //关闭数据库 db.closeConnection(); } } 当教师想要查看其毕业设计的选题结果时可以通过查询选题结果界面进行查询,界面如下所示: 图4选题结果界面 教师通过上图可以发现选择该教师“基于WEB应用的农业专家查询系统”毕业设计课题的是学号为0808054101的学生。 这样该教师就可以直接了解该课题的选择信息。 查询的相关query.Java中的Servelet代码如下: TeacherteachInf=(Teacher)request.getSession().getAttribute("user")DbConnectiondb=newDbConnection(); try{ db.getConnection(); }catch(InstantiationExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IllegalAccessExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } Listpara=newArrayList(); para.add(teachInf.getTeacherID());//参数集合 Listlist=null; try{ list=db.getMoreResultSetBySql("select*fromsubjectresultinnerjoinsubjectInfonsubjectresult.subjectID=subjectInf.subjectIDjoinstudentInfonsubjectresult.stuID=studentInf.stuIDwheresubjectInf.teacherID=? ",para); //将选题结果表和课题表连接起来查 //该选题结果表要与课题表相连,以及学生表相连。 且课题表还要与教师表相连,然后通过教师ID查出数据 }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); request.getSession().setAttribute("selectList",list); RequestDispatcherdis=getServletContext().getRequestDispatcher("/userLogined/teacher/queryResult.jsp"); dis.forward(request,response); 其他相关功能这里就不一一阐述,以上就是该毕业设计选题系统其中的教师管理子系统的相关功能及其对应的代码。 五、系统评价及改进 该系统在数据库的规划建设中存在数据的冗余,可以在建库的时再精简个别数据表来尽可能减少数据的冗余。 在执行的某些数据库语句时有些重复的程序代码出现,降低了编程的效率,可以创建一个单独的包将这些程序封装在一个类中,这样再使用这些程序中可以直接调用所需的类及方法。 【参考文献】 [1]刘泽.计算机信息管理基础.清华大学出版社,北京交通大学出版社,2004. [2]陈伟卫琳.ASP.NET3.5网站开发实例教程.清华大学出版社,2009. [3]吴建.UML基础与Rose建模案例(第2版).人民邮电出版社,2007. [4]江红,余青松.基于.NET的Web数据库开发技术实践教程.清华大学出版社,2007. [5]蒋培,王笑梅.ASP.NETWeb程序设计.清华大学出版社,2007. [6]赵泉.信息管理基础.机械工业出版社.2003. [7][美]GrdayBooch,JamesRumbaugh,IvarJacobson.UML用户指南.机械工业出
展开阅读全文
相关搜索
资源标签
|