数据库-课程设计学生选课系统

11信计2013-2014(一)

《数据库原理及应用》课程设计

设计题目 选修课系统 设计时间 学生姓名 学生学号

所在班级

指导教师

徐州工程学院数学与物理科学学院

一 需求分析

学生选课系统是一个学校不可缺少的部分, 它的内容对于学校的决策者和管理者来说都至关重要, 所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。随着科学技术的不断提高, 计算机科学日渐成熟, 其强大的功能已为人们深刻认识, 它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分, 使用计算机对选课信息进行管理, 有着手工管理所无法比拟的优点。这些优点能够极大地提高人事劳资管理的效率, 也是企业的科学化、正规化管理, 与世界接轨的重要条件。

因此,开发这样一套软件成为很有必要的事情, 在下面的各章中我们将以开发一套学生选课系统为例, 谈谈其开发过程和所涉及到的问题及解决方法。 本实验实现的学生选课管理系统主要包括以下功能:

1.完成数据的录入和修改,并提交数据库保存。其中的数据包括:学生信息、课程设置、学生成绩以及操作员信息等;

2.设计实现学生信息查询,选课管理、退选管理、分数查询,课程的浏览教师信息查询、教室空闲时间查询等JSP 页面 。

3.具备一定的安全性管理功能。包括操作员的权限设置、修改密码设置、注销和等功能。

二 系统总概括

2.1 系统的总设计

本系统结合数据库和JSP 编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课的页面操作,包括个人信息,密码修改,查询成绩,选课,退选五个功能;第二模块是教师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。

2.2 数据库设计

2.2.1数据库概念结构设计

本系统主要有三个实体,其中有学生和课程两个实体集,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,还有教师和课程两个实体,一个老师可以教授若干门课程,一门课程却只能有一个老师教授,这两个实体集之间是一对多联系。通过选课成绩将老师和学生联系在一起。为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户的编号、姓名、密码。本系统的E-R 图如下:

图2 系统的E-R 图

图2 系统的E-R 图

2.2.2数据库逻辑结构设计

根据关系模型的转换原则,上面的E —R 图可转换为如下所示的关系模型: student(sId,sName,sPass,dId)

含义分别为:学生(学号, 姓名,密码,所在系的编号) stuDetail (userID ,userSex ,userMobil ,useraddress ) 含义分别为:学生信息(学号, 性别,电话,地址) teacher (tId ,tPame ,tPass ,dId )

含义分别为:教师(学号, 姓名,密码,所在系的编号) teaDetail (userID ,userSex ,userAge ,useredu ,usertitle ,usersch ,userhealth )

含义分别为:教师信息(学号, 性别,年龄,学历,职称,毕业院校,健康状况) course(cId,cName,tId,credit,period ,cPlace ,cNumall,cNum,dId)

含义分别为:课程(课程号, 名称, 教师号, 学分,学时,上课地点,总人数,已选人数,院系号)

choosecourse(cId,sId, Grade)

含义分别为:选修(学号, 课程代码, 成绩) room (roomname ,roomnum ,roomtime )

含义分别为:教室(教室名,容纳人数,空闲时间) admin(aId,aPass)

含义分别为:管理员(管理员编号,姓名) department (dId ,dName )

含义分别为:院系(院系编号,院系名)

根据上面的E-R 图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:

三 系统实现

3.1 JSP文件代表的操作

3.1.1主界面操作

Index.jsp//登录界面(包含学生、教师、管理员三个选项) Login.jsp//密码验证 3.1.2学生选课

(a)学生选课界面:student.jps//菜单显示

studentIndex.html//欢迎界面 studentMessage.jsp

(b)个人信息:studMessSel.jsp//个人信息的页面显示 (c)密码修改:stuM.jsp//在数据库中修改密码

stuMessMod.jsp//修改密码界面 stuMessModSuc.jsp//修改成功

(d)成绩查询:gradeselect.jsp//相应课程的成绩查询 (e)选课:choosecourse.jsp//所有课程显示 choose.jsp//在数据库中插入数据 choosesuccess.jsp//选课成功

(f)选课情况查询及退选:courseselect.jsp//选课情况查询 ccdel.jsp//数据库中删除选课记录 (g)注销: zhuxiao.jsp//注销 3.2.3教师管理

(a)教师管理界面:teacher.jps//菜单显示

teacherIndex.html//欢迎界面 teacherMessage.jsp

(b)个人信息:teacherMessSel.jsp//个人信息的页面显示 (c)密码修改:teacherM.jsp//在数据库中修改密码

teacherMod.jsp//修改密码界面 teaMessModSuc.jsp//修改成功

