Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java课程设计【学生信息管理系统】[通俗易懂]

Java课程设计【学生信息管理系统】[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-11-03 07:59:49
发布于 2022-11-03 07:59:49
5.8K00
代码可运行
举报
运行总次数:0
代码可运行

课程设计目录

一、问题描述

如何实现一个功能简单的学生信息管理系统,能够对学生信息(包括照片)进行添加、删除、修改和查询等操作。

二、基本要求

实现一个功能简单的学生信息管理系统,该系统具有按照账户名密码登录功能,登录后,可以添加,删除,修改、查询(显示学生相片)学生信息,添加学生信息时,要求能添加学生的相片信息(实现相片文件的上传和下载功能)。

三、需求分析

程序设计的任务是实现对学生信息的管理。用户名和密码都默认设置为0,用户名或密码输入错误会弹出“用户名或密码输入不正确”的对话框。在用户名和密码输入正确后进入学生信息管理系统,然后进行添加、修改、删除等操作。在添加操作里面可以上传和下载照片,这是File类型的。输入的其他学号、姓名、性别、电话、QQ和专业都是String类型,输出的也是String类型。点击确认后会弹出“添加成功”。

四、概要设计

1、类之间的调用关系

2、学生信息模块

3、系统管理模块

4、详细设计

①主程序LoginGUI的代码

主要实现了系统的登录窗口和登录之后进入的信息管理窗口,还有增删改查功能。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package 学生信息管理系统;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class LoginGUI{ 

private JFrame jf;
//水平box
private Box center=Box.createVerticalBox();
//学号的JPanel
private JPanel idPanel=new JPanel();
//密码的JPanel
private JPanel passwordPanel=new JPanel();
private JLabel lUserId=new JLabel("用户名");
private JTextField tUserId=new JTextField(15);
private JLabel lPassword=new JLabel("密 码");
private JPasswordField tPassword=new JPasswordField(15);
//按钮的JPanel
private JPanel buttonPanel=new JPanel();
private JButton bLogin=new JButton("登录");
private JButton bCancel=new JButton("取消");
//设置运行时窗口的大小
Dimension faceSize=new Dimension(350,150);
//获得屏幕的大小
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
public void init(){ 

jf=new JFrame("学生信息管理系统");
//设置JFrame的名称
jf.setTitle("登录");
//将lUserId,tUserId放在idPanel中,idPanel默认水平放置
idPanel.add(lUserId);
idPanel.add(tUserId);
passwordPanel.add(lPassword);
passwordPanel.add(tPassword);
center.add(idPanel);
center.add(passwordPanel);
buttonPanel.add(bLogin);
buttonPanel.add(bCancel);
//登录按钮的监听器
bLogin.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

String userId=tUserId.getText();
String password=String.valueOf(tPassword.getPassword());
//开启接受数据的线程
if(userId.trim().equals("")||userId==null||password.trim().equals("")||password==null){ 

JOptionPane.showMessageDialog(jf,"用户名或密码不能为空!","提示",JOptionPane.WARNING_MESSAGE);
}else{ 

if(userId.equals("0")&&password.equals("0")){ 

new StudentManageView().init();
}else{ 

loginFailure();
}
}
}
});
//取消按钮的监听器
bCancel.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

