学生选课管理信息系统设计与实现.docx

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

学生选课管理信息系统设计与实现.docx

《学生选课管理信息系统设计与实现.docx》由会员分享,可在线阅读,更多相关《学生选课管理信息系统设计与实现.docx(55页珍藏版)》请在冰点文库上搜索。

学生选课管理信息系统设计与实现.docx

学生选课管理信息系统设计与实现

 

完成学生选课管理系统的开发

 

一、课程设计任务

完成学生选课管理系统的开发

二、需求描述

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

三、系统总体设计

1.系统架构设计

(1)架构:

单机

(2)运行软件环境:

windowsXPSP3、jdk1.6

(3)开发环境:

硬件平台:

CPU:

P41.8GHz

内存:

256MB以上

软件平台:

windowsXPSP3、jdk1.6

操作系统:

WindowsXP

数据库:

SQLServer2000、SQLServerSP4补丁

开发工具:

Eclipse3.3

分辨率:

1024*768

2.功能模块设计

各模块功能:

●登录界面:

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

●学生信息管理模块:

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

●教师信息管理模块:

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

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

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

●教师录入成绩模块:

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

●学生选择选修课模块:

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

●学生查询成绩模块:

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

●3.数据库设计(概要设计...)

(1)E-R图

(2)关系模式

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

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

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

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

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

(3)数据库管理系统:

MicrosoftSQLServer2000

(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

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

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

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!

=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;

}

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组件的呈

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

当前位置:首页 > 经管营销 > 经济市场

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

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