数据库课设:三天完成学生信息管理系统
课程题目 1 学生信息管理系统
1 系统需求分析
学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。
1.1 系统功能分析
本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统的主要功能有:
学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。
学生流动情况的输入,包括:转系、休学、复学、退学、毕业。
奖惩情况的输入。
学生个人情况查询和修改,包括流动情况和奖罚情况。
1.2 系统功能模块设计(划分)
根据系统功能要求可以将系统分解成几个模
块来分别设计应用程序界面,如图 1 所示。
1.3 与其它系统的关系
学生信息管理系统是校园信息管理系统的一个组成部分。它为其它系统,如班级信息管理系统、教学管理系统、成绩单系统、宿舍分配系统等,提供学生的基本情况。同时需要其他系统提供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数
据。
2 数据库设计
2.1 数据库需求分析
根据上一节的数据流程图,可以列出以下记录学生信息所需的数据项和数据结构:
学生:学号、姓名、性别、生日、籍贯、所在院系、所在班级。
处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。
奖励记录:记录号、级别、奖励对象、记录时间、详细描述。
学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。
录取名单 学生个人信息 输入 个人信息 学生个人信息 学籍变更记录 奖励记录 处分记录 教务处 转系, 修学, 复 学, 退学, 毕业 奖学金评定 处分 解除处分 学生统计信息 学生信息统计 图 1、学生信息管理系统功能模块图学生信息管理系统 教务信息输入 个人信息查询修改 新生信息输入 奖学金评定 处罚纪录 学籍变更17所需的外部数据支持:
班级:班级编号、班级名称、所属院系。
院系:代码、名称。
3.1 功能说明
1、学生个人信息输入
2、学籍变更情况的输入
3、奖励情况的输入
4、处罚情况的输入
5、学生个人情况查询和修改
3.2 用户界面设计
完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。由于本
系统管理内容比较简单,且为校园管理信息系统的一部分,因此使用一个窗体不同的标签页
来完成系统要求的 5 项功能。
我们把学生信息管理系统的窗体分成____个主要部分,如图____所示。
1、应用程序主窗体的创建
2、学生个人信息输入界面
3、学籍变更情况输入界面
4、奖励情况输入界面
5、处罚情况输入界面
6、学生个人情况查询和修改界面
3.3 各功能模块的实现
1、学生个人信息输入
2、学籍变更情况输入
3、奖励情况输入
4、处罚情况输入
5、学生个人情况查询和修改
4 系统实现
上面是题目说明:
项目开发模型:瀑布模型
项目设计流程:
说明:需求分析主要是针对学生信息管理系统,需要要具有实际意义、可行、合理、全面;概念结构设计:主要是对两类用户的需求进行抽象化,还有就是对数据库的设计,需要让数据库存储数据降低冗余,满足BCNF,并具有完整性约束,保证数据库的完整性、安全性,使用E-R模型来表述数据模型;逻辑结构设计:需要将E-R转化为关系数据表并且要结合数据库管理系统来建立数据库的逻辑结构;其中此后还忽略了一个物理结构设计,主要是此部分内容不是本可课设的重点,测试:主要是需要验证需求是否满足,功能是否完善,模块间的交互是否正常;运行维护:本次不涉及软件长期使用的维护。
**系统需求分析:**学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生 的信息,帮助学校和老师掌握学生的情况。所以使用该系统的主要是两类对象,一类是学生,另一类是管理学生信息的管理员。
功能分析:学生需要对个人的信息能够实现查看,奖励、处罚、学籍变更、个人信息,其中奖励和学籍变更对于学生来说应该还具有申请功能;对于另一个对象管理员,首先需要能够实现对学生信息的增删改查,而后对于学籍变更、奖励、处罚也需要实现增删改查,最后还需要完成对个人信息的管理,为了更加完善系统,增加一个公告的功能,公告就是管理员发同志,可以私发也可以群发。
功能模块设计:
用户:登录、查看学籍变更情况并可提交申请、查看奖学金情况并可提交申请、查看处罚记录、查看管理员群发以及私发给自己的公告、对个人信息的查看修改、安全退出。
管理员:登录、对学生的基本信息、班级管理、院系管理、学籍变更、奖学金评定、处罚记录的增删改查,对个人信息的查看与修改管理。
数据库设计:
概念结构设计:
主要的实体有:用户、处罚记录、奖励记录、学籍变更情况记录、公告记录。
用户:学号、姓名、性别、生日、籍贯、所在院系、所在班级、留言、省份、密码。
学籍变更:编号、学号、变更种类、时间、描述、状态
处罚:编号、学号、处罚种类、时间、描述、状态
奖励:编号、学号、奖励种类、时间、描述、状态
公告:编号、发布人、发布对象、发布内容、发布时间
班级:编号,名称,班长
院系:编号,名称
E-R模型:
逻辑结构设计:
由于学籍变更、处罚、奖励、公告、班级、院系与管理员之间的关系都是一对多,而且关系只有一个属性,所以都添加在非管理员方,化为一个属性,然后其他各个模块就单独建立一张基本表,视图实在基本表的基础上建立的,但在此次课设不用视图来将信息展示给不同权限用户,而是用基本算数操作进行基本表的连接。
关系模式表:
用户(学号,姓名,性别,班级编号,院系编号,出生日期,户籍,密码,身份,留言)
处罚(编号,被处罚者学号,处罚等级编号,时间,描述,状态)
处罚等级表(处罚编号,处罚描述)
奖励(编号,得奖学金者学号,奖学金等级编号,时间,描述,状态)
奖励等级表(奖励编号,奖学金描述)
学籍变更(编号,学籍变更者学号,变更类型编号,时间,描述,状态)
学籍变更类型表(编号,变更类型)
公告(编号,发布者,发布对象,发布时间,发布内容)
班级(编号,班级名称,班长)
院系(编号,院系名称)
数据库的具体实现:
student表:
reward表
reward_levels表
punish_levels表
Punishment表
Notice表
Changes表
Change_code表
department表
具体模块实现:
登录:
页面的展示:
简单一个JLable用于设置欢迎,然后两个JLable,提示用户输入账号和密码,两个JTextField录入,然后两个JButton组件一个提示一个重置,页面的布局。
通过个体ContentPane()函数获得底层面板,对了函数需要继承自JFrame,传入springLayout参数,方便布局SpringLayout springLayout=new SpringLayout()。
把组件依次调用contdion.add()函数依次加入面板,然后通过组件名.setFont(new Font(字体,是否加粗,大小))来设置每个组件的样式,通过组件名.setPreferredSize(new Dimension(宽,高))设置每个组件的宽度和高度。
然后就是组件在页面中的定位了,springLayout.putConstraint( SpringLayout.NORTH,组件名,距离,SpringLayout.NORTH,相对组件),这种相对定位发完成对组件的定位,
最后用setSize()函数设置屏幕的大小,setDefaltColseOperation函数设置屏幕关闭的方式,记住最重要一点是要设置setVisible(true),这样页面才能显现出来。
数据的传入:
在定位完组件后,可以在按钮增加绑定事件,通过组件名。AddActionListener(new 处理事件的类),然后在函数内部增加内部类public class 类名 implements ActionListener,其中必须重写其中的public void actionPerformed(ActionEvent e)方法。
怎样获取值呢,由于前面设置的组件是成员变量,作用域在整个函数有效,通过组件名.getText()方法获取,用户输入值,对于重置按钮则调用组件名.setText()方法设置为空即可,对于登录按钮,则可以对获取的数据进行处理。
package com.yu.web.student;
import com.yu.handler.student.login_handler;
import javax.swing.*;
import java.awt.*;
public class student_login extends JFrame {
JLabel nameJlabel=new JLabel("欢迎来到学生管理系统",JLabel.CENTER);
SpringLayout springLayout=new SpringLayout();
JPanel jPanel=new JPanel(springLayout);
JLabel idJlabel=new JLabel("学号:");
JTextField idText=new JTextField();
JLabel pwdJlabel=new JLabel("密码:");
JPasswordField pwdField=new JPasswordField();
JButton loginBtn=new JButton("登录");
JButton resetBtn=new JButton("重置");
SystemTray systemTray;
TrayIcon trayIcon;
com.yu.handler.student.login_handler login_handler;
public student_login(){
super("学生管理系统");
login_handler=new login_handler(this);
Container container=getContentPane();
// 设置字体
nameJlabel.setFont(new Font("华文行楷",Font.PLAIN,40));
Font font=new Font("楷体",Font.PLAIN,20);
idText.setFont(font);
pwdField.setFont(font);
idJlabel.setFont(font);
pwdJlabel.setFont(font);
loginBtn.setFont(font);
resetBtn.setFont(font);
// 输入框设置大小
idText.setPreferredSize(new Dimension(200,30));
pwdField.setPreferredSize(new Dimension(200,30));
nameJlabel.setPreferredSize(new Dimension(0,80));
// 把组件加入面板
jPanel.add(idJlabel);
jPanel.add(idText);
jPanel.add(pwdJlabel);
jPanel.add(pwdField);
loginBtn.addActionListener(login_handler);
jPanel.add(loginBtn);
resetBtn.addActionListener(login_handler);
jPanel.add(resetBtn);
// 组件布局
// 绝对定位
Spring allWidth=Spring.sum(Spring.sum(Spring.width(idJlabel),Spring.width(idText)),Spring.constant(20));
int offsetX=allWidth.getValue()/2;
springLayout.putConstraint(SpringLayout.WEST,idJlabel,-offsetX,SpringLayout.HORIZONTAL_CENTER,jPanel);
springLayout.putConstraint(SpringLayout.NORTH,idJlabel,20,SpringLayout.NORTH,jPanel);
// 相对布局
springLayout.putConstraint(SpringLayout.WEST,idText,20,SpringLayout.EAST,idJlabel);
springLayout.putConstraint(SpringLayout.NORTH,idText,0,SpringLayout.NORTH,idJlabel);
springLayout.putConstraint(SpringLayout.EAST,pwdJlabel,0,SpringLayout.EAST,idJlabel);
springLayout.putConstraint(SpringLayout.NORTH,pwdJlabel,20,SpringLayout.SOUTH,idJlabel);
springLayout.putConstraint(SpringLayout.WEST,pwdField,20,SpringLayout.EAST,pwdJlabel);
springLayout.putConstraint(SpringLayout.NORTH,pwdField,0,SpringLayout.NORTH,pwdJlabel);
springLayout.putConstraint(SpringLayout.WEST,loginBtn,50,SpringLayout.WEST,pwdJlabel);
springLayout.putConstraint(SpringLayout.NORTH,loginBtn,20,SpringLayout.SOUTH,pwdJlabel);
springLayout.putConstraint(SpringLayout.WEST,resetBtn,50,SpringLayout.EAST,loginBtn);
springLayout.putConstraint(SpringLayout.NORTH,resetBtn,0,SpringLayout.NORTH,loginBtn);
container.add(nameJlabel,BorderLayout.NORTH);
container.add(jPanel,BorderLayout.CENTER);
setSize(600,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new student_login();
}
public JTextField getIdText() {
return idText;
}
public void setIdText(JTextField idText) {
this.idText = idText;
}
public JPasswordField getPwdField() {
return pwdField;
}
public void setPwdField(JPasswordField pwdField) {
this.pwdField = pwdField;
}
}
对从页面获得数据的处理:
先进行一轮排查,就是判断是否为空,为空,则JOptionPane.showMessageDiolog(页面,提示信息)给用户弹出提示框,然后调用访问数据库的函数,并把数据作为实参传过去。
连接数据库:导入驱动的jar包,mysql-connector-java-5.1.45.jar,记住修改jar包的作用范围,为工程有效,然后加载驱动class.forName(“com.mysql.cj.jdbc.Driver”),最后调用DriverManager. getConnection(),函数连接数据库,其中三个参数,依次是,数据库路径,数据库名,密码,由于这些步骤每次访问数据库时都需要执行,所以封装成为一个函数DBUtil。
package com.yu.handler.student;
import com.yu.dao.student.login;
import com.yu.pojo.student;
import com.yu.web.admin.admin_main;
import com.yu.web.student.student_login;
import com.yu.web.student.student_main;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class login_handler implements ActionListener {
student ss;
private com.yu.web.student.student_login student_login;
public login_handler(){}
public login_handler(student_login student_login){
this.student_login=student_login;
}
@Override
public void actionPerformed(ActionEvent e) {
JButton jButton=(JButton)e.getSource();
String text=jButton.getText();
if("重置".equals(text)){
student_login.getIdText().setText("");
student_login.getPwdField().setText("");
}else if("登录".equals(text)){
String id=student_login.getIdText().getText();
char[] chars=student_login.getPwdField().getPassword();
String pwd=new String(chars);
if(id.length()==0||pwd.length()==0){
JOptionPane.showMessageDialog(student_login,"用户名或密码不能为空");
}else{
student stu=new student();
stu.setStudentid(id);
stu.setPassword(pwd);
login res=new login();
student s= res.dao(stu);
if(s==null){
JOptionPane.showMessageDialog(student_login,"用户名或密码错误");
}else{
if(s.getState()==0) {
new student_main(s);
student_login.dispose();
}else{
new admin_main(s);
student_login.dispose();
}
}
}
}
}
}
对数据库结果的处理:
访问数据库函数通过return返回访问的结果,然后对结果判断,如果账号与密码不匹配则弹出提示框,如果正确则通过new 函数名,打开一个新的页面,原页面也通过.diapose()函数销毁,而且需要根据state的变量判断登录者的身份。
由于其他功能的实现与该页面功能的实现具有很大的相似性所以具体重复部分就不细说了,只讲模块的独特之处。
package com.yu.dao.student;
import com.yu.pojo.student;
import com.yu.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class login {
public student dao(student s){
Connection conn = DBUtil.getConnectDb();
String studentid=s.getStudentid();
String password=s.getPassword();
String sql = "select * from student where studentid='" + studentid + "' and password='" + password + "'";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
stu=new student();
stu.setStudentid(rs.getString("studentid"));
stu.setName(rs.getString("name"));
stu.setSex(rs.getString("sex"));
stu.setClas(rs.getString("class"));
stu.setDepartment(rs.getString("department"));
stu.setBirthday(rs.getString("birthday"));
stu.setNative_place(rs.getString("native_place"));
stu.setPassword(rs.getString("password"));
stu.setState(rs.getInt("state"));
stu.setLiuyan(rs.getString("liuyan"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
return stu;
}
public void xiugai(String string,String id){
Connection conn = DBUtil.getConnectDb();
String sql ="update student set liuyan='"+string+"' where studentid='"+id+"'";
PreparedStatement stm = null;
ResultSet rs = null;
try {
stm = conn.prepareStatement(sql);
stm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
}
}
学生主界面:
页面布局:对于页面布局这次使用的是BorderLayout布局,布局的北边是一个JLable输出欢迎来到学生管理系统,西面是登录这的姓名,这主要是通过形参调用getXXX方法,然后通过JLable.setText()设置的,其中加了一个小功能,就是该部分的南面是一个文本域JTextArea,在这部分用户可以记录一些东西并保存提醒自己,可下次登录查看。
页面的中心模块也就是主体模块,其他两部分主要是为了美观起填充作用,这部分主要是十个按钮,按钮上显示:查询学籍变更,申请学籍变更,查询奖励情况等,这是左边部分,右边部分是一个加在滚轮上的文本域用来显示查询到的信息,由于对于一个学生来说学籍变更,奖励,处罚,一般数量不大,所以就不带有查询功能。
对于滚轮面板的设置,通过下面语句设置:
jScrollPane=new JScrollPane(xianshikuang,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
);
第一个参数是加入滚轮面板的组件,第二个是支持垂直方向上的滚轮,第三个是不知此水平方向上的滚轮。另一重要的一点是,设置大小时,要设置滚轮的大小,而不要设置内部组建的大小。
jScrollPane.setPreferredSize(new Dimension(900,700));
对于不同的模块是用JPanel面板,可以设置其边框,让各模块区域分明。
Border border1=new LineBorder(Color.lightGray,2);
jPanel2.setBorder(border1);
接下来就是事件绑定啦,按钮较多,讲一个作为示范,其他均是相同的道理。
学籍变更情况按钮绑定事件:通过下面函数绑定事件
changes.addActionListener(new changes());
然后构造内部类:
public class changes implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
…
}
}
而其内部函数体就是调用访问数据库的函数,得到信息,通过组件名.setText()方法,把信息显示出来就实现了。
其他功能相近就不做赘述,只是在提交申请的时候记得把状态设置为未批准。
package com.yu.web.student;
import com.yu.dao.student.login;
import com.yu.pojo.student;
import com.yu.util.DBUtil;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class student_main extends JFrame{
JLabel title=new JLabel("欢迎来到学生管理系统");
JLabel huanying=new JLabel("");
JLabel jieshao=new JLabel("主要功能");
JButton changes=new JButton("学籍变更情况");
JButton changess=new JButton("学籍变更申请");
JButton reward=new JButton("奖励情况");
JButton rewardd=new JButton("奖励申请");
JButton punish=new JButton("处罚情况");
JButton student=new JButton("个人信息");
JButton studentt=new JButton("个人信息修改");
JButton studenttt=new JButton("修改密码");
JButton tuichu=new JButton("退出");
JButton gonggao=new JButton("公告");
JLabel changestext=new JLabel("学籍管理");
JLabel rewardtext=new JLabel("奖励管理");
JLabel punishtext=new JLabel("处罚管理");
JLabel studenttext=new JLabel("个人信息管理");
JLabel gonggaoText=new JLabel("公告管理");
JLabel tuichutext=new JLabel("退出");
JButton chongzhi=new JButton("重置");
JButton liuyan=new JButton("修改");
//用于保存当前页面的使用者信息
JLabel studentid=new JLabel("");
JLabel name=new JLabel("");
JLabel sex=new JLabel("");
JLabel clas=new JLabel("");
JLabel department=new JLabel("");
JLabel birthday=new JLabel("");
JLabel native_place=new JLabel("");
JLabel password=new JLabel("");
JTextArea tianchong=new JTextArea();
SpringLayout springLayout=new SpringLayout();
JPanel jPanel1=new JPanel();
JPanel jPanel2=new JPanel(springLayout);
JPanel jPanel3=new JPanel(springLayout);
JPanel jPanel4=new JPanel();
JScrollPane jScrollPane=new JScrollPane();
JTextArea xianshikuang=new JTextArea();
public student_main(){
}
public student_main(student s){
super("学生登录主页面");
JPanel root=new JPanel();
this.setContentPane(root);
BorderLayout borderLayout=new BorderLayout();
root.setLayout(borderLayout);
student stu=s;
huanying.setText(s.getName());
// 保存当前使用者信息
studentid.setText(s.getStudentid());
name.setText(s.getName());
sex.setText(s.getSex());
clas.setText(s.getClas());
department.setText(s.getDepartment());
birthday.setText(s.getDepartment());
native_place.setText(s.getNative_place());
password.setText(s.getPassword());
// 设置字体
title.setFont(new Font("华文行楷",Font.PLAIN,100));
huanying.setFont(new Font("华文行楷",Font.PLAIN,100));
jieshao.setFont(new Font("宋体",Font.PLAIN,35));
tianchong.setFont(new Font("楷体_GB2312",Font.PLAIN,20));
Font font1=new Font("楷体",Font.PLAIN,15);
Font font3=new Font("宋体",Font.PLAIN,20);
changes.setFont(font1);
changess.setFont(font1);
reward.setFont(font1);
rewardd.setFont(font1);
punish.setFont(font1);
student.setFont(font1);
studentt.setFont(font1);
studenttt.setFont(font1);
tuichu.setFont(font1);
gonggao.setFont(font1);
liuyan.setFont(font1);
chongzhi.setFont(font1);
changestext.setFont(font3);
rewardtext.setFont(font3);
punishtext.setFont(font3);
studenttext.setFont(font3);
tuichutext.setFont(font3);
gonggaoText.setFont(font3);
// 输入框设置大小
chongzhi.setPreferredSize(new Dimension(100,50));
liuyan.setPreferredSize(new Dimension(100,50));
huanying.setPreferredSize(new Dimension(500,200));
jPanel2.setPreferredSize(new Dimension(400,300));
jScrollPane.setPreferredSize(new Dimension(500,200));
tianchong.setPreferredSize(new Dimension(350,350));
Dimension di1=new Dimension(150,50);
changes.setPreferredSize(di1);
changess.setPreferredSize(di1);
reward.setPreferredSize(di1);
rewardd.setPreferredSize(di1);
punish.setPreferredSize(di1);
student.setPreferredSize(di1);
studentt.setPreferredSize(di1);
studenttt.setPreferredSize(di1);
tuichu.setPreferredSize(di1);
gonggao.setPreferredSize(di1);
// 文本域设置
tianchong.setForeground(Color.BLUE);
tianchong.setLineWrap(true);
tianchong.setText(s.getLiuyan());
xianshikuang.setLineWrap(true);
// 文本域
//
xianshikuang.setFont(new Font("楷体",Font.PLAIN,20));
//
jScrollPane=new JScrollPane(xianshikuang,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
);
jScrollPane.setPreferredSize(new Dimension(900,700));
jPanel1.add(title);
jPanel2.add(huanying);
jPanel2.add(tianchong);
jPanel2.add(liuyan);
jPanel2.add(chongzhi);
jPanel3.add(jieshao);
jPanel3.add(changes);
jPanel3.add(changess);
jPanel3.add(changestext);
jPanel3.add(reward);
jPanel3.add(rewardd);
jPanel3.add(rewardtext);
jPanel3.add(punish);
jPanel3.add(punishtext);
jPanel3.add(gonggao);
jPanel3.add(gonggaoText);
jPanel3.add(student);
jPanel3.add(studentt);
jPanel3.add(studenttt);
jPanel3.add(studenttext);
jPanel3.add(tuichu);
jPanel3.add(tuichutext);
jPanel3.add(jScrollPane);
// 定位组件
springLayout.putConstraint(SpringLayout.NORTH,jieshao,20,SpringLayout.NORTH,jPanel3);
springLayout.putConstraint(SpringLayout.WEST,jieshao,100,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,changes,100,SpringLayout.NORTH,jPanel3);
springLayout.putConstraint(SpringLayout.WEST,changes,200,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,changess,10,SpringLayout.SOUTH,changes);
springLayout.putConstraint(SpringLayout.WEST,changess,0,SpringLayout.WEST,changes);
springLayout.putConstraint(SpringLayout.NORTH,changestext,15,SpringLayout.NORTH,changes);
springLayout.putConstraint(SpringLayout.WEST,changestext,30,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,reward,80,SpringLayout.SOUTH,changes);
springLayout.putConstraint(SpringLayout.EAST,reward,0,SpringLayout.EAST,changes);
springLayout.putConstraint(SpringLayout.NORTH,rewardd,10,SpringLayout.SOUTH,reward);
springLayout.putConstraint(SpringLayout.WEST,rewardd,0,SpringLayout.WEST,reward);
springLayout.putConstraint(SpringLayout.NORTH,rewardtext,15,SpringLayout.SOUTH,reward);
springLayout.putConstraint(SpringLayout.WEST,rewardtext,30,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,punish,100,SpringLayout.SOUTH,reward);
springLayout.putConstraint(SpringLayout.EAST,punish,0,SpringLayout.EAST,changes);
springLayout.putConstraint(SpringLayout.NORTH,punishtext,15,SpringLayout.NORTH,punish);
springLayout.putConstraint(SpringLayout.WEST,punishtext,30,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,gonggao,50,SpringLayout.SOUTH,punish);
springLayout.putConstraint(SpringLayout.EAST,gonggao,0,SpringLayout.EAST,changes);
springLayout.putConstraint(SpringLayout.NORTH,gonggaoText,15,SpringLayout.NORTH,gonggao);
springLayout.putConstraint(SpringLayout.WEST,gonggaoText,30,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,student,50,SpringLayout.SOUTH,gonggao);
springLayout.putConstraint(SpringLayout.EAST,student,0,SpringLayout.EAST,changes);
springLayout.putConstraint(SpringLayout.NORTH,studentt,10,SpringLayout.SOUTH,student);
springLayout.putConstraint(SpringLayout.WEST,studentt,0,SpringLayout.WEST,student);
springLayout.putConstraint(SpringLayout.NORTH,studenttext,15,SpringLayout.SOUTH,student);
springLayout.putConstraint(SpringLayout.WEST,studenttext,30,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,studenttt,70,SpringLayout.SOUTH,student);
springLayout.putConstraint(SpringLayout.EAST,studenttt,0,SpringLayout.EAST,changes);
springLayout.putConstraint(SpringLayout.NORTH,tuichu,50,SpringLayout.SOUTH,studenttt);
springLayout.putConstraint(SpringLayout.WEST,tuichu,0,SpringLayout.WEST,studenttt);
springLayout.putConstraint(SpringLayout.NORTH,tuichutext,15,SpringLayout.NORTH,tuichu);
springLayout.putConstraint(SpringLayout.WEST,tuichutext,30,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,huanying,20,SpringLayout.NORTH,jPanel2);
springLayout.putConstraint(SpringLayout.WEST,huanying,50,SpringLayout.WEST,jPanel2);
springLayout.putConstraint(SpringLayout.NORTH,tianchong,300,SpringLayout.NORTH,jPanel2);
springLayout.putConstraint(SpringLayout.WEST,tianchong,25,SpringLayout.WEST,jPanel2);
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,20,SpringLayout.SOUTH,tianchong);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,50,SpringLayout.WEST,tianchong);
springLayout.putConstraint(SpringLayout.NORTH,liuyan,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,liuyan,20,SpringLayout.EAST,chongzhi);
springLayout.putConstraint(SpringLayout.NORTH,jScrollPane,100,SpringLayout.NORTH,jPanel3);
springLayout.putConstraint(SpringLayout.WEST,jScrollPane,100,SpringLayout.EAST,changes);
// 定义边框
Border border1=new LineBorder(Color.lightGray,2);
jPanel2.setBorder(border1);
jPanel1.setBorder(border1);
jScrollPane.setBorder(border1);
jPanel4.setBorder(border1);
root.add(jPanel1,BorderLayout.NORTH);
root.add(jPanel2,BorderLayout.WEST);
root.add(jPanel3,BorderLayout.CENTER);
root.add(jPanel4,BorderLayout.SOUTH);
// 监听事件
chongzhi.addActionListener(new chongzhi());
liuyan.addActionListener(new liuyan());
changes.addActionListener(new changes());
changess.addActionListener(new changess());
reward.addActionListener(new reward());
rewardd.addActionListener(new rewardd());
punish.addActionListener(new punish());
gonggao.addActionListener(new gonggao());
student.addActionListener(new stu());
studentt.addActionListener(new sst());
studenttt.addActionListener(new xiu());
tuichu.addActionListener(new tui());
// JButton tuichu=new JButton("退出");
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenSize.width,screenSize.height);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhi implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
tianchong.setText("");
}
}
public class liuyan implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String string=tianchong.getText();
String id=studentid.getText();
login login=new login();
login.xiugai(string,id);
}
}
public class changes implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String string="";
String id=studentid.getText();
Connection conn = DBUtil.getConnectDb();
String sql = "select states,id,student.name,change_code.description,rec_time,changes.description from changes,change_code,student where changes.studentid='"+id+"' and changes=change_code.code and changes.studentid=student.studentid";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
String pid=rs.getString("id");
String sname=rs.getString("student.name");
String ades=rs.getString("change_code.description");
String set=rs.getString("rec_time");
String chd=rs.getString("changes.description");
int state=rs.getInt("states");
if(state==1){
string=string+"编号:"+pid+"\n"+"姓名:"+sname+"\n"+"操作:"+ades+"\n"+"时间:"+set+"\n"+"描述:"+chd+"\n"+"状态:已批准"+"\n\n\n";
}else if(state==0){
string=string+"编号:"+pid+"\n"+"姓名:"+sname+"\n"+"操作:"+ades+"\n"+"时间:"+set+"\n"+"描述:"+chd+"\n"+"状态:未批准"+"\n\n\n";
}else if(state==2){
string=string+"编号:"+pid+"\n"+"姓名:"+sname+"\n"+"操作:"+ades+"\n"+"时间:"+set+"\n"+"描述:"+chd+"\n"+"状态:已驳回"+"\n\n\n";
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
xianshikuang.setText(string);
}
}
public class changess implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String st=studentid.getText();
new xuejishengqing(st);
}
}
public class reward implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String string="";
String id=studentid.getText();
Connection conn = DBUtil.getConnectDb();
String sql = "select id,student.name,rewaed_levels.description,rec_time,reward.description,states from reward,rewaed_levels,student where reward.studentid='"+id+"' and reward.levels=rewaed_levels.code and reward.studentid=student.studentid";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
String pid=rs.getString("id");
String sname=rs.getString("student.name");
String ades=rs.getString("rewaed_levels.description");
String set=rs.getString("rec_time");
String chd=rs.getString("reward.description");
int state=rs.getInt("states");
if(state==1){
string=string+"编号:"+pid+"\n"+"姓名:"+sname+"\n"+"奖励种类:"+ades+"\n"+"时间:"+set+"\n"+"描述:"+chd+"\n"+"状态:已批准"+"\n\n\n";
}else if(state==0){
string=string+"编号:"+pid+"\n"+"姓名:"+sname+"\n"+"奖励种类:"+ades+"\n"+"时间:"+set+"\n"+"描述:"+chd+"\n"+"状态:未批准"+"\n\n\n";
}if(state==2){
string=string+"编号:"+pid+"\n"+"姓名:"+sname+"\n"+"奖励种类:"+ades+"\n"+"时间:"+set+"\n"+"描述:"+chd+"\n"+"状态:已驳回"+"\n\n\n";
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
xianshikuang.setText(string);
}
}
public class rewardd implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String st=studentid.getText();
new shengqingreward(st);
}
}
public class punish implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String string="";
String id=studentid.getText();
Connection conn = DBUtil.getConnectDb();
String sql = "select id,student.name,punish_levels.description,rec_time,enable,punishment.description from punishment,punish_levels,student where punishment.studentid='"+id+"' and punishment.levels=punish_levels.code and punishment.studentid=student.studentid";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
String pid=rs.getString("id");
String sname=rs.getString("student.name");
String ades=rs.getString("punish_levels.description");
String set=rs.getString("rec_time");
String ena=rs.getString("enable");
String chd=rs.getString("punishment.description");
string=string+"编号:"+pid+"\n"+"姓名:"+sname+"\n"+"处罚种类:"+ades+"\n"+"时间:"+set+"\n"+"是否生效:"+ena+"\n"+"描述:"+chd+"\n"+"\n\n\n";
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
xianshikuang.setText(string);
}
}
public class gonggao implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String string="";
String id=studentid.getText();
Connection conn = DBUtil.getConnectDb();
String sql = "select id,time,person,context,studentid from students.notice where studentid='"+id+"' or studentid='000000'";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
String pid=rs.getString("id");
String time=rs.getString("time");
String person=rs.getString("person");
String context=rs.getString("context");
String st=rs.getString("studentid");
if("000000".equals(st)){
string=string+"编号:"+pid+"\n"+"发布时间:"+time+"\n"+"发布者:"+person+"\n"+"发布内容:"+context+"\n"+"发布对象:群发"+"\n\n\n";
}else{
string=string+"编号:"+pid+"\n"+"发布时间:"+time+"\n"+"发布者:"+person+"\n"+"发布内容:"+context+"\n"+"发布对象:私发"+"\n\n\n";
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
xianshikuang.setText(string);
}
}
public class stu implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String string="";
String id=studentid.getText();
Connection conn = DBUtil.getConnectDb();
String sql = "select studentid,student.name,sex,class.name,class.monitor,department.name,birthday,native_place from student,class,department where student.class=class.id and student.department=department.id and studentid='"+id+"'";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
String pid=rs.getString("studentid");
String name=rs.getString("student.name");
String sex=rs.getString("sex");
String clas=rs.getString("class.name");
String monito=rs.getString("class.monitor");
String department=rs.getString("department.name");
String birthday=rs.getString("birthday");
String native_place=rs.getString("native_place");
string=string+"学号:"+pid+"\n"+"姓名:"+name+"\n"+"性别:"+sex+"\n"+"班级:"+clas+"\n"+"班长:"+monito+"\n"+"院系:"+department+"\n"+"生日:"+birthday+"\n"+"户籍:"+native_place+"\n"+"\n\n\n";
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
xianshikuang.setText(string);
}
}
public class sst implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String st=studentid.getText();
new xiugaigerxinxi(st);
}
}
public class xiu implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String st=studentid.getText();
String paw=password.getText();
new xiugaimima(st,paw);
}
}
public class tui implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
public static void main(String[] args) {
student stu=new student("2005010523","周鑫钰","女","369412","312589","2002-06-28","湖南省娄底市","123456",0," 开发者有话讲" +"\n"+" 此系统只能满足基本的查看功能,不能够供用户过多的操作,也就能修改个人的信息,用户嘛,权限自然没有管理员高喽,所以想要获得更多权限,自然是努力打怪升级喽,来在这里留句话激励一下自己,字数填充起来不好看看啊,我再多说两句吧,这功能纯属是面板看起来太空了,,以及我高超的技术,增加个小功能罢了,嘿嘿,嘻嘻,哈哈,我就是这么狂!你有什么不满吗?");
new student_main(stu);
}
}
奖励申请代码:
package com.yu.web.student;
import com.yu.pojo.student;
import com.yu.util.DBUtil;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class shengqingreward extends JFrame {
JLabel biaodan=new JLabel("奖学金申请表单");
JLabel cao=new JLabel("奖学金等级:");
JComboBox<String> caozuo=new JComboBox<>();
JLabel miaoshi=new JLabel("描述:");
JTextArea miaoshutext=new JTextArea();
JButton chongzhi=new JButton("重置");
JButton tijiao=new JButton("提交");
JButton string=new JButton("");
SpringLayout springLayout=new SpringLayout();
public shengqingreward(String id){
super("奖学金申请表单");
string.setText(id);
Container contentPane=getContentPane();
biaodan.setFont(new Font("楷体",Font.PLAIN,25));
caozuo.addItem("校特等奖学金");
caozuo.addItem("校一等奖学金");
caozuo.addItem("校二等奖学金");
caozuo.addItem("校三等奖学金");
caozuo.addItem("系一等奖学金");
caozuo.addItem("系二等奖学金");
caozuo.addItem("系三等奖学金");
caozuo.setSelectedIndex(0);
String cc=caozuo.getSelectedItem().toString().trim();
springLayout.putConstraint(SpringLayout.NORTH,biaodan,20,SpringLayout.NORTH,contentPane);
springLayout.putConstraint(SpringLayout.WEST,biaodan,200,SpringLayout.WEST,contentPane);
cao.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,cao,50,SpringLayout.NORTH,biaodan);
springLayout.putConstraint(SpringLayout.WEST,cao,100,SpringLayout.WEST,contentPane);
caozuo.setFont(new Font("楷体",Font.PLAIN,20));
caozuo.setPreferredSize(new Dimension(200,25));
springLayout.putConstraint(SpringLayout.NORTH,caozuo,0,SpringLayout.NORTH,cao);
springLayout.putConstraint(SpringLayout.WEST,caozuo,20,SpringLayout.EAST,cao);
miaoshi.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,miaoshi,20,SpringLayout.SOUTH,cao);
springLayout.putConstraint(SpringLayout.WEST,miaoshi,0,SpringLayout.WEST,cao);
miaoshutext.setFont(new Font("楷体",Font.PLAIN,20));
miaoshutext.setPreferredSize(new Dimension(350,150));
miaoshutext.setLineWrap(true);
springLayout.putConstraint(SpringLayout.NORTH,miaoshutext,0,SpringLayout.NORTH,miaoshi);
springLayout.putConstraint(SpringLayout.WEST,miaoshutext,20,SpringLayout.EAST,miaoshi);
Border border1=new LineBorder(Color.lightGray,2);
miaoshutext.setBorder(border1);
chongzhi.setFont(new Font("楷体",Font.PLAIN,20));
tijiao.setFont(new Font("楷体",Font.PLAIN,20));
chongzhi.setPreferredSize(new Dimension(80,30));
tijiao.setPreferredSize(new Dimension(80,30));
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,20,SpringLayout.SOUTH,miaoshutext);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,200,SpringLayout.WEST,contentPane);
springLayout.putConstraint(SpringLayout.NORTH,tijiao,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,tijiao,50,SpringLayout.EAST,chongzhi);
chongzhi.addActionListener(new chongzhi());
tijiao.addActionListener(new tijiao());
contentPane.setLayout(springLayout);
contentPane.add(biaodan);
contentPane.add(cao);
contentPane.add(caozuo);
contentPane.add(miaoshi);
contentPane.add(miaoshutext);
contentPane.add(chongzhi);
contentPane.add(tijiao);
setSize(600,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhi implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
miaoshutext.setText("");
}
}
public class tijiao implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String xue=string.getText();
String cc=caozuo.getSelectedItem().toString().trim();
int chan=0;
if("校特等奖学金".equals(cc)){
chan=0;
}else if("校一等奖学金".equals(cc)){
chan=1;
}else if("校二等奖学金".equals(cc)){
chan=2;
}else if("校三等奖学金".equals(cc)){
chan=3;
}else if("系一等奖学金".equals(cc)){
chan=4;
}else if("系二等奖学金".equals(cc)){
chan=5;
}else if("系三等奖学金".equals(cc)){
chan=6;
}
int xu=1;
Connection conn = DBUtil.getConnectDb();
String sql1="select *from reward";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql1);
rs = stm.executeQuery();
while(rs.next()){
if(rs.getInt(1)>xu)
xu=rs.getInt(1);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
xu=xu+1;
Connection connn = DBUtil.getConnectDb();
SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd");
String time= sdf.format(new Date());
String miao=miaoshutext.getText();
String sql = "insert into reward(id,studentid,levels,rec_time,description,states) values(?,?,?,?,?,?)";
PreparedStatement stms = null;
try {
stms = connn.prepareStatement(sql);
stms.setString(1, String.valueOf(xu));
stms.setString(2, xue);
stms.setInt(3, chan);
stms.setString(4, time);
stms.setString(5, miao);
stms.setInt(6, 0);
stms.executeUpdate();
} catch (SQLException ee) {
ee.printStackTrace();
}finally {
DBUtil.CloseDB(rs,stms, conn);
}
miaoshutext.setText("");
caozuo.setSelectedIndex(0);
}
}
public static void main(String[] args) {
new xuejishengqing("255");
}
}
个人信息修改:
package com.yu.web.student;
import com.yu.util.DBUtil;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class xiugaigerxinxi extends JFrame {
JLabel biaodan=new JLabel("修改个人信息");
JLabel cao=new JLabel("生日:");
JTextField caotext=new JTextField();
JLabel miaoshi=new JLabel("户籍:");
JTextField miaoshutext=new JTextField();
JButton chongzhi=new JButton("重置");
JButton tijiao=new JButton("提交");
JButton string=new JButton("");
SpringLayout springLayout=new SpringLayout();
public xiugaigerxinxi(String id){
super("修改个人信息");
string.setText(id);
Container contentPane=getContentPane();
biaodan.setFont(new Font("楷体",Font.PLAIN,25));
springLayout.putConstraint(SpringLayout.NORTH,biaodan,20,SpringLayout.NORTH,contentPane);
springLayout.putConstraint(SpringLayout.WEST,biaodan,200,SpringLayout.WEST,contentPane);
cao.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,cao,50,SpringLayout.NORTH,biaodan);
springLayout.putConstraint(SpringLayout.WEST,cao,100,SpringLayout.WEST,contentPane);
caotext.setFont(new Font("楷体",Font.PLAIN,20));
caotext.setPreferredSize(new Dimension(200,25));
springLayout.putConstraint(SpringLayout.NORTH,caotext,0,SpringLayout.NORTH,cao);
springLayout.putConstraint(SpringLayout.WEST,caotext,20,SpringLayout.EAST,cao);
miaoshi.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,miaoshi,20,SpringLayout.SOUTH,cao);
springLayout.putConstraint(SpringLayout.WEST,miaoshi,0,SpringLayout.WEST,cao);
miaoshutext.setFont(new Font("楷体",Font.PLAIN,20));
miaoshutext.setPreferredSize(new Dimension(200,25));
springLayout.putConstraint(SpringLayout.NORTH,miaoshutext,0,SpringLayout.NORTH,miaoshi);
springLayout.putConstraint(SpringLayout.WEST,miaoshutext,20,SpringLayout.EAST,miaoshi);
Border border1=new LineBorder(Color.lightGray,2);
miaoshutext.setBorder(border1);
chongzhi.setFont(new Font("楷体",Font.PLAIN,20));
tijiao.setFont(new Font("楷体",Font.PLAIN,20));
chongzhi.setPreferredSize(new Dimension(80,30));
tijiao.setPreferredSize(new Dimension(80,30));
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,20,SpringLayout.SOUTH,miaoshutext);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,150,SpringLayout.WEST,contentPane);
springLayout.putConstraint(SpringLayout.NORTH,tijiao,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,tijiao,50,SpringLayout.EAST,chongzhi);
chongzhi.addActionListener(new chongzhi());
tijiao.addActionListener(new tijiao());
contentPane.setLayout(springLayout);
contentPane.add(biaodan);
contentPane.add(cao);
contentPane.add(caotext);
contentPane.add(miaoshi);
contentPane.add(miaoshutext);
contentPane.add(chongzhi);
contentPane.add(tijiao);
setSize(600,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhi implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
caotext.setText("");
miaoshutext.setText("");
}
}
public class tijiao implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String xue=string.getText();
String bir=caotext.getText();
String hu=miaoshutext.getText();
Connection connn = DBUtil.getConnectDb();
String sql = "update student set birthday='"+bir+"',native_place='"+hu+"' where studentid='"+xue+"'";
PreparedStatement stms = null;
ResultSet rs = null;
try {
stms = connn.prepareStatement(sql);
stms.executeUpdate();
} catch (SQLException ee) {
ee.printStackTrace();
}finally {
DBUtil.CloseDB(rs,stms, connn);
}
caotext.setText("");
miaoshutext.setText("");
}
}
public static void main(String[] args) {
new xiugaigerxinxi("255");
}
}
修改密码:
package com.yu.web.student;
import com.yu.util.DBUtil;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class xiugaimima extends JFrame {
JLabel biaodan=new JLabel("修改密码");
JLabel cao=new JLabel("请输入原密码:");
JPasswordField caotext=new JPasswordField();
JLabel miaoshi=new JLabel("再次输入原密码:");
JPasswordField miaoshutext=new JPasswordField();
JLabel caoo=new JLabel("请输入新密码:");
JPasswordField caotextt=new JPasswordField();
JButton chongzhi=new JButton("重置");
JButton tijiao=new JButton("提交");
JLabel tishi=new JLabel("");
JLabel passw=new JLabel("");
JButton string=new JButton("");
SpringLayout springLayout=new SpringLayout();
public xiugaimima(String id, String paw){
super("修改密码");
string.setText(id);
passw.setText(paw);
Container contentPane=getContentPane();
biaodan.setFont(new Font("楷体",Font.PLAIN,25));
springLayout.putConstraint(SpringLayout.NORTH,biaodan,20,SpringLayout.NORTH,contentPane);
springLayout.putConstraint(SpringLayout.WEST,biaodan,200,SpringLayout.WEST,contentPane);
cao.setFont(new Font("楷体",Font.PLAIN,20));
caoo.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,cao,50,SpringLayout.NORTH,biaodan);
springLayout.putConstraint(SpringLayout.WEST,cao,100,SpringLayout.WEST,contentPane);
caotext.setFont(new Font("楷体",Font.PLAIN,20));
caotextt.setFont(new Font("楷体",Font.PLAIN,20));
caotext.setPreferredSize(new Dimension(200,25));
caotextt.setPreferredSize(new Dimension(200,25));
springLayout.putConstraint(SpringLayout.NORTH,caotext,0,SpringLayout.NORTH,cao);
springLayout.putConstraint(SpringLayout.WEST,caotext,20,SpringLayout.EAST,cao);
miaoshi.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,miaoshi,20,SpringLayout.SOUTH,cao);
springLayout.putConstraint(SpringLayout.WEST,miaoshi,0,SpringLayout.WEST,cao);
miaoshutext.setFont(new Font("楷体",Font.PLAIN,20));
miaoshutext.setPreferredSize(new Dimension(200,25));
springLayout.putConstraint(SpringLayout.NORTH,miaoshutext,0,SpringLayout.NORTH,miaoshi);
springLayout.putConstraint(SpringLayout.WEST,miaoshutext,20,SpringLayout.EAST,miaoshi);
springLayout.putConstraint(SpringLayout.NORTH,caoo,20,SpringLayout.SOUTH,miaoshi);
springLayout.putConstraint(SpringLayout.WEST,caoo,0,SpringLayout.WEST,miaoshi);
springLayout.putConstraint(SpringLayout.NORTH,caotextt,0,SpringLayout.NORTH,caoo);
springLayout.putConstraint(SpringLayout.WEST,caotextt,20,SpringLayout.EAST,caoo);
chongzhi.setFont(new Font("楷体",Font.PLAIN,20));
tijiao.setFont(new Font("楷体",Font.PLAIN,20));
tishi.setFont(new Font("楷体",Font.PLAIN,20));
chongzhi.setPreferredSize(new Dimension(80,30));
tijiao.setPreferredSize(new Dimension(80,30));
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,20,SpringLayout.SOUTH,caotextt);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,150,SpringLayout.WEST,contentPane);
springLayout.putConstraint(SpringLayout.NORTH,tijiao,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,tijiao,50,SpringLayout.EAST,chongzhi);
springLayout.putConstraint(SpringLayout.NORTH,tishi,10,SpringLayout.SOUTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,tishi,0,SpringLayout.WEST,chongzhi);
tishi.setForeground(Color.RED);
chongzhi.addActionListener(new chongzhi());
tijiao.addActionListener(new tijiao());
contentPane.setLayout(springLayout);
contentPane.add(biaodan);
contentPane.add(cao);
contentPane.add(caotext);
contentPane.add(caoo);
contentPane.add(caotextt);
contentPane.add(miaoshi);
contentPane.add(miaoshutext);
contentPane.add(chongzhi);
contentPane.add(tijiao);
contentPane.add(tishi);
setSize(600,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhi implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
caotext.setText("");
miaoshutext.setText("");
caotextt.setText("");
}
}
public class tijiao implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String xue=string.getText();
String password=passw.getText();
String yuan=caotext.getText();
String hou=caotextt.getText();
String zyuan=miaoshutext.getText();
if(yuan.length()==0||zyuan.length()==0||hou.length()==0){
tishi.setText("原密码或新密码为空,请重新填写");
caotext.setText("");
miaoshutext.setText("");
caotextt.setText("");
}else if(!yuan.equals(zyuan)){
tishi.setText("两次输入的原密码不一致,请重新填写");
caotext.setText("");
miaoshutext.setText("");
caotextt.setText("");
}else if(!password.equals(yuan)){
tishi.setText("原密码输入错误");
caotext.setText("");
miaoshutext.setText("");
caotextt.setText("");
}else{
Connection connn = DBUtil.getConnectDb();
String sql = "update student set password='"+hou+"' where studentid='"+xue+"'";
PreparedStatement stms = null;
ResultSet rs = null;
try {
stms = connn.prepareStatement(sql);
stms.executeUpdate();
} catch (SQLException ee) {
ee.printStackTrace();
}finally {
DBUtil.CloseDB(rs,stms, connn);
}
caotext.setText("");
miaoshutext.setText("");
caotextt.setText("");
tishi.setText("");
}
//
}
}
public static void main(String[] args) {
new xiugaimima("255","123456");
}
}
学籍申请
package com.yu.web.student;
import com.yu.pojo.student;
import com.yu.util.DBUtil;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class xuejishengqing extends JFrame {
JLabel biaodan=new JLabel("学籍管理申请表单");
JLabel cao=new JLabel("操作:");
JComboBox<String> caozuo=new JComboBox<>();
JLabel miaoshi=new JLabel("描述:");
JTextArea miaoshutext=new JTextArea();
JButton chongzhi=new JButton("重置");
JButton tijiao=new JButton("提交");
JButton string=new JButton("");
SpringLayout springLayout=new SpringLayout();
public xuejishengqing(String id){
super("学籍管理申请表单");
string.setText(id);
Container contentPane=getContentPane();
biaodan.setFont(new Font("楷体",Font.PLAIN,25));
caozuo.addItem("转系");
caozuo.addItem("休学");
caozuo.addItem("复学");
caozuo.addItem("退学");
caozuo.addItem("毕业");
caozuo.setSelectedIndex(0);
String cc=caozuo.getSelectedItem().toString().trim();
springLayout.putConstraint(SpringLayout.NORTH,biaodan,20,SpringLayout.NORTH,contentPane);
springLayout.putConstraint(SpringLayout.WEST,biaodan,200,SpringLayout.WEST,contentPane);
cao.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,cao,50,SpringLayout.NORTH,biaodan);
springLayout.putConstraint(SpringLayout.WEST,cao,100,SpringLayout.WEST,contentPane);
caozuo.setFont(new Font("楷体",Font.PLAIN,20));
caozuo.setPreferredSize(new Dimension(200,25));
springLayout.putConstraint(SpringLayout.NORTH,caozuo,0,SpringLayout.NORTH,cao);
springLayout.putConstraint(SpringLayout.WEST,caozuo,20,SpringLayout.EAST,cao);
miaoshi.setFont(new Font("楷体",Font.PLAIN,20));
springLayout.putConstraint(SpringLayout.NORTH,miaoshi,20,SpringLayout.SOUTH,cao);
springLayout.putConstraint(SpringLayout.WEST,miaoshi,0,SpringLayout.WEST,cao);
miaoshutext.setFont(new Font("楷体",Font.PLAIN,20));
miaoshutext.setPreferredSize(new Dimension(350,150));
miaoshutext.setLineWrap(true);
springLayout.putConstraint(SpringLayout.NORTH,miaoshutext,0,SpringLayout.NORTH,miaoshi);
springLayout.putConstraint(SpringLayout.WEST,miaoshutext,20,SpringLayout.EAST,miaoshi);
Border border1=new LineBorder(Color.lightGray,2);
miaoshutext.setBorder(border1);
chongzhi.setFont(new Font("楷体",Font.PLAIN,20));
tijiao.setFont(new Font("楷体",Font.PLAIN,20));
chongzhi.setPreferredSize(new Dimension(80,30));
tijiao.setPreferredSize(new Dimension(80,30));
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,20,SpringLayout.SOUTH,miaoshutext);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,200,SpringLayout.WEST,contentPane);
springLayout.putConstraint(SpringLayout.NORTH,tijiao,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,tijiao,50,SpringLayout.EAST,chongzhi);
chongzhi.addActionListener(new chongzhi());
tijiao.addActionListener(new tijiao());
contentPane.setLayout(springLayout);
contentPane.add(biaodan);
contentPane.add(cao);
contentPane.add(caozuo);
contentPane.add(miaoshi);
contentPane.add(miaoshutext);
contentPane.add(chongzhi);
contentPane.add(tijiao);
setSize(600,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhi implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
miaoshutext.setText("");
}
}
public class tijiao implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String xue=string.getText();
String cc=caozuo.getSelectedItem().toString().trim();
int chan=0;
if("转系".equals(cc)){
chan=0;
}else if("休学".equals(cc)){
chan=1;
}else if("复学".equals(cc)){
chan=2;
}else if("退学".equals(cc)){
chan=3;
}else if("毕业".equals(cc)){
chan=4;
}
int xu=1;
Connection conn = DBUtil.getConnectDb();
String sql1="select *from changes";
PreparedStatement stm = null;
ResultSet rs = null;
student stu=null;
try {
stm = conn.prepareStatement(sql1);
rs = stm.executeQuery();
while(rs.next()){
if(rs.getInt(1)>xu)
xu=rs.getInt(1);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
xu=xu+1;
Connection connn = DBUtil.getConnectDb();
SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd");
String time= sdf.format(new Date());
String miao=miaoshutext.getText();
String sql = "insert into changes(id,studentid,changes,rec_time,description,states) values(?,?,?,?,?,?)";
PreparedStatement stms = null;
try {
stms = connn.prepareStatement(sql);
stms.setString(1, String.valueOf(xu));
stms.setString(2, xue);
stms.setInt(3, chan);
stms.setString(4, time);
stms.setString(5, miao);
stms.setInt(6, 0);
stms.executeUpdate();
} catch (SQLException ee) {
ee.printStackTrace();
}finally {
DBUtil.CloseDB(rs,stms, conn);
}
miaoshutext.setText("");
caozuo.setSelectedIndex(0);
}
}
public static void main(String[] args) {
new xuejishengqing("255");
}
}
管理员主界面:
对于管理员主界面也是分三模块,只有中心模块不一样,因为显示所以学生的信息,所以在显示具体内容的时候需要打开一个新的页面,所以对于主页面只用来显示功能,所以为了美观,我对于中间面板JPanel的布局采用了FlowLayout布局,这样在其内部添加六个同样大小的JPanel面板,就可以均匀的充满中间模块。
对于每个小的JPanel面板,采用SpringLayout布局,其中组件只有一个按钮,和一个文本域,文本域主要是介绍按钮的功能,主要是填充面板是页面让人看起来美观大气。
六个按钮:学生管理、学籍管理、奖励管理、处罚管理、公告管理、个人信息管理,对应了管理员的六个功能,由于各功能的实现具有相似性,所以只讲其中一个。
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import com.yu.web.admin.chufaguanli.chufaguanli;
import com.yu.web.admin.gerenxinxiguanli.gerenxinxiguanli;
import com.yu.web.admin.gonggaoguanli.gonggaoguanli;
import com.yu.web.admin.jiangliguanli.jiangliguanli;
import com.yu.web.admin.xuejiguanli.xuejiguanli;
import com.yu.web.admin.xueshengguanli.xueshengguanli;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class admin_main extends JFrame{
JLabel title=new JLabel("欢迎来到学生管理系统");
JLabel huanying=new JLabel("");
JLabel jieshao=new JLabel("主要功能");
JButton xuesheng=new JButton("学生管理");
JButton changes=new JButton("学籍管理");
JButton reward=new JButton("奖励管理");
JButton punish=new JButton("处罚管理");
JButton student=new JButton("个人信息");
JButton gonggao=new JButton("公告管理");
JTextArea xueshengtext=new JTextArea(" 功能介绍"+"\n"+"查询:可以查看所以学生信息,也可查看查询学生信息."+"\n"+"增加:增加学生,主要是新生入校,需要设置学生的主要信息."+"\n"+"修改:可以修改学生的主要信息,主要用于转班,转系."+"\n"+"删除:删除学生,主要用于错误操作.");
JTextArea changestext=new JTextArea(" 功能介绍"+"\n"+"查询:可以查看已经处理过的,也可以看学生新申请的."+"\n"+"增加:主要是管理学生的转系,休学,复学,退学,毕业."+"\n"+"修改:修改学籍管理记录,主要是同意学生的申请后修改说明."+"\n"+"删除:删除学籍管理记录,主要用于错误操作.");
JTextArea rewardtext=new JTextArea(" 功能介绍"+"\n"+"查询:可以查看已经处理过的,也可以看新申请的"+"\n"+"增加:主要是管理学生的奖学金评选,有校特等奖学金,校一等奖学金,校二等奖学金,校三等奖学金,系一等奖学金,系二等奖学金,系三等奖学金."+"\n"+"修改:修改奖励管理记录,主要是同意学生的申请后修改说明."+"\n"+"删除:删除奖励管理记录,主要用于错误操作.");
JTextArea punishtext=new JTextArea(" 功能介绍"+"\n"+"查询:可以查看也发布的处罚,也可根据学号查询具体学生的处罚"+"\n"+"增加:主要是对违规学生进行处罚,尤其是期末考试的时候."+"\n"+"修改:修改处罚的状态,主要有两个状态,生效,未生效."+"\n"+"删除:删除处罚管理记录,主要用于错误操作或者撤销了处罚.");
JTextArea studenttext=new JTextArea(" 功能介绍"+"\n"+"查询:可以查看管理员自己个人的基本信息,用户名,院系之类"+"\n"+"修改个人信息:管理员可以对除学号外进行修改,因为学号是主键,其他某些外键的属性也需满足约束."+"\n"+"修改密码:管理员输入两次正确原密码后可以修改密码."+"\n"+"退出:主要是安全退出整个系统.");
JTextArea gonggaoText=new JTextArea(" 功能介绍"+"\n"+"查询:可以查看已经发布过的公告"+"\n"+"增加:用于发布公告,可以群发,也可以私发给某个学生,特别注意:群发将发送对象的id设置为000000,而私发则设置为指定学生学号"+"\n"+"修改:修改公告,主要是修改公告的内容."+"\n"+"删除:删除公告,主要是处理时间久远的公告,或者删除私发给学生的公告.");
JButton chongzhi=new JButton("重置");
JButton liuyan=new JButton("修改");
//用于保存当前页面的使用者信息
JLabel studentid=new JLabel("");
JLabel name=new JLabel("");
JLabel sex=new JLabel("");
JLabel clas=new JLabel("");
JLabel department=new JLabel("");
JLabel birthday=new JLabel("");
JLabel native_place=new JLabel("");
JLabel password=new JLabel("");
JTextArea tianchong=new JTextArea();
SpringLayout springLayout=new SpringLayout();
JPanel jPanel1=new JPanel();
JPanel jPanel2=new JPanel(springLayout);
JPanel jPanel3=new JPanel(new FlowLayout());
JPanel jPanel4=new JPanel();
JPanel jPanel5=new JPanel(springLayout);
JPanel jPanel6=new JPanel(springLayout);
JPanel jPanel7=new JPanel(springLayout);
JPanel jPanel8=new JPanel(springLayout);
JPanel jPanel9=new JPanel(springLayout);
JPanel jPanel10=new JPanel(springLayout);
public admin_main(){
}
public admin_main(student s){
super("管理员登录主页面");
JPanel root=new JPanel();
this.setContentPane(root);
BorderLayout borderLayout=new BorderLayout();
root.setLayout(borderLayout);
student stu=s;
huanying.setText(s.getName());
// 保存当前使用者信息
studentid.setText(s.getStudentid());
name.setText(s.getName());
sex.setText(s.getSex());
clas.setText(s.getClas());
department.setText(s.getDepartment());
birthday.setText(s.getBirthday());
native_place.setText(s.getNative_place());
password.setText(s.getPassword());
// 设置字体
title.setFont(new Font("华文行楷",Font.PLAIN,100));
huanying.setFont(new Font("华文行楷",Font.PLAIN,100));
jieshao.setFont(new Font("宋体",Font.PLAIN,35));
tianchong.setFont(new Font("楷体_GB2312",Font.PLAIN,20));
Font font1=new Font("楷体",Font.PLAIN,20);
Font font3=new Font("华文楷体",Font.PLAIN,20);
changes.setFont(font1);
reward.setFont(font1);
punish.setFont(font1);
student.setFont(font1);
gonggao.setFont(font1);
xuesheng.setFont(font1);
liuyan.setFont(font1);
chongzhi.setFont(font1);
xuesheng.setFont(font1);
xueshengtext.setFont(font3);
changestext.setFont(font3);
rewardtext.setFont(font3);
punishtext.setFont(font3);
studenttext.setFont(font3);
gonggaoText.setFont(font3);
xueshengtext.setFont(font3);
// 输入框设置大小
chongzhi.setPreferredSize(new Dimension(100,50));
liuyan.setPreferredSize(new Dimension(100,50));
huanying.setPreferredSize(new Dimension(500,200));
jPanel2.setPreferredSize(new Dimension(400,300));
tianchong.setPreferredSize(new Dimension(350,350));
Dimension di1=new Dimension(150,50);
Dimension di2=new Dimension(470,420);
Dimension di3=new Dimension(410,250);
changes.setPreferredSize(di1);
reward.setPreferredSize(di1);
punish.setPreferredSize(di1);
student.setPreferredSize(di1);
gonggao.setPreferredSize(di1);
xuesheng.setPreferredSize(di1);
jPanel5.setPreferredSize(di2);
jPanel6.setPreferredSize(di2);
jPanel7.setPreferredSize(di2);
jPanel8.setPreferredSize(di2);
jPanel9.setPreferredSize(di2);
jPanel10.setPreferredSize(di2);
changestext.setPreferredSize(di3);
rewardtext.setPreferredSize(di3);
punishtext.setPreferredSize(di3);
studenttext.setPreferredSize(di3);
gonggaoText.setPreferredSize(di3);
xueshengtext.setPreferredSize(di3);
// 文本域设置
xueshengtext.setLineWrap(true);
changestext.setLineWrap(true);
rewardtext.setLineWrap(true);
punishtext.setLineWrap(true);
gonggaoText.setLineWrap(true);
studenttext.setLineWrap(true);
tianchong.setForeground(Color.BLUE);
tianchong.setLineWrap(true);
tianchong.setText(s.getLiuyan());
jPanel1.add(title);
jPanel2.add(huanying);
jPanel2.add(tianchong);
jPanel2.add(liuyan);
jPanel2.add(chongzhi);
jPanel3.add(jPanel5);
jPanel3.add(jPanel6);
jPanel3.add(jPanel7);
jPanel3.add(jPanel8);
jPanel3.add(jPanel9);
jPanel3.add(jPanel10);
jPanel5.add(xuesheng);
jPanel5.add(xueshengtext);
jPanel6.add(changes);
jPanel6.add(changestext);
jPanel7.add(reward);
jPanel7.add(rewardtext);
jPanel8.add(punish);
jPanel8.add(punishtext);
jPanel9.add(gonggao);
jPanel9.add(gonggaoText);
jPanel10.add(student);
jPanel10.add(studenttext);
// 定位组件
springLayout.putConstraint(SpringLayout.NORTH,jieshao,20,SpringLayout.NORTH,jPanel3);
springLayout.putConstraint(SpringLayout.WEST,jieshao,100,SpringLayout.WEST,jPanel3);
springLayout.putConstraint(SpringLayout.NORTH,xuesheng,50,SpringLayout.NORTH,jPanel5);
springLayout.putConstraint(SpringLayout.WEST,xuesheng,150,SpringLayout.WEST,jPanel5);
springLayout.putConstraint(SpringLayout.NORTH,xueshengtext,20,SpringLayout.SOUTH,xuesheng);
springLayout.putConstraint(SpringLayout.WEST,xueshengtext,30,SpringLayout.WEST,jPanel5);
springLayout.putConstraint(SpringLayout.NORTH,changes,50,SpringLayout.NORTH,jPanel6);
springLayout.putConstraint(SpringLayout.WEST,changes,150,SpringLayout.WEST,jPanel6);
springLayout.putConstraint(SpringLayout.NORTH,changestext,20,SpringLayout.SOUTH,changes);
springLayout.putConstraint(SpringLayout.WEST,changestext,30,SpringLayout.WEST,jPanel6);
springLayout.putConstraint(SpringLayout.NORTH,reward,50,SpringLayout.NORTH,jPanel7);
springLayout.putConstraint(SpringLayout.WEST,reward,150,SpringLayout.WEST,jPanel7);
springLayout.putConstraint(SpringLayout.NORTH,rewardtext,20,SpringLayout.SOUTH,reward);
springLayout.putConstraint(SpringLayout.WEST,rewardtext,30,SpringLayout.WEST,jPanel7);
springLayout.putConstraint(SpringLayout.NORTH,punish,50,SpringLayout.NORTH,jPanel8);
springLayout.putConstraint(SpringLayout.WEST,punish,150,SpringLayout.WEST,jPanel8);
springLayout.putConstraint(SpringLayout.NORTH,punishtext,20,SpringLayout.SOUTH,punish);
springLayout.putConstraint(SpringLayout.WEST,punishtext,30,SpringLayout.WEST,jPanel8);
springLayout.putConstraint(SpringLayout.NORTH,gonggao,50,SpringLayout.NORTH,jPanel9);
springLayout.putConstraint(SpringLayout.WEST,gonggao,150,SpringLayout.WEST,jPanel9);
springLayout.putConstraint(SpringLayout.NORTH,gonggaoText,20,SpringLayout.SOUTH,gonggao);
springLayout.putConstraint(SpringLayout.WEST,gonggaoText,30,SpringLayout.WEST,jPanel9);
springLayout.putConstraint(SpringLayout.NORTH,student,50,SpringLayout.NORTH,jPanel10);
springLayout.putConstraint(SpringLayout.WEST,student,150,SpringLayout.WEST,jPanel10);
springLayout.putConstraint(SpringLayout.NORTH,studenttext,20,SpringLayout.SOUTH,student);
springLayout.putConstraint(SpringLayout.WEST,studenttext,30,SpringLayout.WEST,jPanel10);
springLayout.putConstraint(SpringLayout.NORTH,huanying,20,SpringLayout.NORTH,jPanel2);
springLayout.putConstraint(SpringLayout.WEST,huanying,50,SpringLayout.WEST,jPanel2);
springLayout.putConstraint(SpringLayout.NORTH,tianchong,300,SpringLayout.NORTH,jPanel2);
springLayout.putConstraint(SpringLayout.WEST,tianchong,25,SpringLayout.WEST,jPanel2);
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,20,SpringLayout.SOUTH,tianchong);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,50,SpringLayout.WEST,tianchong);
springLayout.putConstraint(SpringLayout.NORTH,liuyan,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,liuyan,20,SpringLayout.EAST,chongzhi);
// jPanel6.setBorder(border1); 定义边框
Border border1=new LineBorder(Color.lightGray,2);
jPanel1.setBorder(border1);
jPanel2.setBorder(border1);
jPanel4.setBorder(border1);
jPanel5.setBorder(border1);
jPanel6.setBorder(border1);
jPanel7.setBorder(border1);
jPanel8.setBorder(border1);
jPanel9.setBorder(border1);
jPanel10.setBorder(border1);
root.add(jPanel1,BorderLayout.NORTH);
root.add(jPanel2,BorderLayout.WEST);
root.add(jPanel3,BorderLayout.CENTER);
root.add(jPanel4,BorderLayout.SOUTH);
// 监听事件
chongzhi.addActionListener(new chongzhi());
liuyan.addActionListener(new liuyan());
xuesheng.addActionListener(new xueshengg());
changes.addActionListener(new changesListener());
reward.addActionListener(new jiangliListener());
punish.addActionListener(new chufaListener());
gonggao.addActionListener(new gonggaoListener());
student.addActionListener(new studentListener());
// JButton student=new JButton("个人信息");
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenSize.width,screenSize.height);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhi implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
tianchong.setText("");
}
}
public class liuyan implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String string=tianchong.getText();
String id=studentid.getText();
login login=new login();
login.xiugai(string,id);
}
}
public class xueshengg implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new xueshengguanli();
}
}
public class changesListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new xuejiguanli();
}
}
public class jiangliListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new jiangliguanli();
}
}
public class chufaListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new chufaguanli();
}
}
public class gonggaoListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new gonggaoguanli();
}
}
public class studentListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new gerenxinxiguanli(studentid.getText());
}
}
public static void main(String[] args) {
student stu=new student("admin","管理员","男","","312000","1995-08-08","湖南省湘潭市","123456",1,"亲爱的管理员同志:\n" +
" 您好,管理员,管理员自然是要来管理的,但是您管理的不是这个系统,毕竟您的功能也是这个系统设定的,也不是管理数据库,那是数据库管理员的事,您需要管理的是学生,主要的负责对象是学生,也就只是学生信息的基本操作啦,但是需要特别提醒你的一点是,在你每一次按提交按钮是一定要仔细检查填写的信息,因为我没有设置弹出是否确认的框,嘿嘿。");
new admin_main(stu);
}
}
学生管理:
主面板采用的是FlowLayout布局,主要分为两个部分,一个是北面的用来显示操作的,一个是中心的,是一个放在滚轮面板上的JTable组件,有两原因,一是把JTable加在滚轮面板上可以显示出表头,另一个是即使有多条记录,可以通过滚动面板来看,不需要加入复杂的上一页,下一页。
JTable介绍:又有个新的组件了,JTable,首先肯定是设置表头啦,表头通过
JTableHeader tableHeader=jtable.getTableHeader();// 设置表头
tableHeader.setFont(new Font(null,Font.BOLD,20));
tableHeader.setForeground(Color.RED);
这部分代码就算完成的表格头的设置了。
而对于表格体的设置就简单了,直接用表格名.方法名就实现了。
jtable.setForeground(Color.black);// 表格体
jtable.setGridColor(Color.BLACK);// 表格线
jtable.setFont(new Font(null,Font.PLAIN,16));
jtable.setRowHei //行高 jtable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);// 设置多行选择
在介绍每一行每一列之前我先介绍一下怎样设置表格的模型。在声明表格是new JTable(模型名),对于模型呢,是下,下面的函数:
DefaultTableModel tableModel=new DefaultTableModel();
在表格中加入数据也需要在这模型中加,而又如何从数据库中取数据,表格中的每一行,我们可以定义一个Vector number=new Vector<>();对象,然后通过查询数据库,对于每一个元组都封装成一个number对象,整个表格就相当于是一个二维数组,我们定义成一个Vector<Vector> data=new Vector<>();对象,然后通过data.addElement(number);方法就把每一个元组加入进来了,最后调用
tableModel.setDataVector(data,Columns);方法就把数据加入模型了,后一个参数是封装表格头的Vector()对象。
多说一句,因为每个功能是实现后都需要刷新,所以这部分可抽取出来封装成一个方法,方便调用。
回归怎样设置表格列就需要介绍一个新的类;
class StudentCellRender extends DefaultTableCellRenderer{
@Override // 在每一行的每一列显示之前都会调用
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
这个函数就是设置表格列的,可以设置文本居中啊之类。
表格基本属性设置就说完了。
下一步就说说功能了,增删改查。
package com.yu.web.admin.xueshengguanli;
import com.yu.pojo.student;
import com.yu.util.DBUtil;
import com.yu.web.admin.xueshengguanli.banjiguanli.banjiguanli;
import com.yu.web.admin.xueshengguanli.yuanxiguanli.yuanxiguanli;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
public class xueshengguanli extends JFrame {
JLabel tianxiexuehao=new JLabel("请输入完整的学号:");
JButton ban=new JButton("班级管理");
JButton yuan=new JButton("院系管理");
JButton zeng=new JButton("增加");
JButton xiu=new JButton("修改");
JButton cha=new JButton("查询");
JButton shan=new JButton("删除");
JLabel tishi=new JLabel("");
JLabel kong1=new JLabel(" ");
JLabel kong2=new JLabel(" ");
JLabel kong3=new JLabel(" ");
JLabel kong4=new JLabel(" ");
JTextField xiutext=new JTextField();
JTextField chatext=new JTextField();
JTable jtable=new JTable();
DefaultTableModel tableModel=new DefaultTableModel();
JPanel northPanel=new JPanel(new FlowLayout(FlowLayout.LEFT));
public xueshengguanli() {
super("学生管理页面");
// 加入面板
BorderLayout borderLayout=new BorderLayout();
JPanel root=new JPanel();
this.setContentPane(root);
root.setLayout(borderLayout);
JScrollPane jScrollPane=new JScrollPane(jtable);
root.add(northPanel,BorderLayout.NORTH);
root.add(jScrollPane,BorderLayout.CENTER);
// 增添组件
northPanel.add(kong1);
northPanel.add(zeng);
northPanel.add(kong2);
northPanel.add(tianxiexuehao);
northPanel.add(xiutext);
northPanel.add(xiu);
northPanel.add(shan);
northPanel.add(tishi);
northPanel.add(chatext);
northPanel.add(cha);
northPanel.add(kong4);
northPanel.add(ban);
northPanel.add(yuan);
// 组件设置
zeng.setFont(new Font("华文楷体",Font.BOLD,15));
ban.setFont(new Font("华文楷体",Font.BOLD,15));
yuan.setFont(new Font("华文楷体",Font.BOLD,15));
xiu.setFont(new Font("华文楷体",Font.BOLD,15));
cha.setFont(new Font("华文楷体",Font.BOLD,15));
shan.setFont(new Font("华文楷体",Font.BOLD,15));
tishi.setFont(new Font("华文楷体",Font.BOLD,15));
tishi.setForeground(Color.RED);
tianxiexuehao.setFont(new Font("华文楷体",Font.PLAIN,20));
xiutext.setFont(new Font("华文楷体",Font.PLAIN,20));
chatext.setFont(new Font("华文楷体",Font.PLAIN,20));
xiutext.setPreferredSize(new Dimension(150,30));
chatext.setPreferredSize(new Dimension(300,30));
// 定义边框
Border border1=new LineBorder(Color.lightGray,2);
northPanel.setBorder(border1);
// 显示出记录
reloadTable();
jtable.setModel(tableModel);
jtable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int row=jtable.getSelectedRow();
String value= (String) jtable.getValueAt(row,1);
xiutext.setText(value);
}
});
String[] str = new String[10];
jtable.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
int[] row=jtable.getSelectedRows();
for(int i=0;i<row.length;i++){
String value= (String) jtable.getValueAt(row[i],1);
str[i]=value;
}
}
});
jtable.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
for(int i=0;i<str.length;i++){
String id= str[i];
Connection conn1 = DBUtil.getConnectDb();
String sql1="delete from student where studentid='"+id+"'";
PreparedStatement stm1 = null;
ResultSet rs1 = null;
try {
stm1 = conn1.prepareStatement(sql1);
stm1.executeUpdate();
} catch (SQLException ex1) {
ex1.printStackTrace();
} finally {
DBUtil.CloseDB(rs1, stm1, conn1);
}
}
reloadTable();
}
@Override
public void keyReleased(KeyEvent e) {
}
});
// 设置表格
JTableHeader tableHeader=jtable.getTableHeader();// 设置表头
tableHeader.setFont(new Font(null,Font.BOLD,20));
tableHeader.setForeground(Color.RED);
jtable.setFont(new Font(null,Font.PLAIN,16));
jtable.setForeground(Color.black);// 表格体
jtable.setGridColor(Color.BLACK);// 表格线
jtable.setRowHeight(30);// 行高
jtable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);// 设置多行选择
// 设置表格列
StudentCellRender render=new StudentCellRender();
Vector<String> Columns=new Vector<>();
Columns.addElement("序号");
Columns.addElement("学号");
Columns.addElement("姓名");
Columns.addElement("性别");
Columns.addElement("班级");
Columns.addElement("院系");
Columns.addElement("生日");
Columns.addElement("户籍");
for(int j=0;j<Columns.size();j++)
{
TableColumn column=jtable.getColumn(Columns.get(j));
column.setCellRenderer(render);
}
// 监听事件
cha.addActionListener(new chaxunListener());
ban.addActionListener(new banjiListener());
yuan.addActionListener(new yuanxiListener());
zeng.addActionListener(new zengjiaListener());
xiu.addActionListener(new xiugaiListener());
shan.addActionListener(new shanchuListener());
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenSize.width,screenSize.height);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
class StudentCellRender extends DefaultTableCellRenderer{
@Override // 在每一行的每一列显示之前都会调用
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
public void reloadTable(){
String string=chatext.getText();
Connection conn1 = DBUtil.getConnectDb();
String sql1;
int i=0;
if("".equals(string)){
sql1 = "select studentid,student.name,sex,class.name,department.name,birthday,native_place from student,class,department where state=0 and student.class=class.id and department.id=student.department ";
}else{
sql1="select studentid,student.name,sex,class.name,department.name,birthday,native_place from student,class,department where state=0 and student.class=class.id and department.id=student.department and (studentid like '%" + string + "%'" + " or student.name like '%" + string + "%'" +
" or student.name like '%" + string + "%'"+"or class.name like '%"+string+"%'"+"or department.name like '%"+string+"%'" + "or native_place like '%"+string+"%'" +"or birthday like '%"+string+"%'" +" or sex like '%" + string + "%') ";
}
PreparedStatement stm1 = null;
ResultSet rs1 = null;
student stu1=null;
int j=0;
Vector<Vector<Object>> data=new Vector<>();
try {
stm1 = conn1.prepareStatement(sql1);
rs1 = stm1.executeQuery();
while(rs1.next()){
j++;
Vector<Object> number1=new Vector<>();
i++;
String id=rs1.getString("studentid");
String studentname=rs1.getString("student.name");
String sex=rs1.getString("sex");
String clasname=rs1.getString("class.name");
String departmentname=rs1.getString("department.name");
String birthday=rs1.getString("birthday");
String native_place=rs1.getString("native_place");
number1.addElement(i);
number1.addElement(id);
number1.addElement(studentname);
number1.addElement(sex);
number1.addElement(clasname);
number1.addElement(departmentname);
number1.addElement(birthday);
number1.addElement(native_place);
data.addElement(number1);
}
} catch (SQLException ex1) {
ex1.printStackTrace();
} finally {
DBUtil.CloseDB(rs1, stm1, conn1);
}
Vector<String> Columns=new Vector<>();
Columns.addElement("序号");
Columns.addElement("学号");
Columns.addElement("姓名");
Columns.addElement("性别");
Columns.addElement("班级");
Columns.addElement("院系");
Columns.addElement("生日");
Columns.addElement("户籍");
tableModel.setDataVector(data,Columns);
}
public class chaxunListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
reloadTable();
}
}
public class banjiListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new banjiguanli();
}
}
public class yuanxiListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new yuanxiguanli();
}
}
public class zengjiaListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
new tianjiaxuesheng();
reloadTable();
}
}
public class xiugaiListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
int i;
String id=xiutext.getText();
String na=null;
String se=null;
String cl=null;
String de=null;
String bi=null;
String nat=null;
String pa=null;
String liu=null;
int st=0;
Connection conn = DBUtil.getConnectDb();
String sql="select studentid,student.name,sex,class.name,department.name,birthday,native_place,password,state,liuyan from student,class,department where class.id=student.class and department.id=student.department and studentid='"+id+"'";
PreparedStatement stm = null;
ResultSet rs = null;
int flag=0;
try {
stm = conn.prepareStatement(sql);
System.out.println(sql);
rs = stm.executeQuery();
while(rs.next()){
flag=1;
na= rs.getString(2);
se= rs.getString(3);
cl= rs.getString(4);
de= rs.getString(5);
bi= rs.getString(6);
nat= rs.getString(7);
pa= rs.getString(8);
st= rs.getInt(9);
liu=rs.getString(10);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
if(flag==0){
tishi.setText("修改的学号不存在,请重新填写");
xiutext.setText("");
}else{
new xiugaixuesheng(id,na,se,cl,de,bi,nat,pa,st,liu);
reloadTable();
}
}
}
public class shanchuListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String id=xiutext.getText();
Connection conn1 = DBUtil.getConnectDb();
String sql1="delete from student where studentid='"+id+"'";
PreparedStatement stm1 = null;
ResultSet rs1 = null;
try {
stm1 = conn1.prepareStatement(sql1);
stm1.executeUpdate();
} catch (SQLException ex1) {
ex1.printStackTrace();
} finally {
DBUtil.CloseDB(rs1, stm1, conn1);
}
tishi.setText("删除学生成功!");
reloadTable();
}
}
public static void main(String[] args) {
new xueshengguanli();
}
}
增加学生:点击按钮会新出现一个页面,是录入基本信息的表单,管理员输入信息,点击提交按钮,数据被服务层通过组件名.getText()方法获取,然后就需要要进行是否非空,其主键学号是否已经有人用了,都通过就连接数据库执行插入语句,就相当于添加学生成功了。
修改学生:修改学生需要输入主属性学号,每次修改都需输一次就有点不便利了,所以在这里又增加了一个小功能,就是通过点击表格某一行就可以获得该行的学号属性的属性值,就是通过在表格增加一个鼠标点击事件,通过方法取到该行,在定位到该列,代码如下:
jtable.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int row=jtable.getSelectedRow();//获得点击的行
String value= (String) jtable.getValueAt(row,1);//获得该行第几个属性的属性值
xiutext.setText(value);//把属性值设置在需要输入学号的文本域中
}
});
删除功能:修改都有便利方法了,删除怎么能没有能,就是选择多行键盘点击删除就完成删除功能,实现的原理是,把鼠标点击的学号用一个数组存起来,然后增加一个键盘事件,点击删除键的时候就把数组中存的学号依次调用数据库删除。
查询功能:加在了数据显示的部分了的,先获取查询框中的字符串,为空则查询所以的信息,不为空则使用模糊查询。
其他功能,对于学籍和奖励,可以查看用户的申请,然后修改状态,批准或驳回,而对于公告可以群发可以私发,私发数据库中存的是具体学号,群发存的是“000000”。
添加学生:
package com.yu.web.admin.xueshengguanli;
import com.yu.util.DBUtil;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class tianjiaxuesheng extends JFrame {
JLabel biaoti=new JLabel("增加学生表单");
JLabel studentid=new JLabel("学号:");
JTextField studentidtext=new JTextField();
JLabel name=new JLabel("姓名:");
JTextField nametext=new JTextField();
JLabel sex=new JLabel("性别:");
JComboBox<String> sextext=new JComboBox<>();
JLabel banji=new JLabel("班级:");
JComboBox<String> banjitext=new JComboBox<>();
JLabel yuanxi=new JLabel("院系:");
JComboBox<String> yuanxitext=new JComboBox<>();
JButton chongzhi=new JButton("重置");
JButton tijiao=new JButton("提交");
JLabel jieguo=new JLabel("");
public tianjiaxuesheng(){
super("增加学生");
Container container=getContentPane();
SpringLayout springLayout=new SpringLayout();
container.setLayout(springLayout);
container.add(banji);
container.add(sex);
container.add(biaoti);
container.add(studentid);
container.add(studentidtext);
container.add(name);
container.add(nametext);
container.add(sextext);
container.add(banjitext);
container.add(yuanxi);
container.add(yuanxitext);
container.add(chongzhi);
container.add(tijiao);
container.add(jieguo);
biaoti.setFont(new Font("楷体",Font.PLAIN,25));
banji.setFont(new Font("楷体",Font.PLAIN,20));
sex.setFont(new Font("楷体",Font.PLAIN,20));
studentid.setFont(new Font("楷体",Font.PLAIN,20));
studentidtext.setFont(new Font("楷体",Font.PLAIN,20));
name.setFont(new Font("楷体",Font.PLAIN,20));
nametext.setFont(new Font("楷体",Font.PLAIN,20));
sextext.setFont(new Font("楷体",Font.PLAIN,20));
banjitext.setFont(new Font("楷体",Font.PLAIN,20));
yuanxi.setFont(new Font("楷体",Font.PLAIN,20));
yuanxitext.setFont(new Font("楷体",Font.PLAIN,20));
chongzhi.setFont(new Font("楷体",Font.PLAIN,20));
tijiao.setFont(new Font("楷体",Font.PLAIN,20));
jieguo.setFont(new Font("楷体",Font.PLAIN,20));
jieguo.setForeground(Color.RED);
studentidtext.setPreferredSize(new Dimension(120,25));
nametext.setPreferredSize(new Dimension(300,25));
sextext.setPreferredSize(new Dimension(50,25));
banjitext.setPreferredSize(new Dimension(300,25));
yuanxitext.setPreferredSize(new Dimension(300,25));
Connection conn = DBUtil.getConnectDb();
String sql="select name from department";
PreparedStatement stm = null;
ResultSet rs = null;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
yuanxitext.addItem(rs.getString(1));
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
Connection conn1 = DBUtil.getConnectDb();
String sql1="select name from class";
PreparedStatement stm1 = null;
ResultSet rs1 = null;
try {
stm1 = conn1.prepareStatement(sql1);
rs1 = stm1.executeQuery();
while(rs1.next()){
banjitext.addItem(rs1.getString(1));
}
} catch (SQLException ex1) {
ex1.printStackTrace();
} finally {
DBUtil.CloseDB(rs1, stm1, conn1);
}
sextext.addItem("男");
sextext.addItem("女");
sextext.setSelectedIndex(0);
banjitext.setSelectedIndex(0);
yuanxitext.setSelectedIndex(0);
springLayout.putConstraint(SpringLayout.NORTH,biaoti,20,SpringLayout.NORTH,container);
springLayout.putConstraint(SpringLayout.WEST,biaoti,250,SpringLayout.WEST,container);
springLayout.putConstraint(SpringLayout.NORTH,studentid,20,SpringLayout.SOUTH,biaoti);
springLayout.putConstraint(SpringLayout.WEST,studentid,100,SpringLayout.WEST,container);
springLayout.putConstraint(SpringLayout.NORTH,studentidtext,0,SpringLayout.NORTH,studentid);
springLayout.putConstraint(SpringLayout.WEST,studentidtext,20,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,name,20,SpringLayout.SOUTH,studentid);
springLayout.putConstraint(SpringLayout.EAST,name,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,nametext,0,SpringLayout.NORTH,name);
springLayout.putConstraint(SpringLayout.WEST,nametext,20,SpringLayout.EAST,name);
springLayout.putConstraint(SpringLayout.NORTH,sex,20,SpringLayout.SOUTH,name);
springLayout.putConstraint(SpringLayout.WEST,sex,0,SpringLayout.WEST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,sextext,0,SpringLayout.NORTH,sex);
springLayout.putConstraint(SpringLayout.WEST,sextext,20,SpringLayout.EAST,sex);
springLayout.putConstraint(SpringLayout.NORTH,banji,20,SpringLayout.SOUTH,sex);
springLayout.putConstraint(SpringLayout.EAST,banji,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,banjitext,0,SpringLayout.NORTH,banji);
springLayout.putConstraint(SpringLayout.WEST,banjitext,20,SpringLayout.EAST,banji);
springLayout.putConstraint(SpringLayout.NORTH,yuanxi,20,SpringLayout.SOUTH,banji);
springLayout.putConstraint(SpringLayout.EAST,yuanxi,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,yuanxitext,0,SpringLayout.NORTH,yuanxi);
springLayout.putConstraint(SpringLayout.WEST,yuanxitext,20,SpringLayout.EAST,yuanxi);
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,50,SpringLayout.NORTH,yuanxi);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,150,SpringLayout.WEST,container);
springLayout.putConstraint(SpringLayout.NORTH,tijiao,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,tijiao,100,SpringLayout.EAST,chongzhi);
springLayout.putConstraint(SpringLayout.NORTH,jieguo,50,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,jieguo,0,SpringLayout.WEST,chongzhi);
chongzhi.addActionListener(new chongzhiListener());
tijiao.addActionListener(new tijiaoListener());
setSize(600,500);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhiListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
studentidtext.setText("");
nametext.setText("");
sextext.setSelectedIndex(0);
banjitext.setSelectedIndex(0);
yuanxitext.setSelectedIndex(0);
}
}
public class tijiaoListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String studentidd=studentidtext.getText();
String namee=nametext.getText();
String sexx=sextext.getSelectedItem().toString().trim();
String banjiji=banjitext.getSelectedItem().toString().trim();
String yuanxixi=yuanxitext.getSelectedItem().toString().trim();
if("".equals(studentidd)){
jieguo.setText("学号不能为空,请填写学号");
}else if("".equals(namee)){
jieguo.setText("名字不能为空,请填写名字");
}else{
Connection conn = DBUtil.getConnectDb();
String sql="select studentid from student";
PreparedStatement stm = null;
ResultSet rs = null;
int flag=0;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
if(studentidd.equals(rs.getString(1))){
flag=1;
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
if(flag==1){
jieguo.setText("该学号已被占用,请重新填写学号");
studentidtext.setText("");
}else{
String banjijiji = null;
String yuanxixixix=null;
Connection conn2 = DBUtil.getConnectDb();
String sql2="select id from class where name='"+banjiji+"'";
PreparedStatement stm2 = null;
ResultSet rs2 = null;
try {
stm2 = conn2.prepareStatement(sql2);
rs2 = stm2.executeQuery();
while(rs2.next()){
banjijiji= rs2.getString(1);
}
} catch (SQLException ex2) {
ex2.printStackTrace();
} finally {
DBUtil.CloseDB(rs2, stm2, conn2);
}
Connection conn3 = DBUtil.getConnectDb();
String sql3="select id from department where name='"+yuanxixi+"'";
PreparedStatement stm3 = null;
ResultSet rs3 = null;
try {
stm3 = conn3.prepareStatement(sql3);
rs3 = stm3.executeQuery();
while(rs3.next()){
yuanxixixix= rs3.getString(1);
}
} catch (SQLException ex3) {
ex3.printStackTrace();
} finally {
DBUtil.CloseDB(rs3, stm3, conn3);
}
Connection conn1 = DBUtil.getConnectDb();
String sql1="insert into student values (?,?,?,?,?,?,?,?,?,?)";
PreparedStatement stm1 = null;
ResultSet rs1 = null;
try {
stm1 = conn1.prepareStatement(sql1);
stm1.setString(1,studentidd);
stm1.setString(2,namee);
stm1.setString(3,sexx);
stm1.setString(4,banjijiji);
stm1.setString(5,yuanxixixix);
stm1.setString(6,null);
stm1.setString(7,null);
stm1.setString(8,"123456");
stm1.setInt(9,0);
stm1.setString(10,"留言板:为了您的安全保障请记得修改您的密码,您可以在这里记下您欲将做的事,防止遗忘哦.");
stm1.executeUpdate();
} catch (SQLException ex1) {
ex1.printStackTrace();
} finally {
DBUtil.CloseDB(rs1, stm1, conn1);
}
jieguo.setText("添加学生成功!");
}
}
}
}
public static void main(String[] args) {
new tianjiaxuesheng();
}
}
修改学生:
package com.yu.web.admin.xueshengguanli;
import com.yu.util.DBUtil;
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class xiugaixuesheng extends JFrame{
JLabel biaoti=new JLabel(“修改学生表单”);
JLabel studentid=new JLabel(“学号:”);
JTextField studentidtext=new JTextField();
JLabel name=new JLabel(“姓名:”);
JTextField nametext=new JTextField();
JLabel sex=new JLabel(“性别:”);
JComboBox sextext=new JComboBox<>();
JLabel banji=new JLabel(“班级:”);
JComboBox banjitext=new JComboBox<>();
JLabel yuanxi=new JLabel(“院系:”);
JComboBox yuanxitext=new JComboBox<>();
JLabel birthday=new JLabel(“出生日期:”);
JTextField birthdaytext=new JTextField();
JLabel native_place=new JLabel(“户籍:”);
JTextField native_placetext=new JTextField();
JLabel password=new JLabel(“密码:”);
JTextField passwordtext=new JTextField();
JLabel stste=new JLabel(“身份:”);
JComboBox statetext=new JComboBox<>();
JButton chongzhi=new JButton(“重置”);
JButton tijiao=new JButton(“提交”);
JLabel jie1=new JLabel(“”);
JLabel jie2=new JLabel(“”);
JLabel jie3=new JLabel(“”);
JLabel jie4=new JLabel(“”);
JLabel jie5=new JLabel(“”);
JLabel jie6=new JLabel(“”);
JLabel jie7=new JLabel(“”);
JLabel jie8=new JLabel(“”);
JLabel jie9=new JLabel(“”);
JLabel jieguo=new JLabel(“”);
JLabel jie10=new JLabel(“”);
public xiugaixuesheng(String id,String na,String se,String cl,String de,String br,String nat,String pa,int st,String liu){
super(“修改学生”);
Container container=getContentPane();
SpringLayout springLayout=new SpringLayout();
container.setLayout(springLayout);
container.add(banji);
container.add(sex);
container.add(biaoti);
container.add(studentid);
container.add(studentidtext);
container.add(name);
container.add(nametext);
container.add(sextext);
container.add(banjitext);
container.add(yuanxi);
container.add(yuanxitext);
container.add(chongzhi);
container.add(tijiao);
container.add(jieguo);
container.add(birthdaytext);
container.add(birthday);
container.add(native_place);
container.add(native_placetext);
container.add(password);
container.add(passwordtext);
container.add(stste);
container.add(statetext);
biaoti.setFont(new Font(“楷体”,Font.PLAIN,25));
banji.setFont(new Font(“楷体”,Font.PLAIN,20));
sex.setFont(new Font(“楷体”,Font.PLAIN,20));
studentid.setFont(new Font(“楷体”,Font.PLAIN,20));
studentidtext.setFont(new Font(“楷体”,Font.PLAIN,20));
name.setFont(new Font(“楷体”,Font.PLAIN,20));
nametext.setFont(new Font(“楷体”,Font.PLAIN,20));
sextext.setFont(new Font(“楷体”,Font.PLAIN,20));
banjitext.setFont(new Font(“楷体”,Font.PLAIN,20));
yuanxi.setFont(new Font(“楷体”,Font.PLAIN,20));
yuanxitext.setFont(new Font(“楷体”,Font.PLAIN,20));
chongzhi.setFont(new Font(“楷体”,Font.PLAIN,20));
tijiao.setFont(new Font(“楷体”,Font.PLAIN,20));
jieguo.setFont(new Font(“楷体”,Font.PLAIN,20));
birthday.setFont(new Font(“楷体”,Font.PLAIN,20));
birthdaytext.setFont(new Font(“楷体”,Font.PLAIN,20));
native_place.setFont(new Font(“楷体”,Font.PLAIN,20));
native_placetext.setFont(new Font(“楷体”,Font.PLAIN,20));
password.setFont(new Font(“楷体”,Font.PLAIN,20));
passwordtext.setFont(new Font(“楷体”,Font.PLAIN,20));
stste.setFont(new Font(“楷体”,Font.PLAIN,20));
statetext.setFont(new Font(“楷体”,Font.PLAIN,20));
jieguo.setForeground(Color.RED);
studentidtext.setPreferredSize(new Dimension(120,25));
nametext.setPreferredSize(new Dimension(300,25));
sextext.setPreferredSize(new Dimension(50,25));
banjitext.setPreferredSize(new Dimension(300,25));
yuanxitext.setPreferredSize(new Dimension(300,25));
birthdaytext.setPreferredSize(new Dimension(120,25));
native_placetext.setPreferredSize(new Dimension(300,25));
passwordtext.setPreferredSize(new Dimension(80,25));
statetext.setPreferredSize(new Dimension(100,25));
Connection conn = DBUtil.getConnectDb();
int i1=0;
String sql=“select name,id from department”;
PreparedStatement stm = null;
ResultSet rs = null;
try {
int number=0;
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
if(de.equals(rs.getString(2))){
i1=number;
}
yuanxitext.addItem(rs.getString(1));
number++;
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
Connection conn1 = DBUtil.getConnectDb();
String sql1=“select name,id from class”;
PreparedStatement stm1 = null;
ResultSet rs1 = null;
int i2=0;
try {
int number=0;
stm1 = conn1.prepareStatement(sql1);
rs1 = stm1.executeQuery();
while(rs1.next()){
if(cl.equals(rs1.getString(2))){
i2=number;
}
banjitext.addItem(rs1.getString(1));
number++;
}
} catch (SQLException ex1) {
ex1.printStackTrace();
} finally {
DBUtil.CloseDB(rs1, stm1, conn1);
}
sextext.addItem(“男”);
sextext.addItem(“女”);
if(se.equals(“女”)){
sextext.setSelectedIndex(1);
jie3.setText(“1”);
}else{
sextext.setSelectedIndex(0);
jie3.setText(“0”);
}
statetext.addItem(“学生”);
statetext.addItem(“管理员”);
if(st0){
statetext.setSelectedIndex(0);
jie9.setText(“0”);
}else {
statetext.setSelectedIndex(1);
jie9.setText(“1”);
}
banjitext.setSelectedIndex(i2);
yuanxitext.setSelectedIndex(i1);
jie1.setText(id);
jie2.setText(na);
jie4.setText(String.valueOf(i2));
jie5.setText(String.valueOf(i1));
jie6.setText(br);
jie7.setText(nat);
jie8.setText(pa);
studentidtext.setText(id);
nametext.setText(na);
birthdaytext.setText(br);
native_placetext.setText(nat);
passwordtext.setText(pa);
jie10.setText(liu);
springLayout.putConstraint(SpringLayout.NORTH,biaoti,20,SpringLayout.NORTH,container);
springLayout.putConstraint(SpringLayout.WEST,biaoti,250,SpringLayout.WEST,container);
springLayout.putConstraint(SpringLayout.NORTH,studentid,20,SpringLayout.SOUTH,biaoti);
springLayout.putConstraint(SpringLayout.WEST,studentid,100,SpringLayout.WEST,container);
springLayout.putConstraint(SpringLayout.NORTH,studentidtext,0,SpringLayout.NORTH,studentid);
springLayout.putConstraint(SpringLayout.WEST,studentidtext,20,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,name,20,SpringLayout.SOUTH,studentid);
springLayout.putConstraint(SpringLayout.EAST,name,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,nametext,0,SpringLayout.NORTH,name);
springLayout.putConstraint(SpringLayout.WEST,nametext,20,SpringLayout.EAST,name);
springLayout.putConstraint(SpringLayout.NORTH,sex,20,SpringLayout.SOUTH,name);
springLayout.putConstraint(SpringLayout.WEST,sex,0,SpringLayout.WEST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,sextext,0,SpringLayout.NORTH,sex);
springLayout.putConstraint(SpringLayout.WEST,sextext,20,SpringLayout.EAST,sex);
springLayout.putConstraint(SpringLayout.NORTH,banji,20,SpringLayout.SOUTH,sex);
springLayout.putConstraint(SpringLayout.EAST,banji,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,banjitext,0,SpringLayout.NORTH,banji);
springLayout.putConstraint(SpringLayout.WEST,banjitext,20,SpringLayout.EAST,banji);
springLayout.putConstraint(SpringLayout.NORTH,yuanxi,20,SpringLayout.SOUTH,banji);
springLayout.putConstraint(SpringLayout.EAST,yuanxi,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,yuanxitext,0,SpringLayout.NORTH,yuanxi);
springLayout.putConstraint(SpringLayout.WEST,yuanxitext,20,SpringLayout.EAST,yuanxi);
springLayout.putConstraint(SpringLayout.NORTH,birthday,20,SpringLayout.SOUTH,yuanxi);
springLayout.putConstraint(SpringLayout.EAST,birthday,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,birthdaytext,0,SpringLayout.NORTH,birthday);
springLayout.putConstraint(SpringLayout.WEST,birthdaytext,20,SpringLayout.EAST,birthday);
springLayout.putConstraint(SpringLayout.NORTH,native_place,20,SpringLayout.SOUTH,birthday);
springLayout.putConstraint(SpringLayout.EAST,native_place,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,native_placetext,0,SpringLayout.NORTH,native_place);
springLayout.putConstraint(SpringLayout.WEST,native_placetext,20,SpringLayout.EAST,native_place);
springLayout.putConstraint(SpringLayout.NORTH,password,20,SpringLayout.SOUTH,native_place);
springLayout.putConstraint(SpringLayout.EAST,password,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,passwordtext,0,SpringLayout.NORTH,password);
springLayout.putConstraint(SpringLayout.WEST,passwordtext,20,SpringLayout.EAST,password);
springLayout.putConstraint(SpringLayout.NORTH,stste,20,SpringLayout.SOUTH,password);
springLayout.putConstraint(SpringLayout.EAST,stste,0,SpringLayout.EAST,studentid);
springLayout.putConstraint(SpringLayout.NORTH,statetext,0,SpringLayout.NORTH,stste);
springLayout.putConstraint(SpringLayout.WEST,statetext,20,SpringLayout.EAST,stste);
springLayout.putConstraint(SpringLayout.NORTH,chongzhi,50,SpringLayout.NORTH,stste);
springLayout.putConstraint(SpringLayout.WEST,chongzhi,150,SpringLayout.WEST,container);
springLayout.putConstraint(SpringLayout.NORTH,tijiao,0,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,tijiao,100,SpringLayout.EAST,chongzhi);
springLayout.putConstraint(SpringLayout.NORTH,jieguo,50,SpringLayout.NORTH,chongzhi);
springLayout.putConstraint(SpringLayout.WEST,jieguo,0,SpringLayout.WEST,chongzhi);
chongzhi.addActionListener(new chongzhiListener());
tijiao.addActionListener(new tijiaoListener());
setSize(600,700);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public class chongzhiListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
studentidtext.setText(jie1.getText());
nametext.setText(jie2.getText());
sextext.setSelectedIndex(Integer.parseInt(jie3.getText()));
banjitext.setSelectedIndex(Integer.parseInt(jie4.getText()));
yuanxitext.setSelectedIndex(Integer.parseInt(jie5.getText()));
birthdaytext.setText(jie6.getText());
native_placetext.setText(jie7.getText());
passwordtext.setText(jie8.getText());
statetext.setSelectedIndex(Integer.parseInt(jie9.getText()));
}
}
public class tijiaoListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String studentidd=studentidtext.getText();
String namee=nametext.getText();
String sexx=sextext.getSelectedItem().toString().trim();
String banjiji=banjitext.getSelectedItem().toString().trim();
String yuanxixi=yuanxitext.getSelectedItem().toString().trim();
String birthdayy=birthdaytext.getText();
String native_placee=native_placetext.getText();
String passwordd=passwordtext.getText();
String statee=statetext.getSelectedItem().toString().trim();
if(“”.equals(studentidd)){
jieguo.setText(“学号不能为空,请填写学号”);
}else if(“”.equals(namee)){
jieguo.setText(“名字不能为空,请填写名字”);
}else if(“”.equals(passwordd)){
jieguo.setText(“密码不能为空,请填写名字”);
}else {
Connection conn = DBUtil.getConnectDb();
String sql=“select studentid from student”;
PreparedStatement stm = null;
ResultSet rs = null;
int flag=0;
try {
stm = conn.prepareStatement(sql);
rs = stm.executeQuery();
while(rs.next()){
if(studentidd.equals(rs.getString(1))&&!jie1.getText().equals(rs.getString(1))){
flag=1;
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DBUtil.CloseDB(rs, stm, conn);
}
if(flag1){
jieguo.setText(“该学号已被占用,请重新填写学号”);
studentidtext.setText(“”);
}else{
String banjijiji = null;
String yuanxixixix=null;
Connection conn2 = DBUtil.getConnectDb();
String sql2=“select id from class where name='”+banjiji+“'”;
PreparedStatement stm2 = null;
ResultSet rs2 = null;
try {
stm2 = conn2.prepareStatement(sql2);
rs2 = stm2.executeQuery();
while(rs2.next()){
banjijiji= rs2.getString(1);
}
} catch (SQLException ex2) {
ex2.printStackTrace();
} finally {
DBUtil.CloseDB(rs2, stm2, conn2);
}
Connection conn3 = DBUtil.getConnectDb();
String sql3=“select id from department where name='”+yuanxixi+“'”;
PreparedStatement stm3 = null;
ResultSet rs3 = null;
try {
stm3 = conn3.prepareStatement(sql3);
rs3 = stm3.executeQuery();
while(rs3.next()){
yuanxixixix= rs3.getString(1);
}
} catch (SQLException ex3) {
ex3.printStackTrace();
} finally {
DBUtil.CloseDB(rs3, stm3, conn3);
}
int s=0;
if(“管理员”.equals(statee)){
s=1;
}
Connection conn1 = DBUtil.getConnectDb();
String sql1=“update student set studentid='”+studentidd+“‘,name=’”+namee+“‘,sex=’”+sexx+“‘,class=’”+banjijiji+“‘,department=’”+yuanxixixix+“‘,birthday=’”+birthdayy+“‘,native_place=’”+native_placee+“‘,password=’”+passwordd+“‘,state=’”+s+“‘,liuyan=’”+jie10.getText()+“‘where studentid=’”+jie1.getText()+“'”;
PreparedStatement stm1 = null;
ResultSet rs1 = null;
try {
stm1 = conn1.prepareStatement(sql1);
System.out.println(stm1);
stm1.executeUpdate();
} catch (SQLException ex1) {
ex1.printStackTrace();
} finally {
DBUtil.CloseDB(rs1, stm1, conn1);
}
jieguo.setText(“修改学生成功!”);
}
}
}
}
public static void main(String[] args) {
new xiugaixuesheng(“”,“,”,“”,“”,“”,“”,“”,“”,1,“”);
}
}