System.exit(0);
}
});
center.add(buttonPanel);
jf.add(center);
jf.pack();
//设置JFame运行时的大小
jf.setSize(faceSize);
//设置JFame运行时的位置
jf.setLocation((int)(screenSize.width-faceSize.getWidth())/2,(int)(screenSize.height-faceSize.getHeight())/2);
//设置JFrame不可最大化
jf.setResizable(false);
//设置JFrame单机X时结束程序
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置JFrame可见
jf.setVisible(true);
}
public void loginFailure(){ 

JOptionPane.showMessageDialog(jf, "用户名或密码输入不正确!","提示",JOptionPane.WARNING_MESSAGE);
}
public static void main(String args[])throws Exception{ 

new LoginGUI().init();
}
}
class MyJTable extends JTable{ 

/** * */
private static final long serialVersionUID = -3083638370004874364L;
public MyJTable(TableModel dm){ 

super(dm);
}
//设置表格不可编辑
public boolean isCellEditable(int rowIndex,int columnIndex){ 

return false;
}
}
class StudentService{ 

private Student[] students=new Student[50];
//添加学生信息
public void insert(Student s){ 

for(int i=0;i<students.length;i++){ 

if(students[i]==null){ 

students[i]=s;
System.out.println("添加成功!");
break;
}
}
}
//删除学生信息
public int delete(String userId){ 

int flag=0;
for(int i=0;i<students.length;i++){ 

if(students[i]!=null){ 

if(students[i].getUserId().equals(userId)){ 

students[i]=null;
System.out.print("删除成功!");
flag=1;
break;
}
}
}
return flag;
}
//修改学生信息
public void update(Student s){ 

String userId=s.getUserId();
for(int i=0;i<students.length;i++){ 

if(students[i]!=null){ 

if(students[i].getUserId().equals(userId)){ 

students[i].setId(s.getId());
students[i].setName(s.getName());
students[i].setSex(s.getSex());
students[i].setAge(s.getAge());
students[i].setPhone(s.getPhone());
students[i].setQq(s.getQq());
students[i].setMajor(s.getMajor());
}
}
}
}
//按学号查询
public Student selectById(String userId){ 

for(Student s:students){ 

if(s!=null){ 

if(s.getUserId().equals(userId)){ 

return s;
}
}
}
return null;
}
//查询所有学生信息
public Student[] selectAll(){ 

return students;
}
}
class StudentManageView { 

//设置上传照片的按钮
private JButton upload=new JButton("上传照片");
private JFrame jf=new JFrame("学生信息管理系统");
Dimension faceSize=new Dimension(800,600);
private Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
//按学号查询
private JPanel pSelect=new JPanel();
private JLabel lSelect=new JLabel("学号");
private JTextField tSelect=new JTextField(15);
private JButton bSelect=new JButton("查询");
//查询结果放在一个JTable
private MyJTable table;
private DefaultTableModel tableModel;
private JScrollPane tableScrollPane;
private Object[] tableTitle={ 
"学号","姓名","性别","年龄","手机号","QQ","专业"};
private Object[][]tableData={ 
new Object[]{ 
""}};
//对学生信息进行管理的添加、删除、修改按钮
private JPanel buttonPanel=new JPanel();
private JButton insert=new JButton("添加");
private JButton delete=new JButton("删除");
private JButton update=new JButton("修改");
//单机添加、修改时弹出的对话框
private JDialog dialog=new JDialog(jf,"学生管理");
private Box box=Box.createVerticalBox();
private JPanel pPhoto=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel pId=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel pName=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel pSex=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel pAge=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel pPhone=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel pQq=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel pMajor=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JLabel lPhoto=new JLabel("头 像");
private JLabel lId=new JLabel("学 号");
private JLabel lName=new JLabel("姓 名");
private JLabel lSex=new JLabel("性 别");
private JLabel lAge=new JLabel("年 龄");
private JLabel lPhone=new JLabel("手 机");
private JLabel lQq=new JLabel("Q Q");
private JLabel lMajor=new JLabel("专 业");
private ImageIcon icon=new ImageIcon(new ImageIcon("D:/Saved Pictures/520.jpg").getImage().getScaledInstance(30,30,3));
private JLabel tPhoto=new JLabel(icon);
private JTextField tId=new JTextField(15);
private JTextField tName=new JTextField(15);
private ButtonGroup bSex=new ButtonGroup();
private JRadioButton boy=new JRadioButton("男");
private JRadioButton girl=new JRadioButton("女");
private JTextField tAge=new JTextField(15);
private JTextField tPhone=new JTextField(15);
private JTextField tQq=new JTextField(15);
private JTextField tMajor=new JTextField(15);
private JPanel pButton=new JPanel();
private JButton confirm=new JButton("确认");
private JButton cancel=new JButton("取消");
private StudentService service=new StudentService();
//用于标记是添加还是修改
private String id;
void init(){ 

pSelect.add(lSelect);
pSelect.add(tSelect);
pSelect.add(bSelect);
//查询按钮的监听器
bSelect.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

String userId=tSelect.getText().trim();
if(userId.equals("")){ 

Student[] student=service.selectAll();
clearTable();
for(Student s:student){ 

insertTable(s);
}
}else{ 

Student s=service.selectById(userId);
if(s!=null){ 

clearTable();
insertTable(s);
}else{ 

selectFailure();
}
}
}
});
//table
tableModel=new DefaultTableModel(tableData,tableTitle);
table=new MyJTable(tableModel);
tableScrollPane=new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED  );
//button
buttonPanel.add(insert);
buttonPanel.add(delete);
buttonPanel.add(update);
//添加按钮的监听器
insert.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

