给老师安排课表JAVA项目及登录窗口的实现
实现一个安排课表的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项目及登录窗口的实现的更多相关文章
- 利用JAVA制作简单登录窗口
import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...
- UCenter在JAVA项目中实现的单点登录应用实例
Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准. 基于UCenter,可以将Comsenz旗下的Discuz! ...
- 7个Java项目,或许你的大学老师就会布置
前言: 有天吃饭和朋友聊天,说到大学老师布置的开发项目,结果我们一干人说出来的都基本一样,入门级别的计算器啦,稍微大一点的记事本啦,然后到后面的图书管理系统啊,购物网站啊-- 发现这些项目都是大学老师 ...
- Java项目接入sso单点登录
最近在落地cat(java开发的一款开源监控系统)接入公司的内部项目,其中有项需求是接入公司的sso单点登录系统.研究了公司之前java项目接入sso系统,大部分是采用spring框架,然后依赖spr ...
- java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中
登录框注册按钮点击改变窗口大小——出现注册面板 首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择T ...
- Java项目:学生成绩管理系统(二)
学生成绩管理系统(二):项目介绍 一.设计要求: 1.1 简单的图形界面登录功能. 1.2 对数据库的的信息的查询功能. 1.3 对数据库的的信息的修改功能. 1.4 对数据库的的信息的删除功能. 1 ...
- 使用maven来管理您的java项目
maven是一个项目管理工具,使用maven可以自动管理java项目的整个生命周期,包括编译.构建.测试.发布和报告等.在大型项目开发中,使用maven来管理是必不可少的. 一.安装maven 1.W ...
- java项目——数据结构实验报告
java项目——数据结构总结报告 20135315 宋宸宁 实验要求 1.用java语言实现数据结构中的线性表.哈希表.树.图.队列.堆栈.排序查找算法的类. 2.设计集合框架,使用泛型实现各类. ...
- Java项目经验
Java项目经验 转自CSDN. Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:1.掌握项目开发的基本步骤2.具备极强的面向对象的 ...
随机推荐
- kick start 2019 round D T2题解
题目大意:由N个房子围成一个环,G个人分别顺时针/逆时针在房子上走,一共走M分钟,每分钟结束,每个人顺/逆时针走到相邻的房子.对于每个房子都会记录最后时刻到达的人(可能是一群人).最终输出每个人会被几 ...
- Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?
相信大家已经对 kafka 的基本概念已经有一定的了解了,下面直接来分析一下 ISR 和 AR 的概念. ISR and AR 简单来说,分区中的所有副本统称为 AR (Assigned Replic ...
- Vue使用MathJax动态识别数学公式
本人菜鸟一名,如有错误,还请见谅. 1.前言 最近公司的一个项目需求是在前端显示Latex转化的数学公式,经过不断的百度和测试已基本实现.现在此做一个记录. 2.MathJax介绍 MathJax是一 ...
- 2018 Multi-University Training Contest 1(部分题解)
Maximum Multiple Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 如何使用React搭建项目
1.首先说明node.js.npm.cnpm分别是做什么的? node.js简单的说 Node.js 就是运行在服务端的 JavaScript,安装了node.js默认安装了npm,可以使用npm - ...
- Day004_Linux基础命令之特殊符号与正则表达式通配符
特殊符号: . 点 cd . 表示当前目录 ' '' 单引号,所见即所得 原封不动输出 " ""双引号,里面的特殊符号会被解析运行 `` ====$( ) 先运行() 里 ...
- (一)分布式数据库tidb-简介
因为数据磁盘问题,最近进行了更换库,所以决定写关于这方面的专题的博客,博客信息参考的官方文档. 一.分布式数据库使用背景 随着互联网的飞速发展,业务量可能在短短的时间内爆发式地增长,对应的数据量可能快 ...
- ElasticSearch常见经典面试题
1.为什么要使用Elasticsearch? 因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下 ...
- springBoot异常统一处理
springBoot异常统一处理 采用@ControllerAdvice注解和@ExceptionHandler注解,可以对异常进行统一处理. 1.结构图: 2.pom.xml文件: <?xml ...
- gallery的简单使用方法
Gallery意思是"画廊",就是一个水平可左右拖动的列表,里面可以放置多个图片,经常和ImageSwitcher一起使用 在使用ImageSwitcher时,需要传入一个View ...