实现一个安排课表的Java实验。

有以下几点要求:

①用所给的教师姓名进行课表安排

②用所给的地点进行课表安排

③不得有重复的课程名称出现

④将信息写入到文件里

⑤用窗口来进行实现

package com.xu;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*; import java.io.*; public class manageclass extends JFrame{
public manageclass() throws FileNotFoundException
{
this.setTitle("请登录");
this.setLayout(null);
//创建容器
Container c=this.getContentPane();
//创建课程名称标签
JLabel jl1=new JLabel("课程名称:");
//创建任课老师标签
JLabel jl2=new JLabel("任课老师:");
//创建上课地点标签
JLabel jl3=new JLabel("上课地点:");
//创建课程名称文本框
final JTextField jt=new JTextField();
//创建任课老师文本框
final JTextField jt2=new JTextField();
//创建上课地点文本框
final JTextField jt3=new JTextField();
//创建保存按钮
JButton jb=new JButton("保存");
//在容器中加入所有标签和按钮
c.add(jl1);
c.add(jl2);
c.add(jl3);
c.add(jt);
c.add(jt2);
c.add(jt3);
c.add(jb);
//设置标签和文本框,按钮的位置
//x,y,width,height
jl1.setBounds(10, 20, 90, 40);
jl2.setBounds(10, 70, 90, 40);
jl3.setBounds(10, 120, 90, 40);
jt.setBounds(80, 20, 210, 40);
jt2.setBounds(80,70,210,40);
jt3.setBounds(80, 120,210,40);
jb.setBounds(100, 180, 60, 30);
//监听器的功能实现
jb.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
boolean flag = true;
//初始化文件的写入
File file=new File("E:\\数据.txt");
Writer out=null;
try {
out = new FileWriter(file,true);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//来判断任课老师是否是规定的老师姓名
if(jt2.getText().trim().equals(teacher[0])||jt2.getText().trim().equals(teacher[1])||jt2.getText().trim().equals(teacher[2])||jt2.getText().trim().equals(teacher[3])||jt2.getText().trim().equals(teacher[4]))
{
//来判断上课地点是否为规定的上课地点
if(jt3.getText().trim().equals(where[0])||jt3.getText().trim().equals(where[1])||jt3.getText().trim().equals(where[2])||jt3.getText().trim().equals(where[3]))
{
//对第一个数据的存储
if(num==0)
name[num]=jt.getText().trim();
//对于其它的数据存储
else
{
for(int i=0;i<num;i++)
{
//如果和之前的课程名称相重,则不进行添加,并重新输入
if(jt.getText().trim().equals(name[i]))
{
JOptionPane.showMessageDialog(null, "课程重复,请重新输入!");
flag=false;
break;
}
//否则就将该信息加入到数组里
else
name[num]=jt.getText().trim();
}
}
//如果不重
if(flag==true)
{
t1[num]=jt2.getText().trim();
w1[num]=jt3.getText().trim();
String s="课程名称:"+name[num]+" 任课老师:"+t1[num]+" 上课地点:"+w1[num];
//再输出窗口输出信息同时写入到文件里
System.out.println(s);
try {
out.write(s);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
out.write("\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//注意要将缓冲区刷新出来
try {
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
num++;
}
}
else
{
JOptionPane.showMessageDialog(null, "无该地点!");
}
}
else {
JOptionPane.showMessageDialog(null, "无该老师!");
}
//注意将文本框清除
jt.setText("");
jt2.setText("");
jt3.setText("");
}
}); //设置界面大小及可见
this.setSize(500,300);
this.setVisible(true);
this.setResizable(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
//课程名称
static String[] name=new String[1000];
//总共信息条数
static int num=0;
//老师信息
static String[] teacher=new String[1000];
//地点信息
static String[] where=new String[1000];
//实际存储老师信息
static String[] t1=new String[1000];
//实际存储地点信息
static String[] w1=new String[1000]; public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
teacher[0]="王建民";
teacher[1]="刘立嘉";
teacher[2]="刘丹";
teacher[3]="王辉";
teacher[4]="杨子光";
where[0]="一教";
where[1]="二教";
where[2]="三教";
where[3]="基教";
new manageclass(); }
}

实现一个简单的登录界面,其中注册页面被锁定//后期会改善,验证码采用随机数的原理,可以任意的生成一个小写/大写/数字1-9的六位验证码

package com.JTextField;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*;
import java.awt.Font;
import java.awt.Graphics; /*
* 2018316
* xulifeng
* 2019-9-21
*/ public class JTextFieldTest extends JFrame{
//private static final long serialVersionUID = -1929142760043481303L;
static String s=new String();
public String random()
{
Random r=new Random();
String result = "";
//进行6次循环
for(int i = 0 ; i < 6 ; i ++)
{
//生成一个97~122的int型的整数
int intVal = (r.nextInt(26) + 97);
int x=(r.nextInt(9)+49);
int f=r.nextInt(2);
//将intValue强制转换为char后连接到result后面
if(f==1)
result = result + (char)intVal;
else
result = result + (char)x;
}
return result;
}
public JTextFieldTest()
{
this.setTitle("请登录");
this.setLayout(null);
//创建容器
Container c=this.getContentPane();
//创建用户名标签
JLabel jl1=new JLabel("用户名:");
//创建密码标签
JLabel jl2=new JLabel("密码:");
//创建验证码标签
JLabel jl3=new JLabel("验证码:");
//创建文本框
final JTextField jt=new JTextField();
//创建验证码输入文本框
final JTextField jt2=new JTextField();
//创建验证码比对文本框按钮
s=this.random();
JButton jb3=new JButton(s); jb3.setFont(new Font("楷体", Font.BOLD,20)); jb3.setForeground(Color.pink);
//创建密码框
final JPasswordField jp=new JPasswordField();
jp.setEchoChar('*');
//创建登录按钮
JButton jb=new JButton("登录");
//创建注册按钮
JButton jb2=new JButton("注册");
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(jt.getText().trim().equals("xlf")&&new String(jp.getPassword()).trim().equals("fengge")&&jt2.getText().trim().equals(s))
{
JOptionPane.showMessageDialog(null, "登陆成功!");
System.exit(-1);
}
else if(jt.getText().trim().equals("")||new String(jp.getPassword()).trim().equals("")||jt2.getText().trim().equals(""))
{
JOptionPane.showMessageDialog(null, "不能为空");
}
else
{
JOptionPane.showMessageDialog(null, "登录错误");
}
jt.setText("");
jp.setText("");
jt2.setText(""); Random r=new Random();
String result = "";
//进行6次循环
for(int i = 0 ; i < 6 ; i ++)
{
//生成一个97~122的int型的整数
int intVal = (r.nextInt(26) + 97);
int x=(r.nextInt(9)+49);
int f=r.nextInt(2);
//将intValue强制转换为char后连接到result后面
if(f==1)
result = result + (char)intVal;
else
result = result + (char)x;
}
s=result;
jb3.setText(s);
}
});
jb2.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "注册成功\n用户名:xlf\n密码:fengge");
jt.setText("");
jp.setText("");
jt2.setText(""); Random r=new Random();
String result = "";
//进行6次循环
for(int i = 0 ; i < 6 ; i ++)
{
//生成一个97~122的int型的整数
int intVal = (r.nextInt(26) + 97);
int x=(r.nextInt(9)+49);
int f=r.nextInt(2);
//将intValue强制转换为char后连接到result后面
if(f==1)
result = result + (char)intVal;
else
result = result + (char)x;
}
s=result;
jb3.setText(s);
}
});
jb3.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub Random r=new Random();
String result = "";
//进行6次循环
for(int i = 0 ; i < 6 ; i ++)
{
//生成一个97~122的int型的整数
int intVal = (r.nextInt(26) + 97);
int x=(r.nextInt(9)+49);
int y=(r.nextInt(26)+65);
int f=r.nextInt(3);
//将intValue强制转换为char后连接到result后面
if(f==1)
result = result + (char)intVal;
else if(f==0)
result = result + (char)x;
else
result = result + (char)y;
}
s=result;
jb3.setText(s);
}
});
this.getRootPane().setDefaultButton(jb);
c.add(jb);
c.add(jb2);
c.add(jl1);
c.add(jl2);
c.add(jl3);
c.add(jt);
c.add(jp);
c.add(jt2);
c.add(jb3);
jl1.setBounds(10, 20, 90, 40);
jt.setBounds(60, 20, 210, 40);
jl2.setBounds(25, 70, 90, 40);
jl3.setBounds(10, 120, 90, 40);
jp.setBounds(60, 70, 210, 40);
jt2.setBounds(60, 120,100,40);
jb3.setBounds(180,120,100,40);
jb.setBounds(100, 180, 60, 30);
jb2.setBounds(100, 220, 60, 30);
//设置窗体格式
this.setSize(500,300);
this.setVisible(true);
this.setResizable(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new JTextFieldTest();
} }