//上传照片的监听器
upload.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

new View().use();
ImageIcon icon=new ImageIcon(new ImageIcon("fromFileName").getImage().getScaledInstance(30,30,3));
JLabel tPhoto=new JLabel(icon);
pPhoto.add(tPhoto);
}
});
//如果是添加,则将id=null;
id=null;
tId.setText("");
tId.setEditable(true);
tName.setText("");
bSex.clearSelection();
tAge.setText("");
tPhone.setText("");
tQq.setText("");
tMajor.setText("");
dialog.setVisible(true);
}
});
//删除按钮的监听器
delete.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

//获得选择删除的行号数组
int[] selected=table.getSelectedRows();
//如果selected的长度为0,说明没有选择要删除的
if(selected.length==0){ 

JOptionPane.showMessageDialog(jf, "请选择要删除的信息!","提示",JOptionPane.WARNING_MESSAGE );
}else{ 

//提示是否要进行删除
int flag=JOptionPane.showConfirmDialog(jf, "确认删除吗?","提示",JOptionPane.WARNING_MESSAGE );
//如果选择是,则进行删除
if(flag==JOptionPane.OK_OPTION ){ 

for(int i=selected.length-1;i>=0;i--){ 

service.delete((String)tableModel.getValueAt(selected[i], 0));
tableModel.removeRow(selected[i]);
}
}
}
}
});
//修改按钮的监听器
update.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

int row=table.getSelectedRow();
//如果要进行修改,就将id=要修改的学号
id=String.valueOf(table.getValueAt(row, 0));
//设置tId的内容
tId.setText(id);
//设置tId不可修改
tId.setEditable(false);
tName.setText(String.valueOf(table.getValueAt(row, 1)));
String sex=(String) table.getValueAt(row, 2);
//如果性别是"男",则将单选框中的男选中,否则选中女
if(sex.equals("男")){ 

bSex.setSelected(boy.getModel(),true);
}else{ 

bSex.setSelected(girl.getModel(),true);
}
tAge.setText(String.valueOf(table.getValueAt(row, 3)));
tPhone.setText(String.valueOf(table.getValueAt(row, 4)));
tQq.setText(String.valueOf(table.getValueAt(row, 5)));
tMajor.setText(String.valueOf(table.getValueAt(row, 6)));
//设置dialog可见
dialog.setVisible(true);
}
});
jf.setLayout(new BorderLayout());
//设置pSelect在jf的北面
jf.add(pSelect,BorderLayout.NORTH);
//设置pSelect在jf的中心
jf.add(tableScrollPane,BorderLayout.CENTER );
//设置pSelelct在jf的南面
jf.add(buttonPanel,BorderLayout.SOUTH);
jf.pack();
jf.setSize(faceSize);
jf.setLocation((int)(screenSize.width-faceSize.getWidth())/2,(int)(screenSize.height-faceSize.getHeight())/2);
jf.setResizable(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
pPhoto.add(lPhoto);
pPhoto.add(tPhoto);
pPhoto.add(upload);
pId.add(lId);
pId.add(tId);
pName.add(lName);
pName.add(tName);
pSex.add(lSex);
bSex.add(boy);
bSex.add(girl);
pSex.add(boy);
pSex.add(girl);
pAge.add(lAge);
pAge.add(tAge);
pPhone.add(lPhone);
pPhone.add(tPhone);
pQq.add(lQq);
pQq.add(tQq);
pMajor.add(lMajor);
pMajor.add(tMajor);
pButton.add(confirm);
pButton.add(cancel);
//确定按钮的监听器
confirm.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

Student student=new Student();
student.setUserId(tId.getText());
student.setPassword(tId.getText());
student.setId(tId.getText());
student.setName(tName.getText());
String sex=null;
if(boy.isSelected()){ 

sex="男";
}
if(girl.isSelected()){ 

sex="女";
}
student.setSex(sex);
student.setAge(tAge.getText());
student.setPhone(tPhone.getText());
student.setQq(tQq.getText());
student.setMajor(tMajor.getText());
if(id!=null){ 

service.update(student);
}else{ 

service.insert(student);
}
dialog.dispose();
}
});
//取消按钮的监听器
cancel.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

