java学生成绩管理系统

发布时间:2020-07-16 15:16:33

JAVA学生成绩管理系统

Java语言程序设计结课论文

学生成绩管理系统的设计与实现

广东省嘉应学院

摘 要 -------------------------------------------------- 2 前言 ------------------------------------------------- 2 1 需求分析 -------------------------------------------- 2 1.1 功能需求分析 --------------------------------- 2 1.2 性能需求分析 --------------------------------- 3 1.3 数据库需求分析――数据流图 ------------ 3

1.4数据结构分析――数据流图 ----------------- 3

2概要结构设计 ------------------------------------- 5 2.1系统功能结构设计 --------------------------- 5 2.2 数据库概念结构设计 ----------------------- 6

东北大学秦皇岛分校java程序设计结课论文

3逻辑结构设计 ---------------------------------- 7 4详细设计及功能实现 ------------------------------- 7 4.1模块设计与实现-------------------------------------- 7 5总结 --------------------------------------------------- 12 参考文献 ---------------------------------------------- 13 心得 ---------------------------------------------------- 13

摘 要:随着这学期的结束,我们Java的课堂学习已经告一段

落,我们已学会了Java这一编程语言的基础。凭借课上学到的

知识,我借此课程设计设计一个学生管理系统,来适应新的发展

需要,更好的完成教学管理工作,提高教学管理水平的主要途径

是更新管理者的思想,增强对管理活动的科学认识。基于Java

与SQL server数据库技术建立一个高校成绩管理系统该系统为

管理员、学生和教师提供了查询、修改、增加记录、删除等功能,

希望能满足学生和老师的要求。

前言

学生成绩管理工作是高校教育工作的一项重要内容。教务管理工

作是指学校管理人员按照一定教育方针,运用先进的管理手段,

1

东北大学秦皇岛分校java程序设计结课论文

组织 、协调 、指挥并指导各用户活动,以便高效率、高质量地完成各项教学任务,完成国家所制定的教育目标。学生成绩管理工作是学校教学工作的中枢,是保证高校教学机制正常运转的枢纽,它是一项目的性、计划性、适用性、创造性和科学性很强的工作。学生成绩工作关系到高校教学秩序的稳定。 随着计算机技术的飞速发展和高等教育体制改革的不断深入,传统教育管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成教学管理工作。提高教务管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。同时,运用先进的信息技术,开发高校综合成绩管理信息系统,是深化教务体制改革的有利措施。

JAVA以GUI的编程方式、面向对象的程序设计、众多的GUI组件和强大的数据库应用开发支持,在竞争激励的开发工具市场中越来越羸得程序设计者的青睐。JAVA是Windows系统下的可视化集成开发工具,提供了强大的可视化组件功能,使程序员能够快速、高效地开发出Windows系统下的应用程序,特别是在数据库和网络方面,JAVA与其它开发工具相比更是胜出一筹。可视化主要是指开发图形用户界面,而只需调用GUI组件即可。 1 需求分析

1.1 功能需求分析

该学生成绩管理系统具备三方面的功能:一方面是学生用户,学生通过输入学号和密码进下该系统后,可以进行一些基础查询

2

东北大学秦皇岛分校java程序设计结课论文