这是对窗体的初步练习,后期有待提高下拉框的实现和注册页面的改善

给老师安排课表JAVA项目及登录窗口的实现的更多相关文章

  1. 利用JAVA制作简单登录窗口

    import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...

  2. UCenter在JAVA项目中实现的单点登录应用实例

    Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准. 基于UCenter,可以将Comsenz旗下的Discuz! ...

  3. 7个Java项目,或许你的大学老师就会布置

    前言: 有天吃饭和朋友聊天,说到大学老师布置的开发项目,结果我们一干人说出来的都基本一样,入门级别的计算器啦,稍微大一点的记事本啦,然后到后面的图书管理系统啊,购物网站啊-- 发现这些项目都是大学老师 ...

  4. Java项目接入sso单点登录

    最近在落地cat(java开发的一款开源监控系统)接入公司的内部项目,其中有项需求是接入公司的sso单点登录系统.研究了公司之前java项目接入sso系统,大部分是采用spring框架,然后依赖spr ...

  5. java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中

    登录框注册按钮点击改变窗口大小——出现注册面板  首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择T ...

  6. Java项目:学生成绩管理系统(二)

    学生成绩管理系统(二):项目介绍 一.设计要求: 1.1 简单的图形界面登录功能. 1.2 对数据库的的信息的查询功能. 1.3 对数据库的的信息的修改功能. 1.4 对数据库的的信息的删除功能. 1 ...

  7. 使用maven来管理您的java项目

    maven是一个项目管理工具,使用maven可以自动管理java项目的整个生命周期,包括编译.构建.测试.发布和报告等.在大型项目开发中,使用maven来管理是必不可少的. 一.安装maven 1.W ...

  8. java项目——数据结构实验报告

    java项目——数据结构总结报告 20135315  宋宸宁 实验要求 1.用java语言实现数据结构中的线性表.哈希表.树.图.队列.堆栈.排序查找算法的类. 2.设计集合框架,使用泛型实现各类. ...

  9. Java项目经验

    Java项目经验 转自CSDN. Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:1.掌握项目开发的基本步骤2.具备极强的面向对象的 ...