dialog.dispose();
}
});
box.add(pPhoto);
box.add(pId);
box.add(pName);
box.add(pPhone);
box.add(pSex);
box.add(pAge);
box.add(pPhone);
box.add(pQq);
box.add(pMajor);
box.add(pButton);
box.add(pButton);
dialog.add(box);
dialog.setBounds((int)(screenSize.width-280)/2,(int)(screenSize.height-300)/2,280,350);
}
public void insertTable(Student student){ 

if(student!=null){ 

String[]newCell=new String[7];
newCell[0]=student.getId();
newCell[1]=student.getName();
newCell[2]=student.getSex();
newCell[3]=student.getAge();
newCell[4]=student.getPhone();
newCell[5]=student.getQq();
newCell[6]=student.getMajor();
tableModel.addRow(newCell);
}
}
public void clearTable(){ 

int rows=tableModel.getRowCount();
for(int i=rows-1;i>=0;i++){ 

tableModel.removeRow(i);
}
}
public void selectFailure(){ 

JOptionPane.showMessageDialog(jf,"不存在该学号的学生!","提示",JOptionPane.WARNING_MESSAGE );
}
}

②程序View的代码

主要实现了上传下载功能的窗口,修改文件路径也是在这里修改,一共三处。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class View { 

private JFrame jf=new JFrame();
//页面的总JPanel
private JPanel total=new JPanel(new BorderLayout());
//上传
private JPanel pUpload=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JLabel lFileName=new JLabel("请选择上传的照片");
private JTextField tFileName=new JTextField(15);
private JButton bBrowse=new JButton("浏 览");
private JFileChooser uploadChooser=new JFileChooser();
private JButton bUpload=new JButton("上 传");
private JPanel pDownload=new JPanel(new FlowLayout(FlowLayout.LEFT));
private JLabel lDownload=new JLabel("下载下面的图片:");
private JFileChooser downloadChooser=new JFileChooser();
private JButton bDownload=new JButton("下 载");
private JPanel pIcon=new JPanel(new FlowLayout(FlowLayout.LEFT));
//使用本地图片文件作为图标
private ImageIcon icon=new ImageIcon(new ImageIcon("D:/Saved Pictures/009.jpg").getImage().getScaledInstance(400,320,0));
private JLabel lIcon=new JLabel(icon);
Dimension faceSize=new Dimension(500,450);
//设置运行时窗口的位置
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
public void use(){ 

pUpload.add(lFileName);
pUpload.add(tFileName);
pUpload.add(bBrowse);
pUpload.add(bUpload);
//浏览按钮的监听器
bBrowse.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

downloadChooser.setCurrentDirectory(new File("."));
int result=downloadChooser.showOpenDialog(jf);
if(result==JFileChooser.APPROVE_OPTION ){ 

String path=downloadChooser.getSelectedFile().getPath();
tFileName.setText(path);
}
}
});
//上传按钮的监听器
bUpload.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

String fromFileName=tFileName.getText();
String toFileName="D:/Config/"+System.currentTimeMillis()+".jpg";
write(fromFileName,toFileName);
JOptionPane.showMessageDialog(jf, "上传成功!","提示",JOptionPane.WARNING_MESSAGE );
}
});
pDownload.add(lDownload);
pDownload.add(bDownload);
//下载按钮的监听器
bDownload.addActionListener(new ActionListener(){ 

public void actionPerformed(ActionEvent e){ 

downloadChooser.setCurrentDirectory(new File("."));
int result=uploadChooser.showOpenDialog(jf);
if(result==JFileChooser.APPROVE_OPTION ){ 

String path=uploadChooser.getSelectedFile().getPath();
String fromFileName="D:/Saved Pictures/009.jpg";
write(fromFileName,path);
JOptionPane.showMessageDialog(jf, "下载成功!","提示",JOptionPane.WARNING_MESSAGE );
}
}
});
//放置按钮的位置
pIcon.add(lIcon);
total.add(pUpload,BorderLayout.NORTH);
total.add(pDownload,BorderLayout.CENTER);
total.add(pIcon,BorderLayout.SOUTH);
jf.add(total);
jf.setSize(faceSize);
jf.setLocation((int)(screenSize.width-faceSize.getWidth())/2,(int)(screenSize.height-faceSize.getHeight())/2);
jf.setResizable(false);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
jf.setVisible(true);
}
//fromFile是源文件,toFile是目的文件
public void write(String fromFile,String toFile){ 

FileInputStream fis=null;
FileOutputStream fos=null;
//用try和catch捕获异常
try{ 

fis=new FileInputStream(fromFile);
fos=new FileOutputStream(toFile);
byte[] buf=new byte[1024];
int hasRead=0;
while((hasRead=fis.read(buf))>0){ 

fos.write(buf,0,hasRead);
}
}catch(FileNotFoundException e){ 

e.printStackTrace();
}catch(IOException e){ 

e.printStackTrace();  
}finally{ 

try{ 

fis.close();
fos.close();
}catch(IOException e){ 

e.printStackTrace();  
}
}
}
public static void main(String args[]){ 

//用View的引用调用use方法
new View().use();
}
}