(d)提交成绩:grade.jsp//选课学生信息显示

gradeIns.jsp//在数据库中插入数据 (e)课程信息:lookcourse.jsp//选课情况查询

(f)教室信息:classroom.jsp//查看可用教室的空闲时间 (g)注销: zhuxiao.jsp//注销

3.2 数据库的连接

举例:验证用户类型和密码时的数据库连接

String name=(String)request.getParameter("username"); String pass=(String)request.getParameter("userpass"); String s=(String)request.getParameter("userselect"); Connection conn=null; Statement stmt=null; ResultSet rs=null; String loginNum="0";

session.setAttribute("lnum",loginNum); try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa",""); if(s.equals("1")) {

String sql="select * from student where sId='"+name+"' and sPass='"+pass+"'";

stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

loginNum="1";

session.setAttribute("lnum",loginNum); session.setAttribute("name",name);

out.print(name+"登陆成功, 页面跳转........");

response.sendRedirect("student/studentIndex.html"); } else {

out.print("用户名或密码有误.."); response.sendRedirect("index.jsp"); } }

if(s.equals("2")) {

String sql="select * from teacher where tId='"+name+"' tPass='"+pass+"'";

stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

loginNum="2";

session.setAttribute("lnum",loginNum); session.setAttribute("name",name);

out.print(name+"登陆成功, 页面跳转........");

response.sendRedirect("teacher/teacherIndex.html"); } else {

out.print("用户名或密码有误.."); response.sendRedirect("index.jsp"); } }

if(s.equals("3")) {

String sql="select * from admin where aId='"+name+"' and and

aPass='"+pass+"'";

stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

loginNum="3";

session.setAttribute("lnum",loginNum); session.setAttribute("name",name);

out.print("管理员"+name+"登陆成功, 页面跳转........"); response.sendRedirect("admin/adminIndex.html"); } else {

out.print("用户名或密码有误..");

out.print("登陆页面"); } } }

catch(Exception e){out.print(e);

//response.sendRedirect("index.jsp"); } %>

3.3 具体操作

3.3.1学生选课操作 (a)登录页面

图1.1 学生登录页面

(b)菜单操作

图1.2 学生选课系统的界面

(c)个人信息显示

学生进入后可以在菜单里进行相应的操作, 点击个人信息时, 就会出现该学生的信息. 如下图所示:

图1.2 学生信息显示的界面

(d)密码修改 举例:

将0826006学号的密码该为:6666 其显示如下:

图1.3 修改密码

修改提交后数据库中的结果如下,可见密码已修改

图1.4 数据库中修改后的student 表

(e)成绩查询

根据教授该门课的老师是否提交成绩,学生可以查到自己相应课程的成绩,其查询结果如下:

(f)课程查询及退选

可以通过对应课程后面的退选选项进行课程的退选

图1.6 查询选课情况的页面

(g)选课

界面中已通过数据库将所有的课程列出来,学生可以通过前面的选择标志进行选课。

图1.7 选课信息的页面及选课操作

选课后,相应数据库中的choosecourse 表增加了一行选课记录

图1.8选课后数据库中的chooseCourse 表

3.3.2教师操作

(a)登录页面

输入教师的教师编号和密码,选择用户类型为教师,即可登录

图2.1 教师登录页面

(b)菜单操作

登录之后进入教师操作页面,如下图所示,左边是菜单,可以进行相应的操作

图2.2 教师操作页面

图2.3 教师信息显示

(c)密码修改

将原来的密码111改成了111111

图2.4 教师密码修改界面

修改后,可以查询数据库中的teacher 表,可以看到马云教师的密码被修改成了111111。

图2.5 修改密码后的teacher 表

(d)成绩录入

点击菜单中的提交成绩,可显示如下页面:

图2.6 学生成绩录入界面

点击相应的课程下的学生成绩录入,可进入下个页面: 学号为0826006的学生录入成绩为59分。

图2.7 成绩录入

成绩录入后可在数据中查询到相应的信息,学生也可通过学生选课菜单中的查询成绩也可看到相应的成绩,下图为数据库中的choosecourse 中的信息

图2.8 录入成绩后数据库中的choosecourse 表

(e)课程信息

在这里可以查询到老师所教的所有课程的具体信息,包括学分,学时,上课地点,已选的人数等,如下图所示。

(f)教室信息

教师可以通过查询教室的空闲时间,以备调课使用。

四 总结

经过一个多月的时间终于把数据库的课程设计做好了, 基本实现了学生选课的一般功能。在本次设计的全过程中,我对所学的知识有了一个比较系统的认识和理解。涉及了各方面的知识,大大扩展了我的知识面。

在整个设计阶段感受最为深刻的是掌握学习的方式和解决问题的方法。首先是解决问题的方式,就像我在解决设计中的很多问题一样,一开始总是在看书,和书上的进行比对,虽然书本上的只是大部分都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在整个课程设计的过程中,我深刻的体会到了这一点的重要性,也牢记主了这一点,在今后的学习中我也会继续将这种方法延续下去。

在做课程设计的这一个月里, 虽然也碰到了很多的问题, 但是经过和同学的讨论和研究,问题都一一克服了得到了解决。因为我们始终坚信“只要有恒心,铁杵磨成针! ”。经过这次课程设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都进步了。我要更加努力,努力学好专业知识,全面发展自己。相信经过这次的磨练,对我以后的学习肯定大有益处!

五 附录

5.1主要代码

4.3.1(a )

主要代码:

(b )

主要代码:


学生选课系统

个人信息

密码修改

成绩查询

选课查询以及退选

选课

align="left">注销

(c ) try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select * from student where student.sId='"+name+"'"; System.out.println(sql); stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

sId=rs.getString("sId");

sName=rs.getString("sName"); dId=rs.getString("dId"); }

