1、简介
本学生成绩管理系统具有录入学生成绩、查询学生成绩、修改学生成绩、录入老师信息、修改密码五个功能。 此系统可以实现学生成绩管理的一些基本操作。
1.1各模块功能简介
录入成绩
输入学生的学号、姓名、性别、出生年月以及三个科目的成绩(高等数学、体育与健康、Java课程),并将其保存在建立好的数据库中。
查询成绩
进入该模块后,输入想要查询成绩的学生姓名,即可在数据库中检索该学生 的成绩信息并输出其各科成绩。
录入老师信息
输入老师的工号、姓名、年龄、家庭地址以及教授科目,即可将老师的基本信息保存在建立好的数据库中。
修改密码
管理员、老师和学生都可以在登录自己的账号后点击修改密码,输入新密码后即可修改密码。
2、程序设计
数据库表的设计
数据库共有三个表,一个存储学生信息以及账号密码、一个负责存储教师信息以及账号密码,另有一个管理员表。
建表sql语句
CREATE TABLE `student` (
`account` varchar(20) NOT NULL COMMENT '账号',
`name` varchar(20) DEFAULT NULL COMMENT '姓名',
`password` varchar(20) DEFAULT NULL COMMENT '密码',
`proj1` varchar(20) DEFAULT '0' COMMENT '高等数据',
`proj2` varchar(20) DEFAULT '0' COMMENT '数据结构',
`proj3` varchar(20) DEFAULT '0' COMMENT 'java课程',
`sex` varchar(20) DEFAULT NULL,
`year` varchar(20) DEFAULT NULL,
PRIMARY KEY (`account`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
3、部分源代码
管理员管理学生界面及功能
package com.manage.jpan;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.management.modelmbean.ModelMBean;
import javax.naming.InitialContext;
import javax.security.auth.login.AccountException;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.xml.crypto.Data;
import com.mysqld.Mysqld;
import com.tools.Table;
import com.tools.Tools;
public class StudentMan extends JPanel{
int WIDTH;
int HEIGH;
public StudentMan(int width,int heigh) {
this.WIDTH=width;
this.HEIGH=heigh;
init();
}
void init() {
this.setPreferredSize(new Dimension(WIDTH,HEIGH));
Box boxHBox=Box.createVerticalBox();
this.add(boxHBox);//建立垂直盒子
Box box=Box.createHorizontalBox();//设置水平资x
boxHBox.add(box);
inil("学号",box);
JTextField jTextField =init1(6,box);
//inil("密码",box);
//JTextField jTextField1 =init1(12,box);
inil("姓名",box);
JTextField jTextField2 =init1(6,box);
inil("出生年月",box);
JTextField jTextField7 =init1(6,box);
inil("性别",box);
JTextField jTextField8 =init1(6,box);
inil("高等数学",box);
JTextField jTextField3 =init1(6,box);
Box box1=Box.createHorizontalBox();//设置水平资格
boxHBox.add(Box.createVerticalStrut(20));
boxHBox.add(box1);
inil("体育与健康",box1);
JTextField jTextField4 =init1(6,box1);
inil("java课程",box1);
JTextField jTextField5 =init1(6,box1);
box1.add(jTextField5);
box1.add(box.createHorizontalStrut(200));
Box box2=Box.createHorizontalBox();//设置水平资格
boxHBox.add(Box.createVerticalStrut(20));
boxHBox.add(box2);
inil("条件学号",box2);
JTextField jTextField6 =init1(6,box2);
inil("条件姓名",box2);
JTextField jTextField9 =init1(6,box2);
JButton jButton=new JButton("增加学生");
box2.add(jButton);
box2.add(Box.createHorizontalStrut(20));
JButton jButton1=new JButton("删除学生");
box2.add(jButton1);
box2.add(Box.createHorizontalStrut(20));
JButton jButton2=new JButton("更改学生");
box2.add(jButton2);
box2.add(Box.createHorizontalStrut(20));
JButton jButton3=new JButton("查找学生");
box2.add(jButton3);
box2.add(Box.createHorizontalStrut(20));
//____________________________________________________________________
Object columns[] ={"学号","姓名","高等数学","体育与健康","java课程","性别","出生年月"};
Table t1Table=new Table(columns);//设置标题
JTable table = t1Table.getTables();//获取表格
JScrollPane JS = t1Table.getJScrollPane();//获取表格 滚动条
DefaultTableModel model = t1Table.getModel();//获取表格控制
JS.setPreferredSize(new Dimension(WIDTH-40,580));//设置整个滚动条窗口的大小
this.add(JS);
//__________________________________________________________________________________
//增加老师
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//增加老师
if(jTextField.getText().equals("")) {
Tools.messageWindows("请输入学号");
}else {
//向账号里面添加账号和密码
String data[]= {
jTextField.getText(),//账号
jTextField2.getText(),//姓名
"12345678",//密码
jTextField3.getText(),//高等数学
jTextField4.getText(),//数据结构
jTextField5.getText(),//java
jTextField7.getText(),//出生
jTextField8.getText()//性别
};
String string="insert into student values(?,?,?,?,?,?,?,?)";
int n= Mysqld.upDate(string, data);
if(n==1) {
Tools.messageWindows("添加成功");
}
if(n==0) {
Tools.messageWindows("添加失败,请检查输入内容");
}
if(n==-1) {
Tools.messageWindows("添加失败,学号重复");
}
}
}
});
//删除
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//
if(jTextField6.getText().equals("")) {
Tools.messageWindows("请输入条件学号");
}else {
String string="delete from student where student.account=?";
String data[]= {jTextField6.getText()};
int n= Mysqld.upDate(string, data);
if(n==1) {
Tools.messageWindows("删除成功");
}
if(n==0) {
Tools.messageWindows("删除失败,请检查输学号");
}
if(n==-1) {
Tools.messageWindows("删除失败,请检查输学号");
}
}
}
});
//更改
jButton2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(jTextField6.getText().equals("")) {
Tools.messageWindows("请输入条件学号");
}else {
String string="update student set account=?,name=?,proj1=?,proj2=?,proj3=?,sex=?,year=? where account=?";
String data[]= {
jTextField.getText(),//账号
jTextField2.getText(),//姓名
jTextField3.getText(),//年纪
jTextField4.getText(),//高等数据
jTextField5.getText(),//体育与健康
jTextField6.getText(),//java
jTextField7.getText(),//出生
jTextField8.getText()//性别
};
int n= Mysqld.upDate(string, data);
if(n==1) {
Tools.messageWindows("更改成功");
}
if(n==0) {
Tools.messageWindows("更改失败,请检查条件学号");
}
if(n==-1) {
Tools.messageWindows("更改失败,请检查条件学号");
}
}
}
});
//查找
jButton3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//如果学号和姓名都空就全显示
if(jTextField6.getText().equals("")&&jTextField9.getText().equals("")) {
//将数据添加到表格当中
Tools.setTableSize(table, WIDTH, Tools.addDataTable(Mysqld.QueryData("select account,name,proj1,proj2,proj3,sex,year from student", null), model,7 ));
//如果学号不为空
}else if(jTextField6.getText()!=null&&jTextField9.getText().equals("")){
String data[]= {jTextField6.getText()};
Tools.setTableSize(table, WIDTH, Tools.addDataTable(Mysqld.QueryData("select account,name,proj1,proj2,proj3,sex,year from student where account=?", data), model,7));
ResultSet rs = Mysqld.QueryData("select account,name,proj1,proj2,proj3,sex,year from student where account=?", data);
try {
while(rs.next()) {
//向文本写入数据
jTextField.setText(rs.getString(1));
jTextField2.setText(rs.getString(2));
jTextField3.setText(rs.getString(3));
jTextField4.setText(rs.getString(4));
jTextField5.setText(rs.getString(5));
jTextField7.setText(rs.getString(7));
jTextField8.setText(rs.getString(8));
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
//如果模糊查询名字(未实现,仍为完整的查找)
else if(jTextField6.getText().equals("")&&jTextField9.getText()!=null){
String data[]= {jTextField9.getText()};
Tools.setTableSize(table, WIDTH, Tools.addDataTable(Mysqld.QueryData("select account,name,proj1,proj2,proj3,sex,year from student where name=?", data), model,7));
ResultSet rs = Mysqld.QueryData("select account,name,proj1,proj2,proj3,sex,year from student where name=?", data);
try {
while(rs.next()) {
//向文本写入数据
jTextField.setText(rs.getString(1));
jTextField2.setText(rs.getString(2));
jTextField3.setText(rs.getString(3));
jTextField4.setText(rs.getString(4));
jTextField5.setText(rs.getString(5));
jTextField7.setText(rs.getString(7));
jTextField8.setText(rs.getString(8));
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}
//初始化标签与文本
void inil(String sr,Box box) {
JLabel jLabel=new JLabel(sr);
box.add(jLabel);
box.add(Box.createHorizontalStrut(20));
}
JTextField init1(int h,Box box) {
JTextField jTextField=new JTextField(h);
box.add(jTextField);
box.add(Box.createHorizontalStrut(20));
return jTextField;
}
}
管理员管理老师界面及功能
package com.manage.jpan;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.management.modelmbean.ModelMBean;
import javax.naming.InitialContext;
import javax.security.auth.login.AccountException;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.xml.crypto.Data;
import com.mysqld.Mysqld;
import com.tools.Table;
import com.tools.Tools;
public class TeacherMan extends JPanel{
int WIDTH;
int HEIGH;
public TeacherMan(int width,int heigh) {
this.WIDTH=width;
this.HEIGH=heigh;
init();
}
void init() {
this.setPreferredSize(new Dimension(WIDTH,HEIGH));
Box boxHBox=Box.createVerticalBox();
this.add(boxHBox);//建立垂直盒子
Box box=Box.createHorizontalBox();//设置水平资格
boxHBox.add(box);
inil("工号",box);
JTextField jTextField =init1(12,box);
//inil("密码",box);
//JTextField jTextField1 =init1(12,box);
inil("姓名",box);
JTextField jTextField2 =init1(12,box);
inil("年纪",box);
JTextField jTextField3 =init1(12,box);
Box box1=Box.createHorizontalBox();//设置水平资格
boxHBox.add(Box.createVerticalStrut(20));
boxHBox.add(box1);
inil("家庭地址",box1);
JTextField jTextField4 =init1(12,box1);
inil("授课科目",box1);
JTextField jTextField5 =init1(12,box1);
box1.add(jTextField5);
box1.add(box.createHorizontalStrut(200));
Box box2=Box.createHorizontalBox();//设置水平资格
boxHBox.add(Box.createVerticalStrut(20));
boxHBox.add(box2);
inil("条件工号",box2);
JTextField jTextField6 =init1(12,box2);
JButton jButton=new JButton("增加老师");
box2.add(jButton);
box2.add(Box.createHorizontalStrut(20));
JButton jButton1=new JButton("删除老师");
box2.add(jButton1);
box2.add(Box.createHorizontalStrut(20));
JButton jButton2=new JButton("更改老师");
box2.add(jButton2);
box2.add(Box.createHorizontalStrut(20));
JButton jButton3=new JButton("查找老师");
box2.add(jButton3);
box2.add(Box.createHorizontalStrut(20));
//____________________________________________________________________
Object columns[] ={"工号","姓名","年纪","家庭地址","教学科目"};
Table t1Table=new Table(columns);//设置标题
JTable table = t1Table.getTables();//获取表格
JScrollPane JS = t1Table.getJScrollPane();//获取表格 滚动条
DefaultTableModel model = t1Table.getModel();//获取表格控制
JS.setPreferredSize(new Dimension(WIDTH-40,580));//设置整个滚动条窗口的大小
this.add(JS);
//__________________________________________________________________________________
//增加老师
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//增加老师
if(jTextField.getText().equals("")) {
Tools.messageWindows("请输入工号");
}else {
//向账号里面添加账号和密码
String data[]= {
jTextField.getText(),//账号
jTextField2.getText(),//姓名
"12345678",//密码
jTextField3.getText(),//年纪
jTextField4.getText(),//家庭住址
jTextField5.getText()//授课科目
};
String string="insert into teacher values(?,?,?,?,?,?)";
int n= Mysqld.upDate(string, data);
if(n==1) {
Tools.messageWindows("添加成功");
}
if(n==0) {
Tools.messageWindows("添加失败,请检查输入内容");
}
if(n==-1) {
Tools.messageWindows("添加失败,工号重复");
}
}
}
});
//删除
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//
if(jTextField6.getText().equals("")) {
Tools.messageWindows("请输入条件工号");
}else {
String string="delete from teacher where teacher.account=?";
String data[]= {jTextField6.getText()};
int n= Mysqld.upDate(string, data);
if(n==1) {
Tools.messageWindows("删除成功");
}
if(n==0) {
Tools.messageWindows("删除失败,请检查输工号");
}
if(n==-1) {
Tools.messageWindows("删除失败,请检查输工号");
}
}
}
});
//更改
jButton2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(jTextField6.getText().equals("")) {
Tools.messageWindows("请输入条件工号");
}else {
String string="update teacher set account=?,name=?,age=?,address=?,project=? where account=?";
String data[]= {
jTextField.getText(),//账号
jTextField2.getText(),//姓名
jTextField3.getText(),//年纪
jTextField4.getText(),//家庭住址
jTextField5.getText(),//授课科目
jTextField6.getText()//授课科目
};
int n= Mysqld.upDate(string, data);
if(n==1) {
Tools.messageWindows("更改成功");
}
if(n==0) {
Tools.messageWindows("更改失败,请检查条件工号");
}
if(n==-1) {
Tools.messageWindows("更改失败,请检查条件工号");
}
}
}
});
//查找
jButton3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(jTextField6.getText().equals("")) {
//将数据添加到表格当中
Tools.setTableSize(table, WIDTH, Tools.addDataTable(Mysqld.QueryData("select account,name,age,address,project from teacher", null), model,5 ));
}else {
String data[]= {jTextField6.getText()};
Tools.setTableSize(table, WIDTH, Tools.addDataTable(Mysqld.QueryData("select account,name,age,address,project from teacher where account=?", data), model,5 ));
ResultSet rs = Mysqld.QueryData("select account,name,age,address,project from teacher where account=?", data);
try {
while(rs.next()) {
//向文本写入数据
jTextField.setText(rs.getString(1));
jTextField2.setText(rs.getString(2));
jTextField3.setText(rs.getString(3));
jTextField4.setText(rs.getString(4));
jTextField5.setText(rs.getString(5));
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}
//初始化标签与文本
void inil(String sr,Box box) {
JLabel jLabel=new JLabel(sr);
box.add(jLabel);
box.add(Box.createHorizontalStrut(20));
}
JTextField init1(int h,Box box) {
JTextField jTextField=new JTextField(h);
box.add(jTextField);
box.add(Box.createHorizontalStrut(20));
return jTextField;
}
}
修改密码
package com.base;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.naming.InitialContext;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.mysqld.Mysqld;
import com.tools.Tools;
public class ChangOwnPssword extends JPanel{
int WIDTH;
int HEIGH;
String account;
String pow;
public ChangOwnPssword (int width,int heigh,String account,String pow){
this.WIDTH=width;
this.HEIGH=heigh;
this.account=account;
this.pow=pow;
init();
}
void init() {
this.setPreferredSize(new Dimension(WIDTH,HEIGH));
JLabel jLabel=new JLabel("新密码");
JTextField jTextField =new JTextField(12);
JButton jButton =new JButton ("修改密码");
this.add(jLabel);
this.add(jTextField);
this.add(jButton);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(jTextField.getText().equals("")) {
Tools.messageWindows("请输入密码");
}else {
int n = 0;
if(pow.equals("1")) {
//如果为1则是管理员
String string="update users_man set password=? where account=?";
String data[]= {jTextField.getText(),account};
n=Mysqld.upDate(string, data);
//成功返回1
}
if(pow.equals("2")) {
//如果为1则是管理员
String string="update teacher set password=? where account=?";
String data[]= {jTextField.getText(),account};
n=Mysqld.upDate(string, data);
}
if(pow.equals("3")) {
//如果为1则是管理员
String string="update student set password=? where account=?";
String data[]= {jTextField.getText(),account};
n=Mysqld.upDate(string, data);
}
if(n==1) {
//更改成功
Tools.messageWindows("密码更改成功");
}
if(n==0||n==-1) {
//更改成功
Tools.messageWindows("密码更改失败");
}
}
}
});
}
}
4、功能展示
管理员界面
老师界面
学生界面
修改密码
五、gitee提交记录