JAVA数据库学生成绩管理系统实验报告Word格式文档下载.docx
《JAVA数据库学生成绩管理系统实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JAVA数据库学生成绩管理系统实验报告Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
用户信息表主要是用来保存管理员用户的基本信息,包括管理员的ID和管理员的登录密码,只有符合这两个字段的格式要求,才能登录成功,结构表如下:
表4-2管理员信息表
字段名
类型
空值
约束条件
管理员ID
number(10)
notnull
主键
登录密码
varchar2(10)
2.表student保存学生基本信息,结构表如下:
表4-5学生信息表
学号
number(10)
姓名
varchar2(20)
性别
varchar2(3)
年龄
number
(2)
逻辑结构是独立于任何一种数据模型的信息结构。
逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
流程图层次设计
图的格式如下所示:
图1管理员对学生信息管理系统局部E-R图
数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表现系统的逻辑处理功能。
2.4系统功能层次图
学生信息管理系统是一个典型的数据库开发应用程序,系统是和数据库相结合.,进入系统,有两个用户,分别是普通学生、和管理员。
3系统模块的详细设计
本学生信息管理系统主要模块,即用户登录模块、用户操作模块。
用户操作模块又分为学生操作模块、管理员操作模块。
下面将显示系统的主要功能模块。
3.1登录模块设计
学生信息管理系统前台登陆模块可以勾选管理员身份信息,代表以管理员身份进入。
不勾选即为普通学生身份登录。
3.2管理员模块设计
学生信息管理系统前台登陆模块只有一个登陆窗口分为学生、管理员两个级别登陆,系统在后台程序有自动限制设置,可以自动识别登陆者的限制。
其系统登陆模块算法如下:
1判断是否勾选管理员身份;
2输入用户名和密码;
3判断用户名和密码是否匹配;
(1)若提示输入信息错误,则重新输入;
(2)否则以管理员身份进入系统。
添加学生信息功能
学生信息管理系统对学生信息的管理非常重要,其中对信息的录入是系统最为关键的地方,以往我们管理学生信息的时候都是手工操作,而随社会不断发展的今天计算机的应用已全部取带了手工操作的方法,利用计算机可以方便的录入各类信息,进行高效的管理.学生信息的录入就是利用计算机通过程序读入数据库,录入学生信息模块算法描述如下:
1.管理员登陆后,录入学生信息管理界面;
2.单击增加学生按钮,键入学生ID;
3.当录入学号已经存在,提示该学生信息已存在,请重新输入;
4.否则学生信息添加成功。
查找学生信息功能
学生信息管理系统对查询学生信息管理也很重要,方法和增添学生信息类似,也同样是利用计算机通过程序读入数据库,查询学生信息模块算法描述如下:
1.管理员登陆后,点击查询学生;
2.当录入学生信息不存在时,提示没有该学生信息,重新输入;
3.当录入学生ID已经存在,提示该学生信息存在,显示学生信息;
删除学生信息功能
学生选课模块主要是给删除学生信息的功能,本功能主要由管理员进入数据库,然后学生管理系统,其删除学生信息模块算法描述如下:
1.管理员成功登陆;
2.点击删除学生;
3.输入学生相关信息,如学生ID;
4.如该学生不存在,则提示信息不存在,否则删除该学生。
修改学生信息功能
此信息修改模块主要是给学生和管理员建立信息库,方便管理员查询操作,信息修改模块算法描述如下:
2.点击修改学生信息;
3.输入学生的编号;
4.编号为空,重新输入;
5.输入不为数字,重新输入;
6.输入正确,进入修改页面进行相关修改。
3.3学生模块设计
查看学生个人信息功能
学生信息管理系统方便了学生查看自己的学籍信息,如果学校由于疏忽输入了错误信息,自己可以查看并且及时通知学校管理员,及时修改,减少不必要的麻烦.
此信息查询模块主要是方便学生查询操作,信息查询模块算法描述如下:
1学生成功登陆;
2.点击查询学生信息;
6.输入正确,进入信息查询页面进行相关修改。
修改学生登录密码功能
学生可以进入学生管理系统进行登录密码的修改
1.学生成功登陆;
2.单击修改密码;
3.输入旧密码、新密码确认后,若旧密码正确则修改成功,则提示重新输入旧密码;
4.提交修改完成修改。
4程序运行与测试
packagecom.briup.view;
importjava.awt.*;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjavax.swing.*;
importcom.briup.bean.Admin;
importcom.briup.bean.Student;
importcom.briup.dao.AdminDao;
//登录窗口
importcom.briup.dao.StudentDao;
publicclassLoginFrameextendsJFrame{
privateJCheckBoxc;
privateJButtonloginBtn,resetBtn;
privateJTextFieldnameInput;
privateJPasswordFieldpwdInput;
privateAdminDaoadminDao=newAdminDao();
privateStudentDaostudentDao=newStudentDao();
publicLoginFrame(){
//初始化窗口本身
Dimensiond=Toolkit.getDefaultToolkit().getScreenSize();
intwidth=d.width;
intheight=d.height;
//设置坐标为400-400宽为300高为200
setBounds(width/2-200,height/2-100,400,200);
setTitle("
登录界面"
);
//设置窗口为不可缩放
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
event();
}
privatevoidevent(){
//为按钮添加事件处理
resetBtn.addMouseListener(newMouseAdapter(){
//监听鼠标单击事件
@Override
publicvoidmouseClicked(MouseEvente){
System.exit(0);
}});
loginBtn.addMouseListener(newMouseAdapter(){
//获取用户输入的值
Stringusername=nameInput.getText().trim();
Stringpassword=pwdInput.getText().trim();
//判断是否勾选了管理员多选框
if(c.isSelected()){
//从管理员表中检测数据
Admina=adminDao.findAdminByName(username);
//如果a不为null说明用户输入的管理员是存在的
if(a==null){
//说明此管理员不存在
JOptionPane.showMessageDialog(null,"
用户名或密码不正确"
"
提示信息"
JOptionPane.WARNING_MESSAGE);
}else{
//管理员存在//密码正确//密码不正确
if(a.getPassword().equals(password)){
//后台保存的密码和用户从客户端输入的密码是一样的JOptionPane.showMessageDialog(null,"
登录成功"
//关闭当前的登录窗口
LoginFrame.this.dispose();
//开启管理员界面
newAdminFrame(a.getUsername()).go();
}else{
JOptionPane.showMessageDialog(null,"
}}
}else{
//从普通用户表中检测数据
Students=studentDao.findStudentByStudentId(username);
if(s==null){
if(s.getPassword().equals(password)){
newStudentFrame(s,null).go();
}}}}});
}
publicvoidinit(){
//初始化窗口内部的组件
Containercontainer=getContentPane();
//组件放到哪个位置由用户自己来制定
container.setLayout(null);
JLabeltitle=newJLabel("
用户登录"
title.setFont(newFont("
楷体"
0,32));
title.setBounds(110,5,200,33);
container.add(title);
JLabelnameLabel=newJLabel("
用户名:
"
nameLabel.setBounds(70,55,60,30);
container.add(nameLabel);
nameInput=newJTextField();
nameInput.setBounds(130,60,150,20);
//设置提示内容
nameInput.setToolTipText("
此处写登录用户名"
container.add(nameInput);
JLabelpwdLabel=newJLabel("
密码:
pwdLabel.setBounds(70,80,60,30);
container.add(pwdLabel);
pwdInput=newJPasswordField();
pwdInput.setBounds(130,85,150,20);
pwdInput.setToolTipText("
此处写密码"
container.add(pwdInput);
c=newJCheckBox("
管理员"
c.setBounds(68,115,70,30);
container.add(c);
loginBtn=newJButton("
登录"
loginBtn.setBounds(140,115,60,30);
container.add(loginBtn);
resetBtn=newJButton("
取消"
resetBtn.setBounds(215,115,60,30);
container.add(resetBtn);
publicvoidgo(){
setVisible(true);
publicstaticvoidmain(String[]args){
newLoginFrame().go();
}}
packagecom.briup.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importcom.briup.util.ConnectionFactory;
//和管理员相关的数据库操作
publicclassAdminDao{
//根据用户名查找指定管理员
publicAdminfindAdminByName(Stringusername){
Adminadmin=null;
Connectionconn=null;
PreparedStatementpstat=null;
ResultSetrs=null;
try{
conn=ConnectionFactory.getConnection();
Stringsql="
selectusername,passwordfromadminwhereusername=?
;
pstat=conn.prepareStatement(sql);
pstat.setString(1,username);
rs=pstat.executeQuery();
//如果查不到任何数据下方while内部的代码不会执行
while(rs.next()){
//如果能执行到这个地方说明指定管理员是存在的
admin=newAdmin();
admin.setUsername(username);
admin.setPassword(rs.getString("
password"
));
}
}catch(Exceptione){
//TODO:
handleexception
e.printStackTrace();
}finally{
ConnectionFactory.close(rs,pstat,conn);
returnadmin;
AdminDao().findAdminByName("
admi"
).getPassword());
importjava.awt.Container;
importjava.awt.GridLayout;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
//添加学生
publicclassAddStudentFrameextendsJFrame{
privateAdminFrameadmin;
privateJPanelp1,p2,p3,p4,p5;
privateJLabelidLbl,nameLbl,ageLbl,genderLbl;
privateJTextFieldidInput,nameInput,ageInput,genderInput;
privateJButtonsubmitBtn,cancelBtn;
publicAddStudentFrame(AdminFrameadmin){
this.admin=admin;
添加学生"
setBounds(400,100,300,400);
privatevoidinit(){
container.setLayout(newGridLayout(5,1));
p1=newJPanel();
p1.setLayout(null);
idLbl=newJLabel("
学籍号:
idLbl.setBounds(50,30,50,20);
idInput=newJTextField();
idInput.setBounds(100,30,120,20);
p1.add(idLbl);
p1.add(idInput);
container.add(p1);
p2=newJPanel();
p2.setLayout(null);
nameLbl=newJLabel("
姓名:
nameLbl.setBounds(50,10,50,20);
nameInput.setBounds(100,10,120,20);
p2.add(nameLbl);
p2.add(nameInput);
container.add(p2);
p3=newJPanel();
p3.setLayout(null);
ageLbl=newJLabel("
年龄:
ageLbl.setBounds(50,10,50,20);
ageInput=newJTextField();
ageInput.setBounds(100,10,120,20);
p3.add(ageLbl);
p3.add(ageInput);
container.add(p3);
p4=newJPanel();
p4.setLayout(null);
genderLbl=newJLabel("
性别:
genderLbl.setBounds(50,10,50,20);
genderInput=newJTextField();
genderInput.setBounds(100,10,120,20);
p4.add(genderLbl);
p4.add(genderInput);
container.add(p4);
p5=newJPanel();
p5.setLayout(null);
submitBtn=newJButton("
确定"
s