String sql1="select * from stuDetail where userID ='"+name+"'"; System.out.println(sql1); stmt=conn.createStatement(); rs=stmt.executeQuery(sql1); if(rs.next()) {

Sex=rs.getString("userSex");

Mobil=rs.getString("userMobil"); Addr=rs.getString("userAddress"); }

Connection connd=null; Statement stmtd=null; ResultSet rsd=null;

connd=DriverManager.getConnection("jdbc:odbc:xk","sa",""); stmtd=connd.createStatement();

rsd=stmtd.executeQuery("select dName from department where dId='"+dId+"'");

if(rsd.next()) {

dName=rsd.getString("dName"); } }

catch(Exception e){out.println(e); }

%>

(d )

String sPass=(String)request.getParameter("sPass");

Connection conn=null;

Statement stmt=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql2="update student set sPass='"+sPass+"' where sId='"+name+"'";

stmt=conn.createStatement();

stmt.executeUpdate(sql2);stmt.close();

response.sendRedirect("stuMessModSuc.jsp");

}

function checkBig()

{

if (document.form1.sPass.value=="")

{

alert("密码不能为空!");

document.form1.sPass.focus();

return false;

}

else if (document.form1.sPassagn.value=="")

{

alert("再次输入密码!");

document.form1.sPassagn.focus();

return false;

}

else if (document.form1.sPass.value!=document.form1.sPassagn.value) {

alert("两次密码不同!");

document.form1.sPass.focus();

return false;

}

}

out.print("修改成功");

(e )

try

{

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sqlc="select * from chooseCourse where sId='"+name+"'";

stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String coId=rsc.getString("coId");

float grade=rsc.getFloat("grade");

String grademess=null;

Statement stmt=null;

ResultSet rs=null;

Connection conn=null;

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select coName from course where coId='"+coId+"'";

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

if(rs.next())

{ if(grade>0)out.print(grade);

else out.print("未提交");}

}

(f )

主要代码:


选课选择情况

while(rsc.next())

{

String coId=rsc.getString("coId");

float grade=rsc.getFloat("grade");

String grademess=null;

Statement stmt=null;

ResultSet rs=null;

Connection conn=null;

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select * from course where coId='"+coId+"'";

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

if(rs.next())

{

String coName=rs.getString(2);

String tId=rs.getString(3);

float credit=rs.getFloat(4);

float period=rs.getFloat(5);

String cPlace=rs.getString(7);

Connection connt=null;

Statement stmtt=null;

ResultSet rst=null;

connt=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sqlt="select tName from teacher where tId='"+tId+"'"; stmtt=connt.createStatement();

rst=stmtt.executeQuery(sqlt);

if(rst.next())out.print(rst.getString(1));

}

}

rsc.close();stmtc.close();

%>

align="center"> 课程名称


学分

学时

上课地点

教师
操作选项

(g )

主要代码:

(b )


学生选课系统

个人信息



href="teacherMessMod.jsp" target="rightFrame">密码修改


提交成绩

课程信息

教室信息

注销

else

{

out.print("请先登陆.....");out.print("登陆页面");

}

%>

(c )

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

String tId=null;

String tName=null;

String dId=null;

String dName=null;

String sex=null;

String age=null;

String edu=null;

String title=null;

String school=null;

String health=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select * from teacher where teacher.tId='"+name+"'"; System.out.println(sql);

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

if(rs.next())

