JAVA学生成绩管理系统
Java语言程序设计结课论文
学生成绩管理系统的设计与实现
广东省嘉应学院
目 录
摘 要 -------------------------------------------------- 2 前言 ------------------------------------------------- 2 1 需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
-------------------------------------------- 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
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
--------------------------------------------------- 12 参考文献 ---------------------------------------------- 13 心得 ---------------------------------------------------- 13
摘 要:随着这学期的结束,我们Java的课堂学习已经告一段
落,我们已学会了Java这一编程语言的基础。凭借课上学到的
知识,我借此课程设计设计一个学生管理系统,来适应新的发展
需要,更好的完成教学管理工作,提高教学管理水平的主要途径
是更新管理者的思想,增强对管理活动的科学认识。基于Java
与SQL server数据库技术建立一个高校成绩管理系统该系统为
管理员、学生和教师提供了查询、修改、增加记录、删除等功能,
希望能满足学生和老师的要求。
前言
学生成绩管理工作是高校教育工作的一项重要内容。教务管理工
作是指学校管理人员按照一定教育方针,运用先进的管理手段,
1
东北大学秦皇岛分校java程序设计结课论文
组织 、协调 、指挥并指导各用户活动,以便高效率、高质量地完成各项教学任务,完成国家所制定的教育目标。学生成绩管理工作是学校教学工作的中枢,是保证高校教学机制正常运转的枢纽,它是一项目的性、计划性、适用性、创造性和科学性很强的工作。学生成绩工作关系到高校教学秩序的稳定。 随着计算机技术的飞速发展和高等教育体制改革的不断深入,传统教育管理
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
、手段以及工作效率已不能适应新的发展需要,无法很好地完成教学管理工作。提高教务管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。同时,运用先进的信息技术,开发高校综合成绩管理信息系统,是深化教务体制改革的有利措施。
JAVA以GUI的编程方式、面向对象的程序设计、众多的GUI组件和强大的数据库应用开发支持,在竞争激励的开发工具市场中越来越羸得程序设计者的青睐。JAVA是Windows系统下的可视化集成开发工具,提供了强大的可视化组件功能,使程序员能够快速、高效地开发出Windows系统下的应用程序,特别是在数据库和网络方面,JAVA与其它开发工具相比更是胜出一筹。可视化主要是指开发图形用户界面,而只需调用GUI组件即可。 1 需求分析
1.1 功能需求分析
该学生成绩管理系统具备三方面的功能:一方面是学生用户,学生通过输入学号和密码进下该系统后,可以进行一些基础查询
2
东北大学秦皇岛分校java程序设计结课论文
(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;一方面老师进入该系统则比学生多一些权限:成绩输入、成绩查询。
具体功能的详细描述如下
1.1.1 选择[学生基本维护]菜单命令,即可进入 [学生基本维护]功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击[添加]就可以了。需要删除一条信息,则只要选择这条信息再点击 [删除]。在搜索条件中输入相关的条件,单击 [查询]就可查找信息。 1.1.2 选择[学生信息查询]菜单命令,即可进入[学生信息查询]功能窗体,在其中的下拉列
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
中选择你要看的信息,则在下面的表格中显示你要的信息。
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