2某高校学生选课系统Word文档格式.docx
《2某高校学生选课系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《2某高校学生选课系统Word文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
各模块功能:
●登录界面:
登录界面是有帐号,密码两个JTextField,管理员帐号一字母A开头,教师帐号一字母T开头,学生帐号以字母S开头,登录帐号或密码输入错误会弹出相应的提示对话框。
●学生信息管理模块:
管理员用于添加和删除学生信息的模块。
●教师信息管理模块:
管理员用于添加和删除教师信息的模块。
●教师密码修改模块和学生密码修改模块:
管理员添加的用户帐号的初始密码与用户的帐号相同,用户通过密码修改模块可以自己需改密码。
●教师录入成绩模块:
教师可以浏览选修自己课程的学生的信息并且录入该学生的成绩。
●学生选择选修课模块:
该模块通过表格的形式将所有课程列出来,学生可以根据个人兴趣选择不同的课程,每个学生选择的课程数目不能超过3门,而且不能重复选课,否则会弹出对话框,提示用户查看已经选择了的课程。
●学生查询成绩模块:
通过表格的形式将该学生选择了的课程列出来,如果教师有录入成绩,则可以看到自己的课程成绩。
3.数据库设计
(1)全局E-R图
(2)关系模式
学生(学生学号,学生姓名,教师性别,教师生日,所在班级)
教师(教师编号,教师姓名,教师性别,教师生日,教师职称,所在院系)
课程(课程号,课程名,学分,选课人数)
选课(课程号,学生学号,成绩)
授课(课程号,教师编号,上课地点)
(3)数据库管理系统:
MicrosoftSQLServer2005
(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
(6)数据库账户及权限(截图)
学生账户表
教师账户表
用户登录表:
(7)数据库存储过程:
程序代码中尽量不出现SQL语句,所有操作都写成了存储过程,如下:
ShowPointSum:
CreateprocShowPointSum
@StudentID_OUTchar(10)
AS
BEGIN
SELECTSUM(Course.Point)
FROMStudentTable1,ScoreTable,Course
WHERECourse.CourseID=ScoreTable.CourseIDANDScoreTable.StudentID=@StudentID_OUTANDScoreTable.StudentID=StudentTable1.StudentID
END
ShowTeachStuID
createprocShowTeachCount:
@TNO_INCHAR(10)
ASSELECTDISTINCTScoreTable.StudentID
FROMScoreTable,COURSE,TeachTable
WHEREScoreTable.CourseIDIN/*Scoretable.CourseIDAND*/(SELECTDISTINCTTeachTable.CourseID
FROMTeachTable,ScoreTable
WHERETeachTable.CourseID=ScoreTable.CourseIDandTeachTable.TeacherID=@TNO_IN)
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
End
(8)视图设计
createviewView_NoOneChoise
As
Selectdistinctdbo.Course.CourseName,dbo.Course.CourseID
Fromdbo.CourseCROSSJOIN
dbo.ScoreTable
Where(dbo.Course.CourseIDNOTIN
(SELECTCourseID
FROMdbo.ScoreTableASScoreTable_1
GROUPBYCourseID))
4.系统界面设计
(1)窗体功能描述
登录界面Logon.java
管理员以帐号Admin密码123登录成功进入管理员的信息管理界面,通过点击“学生信息管理”和“教师信息管理”进入不同的管理界面,学生信息管理界面如下:
教师信息管理界面如下:
以学生帐号(如:
帐号:
S001001,密码:
S001001)登陆成功后进入如下界面,首先显示的是学生的基本信息:
点击“课程列表”按钮进入如下界面
根据自己的跟人兴趣选择课程,选择的课程数目不能超过3门否则弹出对话框如下:
点击“确定”跳转到已选课程列表。
在主界面点击“已选课程”按钮也可以进入下面的界面查看已经选择的课程:
以教师帐号(如:
T01001,密码:
T01001)登陆成功后进入如下界面,首先显示的是教师的基本信息,
点击“录入成绩”可以通过表格来录入学生的成绩,界面如下图所示:
四、实现数据库连接技术
封装数据库操作的类:
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;