罗滔学生网上选课系统毕业设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实训报告
课题名称:学生网上选课系统系别:经济与信息管理系班级:13级软件班
学号: 201320010012 学生姓名:罗滔
指导老师:殷艳菊老师
完成日期:2015.11.15
目录
一、设计任务与目的 (3)
二、需求分析 (3)
三、总体设计 (3)
3.1、系统功能结构示意图 (3)
3.2、系统功能说明 (4)
3.3、数据库E-R图 (4)
3.4、主要功能流程图 (5)
四、详细设计 (6)
4.1、系统文件框架图 (6)
4.2、设计模式及关键技术 (6)
4.3、数据库设计 (7)
五、测试与运行结果 (8)
六、参考文献 (9)
七、设计心得 (10)
附录 (11)
一、设计任务与目的
传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不变,而借助网上选课系统,学生在规定选课时间段内,可以不受地点和时间的限制完成选修课的申请,而学校也可以方便地对系统进行管理和控制,提高工作效率。

通过设计网上学生选课系统,使我们对JAVA的JSP编程以及数据库(SQL Server)的搭建的认识更加熟悉了解。

二、需求分析
本系统首先分为两大块:1、学生模块;2、管理员(老师)模块。

●学生模块
1、学生登录;
2、学生注册;
3、学生选课;
4、学生退课;
5、查看已选课程;
6、学生成绩查询。

●管理员(老师)模块
1、管理员登录(usename:admin; password:admin);
2、查看已开课程信息;
3、增加新开课程;
4、删除已有课程信息;
5、修改课程信息;
6、录入学生成绩。

三、总体设计
3.1、系统功能结构示意图
系统
前台管理
注册登录选

退

















后台管理


















3.2、系统功能说明
● 前台管理
1、注册登录:用户的注册登录,包括学生用户的注册登录和管理员(老师)用户登录。

2、选课退课:学生对已有课程的选择或对已选课程的退选功能。

3、查询信息:学生对选课和成绩的查询以及管理员(老师)对课程信息的查询。

4、修改信息:管理员(老师)对课程信息的修改。

5、增减课程:管理员(老师)增加新课程或删除已有课程。

6、录入成绩:管理员(老师)录入学生课程学习的成绩。

● 后台管理
1、 查询学生信息:已登录管理员查看学生属性信息,包括学生的姓名,性别,院系,以及联系电话。

2、 查询课程信息:已登录管理员查看课程信息列表,包括课程的名字,上课时间,上课地点,任课老师,
任课老师电话,以及课程学分。

3、 查询选课信息:已登录管理员查看学生选课课程情况,包括学生姓名,课程名称,上课时间,上课地
点,任课老师,学生电话,课程学分,以及学生课程成绩。

3.3、数据库E-R 图
学生 课程 管理员(老师)
姓名
性别
学号 电话 学院
时间
地点
学分
姓名 电话
学习 任课
成绩
评分
3.4、主要功能流程图
管理员 index.jsp
login.jsp
managecourse.jsp
操作界面
course.jsp 显示课程
处理 对应的jsp
deletecourse.jsp 删除课程 updatecourse.jsp 修改课程 index.jsp 录入成绩
addcourse.jsp 增加课程 regester.jsp 注册页面
index.jsp
学生
do_regester.jsp 注册成功返回 login.jsp
operating.jsp 操作界面
selectcourse.jsp
选课 yixuan.jsp 查看已选
tuike.jsp 退课
gueryscore.jsp 成绩查询
四、详细设计
4.1、系统文件框架图
4.2、设计模式及关键技术
●设计模式
系统中有管理员(老师)对学生选课的管理包括添加课程,删除课程及录入成绩等功能,学生可以注册和登录到该系统,登录该系统之后可以查看学校所开的课程的基本信息,学生可以选修其中的一些比较喜欢的课程,当学生又有其它想法对某课程不感兴趣的时候也可以退选已选的课程,然后重新选择喜欢的课程,选课结束后老师就给同学们上课,最后老师根据各个学生的表现或通过考试给同学们相应的考试分数(通过系统录入),最后学生可以通过此系统来查询所选课程的考试成绩。