{

tId=rs.getString("tId");

tName=rs.getString("tName");

dId=rs.getString("dId");

}

String sql1="select * from teaDetail where teaDetail.userID ='"+name+"'";

System.out.println(sql);

stmt=conn.createStatement();

rs=stmt.executeQuery(sql1);

if(rs.next())

{

sex=rs.getString("usersex");

age=rs.getString("userage");

edu=rs.getString("useredu");

title=rs.getString("usertitle");

school=rs.getString("usersch");

health=rs.getString("userhealth");

}

Connection connd=null;

Statement stmtd=null;

ResultSet rsd=null;

connd=DriverManager.getConnection("jdbc:odbc:xk","sa",""); stmtd=connd.createStatement();

rsd=stmtd.executeQuery("select dName from department where dId='"+dId+"'");

if(rsd.next())

{

dName=rsd.getString(1);

}

}

catch(Exception e){out.println(e);}

(d )

主要代码:

String tPass=(String)request.getParameter("tPass");

Connection conn=null;

Statement stmt=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="update teacher set tPass='"+tPass+"' where tId='"+name+"'";

stmt=conn.createStatement();

stmt.executeUpdate(sql);stmt.close();

response.sendRedirect("teaMessModSuc.jsp");

}

(e )

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select course.coId,coName,sId,grade from course,chooseCourse where course.coId=chooseCourse.coId and tId='"+name+"'";

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

while(rs.next())

{

String coId=rs.getString(1);

String coName=rs.getString(2);

String sId=rs.getString(3);

float grade=rs.getFloat(4);

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sqlc="select sName from student Where sId='"+sId+"'"; stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String sName=rsc.getString(1);

(f )

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sqlc="select distinct chooseCourse.coId from

chooseCourse,course where chooseCourse.coId=course.coId and

tId='"+name+"'";

stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String coId=rsc.getString("coId");

String grademess=null;

Statement stmt=null;

ResultSet rs=null;

Connection conn=null;

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","")

}

(g ) String sql="select * from course where coId='"+coId+"'"; stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) { String coName=rs.getString(2); String tId=rs.getString(3); float credit=rs.getFloat(4); float period=rs.getFloat(5); String cPlace=rs.getString(6); int cNumAll=rs.getInt(7); int cNum=rs.getInt(8); int num=cNumAll-cNum; if(num>0)out.print(cNum); else out.print("已经选满"); } rsc.close();stmtc.close();

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sqlc="select * from room";

stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String rname=rsc.getString("roomname");

String rnum=rsc.getString("roomnum");

String rtime=rsc.getString("roomtime"); }

rsc.close();stmtc.close();


教室情况

align="center">教室名称


可容纳人数

空闲时间

align="center">

11信计2013-2014(一)

《数据库原理及应用》课程设计

设计题目 选修课系统 设计时间 学生姓名 学生学号

所在班级

指导教师

徐州工程学院数学与物理科学学院

一 需求分析

学生选课系统是一个学校不可缺少的部分, 它的内容对于学校的决策者和管理者来说都至关重要, 所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。随着科学技术的不断提高, 计算机科学日渐成熟, 其强大的功能已为人们深刻认识, 它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分, 使用计算机对选课信息进行管理, 有着手工管理所无法比拟的优点。这些优点能够极大地提高人事劳资管理的效率, 也是企业的科学化、正规化管理, 与世界接轨的重要条件。

因此,开发这样一套软件成为很有必要的事情, 在下面的各章中我们将以开发一套学生选课系统为例, 谈谈其开发过程和所涉及到的问题及解决方法。 本实验实现的学生选课管理系统主要包括以下功能:

1.完成数据的录入和修改,并提交数据库保存。其中的数据包括:学生信息、课程设置、学生成绩以及操作员信息等;

2.设计实现学生信息查询,选课管理、退选管理、分数查询,课程的浏览教师信息查询、教室空闲时间查询等JSP 页面 。

3.具备一定的安全性管理功能。包括操作员的权限设置、修改密码设置、注销和等功能。

二 系统总概括

2.1 系统的总设计

本系统结合数据库和JSP 编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课的页面操作,包括个人信息,密码修改,查询成绩,选课,退选五个功能;第二模块是教师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。

2.2 数据库设计

2.2.1数据库概念结构设计

本系统主要有三个实体,其中有学生和课程两个实体集,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,还有教师和课程两个实体,一个老师可以教授若干门课程,一门课程却只能有一个老师教授,这两个实体集之间是一对多联系。通过选课成绩将老师和学生联系在一起。为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户的编号、姓名、密码。本系统的E-R 图如下:

图2 系统的E-R 图

图2 系统的E-R 图