③程序Student的代码

创建User表和Student表,先定义各个变量,然后加上set和get方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package 学生信息管理系统;
class User{ 

private String userId;
private String password;
public String getUserId(){ 

return userId;
}
public void setUserId(String userId){ 

this.userId=userId;
}
public String getPassword(){ 

return password;
}
public void setPassword(String password){ 

this.password=password;
}
}
public class Student extends User{ 

private String id;
private String name;
private String sex;
private String age;
private String phone;
private String qq;
private String major;
private Object photo;
public Object getPhoto(){ 

return photo;
}
public void setPhoto(Object photo){ 

this.photo=photo;
}
public String getId(){ 

return id;
}
public void setId(String id){ 

this.id=id;
}
public String getName(){ 

return name;
}
public void setName(String name){ 

this.name=name;
}
public String getSex(){ 

return sex;
}
public void setSex(String sex){ 

this.sex=sex;
}
public String getAge(){ 

return age;
}
public void setAge(String age){ 

this.age=age;
}
public String getPhone(){ 

return phone;
}
public void setPhone(String phone){ 

this.phone=phone;
}
public String getQq(){ 

return qq;
}
public void setQq(String qq){ 

this.qq=qq;
}
public String getMajor(){ 

return major;
}
public void setMajor(String major){ 

this.major=major;
}
}

④程序ConnectSQLServer的代码

主要实现数据库的连接,存储学生信息。直接声明数据库的登录名和密码,和连接使用的URL,用try-catch来加载数据库驱动和给出提示信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package 学生信息管理系统;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
class DatebaseConnection { 

//数据库连接成功
public final String DBDRIVER="net.sourceforge.jtds.jdbc.Driver";
//数据库连接的URL
public  final String DBURL="jdbc:jtds:sqlserver://127.0.0.1:1433/Competition";
//数据库登录名
public final String DBUSER="sa";
//数据库登录密码
public final String DBPASS="Ambow99999999";
private Connection conn=null;
public DatebaseConnection(){ 

try{ 

//加载数据库驱动
Class.forName(DBDRIVER);
//获取数据库连接
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
}catch(SQLException e){ 

JOptionPane.showMessageDialog(null,"数据库连接失败","异常",JOptionPane.ERROR_MESSAGE );
System.exit(0);
}catch(ClassNotFoundException e){ 

JOptionPane.showMessageDialog(null, "驱动加载失败","异常",JOptionPane.ERROR_MESSAGE );
System.exit(0);
}
}
public Connection getConnection(){ 

return this.conn;
}
public void close(){ 

//关闭数据库连接
if(this.conn!=null){ 

try{ 

this.conn.close();
}catch(SQLException e){ 
}
}
}
}
public class ConnectSQLServer{ 

public static void main(String[] args) { 

try{ 

Connection con=new DatebaseConnection().getConnection();
if(con!=null){ 

JOptionPane.showMessageDialog(null,"数据库连接成功","祝贺",JOptionPane.INFORMATION_MESSAGE );
System.exit(0);
}else{ 

JOptionPane.showMessageDialog(null, "数据库连接失败","错误",JOptionPane.ERROR_MESSAGE );
System.exit(0);
}
con.close();
}catch(SQLException e){ 

e.printStackTrace();  
}
}
}

系统的全部代码文件展示如下:

1、Main.java类

2、View.java类

3、Student.java类

4、ConnectSQLServer类

5、LoginGUI类

五、调试分析

