学生选课管理信息系统设计与实现Word文档格式.docx
- 文档编号:6282211
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:55
- 大小:270.05KB
学生选课管理信息系统设计与实现Word文档格式.docx
《学生选课管理信息系统设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生选课管理信息系统设计与实现Word文档格式.docx(55页珍藏版)》请在冰点文库上搜索。
●教师密码修改模块和学生密码修改模块:
管理员添加的用户帐号的初始密码与用户的帐号相同,用户通过密码修改模块可以自己需改密码。
●教师录入成绩模块:
教师可以浏览选修自己课程的学生的信息并且录入该学生的成绩。
●学生选择选修课模块:
该模块通过表格的形式将所有课程列出来,学生可以根据个人兴趣选择不同的课程,每个学生选择的课程数目不能超过3门,而且不能重复选课,否则会弹出对话框,提示用户查看已经选择了的课程。
●学生查询成绩模块:
通过表格的形式将该学生选择了的课程列出来,如果教师有录入成绩,则可以看到自己的课程成绩。
●3.数据库设计(概要设计...)
(1)E-R图
(2)关系模式
学生(学生学号,学生姓名,教师性别,教师生日,所在班级)
教师(教师编号,教师姓名,教师性别,教师生日,教师职称,所在院系)
课程(课程号,课程名,学分,选课人数)
选课(课程号,学生学号,成绩)
授课(课程号,教师编号,上课地点)
(3)数据库管理系统:
MicrosoftSQLServer2000
(4)数据库命名
StudentManager
(5)数据库表
Logon(登录帐号密码)
主要用来保存用户登录信息
字段名
数据类型
长度
是否为空
是否主键
UserID
char
10
不为空
主键
Passwordr
charr
StudentTable1(学生信息表)
主要用来保存学生信息。
主键否
描述
StudentID
Char
学生学号
StudentName
学生姓名
StudentSex
2
学生性别
StudentBirthday
Datetime
8
学生生日
Class
16
所在班级
TeacherTable1(教师信息表)
用来储存教师的基本信息
TeacherID
教师编号
TeacherName
教师姓名
TeacherSex
教师性别
TeacherBirthday
教师生日
Post
教师职称
Department
20
所在院系
CourseTable(课程信息表)
CourseID
课程编号
CourseName
课程名
Point
学分
StuNumber
4
选课人数
ScoreTable(学生成绩表)
用于存储学生成绩
Score
int
TeachTable(j教师授课表)
Location
(8)数据库账户及权限(截图)
学生账户表
教师账户表
用户登录表:
(9)数据库存储过程:
AllCourse:
createprocAllCourse
as
begin
selectx.CourseID,x.CourseName,x.Point,y.TeacherName,y.Post,z.Location,x.StuNumber
fromCoursex,TeacherTable1y,TeachTablez
wherex.CourseID=z.CourseIDandy.TeacherID=z.TeacherID
end
DeleteLogon:
createprocDeleteLogon(@idchar(10))
begin
deletefromLogon
whereUserID=@id
DeleteStudent:
createprocDeleteStudent(@idchar(10))
deletefromStudentTable1
whereStudentID=@id
DeleteTeacher:
createprocDeleteTeacher(@idchar(10))
deletefromTeacherTable1
whereTeacherID=@id
InsertLogon:
createprocInsertLogon(@idchar(10))
insertintoLogon
values(@id,@id)
InsertStudent:
createprocInsertStudent(@useridchar(10),@usernamechar(10),@sexchar
(2),@birthdatetime,@classchar(10))
insertintoStudentTable1values(@userid,@username,@sex,@birth,@class)
return
InsertTeacher:
createprocInsertTeacher(@useridchar(10),@usernamechar(10),@sexchar
(2),@birthdatetime,@postchar(10),@departmentchar(10))
insertintoTeacherTable1values(@userid,@username,@sex,@birth,@post,@department)
IsExistsStu:
createprocIsExistsStu(@idchar(10))
select*fromStudentTable1
IsExistsTea:
createprocIsExistsTea(@idchar(10))
select*fromTeachertable1
ProcAllStu:
createprocProcAllStu
select*fromStudentTable1
ProcAllTea
createprocProcAllTea
select*fromTeacherTable1
ProcLogon:
createprocProcLogon(@useridchar(16),@passwordchar(10))
select*
fromLogon
whereUserID=@useridandPassword=@password
ProcModify:
createprocProcModify(@idchar(10),@passwordchar(16))
updateLogon
setPassword=@password
ProcStudent:
createprocProcStudent(@idchar(10))
SelectCourse:
createprocSelectCourse(@idchar(10),@courseidchar(16))
insertintoScoreTable
values(@courseid,@id,null)
SelectedCourse:
createprocSelectedCourse(@idchar(10))
select*fromScoreTable
where@id=StudentID
SelectedCourseNum:
createprocSelectedCourseNum(@idchar(10))
selectCOUNT(*)
fromScoretable
SelectedDetail:
createprocSelectedDetail(@idchar(10))
selectx.CourseID,x.CourseName,x.Point,y.TeacherName,y.Post,z.Location,s.Score
fromCoursex,TeacherTable1y,TeachTablez,ScoreTables
where@id=s.StudentIDandx.CourseID=z.CourseIDandz.TeacherID=y.TeacherID
andx.CourseID=s.CourseID
4.系统界面设计
(1)窗体功能描述
登录界面Logon.java
管理员以帐号Admin密码123登录成功进入管理员的信息管理界面,通过点击“学生信息管理”和“教师信息管理”进入不同的管理界面,学生信息管理界面如下:
教师信息管理界面如下:
以学生帐号(如:
帐号:
S001001,密码:
S001001)登陆成功后进入如下界面,首先显示的是学生的基本信息:
点击“课程列表”按钮进入如下界面
根据自己的跟人兴趣选择课程,选择的课程数目不能超过3门否则弹出对话框如下:
点击“确定”跳转到已选课程列表。
在主界面点击“已选课程”按钮也可以进入下面的界面查看已经选择的课程:
以教师帐号(如:
T01001,密码:
T01001)登陆成功后进入如下界面,首先显示的是教师的基本信息,
点击“录入成绩”可以通过表格来录入学生的成绩,界面如下图所示:
(2)页面/窗体关系结构图
四、系统实现技术小结
为了方便管理,将数据库的封装分成两部分,数据库资源配置文件和封装数据库操作的类SqlManager.java:
●数据库资源配置文件sysConfig.properties:
#Sepecifythesystemtype:
windoworunix
system-type=windows
#specifythedatabase'
stype
database-type=sqlserver
#specifysomeparameters
DBhost=localhost
DBport=1433
DBname=StudentManager
DBuser=sa
DBpassword=
●封装数据库操作的类:
SqlManager.java
importjava.sql.*;
importjava.util.*;
importjavax.swing.JOptionPane;
publicclassSqlManager{
privatestaticSqlManagerp=null;
privatePropertyResourceBundlebundle;
privatestaticStringjdbcDriver=null;
privatestaticStringsplit=null;
privateStringDBType=null;
privateStringDBhost="
localhost"
;
privateStringDBname="
"
privateStringDBport="
privateStringDBuser="
privateStringDBpassword="
privateConnectionSqlconn=null;
privateStatementSqlstmt=null;
privateStringstrCon=null;
privateSqlManager(){
try{
bundle=newPropertyResourceBundle(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"
Stringsystem_type=getString("
system-type"
if(system_type!
=null){
if(system_type!
if(system_type.toLowerCase().equals("
widows"
))
split="
elseif(system_type.toLowerCase().equals("
unix"
:
}
Stringdatabase_type=getString("
database-type"
this.DBType=database_type;
if(database_type!
if(database_type.toLowerCase().equals("
mysql"
)){
jdbcDriver="
com.mysql.jdbc.Driver"
strCon="
jdbc:
mysql:
//"
+DBhost+"
+DBport+"
/"
+DBname;
}
elseif(database_type.toLowerCase().equals("
oracle"
oracle.jdbc.driver.OracleDriver"
oracle:
thin:
@"
sqlserver"
com.microsoft.jdbc.sqlserver.SQLServerDriver"
microsoft:
sqlserver:
DatabaseName="
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticSqlManagercreateInstance(){
if(p==null)
{
p=newSqlManager();
p.initDB();
returnp;
privateStringgetString(Strings)
{
returnthis.bundle.getString(s);
publicvoidinitDB(){
System.out.println(strCon);
System.out.println(jdbcDriver);
Class.forName(jdbcDriver);
}catch(Exceptionex){
System.err.println("
Can'
tFindDatabaseDriver."
publicvoidconnectDB(){
System.out.println("
SqlManager:
Connectingtodatabase..."
Sqlconn=DriverManager.getConnection(strCon,DBuser,DBpassword);
Sqlstmt=Sqlconn.createStatement();
}catch(SQLExceptionex){
connectDB"
+ex.getMessage());
System.out.println("
Connecttodatabasesuccessful."
publicvoidcloseDB(){
Closeconnectiontodatabase..."
Sqlstmt.close();
Sqlconn.close();
closeDB:
Sqlmanager:
Closeconnectionsuccessful."
publicintexecuteUpdate(Stringsql){
intret=0;
ret=Sqlstmt.executeUpdate(sql);
}catch(SQLExceptionex)
executeUpdate:
returnret;
publicResultSetexecuteQuery(Stringsql){
ResultSetrs=null;
rs=Sqlstmt.executeQuery(sql);
executeQuery:
returnrs;
publicstaticvoidmain(Stringargs[]){
SqlManager.createInstance().connectDB();
SqlManager.createInstance().closeDB();
}
五、课程设计体会
该系统主要实现了学生选课的功能,这个系统是我独立完成,从需求分析,界面的搭建,到数据库的连接,表格,存储过程和存储过程等的建立,在这段时间的摸索中,我确实学到了很多东西,特别是对以前不太了解的JavaSwing组件有了更深刻的了解。
比如JTable,对于它的用法我在网上找了很多资料,JTable的建立有各种不同的方法,可以使用DefaultTableModel类来实现,如DefaultTableModeldtm=newDefaultTableModel(newObject[]{"
"
课程编号"
课程名称"
学分"
任课教师"
教师职称"
上课地点"
以选人数"
},0));
然后再table.setModel(dtm);
或者继承AbstractTableModel类,还有对于如何在JTable中添加Swing组件,原本我是直接新建一个JcheckBox对象直接添加到表格的单元格里,结果发现只能显示出一串字符串,上网查找后才知道,要用DefaultCellEditor来添加Swing组件,再设置setCellRenderer(newMyTableRenderer())这是一个实现了TableCellRenderer接口的JCheckBox。
TableCellRenderer可以看做是Swing组件的呈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 管理信息系统 设计 实现