用mysql制作一个系统_用数据库做一个简单的实验室安排系统

要求如下:

为《算法与数据结构设计》课程开发实验室安排系统。该课程开课时间为2周,在两周内需要上6次课,每次连续4个学时。

每天上午下午可各安排一次课,周末不安排上课。该系统包含两个程序:管理员程序和教师申请程序:

在教师申请界面中:

教师录入所授课班级ID、班级人数、不希望的时间安排(例如不安排周一上午和周四下午);信息提交后将被存储到后台数据库中。

在管理员界面中:

管理员录入现有的实验室信息,包括实验室地址、实验室所能容纳学生数量。管理员可以选择“课表生成”,实验室安排算法读入已有

申请和实验室信息,生成总课程安排,并写入数据库。

当总课程安排生成后,教师再次进入教师申请程序时,可以看到自己的课表。

请使用C/C++或Java实现。数据库可随意选择。

基本要求:

(1) 两个程序可以由同一个界面进行入口,或者分别两个界面,不要求身份验证;用户只需要输入ID即可,ID事先已写入数据库。

(2) 算法生成的课程安排,要求尽可能为每个老师安排6次课,所安排实验室能容纳所上课班级;按照教师申请的时间次序,尽可能

优先满足先申请教师的期望实验安排;当申请较多而管理员录入的实验室较少,允许出现有的教师申请无法满足的情况;

(3) 实物演示时要求能够说明所采用算法思想;

(4) 程序操作友好、健壮;操作界面简洁美观。

提高要求:

(1) 完善程序功能。例如身份验证、教师与程序员可以修改自己的录入信息等。

(2) 先进而高效的算法。

(3) 界面美观,课表整齐美观。

准备工作:

工具:eclipse

MySQL5.6

MySQL连接驱动:mysql-connector-java-5.1.27.jar

加载驱动:

1. 在工程目录中创建lib文件夹,将下载好的JDBC放到该文件夹下,如下图所示:

188186ef6b91f9ab8a4f41a23f496cd8.png

2. 右键工程名,在java build path中的Libraries分页中选择Add JARs...,选择刚才添加的JDBC,如下图:

a0198feec533ce56f4e599b235d9a31f.png

实现步骤:

1,系统主界面的设计

用户输入账号密码后选择教师或者管理员身份进行登录(默认密登录码均为1),若果账户名或者密码输入错误,则无法登录,

重新输入,效果图如下:

e77803651d05db44c8b8aaee5e16b2dc.png

代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

package实验室安排系统;import javax.swing.*;import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;public class MainUI extends JFrame implementsActionListener {//定义组件

JButton jb1,jb2,jb3=null;

JRadioButton jrb1,jrb2=null;

JPanel jp1,jp2,jp3,jp4=null;

JTextField jtf=null;

JLabel jlb1,jlb2,jlb3=null;

JPasswordField jpf=null;

ButtonGroup bg=null;//设定用户名和密码

final String gly_name="GLY";final String gly_pwd="1";

String tername=null;final String tea_pwd="1";public static voidmain(String[] args) {

MainUI mUI=newMainUI();

}publicMainUI()

{//创建组件

jb1=new JButton("登录");

jb1.setBounds(91, 5, 83, 29);

jb2=new JButton("退出");

jb2.setBounds(225, 5, 83, 29);//设置监听

jb1.addActionListener(this);

jb2.addActionListener(this);

jrb1=new JRadioButton("教师");

jrb1.setBounds(145, 5, 69, 29);

jrb2=new JRadioButton("\u7BA1\u7406\u5458");

jrb2.setBounds(258, 5, 87, 29);

bg=newButtonGroup();

bg.add(jrb1);

bg.add(jrb2);

jrb2.setSelected(true); //初始页面默认选择权限为管理员

jp1=newJPanel();

jp2=newJPanel();

jp3=newJPanel();

jp4=newJPanel();

jlb1=new JLabel("\u7528 \u6237 \u540D\uFF1A");

jlb1.setBounds(43, 8, 90, 21);

jlb2=new JLabel(" \u5BC6 \u7801 \uFF1A");

jlb2.setBounds(44, 8, 95, 21);

jlb3=new JLabel("\u6743 \u9650\uFF1A");

jlb3.setBounds(54, 9, 72, 21);

jtf=new JTextField(10);

jtf.setBounds(144, 5, 197, 27);

jpf=new JPasswordField(10);

jpf.setBounds(146, 5, 195, 27);

jp1.setLayout(null);//加入到JPanel中

jp1.add(jlb1);

jp1.add(jtf);

jp2.setLayout(null);

jp2.add(jlb2);

jp2.add(jpf);

jp3.setLayout(null);

jp3.add(jlb3);//添加标签

jp3.add(jrb1);

jp3.add(jrb2);

jp4.setLayout(null);

jp4.add(jb1);//添加按钮

jp4.add(jb2);//加入JFrame中

getContentPane().add(jp1);

getContentPane().add(jp2);

getContentPane().add(jp3);

getContentPane().add(jp4);

getContentPane().setLayout(new GridLayout(4,1)); //选择GridLayout布局管理器

this.setTitle("实验室安排系统");this.setSize(400,200);this.setLocation(600, 300);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置当关闭窗口时,保证JVM也退出

this.setVisible(true);this.setResizable(true);

}public void actionPerformed(ActionEvent e) { //事件判断

if(e.getActionCommand()=="登录")

{//如果选中教师登录

if(jrb1.isSelected())

{

tealogin();//连接到教师的方法 页面

}else if(jrb2.isSelected()) //学生在登录系统

{

glylogin();//连接到管理员的方法 页面

}

}else if(e.getActionCommand()=="退出")

{

dispose();

}

}//管理员登录判断方法

public voidglylogin()

{if(gly_name.equals(jtf.getText())&&gly_pwd.equals(jpf.getText()))

{

JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);

dispose();

clear();

GlyUI ui=new GlyUI(); //创建新界面

}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())

