数据库-实训项目-homework

数据库实训项目选题:

1、图书管理系统

功能需求:用户登陆图书管理系统,如没有可注册。登陆后,可查看图书信息,可实现图书借还,查询等功能
数据库:用户信息,图书信息

2、学生信息管理系统

功能需求:用户登陆学生信息管理系统,如没有可注册。登陆后,可查看学生的信息,可新增,删除,修改学生;可实现学生成绩管理,如查看成绩,添加成绩等功能。
数据库:学生信息

3、航空订票系统

功能需求:用户可登陆订票系统,如没有可注册。登陆订票系统后,可查看航班信息,可预订机票,可退订机票等功能
数据库:用户信息,机票信息

代码部分:(简单Login实现)

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//登录界面
//main方法和init方法是同一级
//同级 无顺序
//mouse鼠标
//Java里面用之前必须先创建
public class Login {

	//main方法--主方法,在主方法中调用自定义的init方法
	public static void main(String[] args) {

		/*也可以直接init(),但是会导致init()为static*/
		Login lgn = new Login();
		lgn.init();

	}

	//创建Login类
	//静态方法不能用非静态的变量
//	static Login lgn = new Login();
	JTextField t1 = new JTextField(20);
	JPasswordField p1 = new JPasswordField(20);
	//创建一个空标签 -- 该空标签主要用于显示用户名或者密码不正确的
	JLabel empty = new JLabel();
	JFrame f = new JFrame(); //创建一个窗体

	//自定义方法,方法名为init,该方法的主要功能是初始化窗体界面
	public void init() {

		JPanel p = new JPanel(); //创建一个面板
		//创建用户名和文本输入框
		JLabel usrname = new JLabel("用户名:");
		//创建密码和密码输入框
		JLabel password = new JLabel("密    码:");
		//创建登录和注册按钮
		JButton login = new JButton("登录"); 

		//创建自定义的内部类MyListener
		MyListener ml = new MyListener();
		//给登录按钮绑定鼠标的监听事件
		login.addMouseListener(ml);

		JButton register = new JButton("注册");

		p.add(usrname); //将用户名放入面板中
		p.add(t1); //将文本输入框放入面板中
		p.add(password); //将密码放入面板中
		p.add(p1); //将密码输入框放入面板中
		p.add(login); //将登录按钮放入面板中
		p.add(register); //将注册按钮放入面板中
		p.add(empty); //将空标签放入面板中

		f.add(p); //将面板放入窗体中

		f.setVisible(true); //设置窗体可见
		f.setSize(320, 300); //设置窗体的大小
		f.setLocation(600, 200); //设置窗体的位置
		f.setTitle("登陆界面"); //设置窗体的标题
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭窗体的后台

	}

	//自定义一个内部类(在一个类的里面,再定义一个类,该类叫做内部类)
	//让MyListener去继承MouseAdapter,因为MouseAdapter具有鼠标时间的监听,
	//继承之后就会继承过来父类的鼠标事件监听 Alt+/
	/*监听器,里面含有很多监听事件*/
	public class MyListener extends MouseAdapter {

		//想法错误
//		Login l;
//		public MyListener() {
//			this.l = l;
//		}
		
		//鼠标单击事件的监听
		@Override
		public void mouseClicked(MouseEvent e) {

			//System.out.println("你点我了....");
			//验证在登陆界面输入的用户名或者密码是否正确
			//1.获取登录界面输入的用户名和密码的内容
			/**
			 * p1./t1. 作用域的问题!访问不到 
			 * 故:可以通过扩大作用域,放在与main,init,内部类同级的位置(利用左边小减号)
			 * 故:升高权限,在这几个里面都可以用
			 */
			String strName = t1.getText(); //t1表示用户名输入框,获取用户名输入框输入的内容
			//横杠代表过时了,但是还是可以用
			String strPwd = p1.getText(); //p1表示密码输入框,获取密码输入框输入的内容
			System.out.println(strName + "," + strPwd);

			//2.连接数据库,要查询myuser表是否有在登录界面输入的用户名和密码
			//获得数据库的连接
			String url = "jdbc:oracle:thin:@localhost:1521:orcl";
			String username = "system";
			String pwd = "tarena";
			//父类继承来的方法并没有抛出异常,所以不能throws
			try {
				Connection con = DriverManager.getConnection(url, username, pwd);
				//预编译SQL语句
				//String sql = "select * from myuser"; //从所有的里面,一条一条的查询 效率低
				//and 并且 必须两种情况都符合
				String sql = "select * from myuser where name=? and pwd=?";
				PreparedStatement prep = con.prepareStatement(sql);
				prep.setString(1, strName);
				prep.setString(2, strPwd);
				//执行SQL语句
				ResultSet rs = prep.executeQuery();
				//根据rs结果集是否有数据,来判断输入的用户名和密码是否正确
				if (rs.next()) { //rs结果集有数据 -- 用户名和密码输入正确
					System.out.println("对啦");
					JFrame w = new JFrame(); //创建一个新窗体
					w.setVisible(true);
					w.setSize(400, 300);

					//让登录界面窗体关闭
					//即使lgn放在和main同级,内部类不能 lgn. 想法错误
					f.setVisible(false);
				} else { //rs结果集没有数据 -- 用户名或者密码不正确
					//System.out.println("错啦");
					//将错啦信息显示在空标签上
					empty.setText("                           用户名或者密码不正确                             ");
				}
			} catch (SQLException e1) {
				e1.printStackTrace();
			}

		}

	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值