(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;一方面老师进入该系统则比学生多一些权限:成绩输入、成绩查询。

具体功能的详细描述如下

1.1.1 选择[学生基本维护]菜单命令,即可进入 [学生基本维护]功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击[添加]就可以了。需要删除一条信息,则只要选择这条信息再点击 [删除]。在搜索条件中输入相关的条件,单击 [查询]就可查找信息。 1.1.2 选择[学生信息查询]菜单命令,即可进入[学生信息查询]功能窗体,在其中的下拉列表中选择你要看的信息,则在下面的表格中显示你要的信息。

1.1.3 选择[成绩管理] [添加成绩]菜单命令,即可进入 [添加成绩]功能窗体,此功能权限只有管理员和教师。

1.1.4 选择[成绩管理] [输入成绩]菜单命令,即可进入 [输入成绩]功能窗体,

此功能权限只有管理员和教师。

1.1.5 选择[成绩管理] [修改成绩] 界面,此功能规管理员所有。

1.1.6 选择[成绩管理] [查询成绩]界面此界面对学生也是可见的,它的权限规所有用户所有。

1.1.7 选择[登陆] [重新登陆] 则会返回登陆界面,为用户提供方

3

东北大学秦皇岛分校java程序设计结课论文

便。

1.1.8 选择[退出]将退出整个系统。

1.2 性能需求分析

时间特性要求:在软件方面,响应时间有点慢,因为是用JBuilder做的,它占用内存比较大,更新处理时间比较快而且迅速。 安全性:设立口令号和密码验证方式,防止非法用户登录进行操作。也就是用户只有管理员、学生和教师才能进入这个系统,用户凭口令号和密码进入此系统,系统会自动判断用户是那种类型,分别拥有不同的权限。

1.3 数据库需求分析――数据流图

在教务系统中功能模块主要牵涉到的信息包括:是学生信息(base_info)、班级信息(class_info)、课程信息(class_info)、成绩表(chengjibiao)、选课表 (xuankebiao)、登陆表(stu)。 学生信息:包含学号(id)、姓名(name)、班级(class)、性别(sex)、地址(address)

课程信息:包括课程编号(course_id)、课程名称(coursename)、教师(teacher)

选课表:编号(select_id) 课程名称(coursename)、课程编号(course_id)、学号(xh)、

姓名(name)、成绩(result) 、教师(teacher)

成绩表:编号(number)、学号(id)、课程名称(coursename)、成绩(result)、教师(teacher)

4

东北大学秦皇岛分校java程序设计结课论文

班级信息:班级编号(bjbh)、学号(id)、姓名(name)班级名称(bjmc)、班主任(bzr)。

登陆表:口令号(id)、密码(password)、权限(rightlimit)。 根据以上划分的具体数据信息,得到数据流图如1.1所示:

图1.1 数据库需求分析——数据流图

1.4数据结构分析——数据流图

1.4.1 数据结构:

学生信息={组成: {学号(id)、姓名(name)、班级(class)、性别(sex)、地址(address)}}

课程信息={组成: {编号(course_id)、课程名称(coursename)、教师(teacher)}}

5

东北大学秦皇岛分校java程序设计结课论文

选课信息={组成:{编号(select_id) 课程名称(coursename)、课程编号(course_id)、学号(xh)、姓名(name)、成绩(result) 、教师(teacher)}}

成绩表包括={组成:编号(number)、学号(id)、课程名称(coursename)、成绩(result)、教师(teacher)}}

课程信息包括={组成:课程编号(course_id)、课程名称(coursename)、教师(teacher)}}

班级信息={组成:班级编号(bjbh)、年级(nj)、班级名称(bjmc)、人数(rs)、班主任(bzr)}}

登陆表={组成:口令号(id)、密码(password)、权限(rightlimit)}

1.4.2 数据流:

1.4.2.1 对图1.1中所涉及的数据流描述如下:

1) 数据流名:口令号

说明:根据这个口令号定位到用户管理数据库,以便进行身份验证。

数据流来源:登陆界面输入的口令号和密码。

数据流去向:其中用户口令信息将存在于整个操作过程中,防止非法登陆。

数据流组成:口令号(文本);密码(文本)

2) 数据流名:寻找信息

说明:根据用户在学生信息维护的时候所填写的信息。 数据流来源:学生信息维护界面学生输入包含学号、班级编号、

6

东北大学秦皇岛分校java程序设计结课论文

名称等。

数据流去向:学号将存在整个操作,其它的存入数据库。 数据流组成:学号(文本);姓名(文本)等

3) 数据流名:寻找信息

说明:根据用户在成绩管理的时候所填写的信息。 数据流来源:成绩输入、修改、添加等界面用户输入包含课程编号、课程名称、成绩、教师。

数据流去向:学号、班级编号、课程编号将存在整个操作,其它的存入数据库。

数据流组成:课程编号(文本)、课程名称(文本)、教师(文本)等。

4) 数据流名:返回信息

说明:根据用户在学生信息维护的时候所填写的信息存入了数据库之后。

数据流来源:由学生信息维护界面学生输入的包含学号、姓名、性别等存入数据库的。

数据流去向:学生信息维护界面。

数据流组成:学号(文本)、姓名(文本)、班级名称(文本)、性别(文本)等。

5) 数据流名:返回信息

说明:根据用户在成绩管理的时候所填写的信息存入数据库后。 数据流来源:由成绩管理输入的包含班级名称、教师、课程名、

7

东北大学秦皇岛分校java程序设计结课论文

成绩存入数据库的。

数据流去向:成绩管理的各子界面。

数据流组成:班级编号(文本);班级名称(文本);教师(文本)等;

1.4.2.2 对图1.1中所涉及的处理过程描述如下: 1) 处理过程名:登陆