2.2.2数据库逻辑结构设计

根据关系模型的转换原则,上面的E —R 图可转换为如下所示的关系模型: student(sId,sName,sPass,dId)

含义分别为:学生(学号, 姓名,密码,所在系的编号) stuDetail (userID ,userSex ,userMobil ,useraddress ) 含义分别为:学生信息(学号, 性别,电话,地址) teacher (tId ,tPame ,tPass ,dId )

含义分别为:教师(学号, 姓名,密码,所在系的编号) teaDetail (userID ,userSex ,userAge ,useredu ,usertitle ,usersch ,userhealth )

含义分别为:教师信息(学号, 性别,年龄,学历,职称,毕业院校,健康状况) course(cId,cName,tId,credit,period ,cPlace ,cNumall,cNum,dId)

含义分别为:课程(课程号, 名称, 教师号, 学分,学时,上课地点,总人数,已选人数,院系号)

choosecourse(cId,sId, Grade)

含义分别为:选修(学号, 课程代码, 成绩) room (roomname ,roomnum ,roomtime )

含义分别为:教室(教室名,容纳人数,空闲时间) admin(aId,aPass)

含义分别为:管理员(管理员编号,姓名) department (dId ,dName )

含义分别为:院系(院系编号,院系名)

根据上面的E-R 图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:

三 系统实现

3.1 JSP文件代表的操作

3.1.1主界面操作

Index.jsp//登录界面(包含学生、教师、管理员三个选项) Login.jsp//密码验证 3.1.2学生选课

(a)学生选课界面:student.jps//菜单显示

studentIndex.html//欢迎界面 studentMessage.jsp

(b)个人信息:studMessSel.jsp//个人信息的页面显示 (c)密码修改:stuM.jsp//在数据库中修改密码

stuMessMod.jsp//修改密码界面 stuMessModSuc.jsp//修改成功

(d)成绩查询:gradeselect.jsp//相应课程的成绩查询 (e)选课:choosecourse.jsp//所有课程显示 choose.jsp//在数据库中插入数据 choosesuccess.jsp//选课成功

(f)选课情况查询及退选:courseselect.jsp//选课情况查询 ccdel.jsp//数据库中删除选课记录 (g)注销: zhuxiao.jsp//注销 3.2.3教师管理

(a)教师管理界面:teacher.jps//菜单显示

teacherIndex.html//欢迎界面 teacherMessage.jsp

(b)个人信息:teacherMessSel.jsp//个人信息的页面显示 (c)密码修改:teacherM.jsp//在数据库中修改密码

teacherMod.jsp//修改密码界面 teaMessModSuc.jsp//修改成功

(d)提交成绩:grade.jsp//选课学生信息显示

gradeIns.jsp//在数据库中插入数据 (e)课程信息:lookcourse.jsp//选课情况查询

(f)教室信息:classroom.jsp//查看可用教室的空闲时间 (g)注销: zhuxiao.jsp//注销

3.2 数据库的连接

举例:验证用户类型和密码时的数据库连接

String name=(String)request.getParameter("username"); String pass=(String)request.getParameter("userpass"); String s=(String)request.getParameter("userselect"); Connection conn=null; Statement stmt=null; ResultSet rs=null; String loginNum="0";

session.setAttribute("lnum",loginNum); try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa",""); if(s.equals("1")) {

String sql="select * from student where sId='"+name+"' and sPass='"+pass+"'";

stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

loginNum="1";

session.setAttribute("lnum",loginNum); session.setAttribute("name",name);

out.print(name+"登陆成功, 页面跳转........");

response.sendRedirect("student/studentIndex.html"); } else {

out.print("用户名或密码有误.."); response.sendRedirect("index.jsp"); } }

if(s.equals("2")) {

String sql="select * from teacher where tId='"+name+"' tPass='"+pass+"'";

stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

loginNum="2";

session.setAttribute("lnum",loginNum); session.setAttribute("name",name);

out.print(name+"登陆成功, 页面跳转........");

response.sendRedirect("teacher/teacherIndex.html"); } else {

out.print("用户名或密码有误.."); response.sendRedirect("index.jsp"); } }

if(s.equals("3")) {

String sql="select * from admin where aId='"+name+"' and and

aPass='"+pass+"'";

stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

loginNum="3";

session.setAttribute("lnum",loginNum); session.setAttribute("name",name);

out.print("管理员"+name+"登陆成功, 页面跳转........"); response.sendRedirect("admin/adminIndex.html"); } else {

out.print("用户名或密码有误..");

out.print("登陆页面"); } } }