如果学生发现成绩或其他信息出现问题,可以通过提供的教师电话联系该开课老师,老师核对后可以进行相应的修改。

Jsp页面用于给用户提供界面,提交参数及显示结果。

通过JavaBean处理参数并连接数据库,从数据库中获得用户请求的信息再交付给Servlet处理交付个用户显示在jsp页面。

●关键技术
JavaBean、Servlet技术
JavaBean封装了程序的页面逻辑,可以实现代码的重复利用,容易维护和使用,利用
<jsp:useBean>动作元素就可以很容易的在各个jsp页面使用JavaBean,将要用到的方法都封装到java文件中通过JavaBean技术,直接调用其中的各种方法实现与jsp页面的交互。

JDBC数据库连接技术
数据库的连接在整个选课系统中是必不可少的,而且经常用到,于是我将它封装到dbcon.java的java 文件中,其中有数据库连接的几个基本步骤:加载驱动,获得连接,创建Statement对象等等,这样做的好处是在当有与数据库连接的相关操作时就直接利用JavaBean技术就能很方便的实现。

登录注册的验证技术
登陆注册的验证主要通过专门编写的几个用于验证的函数和JavaScript脚本语言技术,以及数据库的创建时的数据的完整性约束等等来实现简单的验证
各页面之间跳转时参数的传递技术
各个页面之间的跳转时参数的传递主要用到了几个jsp内置对象:request,session等。

在整个系统所有页面都要用到的参数就用session对象的setAttribute()方法将参数存储到session对象中,然后利用getAttribute()方法获取参数。

request对象的getPatameter()方法用于获取表单提交的参数。

编码解码技术
字符转换的函数codeToString()方法来处理系统中出现的乱码问题。

通过对可能出现乱码的字符重新编码来解决乱码问题。

4.3、数据库设计
数据库:SQL Server 2000 个人版
数据库名:jsp_db(jsp_db_Data.MDF;jsp_db_Log.LDF);
学生信息表(stuInfo):
课程表(course)
学生选课表(sc)
管理员登录信息表(adminInfo)
4.4、关键程序代码(见附录)。

五、测试与运行结果
六、参考文献
1、王珊,萨师煊,数据库系统概论,北京高等教育出版社,2006.7;
2、[美]布鲁斯•埃克尔(Eckel,B.),陈昊鹏译,Java编程思想(第4版),机械工业出版社,2007.6;
3、[美]鲍格斯坦(Bergsten,H.),林琪、朱涛江译,JSP设计(第三版),中国电力出版社,2004;
4、刘卫国,严晖,数据库技术应用----SQL Server,清华大学出版社,2007.1
七、设计心得
通过这次课程设计,对JSP、SQL Server 2000有了进一步的了解,也对网页设计有了一定的见解,对我们的网上选课系统进行分析,设计,实现。

进一步的了解了JAVA编程和数据库。

也增强了团队合作意识,共同合作精神。

对以后的设计实现有了一定的基础,在这次课程设计中得到了很大的收获。

