收藏 分销(赏)

学位论文-—学生网上选课系统.doc

上传人:可**** 文档编号:9898338 上传时间:2025-04-12 格式:DOC 页数:26 大小:1.60MB
下载 相关 举报
学位论文-—学生网上选课系统.doc_第1页
第1页 / 共26页
学位论文-—学生网上选课系统.doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述
实训报告 课题名称: 学生网上选课系统 系 别: 经济与信息管理系 班 级: 13级软件班 学 号: 学生姓名: 指导老师: 完成日期: 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、管理员(老师)模块。 l 学生模块 1、 学生登录; 2、 学生注册; 3、 学生选课; 4、 学生退课; 5、 查看已选课程; 6、 学生成绩查询。 l 管理员(老师)模块 1、 管理员登录(usename:admin; password:admin); 2、 查看已开课程信息; 3、 增加新开课程; 4、 删除已有课程信息; 5、 修改课程信息; 6、 录入学生成绩。 三、总体设计 3.1、系统功能结构示意图 系统 前台管理 注册登录 选课退课 查询信息 修改信息 增减课程 录入成绩 后台管理 查询学生信息 查询课程信息 查询选课信息 3.2、系统功能说明 l 前台管理 1、注册登录:用户的注册登录,包括学生用户的注册登录和管理员(老师)用户登录。 2、选课退课:学生对已有课程的选择或对已选课程的退选功能。 3、查询信息:学生对选课和成绩的查询以及管理员(老师)对课程信息的查询。 4、修改信息:管理员(老师)对课程信息的修改。 5、增减课程:管理员(老师)增加新课程或删除已有课程。 6、录入成绩:管理员(老师)录入学生课程学习的成绩。 l 后台管理 1、 查询学生信息:已登录管理员查看学生属性信息,包括学生的姓名,性别,院系,以及联系电话。 2、 查询课程信息:已登录管理员查看课程信息列表,包括课程的名字,上课时间,上课地点,任课老师,任课老师电话,以及课程学分。 3、 查询选课信息:已登录管理员查看学生选课课程情况,包括学生姓名,课程名称,上课时间,上课地点,任课老师,学生电话,课程学分,以及学生课程成绩。 3.3、数据库E-R图 学生 课程 管理员(老师) 姓名 性别 学号 电话 学院 时间 地点 学分 姓名 电话 学习 任课 成绩 评分 3.4、主要功能流程图 regester.jsp 注册页面 index.jsp 学生 do_regester.jsp 注册成功返回 login.jsp operating.jsp 操作界面 selectcourse.jsp 选课 yixuan.jsp 查看已选 tuike.jsp 退课 gueryscore.jsp 成绩查询 管理员 index.jsp login.jsp managecourse.jsp 操作界面 course.jsp 显示课程 处理 对应的jsp deletecourse.jsp 删除课程 updatecourse.jsp 修改课程 index.jsp 录入成绩 addcourse.jsp 增加课程 四、详细设计 4.1、系统文件框架图 4.2、设计模式及关键技术 l 设计模式 系统中有管理员(老师)对学生选课的管理包括添加课程,删除课程及录入成绩等功能,学生可以注册和登录到该系统,登录该系统之后可以查看学校所开的课程的基本信息,学生可以选修其中的一些比较喜欢的课程,当学生又有其它想法对某课程不感兴趣的时候也可以退选已选的课程,然后重新选择喜欢的课程,选课结束后老师就给同学们上课,最后老师根据各个学生的表现或通过考试给同学们相应的考试分数(通过系统录入),最后学生可以通过此系统来查询所选课程的考试成绩。如果学生发现成绩或其他信息出现问题,可以通过提供的教师电话联系该开课老师,老师核对后可以进行相应的修改。 Jsp页面用于给用户提供界面,提交参数及显示结果。通过JavaBean处理参数并连接数据库,从数据库中获得用户请求的信息再交付给Servlet处理交付个用户显示在jsp页面。 l 关键技术 Ø 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): 24 课程表(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 =
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服