catch(Exception e){out.print(e);

//response.sendRedirect("index.jsp"); } %>

3.3 具体操作

3.3.1学生选课操作 (a)登录页面

图1.1 学生登录页面

(b)菜单操作

图1.2 学生选课系统的界面

(c)个人信息显示

学生进入后可以在菜单里进行相应的操作, 点击个人信息时, 就会出现该学生的信息. 如下图所示:

图1.2 学生信息显示的界面

(d)密码修改 举例:

将0826006学号的密码该为:6666 其显示如下:

图1.3 修改密码

修改提交后数据库中的结果如下,可见密码已修改

图1.4 数据库中修改后的student 表

(e)成绩查询

根据教授该门课的老师是否提交成绩,学生可以查到自己相应课程的成绩,其查询结果如下:

(f)课程查询及退选

可以通过对应课程后面的退选选项进行课程的退选

图1.6 查询选课情况的页面

(g)选课

界面中已通过数据库将所有的课程列出来,学生可以通过前面的选择标志进行选课。

图1.7 选课信息的页面及选课操作

选课后,相应数据库中的choosecourse 表增加了一行选课记录

图1.8选课后数据库中的chooseCourse 表

3.3.2教师操作

(a)登录页面

输入教师的教师编号和密码,选择用户类型为教师,即可登录

图2.1 教师登录页面

(b)菜单操作

登录之后进入教师操作页面,如下图所示,左边是菜单,可以进行相应的操作

图2.2 教师操作页面

图2.3 教师信息显示

(c)密码修改

将原来的密码111改成了111111

图2.4 教师密码修改界面

修改后,可以查询数据库中的teacher 表,可以看到马云教师的密码被修改成了111111。

图2.5 修改密码后的teacher 表

(d)成绩录入

点击菜单中的提交成绩,可显示如下页面:

图2.6 学生成绩录入界面

点击相应的课程下的学生成绩录入,可进入下个页面: 学号为0826006的学生录入成绩为59分。

图2.7 成绩录入

成绩录入后可在数据中查询到相应的信息,学生也可通过学生选课菜单中的查询成绩也可看到相应的成绩,下图为数据库中的choosecourse 中的信息

图2.8 录入成绩后数据库中的choosecourse 表

(e)课程信息

在这里可以查询到老师所教的所有课程的具体信息,包括学分,学时,上课地点,已选的人数等,如下图所示。

(f)教室信息

教师可以通过查询教室的空闲时间,以备调课使用。

四 总结

经过一个多月的时间终于把数据库的课程设计做好了, 基本实现了学生选课的一般功能。在本次设计的全过程中,我对所学的知识有了一个比较系统的认识和理解。涉及了各方面的知识,大大扩展了我的知识面。

在整个设计阶段感受最为深刻的是掌握学习的方式和解决问题的方法。首先是解决问题的方式,就像我在解决设计中的很多问题一样,一开始总是在看书,和书上的进行比对,虽然书本上的只是大部分都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在整个课程设计的过程中,我深刻的体会到了这一点的重要性,也牢记主了这一点,在今后的学习中我也会继续将这种方法延续下去。

在做课程设计的这一个月里, 虽然也碰到了很多的问题, 但是经过和同学的讨论和研究,问题都一一克服了得到了解决。因为我们始终坚信“只要有恒心,铁杵磨成针! ”。经过这次课程设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都进步了。我要更加努力,努力学好专业知识,全面发展自己。相信经过这次的磨练,对我以后的学习肯定大有益处!

五 附录

5.1主要代码

4.3.1(a )

主要代码:

(b )

主要代码:


学生选课系统

个人信息

密码修改

成绩查询

选课查询以及退选

选课

align="left">注销

(c ) try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select * from student where student.sId='"+name+"'"; System.out.println(sql); stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) {

sId=rs.getString("sId");

sName=rs.getString("sName"); dId=rs.getString("dId"); }

String sql1="select * from stuDetail where userID ='"+name+"'"; System.out.println(sql1); stmt=conn.createStatement(); rs=stmt.executeQuery(sql1); if(rs.next()) {

Sex=rs.getString("userSex");

Mobil=rs.getString("userMobil"); Addr=rs.getString("userAddress"); }

Connection connd=null; Statement stmtd=null; ResultSet rsd=null;

connd=DriverManager.getConnection("jdbc:odbc:xk","sa",""); stmtd=connd.createStatement();

rsd=stmtd.executeQuery("select dName from department where dId='"+dId+"'");

if(rsd.next()) {

dName=rsd.getString("dName"); } }

catch(Exception e){out.println(e); }

%>

(d )

String sPass=(String)request.getParameter("sPass");