{

JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);

}else if(jtf.getText().isEmpty())

{

JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);

}else if(jpf.getText().isEmpty())

{

JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);

}else{

JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);//清空输入框

clear();

}

}//教师登录判断方法

public voidtealogin()

{if(tea_pwd.equals(jpf.getText()))

{

tername=jtf.getText();

JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);

clear();

dispose();

TerUI ui=new TerUI(tername); //创建一个新界面

}else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())

{

JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);

}else if(jtf.getText().isEmpty())

{

JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);

}else if(jpf.getText().isEmpty())

{

JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);

}else{

JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);

clear();//清空输入框

}

}//清空文本框和密码框

public voidclear()

{

jtf.setText("");

jpf.setText("");

}

}

View Code

2,管理员界面设计

以管理员身份登录成功后,可以进行信息(实验室地址,实验室容纳量)录入,信息修改,生成课表等操作,效果图如下:

d16dd7d1fd06f64ab7a779bc6b414791.png

代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

package实验室安排系统;import java.awt.*;import java.awt.event.*;importjava.sql.SQLException;import javax.swing.*;import实验室安排系统.MainUI;public class GlyUI extends JFrame implementsActionListener

{//定义组件

JButton jb1,jb2,jb3=null;

JPanel jp3,jp4=null;

JLabel jlb1,jlb3,jlb4,jlb6=null;public static voidmain(String[] args) {

GlyUI ui=newGlyUI();

}publicGlyUI()

{

jp3=newJPanel();

jp3.setBounds(0, 220, 378, 23);

getContentPane().setLayout(null);

jlb1=new JLabel("\u4F60\u597D\uFF0C\u7BA1\u7406\u5458");

jlb1.setBounds(68, 15, 231, 49);

getContentPane().add(jlb1);

jb2=new JButton("\u4FE1\u606F\u5F55\u5165");

jb2.setBounds(15, 79, 105, 61);

getContentPane().add(jb2);

jb2.setForeground(Color.BLUE);

jb2.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

dispose();newGlyInputUI();

}

});//创建组件

jb3=new JButton("信息修改");

jb3.setForeground(Color.BLUE);

jb3.setBounds(135, 79, 105, 61);

getContentPane().add(jb3);

jb3.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {//TODO Auto-generated method stub

dispose();newglyxg();

}

});

jb1=new JButton("\u751F\u6210\u8BFE\u8868");

jb1.setBounds(255, 79, 105, 61);

getContentPane().add(jb1);

jb1.setForeground(Color.BLUE);

jb1.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {try{

GlykbUI gl=newGlykbUI();

}catch(SQLException e1) {//TODO Auto-generated catch block

e1.printStackTrace();

}//生成课表

JOptionPane.showMessageDialog(null,"生成成功","提示消息",J

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值