1、学生选课管理信息系统设计与实现完成学生选课管理系统的开发一、课程设计任务完成学生选课管理系统的开发二、需求描述本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。三、系统总体设计1.系统架构设计(1)架构:单机(2)运行软件环境: windows XP SP3 、jdk1.6(3)开发环境: 硬件平台: CPU:P41.8GHz
2、内存:256MB以上 软件平台:windows XP SP3 、jdk1.6 操作系统:WindowsXP 数据库:SQL Server 2000、SQLServer SP4补丁 开发工具:Eclipse 3.3 分辨率:1024*7682.功能模块设计各模块功能: 登录界面:登录界面是有帐号,密码两个JTextField,管理员帐号一字母A开头,教师帐号一字母T开头,学生帐号以字母S开头,登录帐号或密码输入错误会弹出相应的提示对话框。 学生信息管理模块:管理员用于添加和删除学生信息的模块。 教师信息管理模块:管理员用于添加和删除教师信息的模块。 教师密码修改模块和学生密码修改模块:管理员添加
3、的用户帐号的初始密码与用户的帐号相同,用户通过密码修改模块可以自己需改密码。 教师录入成绩模块:教师可以浏览选修自己课程的学生的信息并且录入该学生的成绩。 学生选择选修课模块:该模块通过表格的形式将所有课程列出来,学生可以根据个人兴趣选择不同的课程,每个学生选择的课程数目不能超过3门,而且不能重复选课,否则会弹出对话框,提示用户查看已经选择了的课程。 学生查询成绩模块:通过表格的形式将该学生选择了的课程列出来,如果教师有录入成绩,则可以看到自己的课程成绩。 3.数据库设计 (概要设计.)(1)E-R图(2)关系模式 学生(学生学号,学生姓名,教师性别,教师生日,所在班级)教师(教师编号,教师姓
4、名,教师性别,教师生日,教师职称,所在院系)课程(课程号,课程名,学分,选课人数)选课(课程号,学生学号,成绩)授课(课程号,教师编号,上课地点)(3)数据库管理系统:Microsoft SQL Server 2000(4)数据库命名StudentManager(5)数据库表 Logon(登录帐号密码) 主要用来保存用户登录信息字段名数据类型长度是否为空是否主键UserIDchar10不为空主键Passwordrcharr10StudentTable1(学生信息表)主要用来保存学生信息。字段名数据类型长度主键否是否为空描述StudentIDChar10主键不为空学生学号StudentNameC
5、har10不为空学生姓名StudentSexChar2不为空学生性别StudentBirthdayDatetime8学生生日Classchar16所在班级TeacherTable1(教师信息表) 用来储存教师的基本信息字段名数据类型长度主键否是否为空描述TeacherIDChar10主键不为空教师编号TeacherNameChar10不为空教师姓名TeacherSexChar2不为空教师性别TeacherBirthdayDatetime8教师生日Postchar10教师职称Departmentchar20所在院系CourseTable(课程信息表)字段名数据类型长度主键否是否为空描述Cours
6、eIDChar16主键不为空课程编号CourseNameChar16不为空课程名PointChar8不为空学分StuNumberDatetime4不为空选课人数ScoreTable(学生成绩表)用于存储学生成绩字段名数据类型长度是否为空是否主键CourseIDchar16不为空主键StudentIDchar10不为空主键Scoreint4TeachTable(j教师授课表)字段名数据类型长度是否为空是否主键CourseIDchar16不为空主键TeacherIDchar10不为空主键Locationint10(8)数据库账户及权限 (截图)学生账户表教师账户表用户登录表:(9)数据库存储过程:
7、AllCourse:create proc AllCourseasbegin select x.CourseID,x.CourseName,x.Point ,y.TeacherName,y.Post,z.Location,x.StuNumber from Course x,TeacherTable1 y,TeachTable z where x.CourseID=z.CourseID and y.TeacherID=z.TeacherIDendDeleteLogon :create proc DeleteLogon(id char(10)asbegin delete from Logon wh
8、ere UserID=idendDeleteStudent:create proc DeleteStudent(id char(10)asbegin delete from StudentTable1 where StudentID=idendDeleteTeacher :create proc DeleteTeacher(id char(10)asbegin delete from TeacherTable1 where TeacherID=idendInsertLogon :create proc InsertLogon(id char(10)asbegin insert into Log
9、on values(id,id)endInsertStudent :create proc InsertStudent(userid char(10),username char(10),sex char(2),birth datetime,class char(10)asbegininsert into StudentTable1 values(userid ,username,sex,birth,class)endreturnInsertTeacher:create proc InsertTeacher(userid char(10),username char(10),sex char(
10、2),birth datetime,post char(10),department char(10)asbegininsert into TeacherTable1 values(userid ,username,sex,birth,post,department)endreturnIsExistsStu :create proc IsExistsStu(id char(10)asbegin select * from StudentTable1 where StudentID=idendIsExistsTea:create proc IsExistsTea(id char(10)asbeg
11、in select * from Teachertable1 where TeacherID=idendProcAllStu :create proc ProcAllStuasbeginselect * from StudentTable1endProcAllTea create proc ProcAllTeaasbeginselect * from TeacherTable1endProcLogon:create proc ProcLogon(userid char(16),password char(10)asbegin select * from Logon where UserID=u
12、serid and Password=passwordendreturnProcModify:create proc ProcModify(id char(10),password char(16)asbegin update Logon set Password=password where UserID=idendProcStudent :create proc ProcStudent(id char(10)asbegin select * from StudentTable1 where StudentID=idendSelectCourse :create proc SelectCou
13、rse(id char(10),courseid char(16)asbegin insert into ScoreTable values(courseid,id,null)endSelectedCourse: create proc SelectedCourse(id char(10)asbegin select * from ScoreTable where id=StudentIDendSelectedCourseNum:create proc SelectedCourseNum(id char(10)asbegin select COUNT(*) from Scoretable wh
14、ere StudentID=idendSelectedDetail :create proc SelectedDetail(id char(10)asbegin select x.CourseID,x.CourseName,x.Point ,y.TeacherName,y.Post,z.Location,s.Score from Course x,TeacherTable1 y,TeachTable z,ScoreTable s where id=s.StudentID and x.CourseID=z.CourseID and z.TeacherID=y.TeacherID and x.Co
15、urseID=s.CourseIDend4.系统界面设计(1)窗体功能描述 登录界面Logon.java管理员以帐号Admin密码123登录成功进入管理员的信息管理界面,通过点击“学生信息管理”和“教师信息管理”进入不同的管理界面,学生信息管理界面如下:教师信息管理界面如下:以学生帐号(如:帐号:S001001,密码:S001001)登陆成功后进入如下界面,首先显示的 是学生的基本信息:点击“课程列表”按钮进入如下界面根据自己的跟人兴趣选择课程,选择的课程数目不能超过3门否则弹出对话框如下:点击“确定”跳转到已选课程列表。在主界面点击“已选课程”按钮也可以进入下面的界面查看已经选择的课程:以教
16、师帐号(如:帐号:T01001,密码:T01001)登陆成功后进入如下界面,首先显示的 是教师的基本信息,点击“录入成绩”可以通过表格来录入学生的成绩,界面如下图所示:(2)页面/窗体关系结构图四、系统实现技术小结为了方便管理,将数据库的封装分成两部分,数据库资源配置文件和封装数据库操作的类SqlManager.java: 数据库资源配置文件sysConfig.properties:#Sepecify the system type: window or unixsystem-type=windows#specify the databases typedatabase-type=sqlser
17、ver#specify some parametersDBhost=localhostDBport=1433DBname=StudentManagerDBuser=saDBpassword= 封装数据库操作的类:SqlManager.javaimport java.sql.*;import java.util.*;import javax.swing.JOptionPane;public class SqlManager private static SqlManager p=null; private PropertyResourceBundle bundle; private static
18、 String jdbcDriver=null; private static String split=null; private String DBType=null; private String DBhost=localhost; private String DBname=; private String DBport=; private String DBuser=; private String DBpassword=; private Connection Sqlconn=null; private Statement Sqlstmt=null; private String
19、strCon=null; private SqlManager() try bundle=new PropertyResourceBundle(SqlManager.class. getResourceAsStream(/sysConfig.properties); this.DBhost=getString(DBhost); this.DBname=getString(DBname); this.DBport=getString(DBport); this.DBuser=getString(DBuser); this.DBpassword=getString(DBpassword); Str
20、ing system_type=getString(system-type); if(system_type!=null) if(system_type!=null) if(system_type.toLowerCase().equals(widows) split=; else if(system_type.toLowerCase().equals(unix) split=:; String database_type=getString(database-type); this.DBType=database_type; if(database_type!=null) if(databas
21、e_type.toLowerCase().equals(mysql) jdbcDriver=com.mysql.jdbc.Driver; strCon=jdbc:mysql:/+DBhost+:+DBport+/+DBname; else if(database_type.toLowerCase().equals(oracle) jdbcDriver=oracle.jdbc.driver.OracleDriver; strCon=jdbc:oracle:thin:+DBhost+:+DBport+:+DBname; else if(database_type.toLowerCase().equ
22、als(sqlserver) jdbcDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver; strCon=jdbc:microsoft:sqlserver:/+DBhost+:+DBport+;DatabaseName=+DBname; catch(Exception e) e.printStackTrace(); public static SqlManager createInstance() if(p=null) p=new SqlManager(); p.initDB(); return p; private String getSt
23、ring(String s) return this.bundle.getString(s); public void initDB() System.out.println(strCon); System.out.println(jdbcDriver); try Class.forName(jdbcDriver); catch(Exception ex) System.err.println(Cant Find Database Driver.); public void connectDB() try System.out.println(SqlManager:Connecting to
24、database.); Sqlconn=DriverManager.getConnection(strCon,DBuser,DBpassword); Sqlstmt=Sqlconn.createStatement(); catch(SQLException ex) System.err.println(connectDB+ex.getMessage(); System.out.println(SqlManager:Connect to database successful.); public void closeDB() try System.out.println(SqlManager:C
25、lose connection to database.); Sqlstmt.close(); Sqlconn.close(); catch(SQLException ex) System.err.println(closeDB:+ex.getMessage(); System.out.println(Sqlmanager:Close connection successful.); public int executeUpdate(String sql) int ret=0; try ret=Sqlstmt.executeUpdate(sql); catch(SQLException ex)
26、 System.out.println(executeUpdate:+ex.getMessage(); return ret; public ResultSet executeQuery(String sql) ResultSet rs=null; try rs=Sqlstmt.executeQuery(sql); catch(SQLException ex) System.err.println(executeQuery:+ex.getMessage(); return rs; public static void main(String args) SqlManager.createIns
27、tance().connectDB(); SqlManager.createInstance().closeDB(); 五、课程设计体会该系统主要实现了学生选课的功能,这个系统是我独立完成,从需求分析,界面的搭建,到数据库的连接,表格,存储过程和存储过程等的建立,在这段时间的摸索中,我确实学到了很多东西,特别是对以前不太了解的Java Swing组件有了更深刻的了解。比如JTable,对于它的用法我在网上找了很多资料,JTable的建立有各种不同的方法,可以使用DefaultTableModel类来实现,如DefaultTableModel dtm=new DefaultTableModel(
28、new Object ,课程编号,课程名称,学分,任课教师,教师职称,上课地点,以选人数,0);然后再table.setModel(dtm); 或者继承AbstractTableModel类,还有对于如何在JTable中添加Swing组件,原本我是直接新建一个JcheckBox对象直接添加到表格的 单元格里,结果发现只能显示出一串字符串,上网查找后才知道,要用DefaultCellEditor来添加Swing组件,再设置setCellRenderer(new MyTableRenderer() 这是一个实现了TableCellRenderer接口的JCheckBox。TableCellRenderer可以看做是Swing组件的呈
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2