Connection conn=null;

Statement stmt=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql2="update student set sPass='"+sPass+"' where sId='"+name+"'";

stmt=conn.createStatement();

stmt.executeUpdate(sql2);stmt.close();

response.sendRedirect("stuMessModSuc.jsp");

}

function checkBig()

{

if (document.form1.sPass.value=="")

{

alert("密码不能为空!");

document.form1.sPass.focus();

return false;

}

else if (document.form1.sPassagn.value=="")

{

alert("再次输入密码!");

document.form1.sPassagn.focus();

return false;

}

else if (document.form1.sPass.value!=document.form1.sPassagn.value) {

alert("两次密码不同!");

document.form1.sPass.focus();

return false;

}

}

out.print("修改成功");

(e )

try

{

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sqlc="select * from chooseCourse where sId='"+name+"'";

stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String coId=rsc.getString("coId");

float grade=rsc.getFloat("grade");

String grademess=null;

Statement stmt=null;

ResultSet rs=null;

Connection conn=null;

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select coName from course where coId='"+coId+"'";

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

if(rs.next())

{ if(grade>0)out.print(grade);

else out.print("未提交");}

}

(f )

主要代码:


选课选择情况

while(rsc.next())

{

String coId=rsc.getString("coId");

float grade=rsc.getFloat("grade");

String grademess=null;

Statement stmt=null;

ResultSet rs=null;

Connection conn=null;

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select * from course where coId='"+coId+"'";

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

if(rs.next())

{

String coName=rs.getString(2);

String tId=rs.getString(3);

float credit=rs.getFloat(4);

float period=rs.getFloat(5);

String cPlace=rs.getString(7);

Connection connt=null;

Statement stmtt=null;

ResultSet rst=null;

connt=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sqlt="select tName from teacher where tId='"+tId+"'"; stmtt=connt.createStatement();

rst=stmtt.executeQuery(sqlt);

if(rst.next())out.print(rst.getString(1));

}

}

rsc.close();stmtc.close();

%>

align="center"> 课程名称


学分

学时

上课地点

教师
操作选项

(g )

主要代码:

(b )


学生选课系统

个人信息



href="teacherMessMod.jsp" target="rightFrame">密码修改


提交成绩

课程信息

教室信息

注销

else

{

out.print("请先登陆.....");out.print("登陆页面");

}

%>

(c )

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

String tId=null;

String tName=null;

String dId=null;

String dName=null;

String sex=null;

String age=null;

String edu=null;

String title=null;

String school=null;

String health=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select * from teacher where teacher.tId='"+name+"'"; System.out.println(sql);

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

if(rs.next())

{

tId=rs.getString("tId");

tName=rs.getString("tName");

dId=rs.getString("dId");

}

String sql1="select * from teaDetail where teaDetail.userID ='"+name+"'";

System.out.println(sql);

stmt=conn.createStatement();

rs=stmt.executeQuery(sql1);

if(rs.next())

{

sex=rs.getString("usersex");

age=rs.getString("userage");

edu=rs.getString("useredu");

title=rs.getString("usertitle");

school=rs.getString("usersch");

health=rs.getString("userhealth");

}

Connection connd=null;

Statement stmtd=null;

ResultSet rsd=null;

connd=DriverManager.getConnection("jdbc:odbc:xk","sa",""); stmtd=connd.createStatement();

rsd=stmtd.executeQuery("select dName from department where dId='"+dId+"'");

if(rsd.next())

{

dName=rsd.getString(1);

}

}

catch(Exception e){out.println(e);}

(d )

主要代码:

String tPass=(String)request.getParameter("tPass");

Connection conn=null;

Statement stmt=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="update teacher set tPass='"+tPass+"' where tId='"+name+"'";

stmt=conn.createStatement();

stmt.executeUpdate(sql);stmt.close();

response.sendRedirect("teaMessModSuc.jsp");

}

(e )

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sql="select course.coId,coName,sId,grade from course,chooseCourse where course.coId=chooseCourse.coId and tId='"+name+"'";

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);

while(rs.next())

{

String coId=rs.getString(1);

String coName=rs.getString(2);

String sId=rs.getString(3);

float grade=rs.getFloat(4);

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sqlc="select sName from student Where sId='"+sId+"'"; stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String sName=rsc.getString(1);

(f )

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa","");

String sqlc="select distinct chooseCourse.coId from

chooseCourse,course where chooseCourse.coId=course.coId and

tId='"+name+"'";

stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String coId=rsc.getString("coId");

String grademess=null;

Statement stmt=null;

ResultSet rs=null;

Connection conn=null;

conn=DriverManager.getConnection("jdbc:odbc:xk","sa","")

}