输入数据流:口令号、密码

输出数据流:不符合输入条件的错误信息

处理过程逻辑:用 IF条件进行判断。

2) 处理过程名:班级信息维护

输入数据流:班级编号、班级名称、教师等

输出数据流:班级编号、班级名称等 ,其中班级编号将存在整个操作。

处理过程号:班级编号,其中班级编号将存在整个操作。

3) 处理过程名:学生信息维护

输入数据流:学号、姓名、班级编号、性别等。 输出数据流:学号、姓名、班级编号、性别等。其中学号将存在整个操作。

8

东北大学秦皇岛分校java程序设计结课论文

4) 处理过程名:课程查询

输入数据流:学号、姓名

输出数据流:学号、班级名称、课程名称、上课时间节、上课时间天、上课地点、其中课程编号将存在整个操作。

5) 处理过程名:成绩输入

输入数据流:课程编号、课程名称

输出数据流:编号、学号、课程名称、成绩 、其中编号和学号将存在整个操作。

2概要结构设计

2.1系统功能结构设计

2.1.1模块的功能设计

根据需求分析阶段得到的功能需求,管理员、学生和教师用户通过输入口令号和密码进下该系统后,可以进行一些学生基础信息查询(学生信息查询、班级信息查询、课程信息查询)、学生信息维护、成绩管理(成绩查询、计算平均分)重新登陆系统、退出。

模块功能大概可以分为如下4个方面:这几个模块学生基础维护、成绩管理、登陆、退出。其中基础维护还要包括学生信息维护、班级信息维护、课程信息维护。成绩管理包括成绩查询、添成绩、成绩输入等。综上述,得到客户端功能模块图如下2.1所示。

9

东北大学秦皇岛分校java程序设计结课论文

2.2 数据库概念结构设计

根据需求分析阶段得到的数据字典以及数据流图,由以上分析可以得到系统中出现的实体有:学生信息实体、课程信息实体、班级信息实体、成绩表实体等等。 可以画出对应的E-R图如下:

得到总E-R图2.2如下:

10

东北大学秦皇岛分校java程序设计结课论文

m 1

n 1

1 1 1

n

1 n

3逻辑结构设计

根据上面概念结构设计阶段得到的E-R图,下一步应该将它转化为关系模型。可以得到对应的关系模式为:

Base_info(id、name、class、sex、address)

Class_info(class_id、classname、teacher、id)

xuankebiao(number、id、coursename teacher、class_id、classname、result)

11

东北大学秦皇岛分校java程序设计结课论文

chengjibiao(number、id、name、course、result)

course_info(number、course-id、coursename dates、teacher、jieshu、address)

stu(id、password、rights)

4详细设计及功能实现

4.1用户登录模块设计与实现

设计思路:为了检验登录用户是否是一个合法用户,当用户输入用户名和密码后,需要查询数据库以便验证该用户是否为非法用户。同时通过用户输入的口令号就可知道用户是管理员、学生,还是教师,他们的权限不同。

实现功能:用户可以从登陆界面进入到教务管理系统界面,然后进行一些操作。

图4.1为系统运行时的截图:

该模块的核心代码如下:

12

东北大学秦皇岛分校java程序设计结课论文

判断用户是否合法和用户权限。

