给老师安排课表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.具备极强的面向对象的 ...
随机推荐
- Docker详解(一)
目录 Docker简介 Docker组成 永远的HelloWorld 序言:众所周知,近几年的互联网各项技术发展的如火如荼,敏捷开发模式越来越普及,"快"似乎成为了行业的标准,于是 ...
- Mysql之zip格式的安装
Mysql之zip格式的安装 一.配置环境变量 首先,我新建一个文件夹,将其改名为MySQL Sever 5.6,其路径为D:\Program Files (x86)\MySQL\MySQL Seve ...
- Java 添加Word文本框
在Word中,文本框是指一种可移动.可调节大小的文字或图形容器.我们可以向文本框中添加文字.图片.表格等对象,下面,将通过Java编程来实现添加以上对象到Word文本框. 使用工具:Free Spir ...
- java中多线程执行时,为何调用的是start()方法而不是run()方法
Thead类中start()方法和run()方法的区别 1,start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状 ...
- zookeeper学习(零)_安装与启动
zookeeper学习(零)_安装与启动 最近换了新的电脑,终于买了梦寐以求的macbook.最近也换了新的公司,公司技术栈用到了zookeeper.当然自己也要安装学习下.省的渣渣的我,被鄙视就麻烦 ...
- PHP 异或 算法
/** * PHP字符串“异或”算法 * param array key * @param Request $request * @return mixed|string|void */ public ...
- Oracle创建自增主键表
1.创建表 /*第一步:创建表格*/ create table t_user( id int primary key, --主键,自增长 username varchar(), password va ...
- java获取电脑mac物理地址
import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import ...
- CabloyJS带你轻松走进NodeJS全栈开发-免费课程 作者亲授
课程说明 B站直播 为回馈新老同学对开源框架CabloyJS的支持与厚爱,快速而轻松的开启NodeJS全栈开发之旅.2019年9月5日至9月11日在B站开启了一波免费直播培训课程 课程信息,请点击链接 ...
- [Spark] 01 - What is Spark
大数据 云计算概念 课程:Spark编程基础(Python版) 大数据4V特性 Volumn, Variety, Velocity, Value. 思维方式 通过数据发现问题,再解决问题. 速度更重要 ...