实现一个安排课表的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. poj 2352 & Ural 1028 数星星 题解

    一道水题,由于x坐标递增y坐标也递增于是前缀和统计即可,用树状数组实现. #include<bits/stdc++.h> using namespace std; const int ma ...

  2. Java 调式、热部署、JVM 背后的支持者 Java Agent

    我们平时写 Java Agent 的机会确实不多,也可以说几乎用不着.但其实我们一直在用它,而且接触的机会非常多.下面这些技术都使用了 Java Agent 技术,看一下你就知道为什么了. -各个 J ...

  3. git-基础命令使用

    1. 创建版本库     什么是版本库你?版本库有名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被git管理起来,每个文件的修改.删除.git都能跟踪,以便 ...

  4. 一篇RPO漏洞挖掘文章翻译加深理解。

    这是我第一次尝试翻译一篇漏洞挖掘文章,翻译它也是为了加深理解它.这是一篇很有意思的漏洞挖掘文章. 前几天在看fd的博客,偶然看到了这篇文章,虽然有点老了.但是思路真的牛皮.我决定花费时间和精力研究它们 ...

  5. Hive介绍和安装部署

        搭建环境 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包.因为该目录用于安装h ...

  6. 右键没有新建word选项

    两类解决办法 一. 1. 新建一个txt文本,并插入如下内容: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.doc] @=&quo ...

  7. 跟我学SpringCloud | 第十九章:Spring Cloud 组件 Docker 化

    前面的文章<跟我学SpringCloud | 第十八篇:微服务 Docker 化之基础环境>我们介绍了基础环境系统和 JRE 的容器化,这一节我们介绍 Spring Cloud 组件的容器 ...

  8. Linux 修改 ls 时间显示格式

    [root@CentosTe tmp]# export TIME_STYLE='+%Y-%m-%d %H:%M:%S'[root@CentosTe tmp]# ll总计 24-rwx------ 1  ...

  9. JavaScript之基本语句

    前面的内容记录了JavaScript的一些基本概念,本次主要讲解一下JS中常用的语句. 和大多数其他编程语言一样,JS也主要包括:选择.循环.错误检测.函数等.JS的语句基本是由值.运算符.表达式.关 ...

  10. 机器学习之SVM调参实例

    一.任务 这次我们将了解在机器学习中支持向量机的使用方法以及一些参数的调整.支持向量机的基本原理就是将低维不可分问题转换为高维可分问题,在前面的博客具体介绍过了,这里就不再介绍了. 首先导入相关标准库 ...