数据库原理与应用课程设计.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流数据库原理与应用课程设计.精品文档.数据库原理与应用课程设计数据库原理与应用课程设计任 务 书【题目】教务管理系统【目的】1、掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织和实施。2、关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试运行等工作。3、培养把所学知识运用到具体对象,并能求出解决方案的能力。【要求】1、每个学生必须独立完成;2、课程设计时间为1周;3、整个数据库系统设计,后台数据库必须用SQL Server,前台编程语言任选。4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生,其成绩按不及格处理。【内容】 1、按照题目教务管理系统进行调研,采集数据,提取实体、实体与实体之间的联系,运用数据库设计方法进行数据库的设计,并插入一定量的实验数据。2、根据系统的实际要求,以及考核标准来完成对应难度的数据库系统开发。【考核标准】(1) 学生用户,通过输入学号、密码进入系统。能修改个人信息,修改密码;能查询课程库所有课程信息,但不能修改;能查询自己的个人成绩,但不能修改(及格要求)。(2) 设置管理员超级用户,通过输入账号、密码进入系统。能查询及修改数据库中的任意表,如用户表、学生信息表、课程库表、成绩表等(中等要求)。(3) 用户表中追加教师用户。数据库中增加教师教学任务表,教师能根据课程库中的课程,给自己添加、删除、修改教学任务。(良好要求)(4) 完善教务管理系统。学生能看到教师的教学任务,并能做到学生选课;教师对自己上课的课程,能给已选课的学生打成绩(优秀要求)。注:编程过程中工程文件名必须取自己的学号;程序运行结果中,能打开的各个窗口名必须包含自己的学号,此项没有成绩作0分处理。【工作内容及工作计划】序号内 容所用时间1课题介绍、人员安排、熟悉编程环境1天2数据库建立、功能模块设计1天3功能模块编程,调试1天4功能模块集成,系统调试1天5设计结果检查,答辩,成绩评定1天合计1周一、题目:教务系统管理二、 需求分析 教务管理是大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋繁重、复杂。如何把教务工作信息化,模块化,便捷化是现代高校发展的重点,所以迫切需要研制开发一种综合教务管理软件,建成一个完整统一、技术先进、高效稳定、安全可靠的教学信息管理系统。这次课程设计我做的是一个便捷班的教务管理系统,包括用户登录和权限识别模块,个人信息查询模块,管理员模块,课程及成绩查询模块,教师信息模块等。 1.数据需求 (1)数据录入和处理的准确性和实时性 数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。 在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。 (2)数据的一致性与完整性 由于系统的数据是共享的,在不同的客户端中,教务信息是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。(3)数据的共享与独立性 整个教务管理系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。2.功能要求 本系统有以下功能模块: 1)登录模块 2)学生信息管理模块 3)教师信息管理模块 4)管理员模块 3.功能描述 下面详细描述一下各个功能模块: 1)登录模块 通过输入用户名和密码,选择登录类别(学生,老师,管理员)来登录管理系统。 2)学生信息管理模块 只允许学生用户进入。通过输入学号、密码进入系统。能修改个人信息,修改密码;能查询课程库所有课程信息,但不能修改;能查询自己的个人成绩,但不能修改 3)教师信息管理 只允许教师进入。教师可查询个人信息和所授课信息。可以自行增,删课程。 4)管理员模块 只允许管理员登录。管理员可查询学生,教师信息,也可做任何修改。三、 数据分析与建模1. 数据存储(1)数据存储名称:老师信息别名:无简述:对老师的信息进行存储管理组成:教师账号+教师编号+教师姓名教师基本信息 教师编号是主键,教师账号是外键,数据来自用户表的账号信息栏。(2)数据存储名称:学生信息别名:无简述:对学生的信息进行存储管理组成:学生账号+学号学生基本信息+选课信息+成绩 学生编号是主键,学生账号是外键,数据来自用户表的账号信息栏。(3)数据存储名称:课程信息别名:无简述:对课程信息进行存储管理组成:课程号+课程名+学分课程号是主键。(4)数据存储名称:成绩信息别名:无简述:对学生的成绩信息进行存储管理组成:学号+课程号+成绩(5)数据存储名称:教师授课信息别名:无简述:对教师的授课信息进行存储管理 组成:教师编号+课程号。四 数据库建立 表1:登录信息表记录号字段名称数据类型字段大小属性(是否可为空)1用户名Varchar20主键 2密码Varchar20否3用户类型Varchar20否表2:教师信息表记录号字段名称数据类型字段大小属性(是否可为空)1教师账号Varchar20否2教师编号Varchar20主键3教师姓名Varchar20否4性别Varchar20否5年龄Varchar20否6所在系Varchar20否表3:学生信息表记录号字段名称数据类型字段大小属性(是否可为空)1学生账号Varchar20否2学生学号Varchar20主键3学生姓名Varchar20否4性别Varchar20否5年龄Varchar20否6所在系Varchar20否表4:课程信息表记录号字段名称数据类型字段大小属性(是否可为空)1课程编号Varchar20主键2课程名Varchar20否3课程学分Varchar20否表5:成绩信息表记录号字段名称数据类型字段大小属性(是否可为空)1学生编号Varchar20主键2课程编号Varchar20主键3考试成绩Varchar20否 表6:教师授课表记录号字段名称数据类型字段大小属性(是否可为空)1教师编号Varchar20主键2课程编号Varchar20主键 在数据库中显示如下:2-1用户表2-2学生信息表2-3课程信息表2-4 课程-成绩表2-5教师信息表2-6教师所授课程表五、 数据库应用开发与运行(程序代码、界面图、详细功能说明)1. 教务系统登录部分 本系统的登录界面上主要有用户名、密码和用户权限三部分内容。用户若想进入系统,就必须给出正确的用户名和密码,而且要选择正确的用户权限。如果用户输入的用户名不存在或者密码与用户名不一致或者与用户权限不一致,都会给出相应的提示信息,告诉用户出现的错误输入。5-1.登录主界面程序代码如下:(1) login.html: <!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Transitional/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http:/www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>学生登陆界面</title><link href="./css/register.css" rel="stylesheet" type="text/css" /><script src=”login,js” /></script></head><body> <div class="content"> <p>学生登录界面</p> <ul> <li class="style1"> <label>帐号:</label> <input type="text" name="account" id="account" placeholder="请输入您的帐号" required /> </li> <li class="style2"> <label>密码:</label> <input type="password" name="password" id="password" placeholder="请输入您的密码" required/> </li> </ul> <div class="check"> <lable>登录身份:</lable> <select id="check_type" name="type" style="width:100px;height:25px" /> <option value="student" selected="selected">学生</option> <option value="teacher">教师</option> <option value="manager">管理员</option> </select> </div> <div class="button"> <input type="submit" style="width:100px;height:30px" value="登录" id="sendLogin" name="login_btn" onclick="login()"/> </div> <div id="reply"></div> </div> </body></html>(2) Login.script <script language="javascript" > var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");function createQueryString()var acc=document.getElementById("account").value;var pw=document.getElementById("password").value;var type=document.getElementById("check_type").value;var querystring="acc="+acc+"&pw="+pw+"&type="+type;return querystring;function login() var date=new Date(); temp=date.getTime(); url="login.php?timestamp="+temp; Querystring=createQueryString(); xmlHttp.open("POST",url,true); xmlHttp.setRequestHeader("content-length",Querystring.length); xmlHttp.setRequestHeader("content-type","application/x-www-form-urlencoded"); xmlHttp.onreadystatechange=handle_f; xmlHttp.send(Querystring);function handle_f()if(xmlHttp.readystate=4)if(xmlHttp.status=200)text=xmlHttp.responseText;parseResult(text); elsealert("执行过程中出现问题,服务器返回:"+xmlHttp.statusText);function parseResult(message)var type=document.getElementById("check_type").value;var acc=document.getElementById("account").value;if(message=0)if(type="student")alert("登录成功,即将跳转至学生信息页面!");document.cookie="acc="+acc;window.location.replace("show_stu.html"); else if(type="teacher")alert("登录成功,即将跳转至老师信息页面!");document.cookie="acc="+acc;window.location.replace("teacher.html"); elsealert("登录成功,即将跳管理员页面!");window.location.replace("manage.html");elsealert("用户名或密码错误,请重新输入!"); window.location.reload();</script>(3)login.php<?php header('Content-Type:text/html;charset=UTF-8'); $host="localhost" $user="root" $password="yanjiaqi" $dataname="test" $manager_acc="2012329700013" $manager_pass="2012329700013" $acc=$_POST"acc" $pass=$_POST"pw" $type=$_POST"type" $my_conn=mysql_connect($host,$user,$password); $sq = "set names utf8" $result1 = mysql_query($sq , $my_conn); mysql_select_db($dataname,$my_conn); $sql="SELECT * FROM user WHERE username=$acc" $result=mysql_query($sql,$my_conn); / $num=mysql_num_rows($result); if($result!=null)$detail=mysql_fetch_row($result);/学生用户登录if($type="student")if($detail1=$pass && $detail2="student") echo "0"else echo "1" /老师登录 else if($type="teacher")if($detail1=$pass && $detail2="teacher") echo "0" else echo "1"/管理员用户登录else if(type="manager") if(acc=$manager_acc && pw=$manager_pass) echo "0" /页面跳转至管理员界面 else/返回至用户登录界面 echo "1" ; else echo "1"mysql_close($my_conn); 登录成功图如下:图5-2图5-32. 学生信息管理界面 (1)界面实现代码如下: 1)show_stu.html <!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Transitional/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http:/www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>学生信息展示页面</title><link href="./css/show_student.css" rel="stylesheet" type="text/css" /><script src="show_info.js" type="text/javascript"/></script></head><body><!-顶部菜单-><p><strong></strong></p><div id="exit"><a href="login.html">退出</a></div><div id="topmenu"> <ul> <li><a href="show_stu.html">首页</a> </li> <li><a href="#">信息维护</a> <ul> <li><a href="javascript:void(0);" onclick="show_info()" >个人信息</a></li> <li><a href="avascript:void(0);" onclick="change_info()">密码修改</a></li> </ul> </li> <li><a href="#">信息查询</a> <ul> <li><a href="javascript:void(0);" onclick="show_class()">课表及成绩查询</a></li> </ul> </li> </ul> </div> <!-学生信息表-> <div id="person_info"> <p><font size="5">个人信息表</font></p> <ul> <li><label>学号:</label><input id="in_sno" type="text" name="sno" readonly="readonly"/></li> <li><label>姓名:</label><input id="in_sname" type="text" name="name" readonly="readonly"/></li> <li><label>性别:</label><input id="in_sex" type="text" name="sex" readonly="readonly"></li> <li><label>年龄:</label><input id="in_sage" type="text" name="age" readonly="readonly"/></li> <li><label>学院:</label><input id="in_sdept" type="text" name="dept" readonly="readonly"/></li> <li> <input type="button" value="编辑" id="edit" onclick="onEdit()" name='edit_btn'/> <input type="submit" value="提交" id="change" onclick="onSubmit()"/></li> </ul> </div> <!-学生用户名密码修改表-> <div id="change_info"> <form> <ul> <li> <label>用户名:</label> <input type="text" name="account" readonly="readonly" /> </li> <li> <label>旧密码:</label> <input type="text" name="oldpassword" readonly="readonly" /> </li> <li> <label>新密码:</label> <input type="text" id="in_pass" name="newpassword" /> </li> <li> <input type="submit" value="提交" name="sub_btn" id="sub_btn" onclick="change_stu()"/> </li> </ul> </form> </div> <!-学生课程展示表-> <div id="show_class"> <table name="cls" border="1" id="class_table" > <caption><strong><font size="+2.5">学生课表信息</font></strong></caption> <tr> <td>课程号</td> <td>课程名</td> <td>学分</td> <td>成绩</td> </tr> </table> <ul> <li><a href="#">第一页</a></li> <li><a href="#">上一页</a></li> <li><a href="#">下一页</a></li> <li><a href="#">最后一页</a></li> </ul> </div></body></html>2) show_student.css charset "utf-8"/* CSS Document */margin:0px;pading:0px;pmargin:10px 50px;#exitwidth:80px;#topmenu width:400px; height:40px; background-color:#eee; margin:50px auto;ullist-style:none;ul lifloat:left;line-height:40px;text-align:center;position:relative;adisplay:block;padding:0 20px;text-decoration:none;color:#000;height:40px;a:hovercolor:#FFF;background-color:#333;ul li ulposition:absolute;top:40px;left:0px;display:none;ul li ul lifloat:none;background-color:#eee;margin-top:2px;margin-left:-39px;ul li:hover uldisplay:block;ul li ul li awidth:115px;#person_info position:relative; width:600px; margin:100px auto; display:none;#person_info pposition:absolute;left:178px;top:0px;#person_info ulposition:absolute;left:150px;top:50px;#person_info ul lifloat:none;#person_info ul li inputtype=text margin-left:5px;#editwidth:60px;height:25px;#changedisplay:none;position:absolute;width:70px;height:25px;left:80px;top:20px;#change_info display:none; width:600px; margin:100px auto;form ul lifloat:none;form ul li inputtype=buttonwidth:70px;height:25px;form ul li inputtype=submitwidth:70px;height:25px;margin-left:80px;#show_classwidth:600px;height:auto;margin:100px auto;display:none;#show_class table margin-left:100px;#show_class a:hovercolor:#FFF;#show_class amargin:10px 20px;tdheight:30px;width:120px;trtext-align:center;图5-4图5-5图5-6(2) 显示学生信息代码如下: 1)show_info.js 中实现学生信息显示的代码 var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");window.onload=function()var s=document.getElementsByTagName("strong");s0.innerHTML=document.cookie;function show_info()/页面样式变化var p=document.getElementById("person_info"); var cp=document.getElementById("change_info"); var cls=document.getElementById("show_class");cp.style.display="none"cls.style.display="none"p.style.display="block"/加载数据var str=document.cookie;var arr=str.split("=");var acc_str;if(arr0="acc") acc_str=arr1;var url="show_stu_info.php?acc_str="+acc_str;xmlHttp.onreadystatechange=handle_show;xmlHttp.open("GET",url,true);xmlHttp.send(null);function handle_show()if(xmlHttp.readystate=4)if(xmlHttp.status=200) var str=xmlHttp.responseText; var result=str.split(","); var div1=document.getElementById("person_info"); var ips=div1.getElementsByTagName("input"); ips0.setAttribute("value", result0); ips1.setAttribute("value",result1); ips2.setAttribute("value",result2); ips3.setAttribute("value", result3); ips4.setAttribute("value", result4); elsealert("执行过程中出现问题,服务器返回:"+xmlHttp.statusText);2) show_stu.php<?php / header('Content-Type:text/html;charset=UTF-8'); $host="localhost" $user="root" $password="yanjiaqi" $dataname="test" $manager_acc="2012329700013" $manager_pass="2012329700013" $acc=$_GET"acc_str" $my_conn=mysql_connect($host,$user,$password); mysql_select_db($dataname,$my_conn); $sql="SELECT * FROM student WHERE sno=$acc" /sql语句 $result=mysql_query($sql,$my_conn); if($result!=null) $detail=mysql_fetch_array($result); echo $detail1."," echo $detail2."," echo $detail3."," echo $detail4."," echo $detail5.","else echo "cannot find data"mysql_close($my_conn);图5-7(3) 修改学生信息部分的代码 1)show_info.js function onEdit()var btn1=document.getElementById("edit"); var btn2=document.getElementById("change");var p=document.getElementById("person_info");btn1.style.display="none"btn2.style.display="block"/使内容变得可编辑var txt=p.getElementsByTagName("input");for(var i=1;i<5;i+) txti.removeAttribute("readonly");function createQueryString()