在一开始调试的时候,发现虽然没有错误,但无法运行,找了很久发现是自己在main方法里没有去调用init()方法,然后填上了之后程序可以运行。然后在成功登录后进入学生信息管理系统界面。在里面没有上传照片和下载图片这一选项。我在View这个程序里面首先添加了本地的图片作为图标可供下载,然后选定一个文件夹Config作为上传的路径。这样,我就在LoginGUI类里面的添加按钮监听器里面再增加了调用View类的use()方法的监听器,实现了图片上传和下载的功能。 总之,从一开始参考书上例题打出来的程序作为基石,在上面进行雕刻。从设计转化为实现,打基础这一步很困难,因为要花很长时间查资料、看书和看代码来理解程序,然后才能自己灵活进行优化。同学之间也相互讨论帮助,都能给出自己的想法,然后交流之后会得出更好的创意,从第一个星期开始,我已经规划好要怎样做,许多同学也参考了我的规划。我一直按照计划实施并且很顺利地完成了程序设计。

六、用户使用说明

1、登录

(1)程序设计的任务是先设计出一个登录窗口,输入用户名和密码。

如果输入错误,会像如图所示输出“用户名或密码输入不正确”的对话框:

我给出的代码为了方便调试,用户名和密码全是0,记住运行的是LoginGUI这个类

(2)如果正确,则成功登录,进入学生信息管理界面,如图所示:

2、添加

(1)点击“添加”按钮,进入学生信息添加界面:

(2)在以上界面输入要添加的学生信息,首先点击“上传照片”按钮,然后弹出如下窗口:

(3)点击浏览选项,选择本地文件里需要上传的图片,这里我们选择Taylor Swift的图片,然后点击上传,会显示“上传成功”的对话框。

(4)可以看到这张图片上传到了本地D:/Config,实现了图片的上传功能。

(5)也可以点击“下载”这个按钮,会提示下载成功的对话框,如图所示:

(6)它会将你的头像下载到你指定的文件夹中,实现了文件的下载功能,如下图所示是将头像下载到E:/QQ浏览器文件这个文件夹里。

(7)然后添加其他的学生信息,如图所示:

(8)点击“确认”按钮,即可保存学生信息。我们再添加一个女学生的信息,如下图所示:

(9)然后单击“确定”按钮,此时学生信息添加成功。

3、查询

(1)在学生管理界面的学生信息列表中点击“查询”按钮,即可显示已经添加的学生信息记录,如图所示:

(2)也可以在“查询”的文本框内输入学号,然后点击“查询”按钮,会跳出所对应的学生记录,如图所示:

4、修改

(1)点击所选的武则天学生记录,再点击“修改”按钮,弹出信息框,修改姓名为“花木兰”,修改手机号为“18816218888”,如图所示:

(2)点击确认按钮,再点击“查询”按钮进行刷新,显示出修改后的信息,如下图所示:

5、删除

(1)在学生信息管理系统界面选中某一学生记录,单击“删除”按钮,弹出删除确认界面。如果确认删除,单击“确定”按钮,否则单击“取消”按钮。

(2)我们选择学生凯的记录,并点击“删除”按钮,再确定删除,会看到这条记录被删除,仅剩学生花木兰的记录,如图:

6、退出

点击右上角的X,将关闭所有程序窗口。

七、测试结果

测试数据和测试结果在用户使用说明选项中已经详细介绍过,这里不再重复介绍。

八、课程设计总结

这次课程设计总体来说是一次非常有意义的任务,因为在这次课程设计中我学会了很多GUI编程和流类的知识,提高了编程的能力,也增加了对编程的兴趣。虽然这是一个小项目,但是能把它做好也是有很大的满足感。虽然一开始遇到很多问题,但自己都咬牙克服、迎难而上,每天都在钻研程序,然后将自己的思想与同学们交流。可以说,没有付出就没有回报,只要你肯付出,就会有收获。一件事,你只要用心去做了,将它做好,无论结果如何,你都不会留有遗憾的。课程设计让我对所学知识有了更深刻的理解,也让我明白如今对程序员的要求是多么严格,需要掌握各种编程知识,才能够在职场上游刃有余。

九、参考文献

《JAVA核心技术》 马志强 张然 李雷孝著 《JAVA API文档》 Oracle官网文件 《JAVA编程思想》 【美】Bruce Eckel著 《JAVA数据库技术详解》 李刚 著

十、源码下载