public void jButton1_actionPerformed(ActionEvent e) {

String username=Name_Text.getText().trim();

String password=Password_Text.getText().trim();

if(username.equals("")||password.equals(""))

{

JOptionPane.showMessageDialog(null,"用户名或密码不能为

空~");

}else{

try {

//建立数据库连接对象

Jdbcconn conn = new Jdbcconn();

//连接数据库

conn.OpenConn("student", "sa", "yaya");

String strSQL = "select * from stu where id='" + username

+ "'";

try {

//得到记录;

ResultSet rs = conn.getResults(strSQL);

rs.first();

String PassWord =

rs.getString("password").toString().trim(); //得到数据库中对应用户

13

东北大学秦皇岛分校java程序设计结课论文

名的密码

int right = rs.getInt("rightlimit");

rs.close();

if (password.equals(PassWord)) {

JOptionPane.showMessageDialog(null, "成功登陆~");

dispose();

chaxunchengji cxcj = new chaxunchengji();

cxcj.username = username;

Main_Frame mainFrame = new Main_Frame();

mainFrame.users = username;

mainFrame.setVisible(true);

Dimension screenSize =

Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize = mainFrame.getSize();

if (frameSize.height > screenSize.height) {

frameSize.height = screenSize.height;

}

if (frameSize.width > screenSize.width) {

frameSize.width = screenSize.width;

}

mainFrame.setLocation( (screenSize.width - frameSize.width) / 2,

14

东北大学秦皇岛分校java程序设计结课论文

(screenSize.height - frameSize.height) / 2);

mainFrame.users = username;

switch(right)

{

case 0:

mainFrame.jMenuItem4.setVisible(false);

mainFrame.jMenuItem6.setVisible(false);

mainFrame.jMenuItem1.setVisible(false);

mainFrame.jMenuItem3.setVisible(false);

break;

case 1:

mainFrame.jMenuItem3.setVisible(false);

mainFrame.jMenuItem6.setVisible(false);

break;

default:

mainFrame.setTitle("学生成绩管理系统");

break;

}

}

else {

JOptionPane.showMessageDialog(null, "密码错误,请

15

东北大学秦皇岛分校java程序设计结课论文

重输~");

Password_Text.setText("");

}

}

catch (Exception ex) {

JOptionPane.showMessageDialog(null, "用户名或密码

"); 错误1~

Name_Text.setText("");

Password_Text.setText("");

}

conn.closeConn(); //关闭数据库连接

} catch (Exception ex) {

JOptionPane.showMessageDialog(null, "用户名或密码错误2~~");

System.out.print(ex.getMessage());

}//first try catch

} //second try catch

}//end else

}//end method

该模块的核心代码:

public static void main(String[] args) {

16

东北大学秦皇岛分校java程序设计结课论文

banjixinxi banjixinxi = new banjixinxi();

}

public void jComboBox1_actionPerformed(ActionEvent e) {

int state = jComboBox1.getSelectedIndex();

if (state == 1) {

try {

String sql = "select * from base_info";

queryDataSet1.close();

//将SQL语句传给queryDataSet1执行。

queryDataSet1.setQuery(new QueryDescriptor(database1,

sql, null, true,

Load.ALL));

queryDataSet1.open(); //将queryDataSet1打开

queryDataSet1.refresh(); //刷新queryDataSet1

} //end try

catch (Exception ex) {

JOptionPane.showMessageDialog(null, "Sorry!暂时没有

学生信息记录");

} //end catch

} //end if

else {

if (state == 2) {

17

东北大学秦皇岛分校java程序设计结课论文

try {

String sql1 = "select * from class_info";

queryDataSet1.close();

//将SQL语句传给queryDataSet1执行。

queryDataSet1.setQuery(new QueryDescriptor(database1, sql1, null, true,

Load.ALL));

queryDataSet1.open(); //将queryDataSet1打开

queryDataSet1.refresh(); //刷新queryDataSet1

} //end try

catch (Exception ex) {

JOptionPane.showMessageDialog(null, "Sorry!暂时没

有班级信息记录");

} //end catch

} //end if of else

else

{ try{

String sql2="select * from xuankebiao";

queryDataSet1.close();

//将SQL语句传给queryDataSet1执行。

queryDataSet1.setQuery(new QueryDescriptor(database1, sql2, null, true,Load.ALL));

18

东北大学秦皇岛分校java程序设计结课论文

queryDataSet1.open(); //将queryDataSet1打开

queryDataSet1.refresh();//刷新queryDataSet1

}//end try

catch(Exception ex)

{ JOptionPane.showMessageDialog(null, "Sorry!暂时没有

课程信息记录");

}//end catch

}//end else of else

}//end else

成绩输入界面的核心代码:

public void jButton1_actionPerformed(ActionEvent e) {

String Field1 = jTextField1.getText().trim();

String Field2 = jTextField2.getText().trim();

String Field3 = jTextField3.getText().trim();

String Field4 = jTextField4.getText().trim();

String Field5 = jTextField5.getText().trim();

if (Field1.equals("") && Field2.equals("") && Field3.equals("")

&&

Field4.equals("") && Field5.equals("")) {

JOptionPane.showMessageDialog(null, "请在下面的框内填

写出正确的内容");

}

19

东北大学秦皇岛分校java程序设计结课论文

else {

try {

Jdbcconn conn = new Jdbcconn(); //连接数据库

conn.OpenConn("student", "sa", "yaya");

String strSQL =

"insert into chengjibiao (id,name,course,result,teacher)

values ('" +

Field1 + "','" + Field2 + "','" + Field3 + "','" + Field4

+ "','" +

Field5 + "')";

conn.executeUpdate(strSQL);

JOptionPane.showMessageDialog(null, "成绩输入成功");

//System.out.println("name");

}

catch (Exception ex) {

System.out.println(ex.getMessage());

JOptionPane.showMessageDialog(null, "数据库没有链接

成功,数据没有输入成功~");

} //end catch

}

} //end if

}

20

东北大学秦皇岛分校java程序设计结课论文

核心代码:

//************************查找要修改成绩的学生信息

*******************

public void jButton1_actionPerformed(ActionEvent e) {

String Field1 = jTextField1.getText().trim();

String Field2 = jTextField2.getText().trim();

if (Field1.equals("") && Field2.equals("")) {

try {

JOptionPane.showMessageDialog(null, "请输入查询条

件~");

}

catch (Exception ex) {

System.out.println(ex.getMessage());

}

} //end if

else {

try {

String sql = "select * from xuankebiao where id='" +

Field1 +

"' or course_name='" + Field2 + "'";

queryDataSet1.close();

21

东北大学秦皇岛分校java程序设计结课论文

//将SQL语句传给queryDataSet1执行。

queryDataSet1.setQuery(new QueryDescriptor(database1,

sql, null, true,

Load.ALL));

queryDataSet1.open(); //将queryDataSet1打开

queryDataSet1.refresh(); //刷新queryDataSet1

} //end try

catch (Exception ex) {

JOptionPane.showMessageDialog(null, "Sorry!没有你要

的信息,请检查你输入的信息~");

} //end catch

} //end else

}

//********************************修改成绩

************************

public void jButton2_actionPerformed(ActionEvent e) {

String Field1 = jdbTextField1.getText().trim();

String Field2 = jdbTextField2.getText().trim();

try {

Jdbcconn conn = new Jdbcconn(); //连接数据库

conn.OpenConn("student", "sa", "yaya");

String strSQL =

22

东北大学秦皇岛分校java程序设计结课论文

"update xuankebiao set

course_name='Field1' ,result='Field2'";

conn.executeUpdate(strSQL);

JOptionPane.showMessageDialog(null, "修改成功");

}

catch (Exception ex) {

System.out.println(ex.getMessage());

JOptionPane.showMessageDialog(null, "数据库没有链接成

功,数据没有修改成功~");

} //end catch

}

//***********************返回所有记录

****************************

public void jButton3_actionPerformed(ActionEvent e) {

String sql = "select * from xuankebiao";

try {

queryDataSet1.close();

//将SQL语句传给queryDataSet1执行。

queryDataSet1.setQuery(new QueryDescriptor(database1,

sql, null, true,

Load.ALL));

23

东北大学秦皇岛分校java程序设计结课论文

queryDataSet1.open();

queryDataSet1.refresh();

} //end try

catch (Exception ex) {

JOptionPane.showMessageDialog(null, "Sorry!返回出现错误~");

} //end catch

5总结

该学生成绩管理系统总体说来功能比较齐全,学生和教师的一些基本的功能都已经具备;数据库的设计方面,建有学生表、课程表、班级表、成绩表、选课表、登陆表,数据库中存在一些问题,如数据冗余,不够完善。

但在做课程设计的过程中也遇到很多问题,一开始时其中最大的问题是不知道用哪种编译工具,后来选择了JBuilder2006,在编写程序时,由于JBuilder不熟悉,从来没有用过,前一两天还处在熟悉怎么用的阶段,为连接数据库花了一些时间,在网上查资料,后来终于连上了。编写程序起来也有点困难,但是也越来越顺利了。经过调试后终于把自已想到实现的功能一步步实现了,通过这次课程设计使我收获了好多,熟悉了JBuilder和JAVA的运用,还复习了数据库相关语句的编写。

24

东北大学秦皇岛分校java程序设计结课论文

参考文献

[1] JAVA2实用教程 清华大学出版社 耿祥义、张跃平编 2008

[2] 徐慧慧,叶达峰,JBuilder编程技术与实例,人民邮电出版社,2006

[3] 杨文龙,软件工程,电子工业出版社,1997

心得:

这次课程设计能够顺利的完成,要感谢老师的教导和同学的无私的帮助。首先是老师平时上课教会我们那么多有用的知识,还有和同学一起讨论帮我解决了几个错误,老师上实验课时讲得详细并严格要求我们,为我们的课程设计起了促进作用。在此对老师和同学给予我帮助的同学表示最诚挚的感谢~

25

java学生成绩管理系统

相关推荐