JAVA数据库学生成绩管理系统实验报告
J A V A数据库学生成绩管理系统实验报告
LEKIBM standardization office【IBM5AB- LEKIBMK08- LEKIBM2C】
实训报告实训名称:学生成绩管理系统
系(部):
专业班级:
学生姓名:
学号:
指导教师:
完成日期:
南京铁道职业技术学院
目录…
…
…
…
…
…
…
…
…
…
…
装
…
…
…
…
…
…
…
…
…
…
…
…
…
…
订
…
…
…
…
…
…
…
…
…
…
…
…
…
线
…
…
…
…
…
…
…
…
…
…
…
Java访问并处理数据库的设计与实现
1 实训概述
南京铁道职业技术学院浦口校区2013级网络L1301班于大二上学期组织了为期一周的Java实训,本次实训的课题是“学生成绩管理系统”。通过综合实训,掌握运用Java语言基本知识和技能、 JAVA的基本语法与JDBC数据库技术的应用;进一步熟悉Oracle数据库的数据库管理(数据库的创建、应用)。表的创建、修改、删除,约束及关系等、数据的查询处理(insert、update、delete、select语句等技术。
2 Java访问并处理数据库的课题描述
课题简介
经过分析,我们使用Java开发工具,利用其提供的各种面向对象的开发工具,Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。使用的数据库是Oracle,Oracle数据库功能强大,学习起来也不难,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
通过实训,我们掌握运用Java语言知识和技能,运用JAVA的基本语法与JDBC数据库技术的应用,完成对甲骨文数据库的数据库管理、例如表的设计(表的创建、修改、删除,字段的默认值、约束及关系等)、数据的查询处理(insert、update、delete、select语句的应用)等技术;并能结合数据库应用技术和jdbc进行小型数据库管理系统的开发。
模块简介
管理员模块功能需求:
管理员身份登陆系统后,可以对学生信息进行添加、修改和查询等操作,对学生进行添加、修改和查询功能操作,还可以修改管理员的登录密码。
学生模块功能需求:
学生信息管理系统中需要在学生登录或验证身份后,,可以自行完成学生个人信息的查询,也可以进行修改和删除个人信息、修改学生密码等操作。
数据库结构设计
数据表设计
定义每个表的数据类型以及字段限制,使数据库达到一定的完整性.每个表的物理设计如下:
1.表admin保存用户的个人信息
用户信息表主要是用来保存管理员用户的基本信息,包括管理员的ID和管理员的登录密码,只有符合这两个字段的格式要求,才能登录成功,结构表如下:
表4-2管理员信息表
2.表student保存学生基本信息,结构表如下:
表4-5学生信息表
逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
流程图层次设计
图的格式如下所示:
图1 管理员对学生信息管理系统局部E-R图
数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表现系统的逻辑处理功能。
系统功能层次图
学生信息管理系统是一个典型的数据库开发应用程序,系统是和数据库相结合.,进入系统,有两个用户,分别是普通学生、和管理员。
3 系统模块的详细设计
本学生信息管理系统主要模块,即用户登录模块、用户操作模块。用户操作模块又分为学生操作模块、管理员操作模块。下面将显示系统的主要功能模块。
登录模块设计
学生信息管理系统前台登陆模块可以勾选管理员身份信息,代表以管理员身份进入。不勾选即为普通学生身份登录。
管理员模块设计
学生信息管理系统前台登陆模块只有一个登陆窗口分为学生、管理员两个级别登陆,系统在后台程序有自动限制设置,可以自动识别登陆者的限制。其系统登陆模块算法如下:
1 判断是否勾选管理员身份;
2 输入用户名和密码;
3 判断用户名和密码是否匹配;
(1)若提示输入信息错误,则重新输入;
(2)否则以管理员身份进入系统。
添加学生信息功能
学生信息管理系统对学生信息的管理非常重要,其中对信息的录入是系统最为关键的地方,以往我们管理学生信息的时候都是手工操作,而随社会不断发展的今天计算机的应用已全部取带了手工操作的方法,利用计算机可以方便的录入各类信息,进行高效的管理.学生信息的录入就是利用计算机通过程序读入数据库,录入学生信息模块算法描述如下:
1.管理员登陆后,录入学生信息管理界面;
2.单击增加学生按钮,键入学生ID;
3.当录入学号已经存在,提示该学生信息已存在,请重新输入;
4.否则学生信息添加成功。
查找学生信息功能
学生信息管理系统对查询学生信息管理也很重要,方法和增添学生信息类似,也同样是利用计算机通过程序读入数据库,查询学生信息模块算法描述如下:
1.管理员登陆后,点击查询学生;
2.当录入学生信息不存在时,提示没有该学生信息,重新输入;
3.当录入学生ID已经存在,提示该学生信息存在,显示学生信息;
删除学生信息功能
学生选课模块主要是给删除学生信息的功能,本功能主要由管理员进入数据库,然后学生管理系统,其删除学生信息模块算法描述如下:
1.管理员成功登陆;
2.点击删除学生;
3.输入学生相关信息,如学生ID;
4. 如该学生不存在,则提示信息不存在,否则删除该学生。
修改学生信息功能
此信息修改模块主要是给学生和管理员建立信息库,方便管理员查询操作,信息修改模块算法描述如下:
1.管理员成功登陆;
2.点击修改学生信息;
3.输入学生的编号;
4.编号为空,重新输入;
5.输入不为数字,重新输入;
6.输入正确,进入修改页面进行相关修改。
学生模块设计
查看学生个人信息功能
学生信息管理系统方便了学生查看自己的学籍信息,如果学校由于疏忽输入了错误信息,自己可以查看并且及时通知学校管理员,及时修改,减少不必要的麻烦.
此信息查询模块主要是方便学生查询操作,信息查询模块算法描述如下:
1 学生成功登陆;
2.点击查询学生信息;
3.输入学生的编号;
4.编号为空,重新输入;
5.输入不为数字,重新输入;
6.输入正确,进入信息查询页面进行相关修改。
修改学生登录密码功能
学生可以进入学生管理系统进行登录密码的修改
1. 学生成功登陆;
2.单击修改密码;
3.输入旧密码、新密码确认后,若旧密码正确则修改成功,则提示重新输入旧密码;
4.提交修改完成修改。
4 程序运行与测试
package .*;
import .*;
import 登录窗口
import class LoginFrame extends JFrame{
private JCheckBox c;
private JButton loginBtn,resetBtn;
private JTextField nameInput;
private JPasswordField pwdInput;
private AdminDao adminDao=new AdminDao();
private StudentDao studentDao=new StudentDao();
public LoginFrame(){
etScreenSize();
int width=;
int height=;
rim();
String password=().trim();
quals(password)){
o();
}else{
(null, "用户名或密码不正确", "提示信息", ;
} }
}else{
quals(password)){
(null, "登录成功", "提示信息", ;
new StudentFrame(s,null).go();
}else{
(null, "用户名或密码不正确", "提示信息", ; } } } } });}
public void init(){
o(); }}
package 和管理员相关的数据库操作
public class AdminDao {
indAdminByName("admi").getPassword()); }}
package 添加学生
public class AddStudentFrame extends JFrame{
private AdminFrame admin;
private JPanel p1,p2,p3,p4,p5;
private JLabel idLbl,nameLbl,ageLbl,genderLbl;
private JTextField idInput,nameInput,ageInput,genderInput;
private JButton submitBtn,cancelBtn;
private StudentDao studentDao=new StudentDao();
public AddStudentFrame(AdminFrame admin){
=admin;
setTitle("添加学生");
setResizable(false);
setBounds(400, 100, 300, 400);
init();
event();}
private void init(){
Container container=getContentPane();
(new GridLayout(5, 1));
p1=new JPanel();
(null);
idLbl=new JLabel("学籍号:");
(50, 30, 50, 20);
idInput=new JTextField();
(100, 30, 120, 20);
(idLbl);
(idInput);
(p1);
p2=new JPanel();
(null);
nameLbl=new JLabel("姓名:");
(50, 10, 50, 20);
nameInput=new JTextField();
(100, 10, 120, 20);
(nameLbl);
(nameInput);
(p2);
p3=new JPanel();
(null);
ageLbl=new JLabel("年龄:");
(50, 10, 50, 20);
ageInput=new JTextField();
(100, 10, 120, 20);
(ageLbl);
(ageInput);
(p3);
p4=new JPanel();
(null);
genderLbl=new JLabel("性别:");
(50, 10, 50, 20);
genderInput=new JTextField();
(100, 10, 120, 20);
(genderLbl);
(genderInput);
(p4);
p5=new JPanel();
(null);
submitBtn=new JButton("确定");
(130, 10, 60, 20);
cancelBtn=new JButton("取消");
(195, 10, 60, 20);
(submitBtn);
(cancelBtn);
(p5);}
private void event(){
rim();
String studentName=().trim();
String age=().trim();
String gender=().trim();
Student s=new Student();
o();
}
}
package ;
public class FindStudentFrame extends JFrame{
private StudentDao studentDao=new StudentDao();
private JLabel idLbl,nameLbl;
private JTextField idInput,nameInput;
private JButton findBtn,cancelBtn;
public FindStudentFrame(){
setTitle("查找学生");
setBounds(405, 100, 200, 390);
setResizable(false);
init();
event(); }
private void init(){
Container container=getContentPane();
(new GridLayout(3, 1));
JPanel p1=new JPanel();
(null);
idLbl=new JLabel("学籍号:");
(20, 55, 50, 20);
idInput=new JTextField();
(73, 55, 100, 20);
(idLbl);
(idInput);
(p1);
JPanel p2=new JPanel();
(null);
nameLbl=new JLabel("姓名:");
(20, 55, 50, 20);
nameInput=new JTextField();
(73, 55, 100, 20);
(nameLbl);
(nameInput);
(p2);
JPanel p3=new JPanel();
(null);
findBtn=new JButton("搜索");
(60,30,60,20);
cancelBtn=new JButton("取消");
(123,30,60,20);
(findBtn);
(cancelBtn);
(p3); }
private void event(){
(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
}});
(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
String idStr=().trim();
String nameStr=().trim();
Long studentId=null;
String studentName=null;
if()!=0){ o() } }); } public void go(){
setVisible(true); }
public static void main(String[] args) {
new FindStudentFrame().go();
rim().length()); 正则表达式 \s
eplaceAll("\\s", "").length()); }}
package class ShowResultFrame extends JFrame {
private List
private StudentDao studentDao=new StudentDao();
public ShowResultFrame(List
setTitle("查询结果");
if () > 0) {
setBounds(100, 100, 300, 60 * ());
} else {
setBounds(100, 100, 300, 150); }
= students;
init();}
private void init() {
Container container = getContentPane();
(new GridLayout(), 2));
o(); } }});
(new Color(253, 253,187)));
JButton b = new JButton("删除");
final Long studentId = ();
(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int choose=(null, "确定删除"
);
o();
(studentId);
}} });
(l); (b); } } }
private void event() {
(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
} }); }
public void go() { setVisible(true); }
public static void main(String[] args) {
}}
package class StudentFrame extends JFrame{
private JPanel p1,p2,p3,p4,p5,p6;
private JLabel idLbl,pwdLbl,nameLbl,ageLbl,genderLbl;
private JTextField idInput,nameInput,ageInput,genderInput;
private JPasswordField pwdInput;
private Student student;
private JButton modifyPwdBtn,submitBtn,exitBtn;
private String nPassword;
private StudentDao dao=new StudentDao();
o();
}});
(new MouseAdapter() {
rim();
String newName=().trim();
String newAgeStr=().trim();
String newGender=().trim();
quals(newPassword)){
new StudentFrame(newStudent,null).go();