这个系统也是当时为数不多的优秀课程设计,这篇博客就是该课设设计的报告,需要源码的同学可以关注博主的公众号《萌新加油站》,回复:java学生系统,即可获得源码学习。

等你有了新的圈子,别忘了谁陪你走过了人烟稀少的时候;等你过得好时,别忘了谁陪你度过了最艰难的时刻。路上人山人海,不一定都对你好,但肯定会有一个愿意等。朋友不要多,但要最真。你可以不好,但不能背叛;可以不是土豪,但会懂得分享。可以没有势力,但知道护友。最后我们都散了,记得常联系。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181153.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
1小时学会通过Java Swing Design设计java图形化
一般大一结束的时候需要做一个类似一下内容的javaswing项目,故而咱们的学习目标如下:
红目香薰
2022/11/30
1.4K0
1小时学会通过Java Swing Design设计java图形化
学生信息管理系统 | Java程序设计
市场需求:主要解决一个管理学生信息的问题,学生学号,班级,成绩之类的问题,旨在为各大高校提供一个开源、自由、免费的简单管理软件。这个问题要求我们提供一个管理学生信息安全的平台,避免学生信息的缺漏。人性化的图形管理界面,加上优美的背景音乐和可爱的开场动画,让管理者可以更加愉悦得对学生信息进行管理。
Jean
2021/09/16
1.3K0
学生信息管理系统 | Java程序设计
Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)
/* * 若尘 */ package demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.a
ruochen
2021/05/15
1.4K0
Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)
学生管理系统——Swing窗体版本
上一次一个小伙伴私聊我,说:有没有swing版本的学生管理系统让他参考一下。 这次给他安排上啦!  首先来看看有什么文件吧(得要有个适合自己的命名规则很重要,如果自己都看不懂,那么别人就更难懂啦!)  //我根据图片的信息来写文件内容吧! 这是dao方法 package com.zking.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.
用户10196776
2022/11/22
1.7K0
学生管理系统——Swing窗体版本
使用Swing制作一个产生随机数的程序
本文将详细介绍如何使用Swing库编写一个产生随机数的程序。该程序具有一个用户界面,用户可以输入左边界和右边界,并点击按钮生成一个介于左右边界之间的随机数。同时,程序还包括一些用于处理边界情况和可选的时间显示功能。
GeekLiHua
2025/01/21
960
使用Swing制作一个产生随机数的程序
Java 常用动作事件监听
import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Scanner; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.
用户2965768
2019/03/05
1.6K0
Java课程设计-学籍信息管理系统「建议收藏」
学生的学籍信息是记录学生的重要信息档案,如何以电子文档形式记录下学生的学籍信息是每个学校必须做的事情,该学生学籍信息管理系统就是为了方便学校记录下每一个学生的基本信息,生成电子数据库,并且能够做到查询、更改、删除、浏览等功能操作,让学籍信息的管理更加方便快捷。
全栈程序员站长
2022/07/22
2.7K0
Java课程设计-学籍信息管理系统「建议收藏」
数据库课程设计-宿舍管理系统「建议收藏」
最近写完了数据库的课程设计,想把整个源码的编辑过程发出来。程序很简单,需要有很多完善的地方,在这里,我想和大家分享写这个程序的心路历程。
全栈程序员站长
2022/08/31
2.1K0
Swing组件概述
这个模式明确规定了三个对象如何进行交互。模型存储内容,它没有任何用户界面。对于一个按钮来说,内容非常简单-它只是一组标志,用来说明按钮是否按下,是否启用等等。对于一个文本框来说,内容稍稍复杂,它是容纳当前文本的一个字符串对象。这个内容和视图的内容并不一致------如果内容的长度大于文本框的显示长度,那么用户看到的就只有文本框显示的那一部分。模型必须实现改变和发现内容的方法。例如:一个文本模型中的方法有:在当前文本中添加或者删除字符以及把当前文本作为一个字符串返回等。再次强调,模型是完全不可见的,显示存储在模型中的数据是视图的工作。
张哥编程
2024/12/17
2420
用户管理系统+源码+效果图
目录 核心功能 1、帮助类DBHelper 2、实体类entity 3、功能类dao 4、测试类 以上就是这个小案例的代码,下面是它的运行效果图  在这里面可以进行基本的增删改查以及其他的查询方式,需连接数据库一起使用 ---- 核心功能 添加用户信息 删除某一个用户信息 删除选中的用户信息 分页查询所有用户信息 模糊查询用户信息 更新用户信息 1、帮助类DBHelper package com.zking.util; import java.sql.Connection; import java.
天蝎座的程序媛
2022/11/18
1.6K0
用户管理系统+源码+效果图
数据库系统课程设计 --- 人事管理系统(超详细)
🔥 在看该文章之前,我希望大家能够从头慢慢看下去,而不是直接去复制代码,该 课程设计其实可以学到一些东西的,说不定以后也许能够用上来的
IsLand1314
2024/11/26
3840
数据库系统课程设计 --- 人事管理系统(超详细)
java+SQL做学生信息管理系统(增删改查)学生新作「建议收藏」
[过程中需要用到的所有工具数据库以及数据库管理器等等] https://pan.baidu.com/s/1j5cNKwslk8bCXSLoeCEgPQ 提取码:1234
全栈程序员站长
2022/09/27
8671
java+SQL做学生信息管理系统(增删改查)学生新作「建议收藏」
java 实现一个单线程的资源下载器
通过https://github.com/Lruihao/Grocery/raw/master/fonts/MMT_last.ttf下载沐目体 ttf 字体文件,稍微等待一下弹出对话框“下载完毕”,经检查下载内容正常。
Cell
2022/02/25
6690
java 实现一个单线程的资源下载器
Java课设:学生管理系统
查询学生的个人基本信息,查询课程表、选课情况,查询课程的成绩信息。其中课程表及选课信息和成绩信息无法改动,个人基本信息可以添加或者删除。 这是一个比较简单的管理系统,具备简单的添删查功能,适合学习用。 首先设计好数据库,软件为Microsoft SQL server
全栈程序员站长
2022/09/14
1.4K0
Java课程设计——学生成绩管理系统
在现今信息时代,生活速度的加快,使得人们越来越向信息化、数字化发展。随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,尤其是学生的考试成绩数据。面对庞大的学生的成绩,需要有学生成绩管理系统来提高学生管理工作的效率。介于此提出了学生成绩管理系统,学生管理系统是计算机对学生档案信息进行管理,具有手工管理无可比拟的优点,如索检迅速、查找方便、可靠性高、存储量大等有点。现在我国的大中专院校的学生成绩管理水平正在不断提高,停留在纸介质基础上的管理手段早已被时代淘汰,因为它浪费了许多的人力和物力。本系统使用 Swing + MySQL + IntelliJ IDEA 开发。为管理人员提供充足的信息和快捷的查询手段,提高学校学籍管理的效率。
全栈程序员站长
2022/09/09
4.2K1
java超市仓库管理系统(超市条形码管理系统)
1、商品管理页面布局,添加一个JScrollPanel(内嵌JTable),用来显示所有商品的信息;添加两个JLabel用于显示查询提示信息;添加JTextField用于输入商品商品名称;添加2个JButton,分别用来实现商品查询及添加商品,效果图如图1所示。
全栈程序员站长
2022/07/25
3.7K0
java超市仓库管理系统(超市条形码管理系统)
Java-单机版的书店管理系统(练习设计模块和思想_系列 三 )
Java-单机版的书店管理系统(练习设计模块和思想_系列 二 ): http://blog.csdn.net/qq_26525215/article/details/51089734
谙忆
2021/01/21
8190
Java入门(12)-- Swing程序设计
GUI(图形用户界面)为程序提供图形界面,它最初的设计目的是为程序员构建一个通用的GUI,使其能够在所有的平台上运行,但Java1.0中基础类AWT(抽象窗口工具箱)并没有达到这个要求,于是Swing出现了,它是AWT组件的增强组件,但是它并不能完全替代AWT组件,这两种组件需要同时出现在一个图形用户界面中。
爱学习的程序媛
2022/04/07
5.6K0
Java入门(12)-- Swing程序设计
java图形用户界面
在 Web 应用大行其道的今天,桌面应用似乎显得有些“老派”。但实际上,Java Swing 依然在许多领域发挥着不可替代的作用,比如 企业内部工具、离线管理软件、教学软件 等。本文就从基本的讲起。
找Bug
2025/04/04
1870
java图形用户界面
Java+MySQL实现学生信息管理系统
基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家。
Java团长
2018/08/07
16.6K0
推荐阅读
相关推荐
1小时学会通过Java Swing Design设计java图形化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验