2某高校学生选课系统.docx

上传人:b****2 文档编号:568197 上传时间:2023-04-29 格式:DOCX 页数:24 大小:256.60KB
下载 相关 举报
2某高校学生选课系统.docx_第1页
第1页 / 共24页
2某高校学生选课系统.docx_第2页
第2页 / 共24页
2某高校学生选课系统.docx_第3页
第3页 / 共24页
2某高校学生选课系统.docx_第4页
第4页 / 共24页
2某高校学生选课系统.docx_第5页
第5页 / 共24页
2某高校学生选课系统.docx_第6页
第6页 / 共24页
2某高校学生选课系统.docx_第7页
第7页 / 共24页
2某高校学生选课系统.docx_第8页
第8页 / 共24页
2某高校学生选课系统.docx_第9页
第9页 / 共24页
2某高校学生选课系统.docx_第10页
第10页 / 共24页
2某高校学生选课系统.docx_第11页
第11页 / 共24页
2某高校学生选课系统.docx_第12页
第12页 / 共24页
2某高校学生选课系统.docx_第13页
第13页 / 共24页
2某高校学生选课系统.docx_第14页
第14页 / 共24页
2某高校学生选课系统.docx_第15页
第15页 / 共24页
2某高校学生选课系统.docx_第16页
第16页 / 共24页
2某高校学生选课系统.docx_第17页
第17页 / 共24页
2某高校学生选课系统.docx_第18页
第18页 / 共24页
2某高校学生选课系统.docx_第19页
第19页 / 共24页
2某高校学生选课系统.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

2某高校学生选课系统.docx

《2某高校学生选课系统.docx》由会员分享,可在线阅读,更多相关《2某高校学生选课系统.docx(24页珍藏版)》请在冰点文库上搜索。

2某高校学生选课系统.docx

2某高校学生选课系统

数据库课程设计

《某高校学生选课管理系统》

 

学生:

徐渊哲

指导老师:

于宝华

学号:

2010508019

学院专业:

信工院计科2010级

完成日期:

2013年1月16日

 

课程设计报告

1、课程设计任务

实现学生信息、课程学生管理;实现教师及任课信息管理;实现选课登记,要保证学生不能选修重复的课程(实用触发器实现);创建存储过程统计各学生指定学期选修课程的总学分数;创建视图查询没有被选修的课程;创建存储过程统计各教师任课的学生人数;创建表间关系。

二、需求描述

本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。

三、系统总体设计

1.系统架构设计

(1)架构:

单机

(2)运行软件环境:

windows7,jdk1.6

 

(3)数据库:

SQLServer2005

开发工具:

Eclipse3.3

 

2.功能模块设计

 

各模块功能:

●登录界面:

登录界面是有帐号,密码两个JTextField,管理员帐号一字母A开头,教师帐号一字母T开头,学生帐号以字母S开头,登录帐号或密码输入错误会弹出相应的提示对话框。

●学生信息管理模块:

管理员用于添加和删除学生信息的模块。

●教师信息管理模块:

管理员用于添加和删除教师信息的模块。

●教师密码修改模块和学生密码修改模块:

管理员添加的用户帐号的初始密码与用户的帐号相同,用户通过密码修改模块可以自己需改密码。

●教师录入成绩模块:

教师可以浏览选修自己课程的学生的信息并且录入该学生的成绩。

●学生选择选修课模块:

该模块通过表格的形式将所有课程列出来,学生可以根据个人兴趣选择不同的课程,每个学生选择的课程数目不能超过3门,而且不能重复选课,否则会弹出对话框,提示用户查看已经选择了的课程。

●学生查询成绩模块:

通过表格的形式将该学生选择了的课程列出来,如果教师有录入成绩,则可以看到自己的课程成绩。

 

3.数据库设计

(1)全局E-R图

 

(2)关系模式

学生(学生学号,学生姓名,教师性别,教师生日,所在班级)

教师(教师编号,教师姓名,教师性别,教师生日,教师职称,所在院系)

课程(课程号,课程名,学分,选课人数)

选课(课程号,学生学号,成绩)

授课(课程号,教师编号,上课地点)

(3)数据库管理系统:

MicrosoftSQLServer2005

(4)数据库命名

StudentManager

(5)数据库表

Logon(登录帐号密码)

主要用来保存用户登录信息

字段名

数据类型

长度

是否为空

是否主键

UserID

char

10

不为空

主键

Passwordr

charr

10

StudentTable1(学生信息表)

主要用来保存学生信息。

字段名

数据类型

长度

主键否

是否为空

描述

StudentID

Char

10

主键

不为空

学生学号

StudentName

Char

10

不为空

学生姓名

StudentSex

Char

2

不为空

学生性别

StudentBirthday

Datetime

8

学生生日

Class

char

16

所在班级

TeacherTable1(教师信息表)

用来储存教师的基本信息

字段名

数据类型

长度

主键否

是否为空

描述

TeacherID

Char

10

主键

不为空

教师编号

TeacherName

Char

10

不为空

教师姓名

TeacherSex

Char

2

不为空

教师性别

TeacherBirthday

Datetime

8

教师生日

Post

char

10

教师职称

Department

char

20

所在院系

CourseTable(课程信息表)

字段名

数据类型

长度

主键否

是否为空

描述

CourseID

Char

16

主键

不为空

课程编号

CourseName

Char

16

不为空

课程名