附录:
adminbean.java
package bean;
import bean.dbcon;
import java.sql.*;
public class adminbean {
private String tno;
private String password;
private ResultSet rs;
private dbcon db= new dbcon();
public adminbean()
{
}
public String getTno() {
return tno;
}
public void setTno(String tno) {
this.tno = tno;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String checkTeacher()
{//教师登陆验证
String backstr="";
boolean mark=true;
if(this.tno==null||this.tno.equals(""))
{
backstr+="<li>请输入<b>教师编号!</b></li><br>";
mark=false;
}
if(this.password==null||this.password.equals(""))
{
backstr+="<li>请输入<b>密&nbsp;&nbsp;码!</b></li><br>";
mark=false;
}
if(mark)
{
String sql="select * from adminInfo where tno='"+this.tno+"'and password='"+this.password+"'";
try{
rs=db.getRs(sql);
if(!rs.next())
backstr="false";
else
backstr="true";
}catch(Exception e){e.printStackTrace();}
}
db.closed();
return backstr;
}
}
courseInfo.java
package bean;
public class courseInfo {
private String cno;
private String cname;
private String time;
private String address;
private String teacher;
private String phone;
private String xuefen;
private String zno;
private String zy;
private String zx;
public String getZno() {
return zno;
}
public void setZno(String zno) {
this.zno = zno;
}
public String getZy() {
return zy;
}
public void setZy(String zy) {
this.zy = zy;
}
public String getZx() {
return zx;
}
public void setZx(String zx) {
this.zx = zx;
}
public String getCno() {
return cno;
}
public void setCno(String cno) {
o = cno;
}
public String getCname() {
return cname;
}
public void setCname(String cname) { ame = cname;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getAddress() {
return address;
}
public void setAddress(String address) { this.address = address;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) { this.teacher = teacher;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) { this.phone = phone;
}
public String getXuefen() {
return xuefen;
}
public void setXuefen(String xuefen) {
this.xuefen = xuefen;
}
}
dbcon.java
package bean;
import java.sql.*;
import java.util.*;
import bean.scoretable;
public class dbcon
{
private static Connection con;
private Statement stm;
private ResultSet rs;
private static String classname="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static String
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp_db";
public dbcon()
{
}
public static Connection getConnection()
{//连接数据库
try
{
Class.forName(classname);
}
catch(Exception e)
{
System.out.println("getConnection方法异常!");
e.printStackTrace();
}
try{
con = DriverManager.getConnection(url,"sa","");
}
catch(Exception e)
{
e.printStackTrace();
con=null;
}
return con;
}
public Statement getStm()
{
try{
getConnection();
stm=con.createStatement();
}catch(Exception e)
{
e.printStackTrace();
System.out.println("getStm()方法异常!");
}
return stm;
}
public ResultSet getRs(String sql){
getStm();
if(sql==null)sql="";
try{
rs=stm.executeQuery(sql);
}catch(Exception e){
e.printStackTrace();
System.out.println("getRs()方法异常!");
rs=null;
}return rs;
}
public void closed(){
try{
if(rs!=null)rs.close();
}
catch(Exception e){e.printStackTrace();}
try{
if(stm!=null)stm.close();
}catch(Exception e){e.printStackTrace();}
try{
if(con!=null)con.close();
}catch(Exception e){e.printStackTrace();} }
public String codeToString(String str)
{//处理中文字符串的函数
String s=str;
try
{
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
}
catch(Exception e)
{
return s;
}
}
public void adduser(userbean user) throws SQLException
{//注册用户信息入数据库
try
{
con=dbcon.getConnection();
PreparedStatement pstmt = con.prepareStatement("insert into stuInfo values(?,?,?,?,?,?,?,?)");
pstmt.setString(1,codeToString(user.getSno()));
pstmt.setString(2,codeToString(user.getSname()));
pstmt.setString(3,codeToString(user.getPassword()));
pstmt.setString(4,codeToString(user.getSdept()));
pstmt.setString(5,codeToString(user.getSex()));
pstmt.setString(6,codeToString(user.getPhone()));
pstmt.setString(7,codeToString(user.getQuestion()));
pstmt.setString(8,codeToString(user.getAnswer()));
pstmt.execute();
con.close();
}
catch(Exception e)
{
}
}
public void addcourse(courseInfo course) throws SQLException
{//增加的课程信息入数据库
try
{
con=dbcon.getConnection();
PreparedStatement pstmt = con.prepareStatement("insert into course values(?,?,?,?,?,?,?)");
pstmt.setString(1,codeToString(course.getCno()));
pstmt.setString(2,codeToString(course.getCname()));
pstmt.setString(3,codeToString(course.getTime()));
pstmt.setString(4,codeToString(course.getAddress()));
pstmt.setString(5,codeToString(course.getTeacher()));
pstmt.setString(6,codeToString(course.getPhone()));
pstmt.setString(7,codeToString(course.getXuefen()));
pstmt.execute();
con.close();
}
catch(Exception e)
{
System.out.println("addcourse()异常!");
}
}
//管理员用删除课程信息
public void deletecourse(String courseId)
{
String sql="delete from course where cno="+"'"+courseId+"'";
try{
con = getConnection();
Statement stm = con.createStatement();
stm.execute(sql);
con.close();
stm.close();
}catch(Exception e)
{
e.printStackTrace();
System.out.println("deletecourse()函数异常!");
}
}
//验证函数集
public boolean checkcourse(String number)
{//添加课程信息时的验证
boolean num=false;
try{
con = getConnection();
Statement stm = con.createStatement();
ResultSet result = stm.executeQuery("select * from course where cno='"+number+"'");
if(result.next())
num=true;
else
num=false;
con.close();
stm.close();
result.close();
}
catch(Exception e)
{
System.out.print("添加课程验证异常");
num=false;
}
return num;
}
public boolean checkuser_regester(String number)
{//
boolean num=false;
try{
con = getConnection();
Statement stm = con.createStatement();
ResultSet result = stm.executeQuery("select * from stuInfo where sno='"+number+"'");
if(result.next())
num=true;
else
num=false;
con.close();
stm.close();
result.close();
}
catch(Exception e)
{
System.out.print("学生注册验证异常");
num=false;
}
return num;
}
@SuppressWarnings("unchecked")
public Collection getCourseInfo()
{
try
{
con = getConnection();
Statement stm = con.createStatement();
ResultSet result = stm.executeQuery("select * from course");
Collection ret = new ArrayList();
while(result.next())
{
courseInfo temp = new courseInfo();
temp.setCno(result.getString("cno"));
temp.setCname(result.getString("cname"));
temp.setTime(result.getString("time"));
temp.setAddress(result.getString("address"));
temp.setTeacher(result.getString("teacher"));
temp.setPhone(result.getString("phone"));
temp.setXuefen(result.getString("xuefen"));
ret.add(temp);
}
con.close();
return ret;
}
catch(Exception e)
{
System.out.println("getCourseInfo()方法异常!");
}
return null;
}
//删除选课课信息
public void deletexuanke(String userId,String courseId)
{
String sql="delete from sc where sno="+"'"+userId+"'"+"and cno="+"'"+courseId+"'";
try{
con = getConnection();
Statement stm = con.createStatement();
stm.execute(sql);
con.close();
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("deletexuanke()函数异常!");
}
}
//查询成绩
@SuppressWarnings("unchecked")
public Collection getScoreInfo(String userId)
{
//String sql="select * from scoretable where sno="+"'"+userId+"'";
String sql="select sno,cno,cname,xuefen,score from sc where sno="+"'"+userId+"'";
try
{
con = getConnection();
Statement stm = con.createStatement();
ResultSet result = stm.executeQuery(sql);
Collection ret = new ArrayList();
while(result.next())
{
scoretable temp = new scoretable();
temp.setSno(userId);
temp.setCno(result.getString("cno"));
temp.setCname(result.getString("cname"));
temp.setXuefen(result.getString("xuefen"));
temp.setScore(result.getString("score"));
ret.add(temp);
}
con.close();
stm.close();
result.close();
return ret;
}
catch(Exception e)
{
System.out.println("getScoreInfo()方法异常!");
}
return null;
}
}
scoretable.java
package bean;
public class scoretable {
private String sno;
private String cno;
private String cname;
private String xuefen;
private String score;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getCno() {
return cno;
}
public void setCno(String cno) {
o = cno;
}
public String getCname() {
return cname;
public void setCname(String cname) { ame = cname;
}
public String getXuefen() {
return xuefen;
}
public void setXuefen(String xuefen) { this.xuefen = xuefen;
}
public String getScore() {
return score;
}
public void setScore(String score) { this.score = score;
}
}
usebean.java
package bean;
import bean.*;
import java.sql.*;
@SuppressWarnings("unused")
public class userbean
{
private String sno;
private String sname;
private String password;
private String sdept;
private String sex;
private String phone;
private String question;
private String answer;
private ResultSet rs;
private dbcon db= new dbcon();
public userbean()
{
}
public String getSno()
{
return sno;
}
public void setSno(String sno)
this.sno = sno;
}
public String getSname()
{
return sname;
}
public void setSname(String sname)
{
this.sname = sname;
}
public String getPassword()
{
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSdept()
{
return sdept;
}
public void setSdept(String sdept)
{
this.sdept = sdept;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
public String getPhone()
{
return sex;
}
public void setPhone(String phone)
{
this.phone = phone;
}
public String getQuestion()
{
return question;
}
public void setQuestion(String question)
{
this.question = question;
}
public String getAnswer()
{
return answer;
}
public void setAnswer(String answer)
{
this.answer = answer;
}
public String checkuser()
{//学生登陆验证
String backstr="";
boolean mark=true;
if(this.sno==null||this.sno.equals(""))
{
backstr+="<li>请输入<b>学号!</b></li><br>";
mark=false;
}
if(this.password==null||this.password.equals(""))
{
backstr+="<li>请输入<b>密&nbsp;&nbsp;码!</b></li><br>";
mark=false;
}
if(mark)
{
String sql="select * from stuInfo where sno='"+this.sno+"'and password='"+this.password+"'";
try{
rs=db.getRs(sql);
if(!rs.next())
backstr="false";
else
backstr="true";
}catch(Exception e){e.printStackTrace();}
}
db.closed();
return backstr;
}
XuankeBean.java
package bean;
import java.sql.*;
import java.util.*;
import bean.dbcon;
import bean.courseInfo;
public class XuankeBean
{
private Connection con;
public XuankeBean()
{
this.con=dbcon.getConnection();
}
public courseInfo getcourseInfo(String courseId) throws Exception
{//获得课程信息
con=dbcon.getConnection();
Statement stmt = con.createStatement();
ResultSet rst = stmt.executeQuery("select * from course where cno="+"'"+courseId+"'");
courseInfo c= new courseInfo();
while(rst.next())
{
c.setCno(rst.getString("cno"));
c.setCname(rst.getString("cname"));
c.setTime(rst.getString("time"));
c.setAddress(rst.getString("address"));
c.setTeacher(rst.getString("teacher"));
c.setPhone(rst.getString("phone"));
c.setXuefen(rst.getString("xuefen"));
}
con.close();
return c;
}
public void addcourse(courseInfo course,String sno) throws SQLException
try
{
con=dbcon.getConnection();
PreparedStatement pstmt = con.prepareStatement("insert into sc
values(?,?,?,?,?,?,?,?,?)");
pstmt.setString(1,sno);
pstmt.setString(2,course.getCno());
pstmt.setString(3,course.getCname());
pstmt.setString(4,course.getTime());
pstmt.setString(5,course.getAddress());
pstmt.setString(6,course.getTeacher());
pstmt.setString(7,course.getPhone());
pstmt.setString(8,course.getXuefen());
pstmt.setFloat(9,0);
pstmt.executeUpdate();
con.close();
}
catch(Exception e)
{
System.out.println("addcourse()异常!");
}
}
}
致谢
由于以前对的接触并不是很多,对它的开发环境也不是非常了解,所以在程序的开发过程中遇到了很多的困难,但经过同学和老师的帮助,逐渐克服了困难,并从中学到了很多SQL数据库编程方面的知识。

但是由于经验方面
的原因,以及对物流配送方面的操作流程了解不够深刻,该系统还有许多不尽如人意的地方和功能上的缺陷,这些都有待于进一步改善。

论文完成的前提是老师给我提供了舒适的工作、学习环境,并给予我悉心的关怀与指导。

在些表示衷心地感谢。

老师认真负责的工作态度、严谨的治学风格,使我深受启发;开发的同时,和同学们之间的相互探讨也使我获益匪浅。

几个月的时间内,我除基本学会开发SQL数据库外更重要的是学到了兢兢业业,奋发向上的精神,这种精神是我今后人生前进道路上的一种力量。

所以我再次感谢我的老师和我周围的同学们。

相关文档
最新文档