随机推荐

  1. hdu 1671 Phone List 字典树模板

    Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...

  2. java 代理模式-静态代理与动态代理

    最近在研究SpringAOP,当然要学习AOP就要知道这么健硕.强大的功能的背后究竟隐藏着怎样不可告人的“秘密”?? 接下来就是查阅了许多资料详细的研究了一下Java的代理模式,感觉还是非常非常重要的 ...

  3. IDC数据中心应具备如下基本条件:

    IDC数据中心应具备如下基本条件: 电力:有充足的直流电力保证,同时还应具备UPS不间断电源及充足的电池组以备用.高端数据中心通常配备柴油发电机等. 环境:符合电信标准的建筑设施,防尘防静电,相对适合 ...

  4. Runtime.getRuntime().exec()实现Java调用python程序

    使用Runtime.getRuntime().exec()来实现Java调用python,调用代码如下所示: import java.io.BufferedReader; import java.io ...

  5. ubuntu下安装rtl8811cu/rtl8821cu网卡 Tplink WDN5200H网卡

    博客园第一篇博客,CSDN现在让人眼花缭乱了 @_@ 由于需要wifi调试,笔记本内置的网卡有点不太灵光,买了个TPLINK的WDN5200H AC网卡,给虚拟机用,折腾一下成功了github上有rt ...

  6. Google工程师亲授 Tensorflow2.0-入门到进阶

    第1章 Tensorfow简介与环境搭建 本门课程的入门章节,简要介绍了tensorflow是什么,详细介绍了Tensorflow历史版本变迁以及tensorflow的架构和强大特性.并在Tensor ...

  7. Linux下Mysql启动异常排查方案

    遇到Mysql启动异常问题,可以从以下几个方面依次进行问题排查: (1)如果遇到“Can't connect to local MySQL server through socket '/tmp/my ...

  8. Spring MVC+ajax进行信息验证

    本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大的优点是在不重新加载整个页面的情况下,可 ...

  9. centos安装流量监控软件,并指定端口号监控

    yum install -y iptraf 安装好以后使用进入界面: iptraf-ng enter回车,比如22端口,就是22 22 然后退出 重新登录 ok!

  10. 通过js获取tinymce4.x的值

    问题的引出: 在使用过程中,用传统的js的方法判断tinymce所选textarea(下面直接称textarea)的值是会出现这样的问题的: 在已有输入内容时,首次提交的时候,依然会弹出js写的警告提 ...