Point

Char

8

不为空

学分

StuNumber

Datetime

4

不为空

选课人数

ScoreTable(学生成绩表)

用于存储学生成绩

字段名

数据类型

长度

是否为空

是否主键

CourseID

char

16

不为空

主键

StudentID

char

10

不为空

主键

Score

int

4

TeachTable(j教师授课表)

字段名

数据类型

长度

是否为空

是否主键

CourseID

char

16

不为空

主键

TeacherID

char

10

不为空

主键

Location

int

10

(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))

as

begin

deletefromLogon

whereUserID=@id

end

DeleteStudent:

createprocDeleteStudent(@idchar(10))

as

begin

deletefromStudentTable1

whereStudentID=@id

end

DeleteTeacher:

createprocDeleteTeacher(@idchar(10))

as

begin

deletefromTeacherTable1

whereTeacherID=@id

end

InsertLogon:

createprocInsertLogon(@idchar(10))

as

begin

insertintoLogon

values(@id,@id)

end

InsertStudent:

createprocInsertStudent(@useridchar(10),@usernamechar(10),@sexchar

(2),@birthdatetime,@classchar(10))

as

begin

insertintoStudentTable1values(@userid,@username,@sex,@birth,@class)

end

return

InsertTeacher:

createprocInsertTeacher(@useridchar(10),@usernamechar(10),@sexchar

(2),@birthdatetime,@postchar(10),@departmentchar(10))

as

begin

insertintoTeacherTable1values(@userid,@username,@sex,@birth,@post,@department)

end

return

IsExistsStu:

createprocIsExistsStu(@idchar(10))

as

begin

select*fromStudentTable1

whereStudentID=@id

end

IsExistsTea:

createprocIsExistsTea(@idchar(10))

as

begin

select*fromTeachertable1

whereTeacherID=@id

end

ProcAllStu:

createprocProcAllStu

as

begin

select*fromStudentTable1

end

ProcAllTea

createprocProcAllTea

as

begin

select*fromTeacherTable1

end

ProcLogon:

createprocProcLogon(@useridchar(16),@passwordchar(10))

as

begin

select*

fromLogon

whereUserID=@useridandPassword=@password

end

return

ProcModify:

createprocProcModify(@idchar(10),@passwordchar(16))

as

begin

updateLogon

setPassword=@password

whereUserID=@id

end

ProcStudent:

createprocProcStudent(@idchar(10))

as

begin

select*fromStudentTable1

whereStudentID=@id

end

SelectCourse:

createprocSelectCourse(@idchar(10),@courseidchar(16))

as

begin

insertintoScoreTable

values(@courseid,@id,null)

end

SelectedCourse:

createprocSelectedCourse(@idchar(10))

as

begin

select*fromScoreTable

where@id=StudentID

end

SelectedCourseNum:

createprocSelectedCourseNum(@idchar(10))

as

begin

selectCOUNT(*)

fromScoretable

whereStudentID=@id

end

SelectedDetail:

createprocSelectedDetail(@idchar(10))

as

begin

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!

=null){

if(system_type.toLowerCase().equals("widows"))

split=";";

elseif(system_type.toLowerCase().equals("unix"))

split=":

";

}

Stringdatabase_type=getString("database-type");

this.DBType=database_type;

if(database_type!

=null){

if(database_type.toLowerCase().equals("mysql")){

jdbcDriver="com.mysql.jdbc.Driver";

strCon="jdbc:

mysql:

//"+DBhost+":

"+DBport+"/"+DBname;

}

elseif(database_type.toLowerCase().equals("oracle")){

jdbcDriver="oracle.jdbc.driver.OracleDriver";

strCon="jdbc:

oracle:

thin:

@"+DBhost+":

"+DBport+":

"+DBname;

}

elseif(database_type.toLowerCase().equals("sqlserver")){

jdbcDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

strCon="jdbc:

microsoft:

sqlserver:

//"+DBhost+":

"+DBport+";DatabaseName="+DBname;

}

}

}

}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);

try{

Class.forName(jdbcDriver);

}catch(Exceptionex){

System.err.println("Can'tFindDatabaseDriver.");

}

}

publicvoidconnectDB(){

try{

System.out.println("SqlManager:

Connectingtodatabase...");

Sqlconn=DriverManager.getConnection(strCon,DBuser,DBpassword);

Sqlstmt=Sqlconn.createStatement();

}catch(SQLExceptionex){

System.err.println("connectDB"+ex.getMessage());

}

System.out.println("SqlManager:

Connecttodatabasesuccessful.");

}

publicvoidcloseDB(){

try{

System.out.println("SqlManager:

Closeconnectiontodatabase...");

Sqlstmt.close();

Sqlconn.close();

}catch(SQLExceptionex){

System.err.println("closeDB:

"+ex.getMessage());

}

System.out.println("Sqlmanager:

Closeconnectionsuccessful.");

}

publicintexecuteUpdate(Stringsql){

intret=0;

try{

ret=Sqlstmt.executeUpdate(sql);

}catch(SQLExceptionex)

{

System.out.println("executeUpdate:

"+ex.getMessage());

}

returnret;

}

publicResultSetexecuteQuery(Stringsql){

ResultSetrs=null;

try{

rs=Sqlstmt.executeQuery(sql);

}catch(SQLExceptionex){

System.err.println("executeQuery:

"+ex.getMessage());

}

returnrs;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2