(g ) String sql="select * from course where coId='"+coId+"'"; stmt=conn.createStatement(); rs=stmt.executeQuery(sql); if(rs.next()) { String coName=rs.getString(2); String tId=rs.getString(3); float credit=rs.getFloat(4); float period=rs.getFloat(5); String cPlace=rs.getString(6); int cNumAll=rs.getInt(7); int cNum=rs.getInt(8); int num=cNumAll-cNum; if(num>0)out.print(cNum); else out.print("已经选满"); } rsc.close();stmtc.close();

Statement stmtc=null;

ResultSet rsc=null;

Connection connc=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connc=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sqlc="select * from room";

stmtc=connc.createStatement();

rsc=stmtc.executeQuery(sqlc);

while(rsc.next())

{

String rname=rsc.getString("roomname");

String rnum=rsc.getString("roomnum");

String rtime=rsc.getString("roomtime"); }

rsc.close();stmtc.close();


教室情况

align="center">教室名称


可容纳人数

空闲时间

align="center">


相关内容

  • 软件工程课程设计 学生选课系统
  • <软件工程>课程设计 成果报告 学生选课管理系统 学生学号: 学生姓名: 学 院: 专业班级: 专业课程: 软件工程 指导教师: 年 月 日 目 录 1 绪论 .......................................... 错误!未定义书签. 1.1 选题背景和意义 ...

  • 选修课管理系统文档(数据库课程设计)
  • 数据库系统设计课程设计任务书 计算机科学与技术学院制 目录 1.相关专业背景功能 --------------------------------- 1 2.需求分析 --------------------------------------- 4 3.概念模型与E-R 图____________ ...

  • 选课系统-毕业论文
  • ---------------------------------------------- 装 订 线 Xxxxxxxx 毕业设计(论文) 题目: 选课管理系统 系 (院) 信息技术系 专业班级 学 号 学生姓名 指导教师 职 称 讲师 2012 年 05 月 10 日 ------------- ...

  • 高校学生选课系统
  • 信息系统与管理教程 期末论文 论文题目:高校学生选课系统 院 (系):信息技术工程学院 专 业:信息管理与信息系统 班 级:11信管本科班 学生姓名:罗光权 学 号: 指导教师:苏亚丽 职 称:高级讲师 2014年6月26日 随着学校的招生规模的不断扩大,许多高校出现了许多个校区并存的局面,并且校区 ...

  • 第11小组需求分析报告
  • 学生选课管理系统需求分析说明书 一. 引言 当今时代是飞速发展的信息时代.在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境. 学校作为一种信息资源的集散地,学生和课程繁多,包含很多的信息数据的管理,现今,有很多的学校都是初步开始使用.如果对学生的选课权限.以及选课代号等用人工计 ...

  • 课题_大学本科计算机应用毕业论文
  • 毕业设计 2015年 月 日 摘要:随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨.针对 学生选课这一环节,本系统从学生网上自主选课以及教师的课程发布两个大方面进行了设计,基本实现了学生的在线信息查询.选课功能以及教师对课程信息发布的管理等功能,另外也初步解决了教师在课程信息发布管理上的 ...

  • 学生选课系统毕业论文
  • 毕业论文 课题名称: 学生选课系统 作 者: 学 号: 分 院: 专 业: 指导老师: 年 月 日 摘 要 随着在校大学生的不断增加,学生选课系统也是学校对学生管理中不可缺少的一部分.以往的选课方法是使用人工的方法管理文件档案,这种管理方式存在许多的缺点:效率低.保密差,另外时间一长,将产生大量的文 ...

  • 毕业范文1
  • 襄樊职业技术学院(毕业)论文 我院计算机专业机房维护方案设计与实现 专业班级:计算机网络技术0701 学 生: 学 号: 指导教师: 教学单位:电子信息工程学院 毕 业 届: 2010届 2010年6月1日 襄樊职业技术学院 电子信息工程学院 毕 业 设 计(论 文)课 题 任 务 书 一. 毕业设 ...

  • 大学生选课系统需求分析报告
  • 大学生选课系统需求分析报告 目 录 1. 引言 .............................................................................................................................. ...

  • 文献综述 选课系统的
  • <选课系统的设计与实现>文献综述 张愉 摘要:随着计算机和网络的普及,高等学校里纷纷建立了C/S或者B/S结构的网上选课系统.与传统的选课方式相比,网上选课系统利用局域网为学生选课带来了便利.学生在学校的公共机房或者宿舍的个人电脑上通过网络来选课,只要选课还没有截止,学生就能够灵活的修改 ...