学生选课系统----TeacherWindow

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学生选课系统----TeacherWindow相关的知识,希望对你有一定的参考价值。

 

 

/**
 * @author 李佩
 * 
 * @version v1
 * 
 * @time 2016/12/6 9:29
 * 
 * @program 画出学生选课系统的学生界面
 *
 */

package com.csms.windows;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import com.csms.dao.CourseDAO;
import com.csms.dao.SelectCourseDAO;
import com.csms.dao.TeacherDAO;
import com.csms.entity.Course;
import com.csms.entity.SelectCourse;
import com.csms.entity.Student;
import com.csms.entity.Teacher;

public class TeacherWindows {
	private JFrame frame = new JFrame();
	// 设置窗口的宽度
	private final int WINDOWWIDE = 220;
	// 设置窗口的高度
	private final int WINDOWHIGH = 560;
	// 老师对象
	protected static Teacher teacher = null;
	private String backUrl = "src//images//icons//background.jpg";

	public TeacherWindows() {
		teacher = new TeacherDAO().searchTeacherInformation(LoginWindow.getLoginUserName(),
				LoginWindow.getLoginPassword());
		this.compnentSet(frame);
		PublicWindowSet.windowAttribute(frame, WINDOWWIDE, WINDOWHIGH, backUrl, "老师界面");
	}

	// 窗口组件设置
	private void compnentSet(JFrame jfr) {
		// 设置老师照片标签
		String url = "src//images//teacher//" + teacher.getTeacID() + ".jpg";
		PublicWindowSet.addPhotoLabel(jfr, 55, 70, 105, 140, url);

		// 添加老师信息
		PublicWindowSet.addLabel(jfr, 13, 115, 218, 110, 50, teacher.getTeacID());
		PublicWindowSet.addLabel(jfr, 13, 115, 238, 110, 50, teacher.getTeacName());
		PublicWindowSet.addLabel(jfr, 13, 115, 258, 110, 50, Integer.toString(teacher.getTeacAge()));
		PublicWindowSet.addLabel(jfr, 13, 115, 278, 110, 50, teacher.getTeacGender());

		// 添加按钮
		this.addButton(1, 335, "修改密码", jfr);
		this.addButton(2, 375, "发布课程", jfr);
		this.addButton(3, 415, "删除发布课程", jfr);
		this.addButton(4, 455, "录入学生成绩", jfr);
		this.addButton(5, 495, "关于", jfr);
	}

	// 添加老师操作按钮
	private void addButton(int flag, int high, String str, JFrame jfr) {
		JButton button = new JButton(str);
		button.setFont(new Font("楷体", Font.PLAIN, 16));
		button.setBounds(35, high, 150, 30);
		button.setContentAreaFilled(false);
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				switch (flag) {
				case 1:
					// 修改密码
					new TeacherFixPassWordWindows(teacher, jfr);
					break;
				case 2:
					// 发布课程
					new ReleaseCourseWindow();
					break;
				case 3:
					new DeleteYourInsertCourse(teacher);
					break;
				case 4:
					// 录入学生成绩
					new addStudentGrade();
					break;
				case 5:
					// 关于框
					new AboutWindow();
					break;
				}
			}
		});
		jfr.add(button);
	}
}

// 老师修改密码窗口
class TeacherFixPassWordWindows {
	private JFrame frame = new JFrame();
	private String backURL = "src//images//icons//login.PNG";

	public TeacherFixPassWordWindows(Teacher teacher, JFrame jfr) {

		showFixPasswordWindow(this.frame, jfr, teacher);
		PublicWindowSet.windowAttribute(this.frame, 380, 220, backURL, "密码修改窗口");
	}

	// 显示窗口
	private void showFixPasswordWindow(JFrame fixJFR, JFrame teaJFR, Teacher teacher) {
		frame.setLayout(null);

		// 1.添加三个标签
		// 添加标签
		PublicWindowSet.addLabel(frame, 16, 68, 30, 80, 30, "  原密码:");
		PublicWindowSet.addLabel(frame, 16, 68, 65, 80, 30, "  新密码:");
		PublicWindowSet.addLabel(frame, 16, 68, 100, 80, 30, "重新输入:");

		// 2.添加三个文本域
		// 添加文本域
		JPasswordField oldText = new JPasswordField();
		JPasswordField newText = new JPasswordField();
		JPasswordField reEText = new JPasswordField();
		PublicWindowSet.addTextField(oldText, 160, 30, 150, 30, frame);
		PublicWindowSet.addTextField(newText, 160, 65, 150, 30, frame);
		PublicWindowSet.addTextField(reEText, 160, 100, 150, 30, frame);

		// 3.添加确定按钮
		// 添加按钮
		Icon icon = new ImageIcon("src//images//icons//confirmFix.png");
		JButton confirmBtn = new JButton(icon);
		// 设置位置
		confirmBtn.setBounds(120, 150, 125, 30);
		// 添加进面板
		frame.add(confirmBtn);
		confirmBtn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 添加修改密码的数据库操作
				// 判断输入框是否有内容
				if (oldText.getText().length() == 0) {
					PublicWindowSet.promptPopUp("请输入原密码", "错误提示", frame);
				} else if (newText.getText().length() == 0 || reEText.getText().length() == 0) {
					PublicWindowSet.promptPopUp("请输入新密码或重复输入新密码", "错误提示", frame);
				}
				// 1. 判断原密码输入框的密码是否和元密码相同
				if (newText.getText().length() != 0 && reEText.getText().length() != 0
						&& !oldText.getText().equals(teacher.getLoginPSD())) {
					PublicWindowSet.promptPopUp("原密码输入错误!", "更改密码提示", frame);
				}

				// 2. 判断新密码和原密码是否输入一致
				if (newText.getText().length() != 0 && reEText.getText().length() != 0
						&& !reEText.getText().equals(newText.getText())
						&& oldText.getText().equals(teacher.getLoginPSD())) {
					PublicWindowSet.promptPopUp("两次密码输入不一致!", "更改密码提示", frame);
				}

				// 3. 更新密码操作
				if (newText.getText().length() != 0 && reEText.getText().length() != 0
						&& reEText.getText().equals(newText.getText())
						&& oldText.getText().equals(teacher.getLoginPSD())) {
					new TeacherDAO().updatePassword(teacher.getTeacID(), newText.getText());
					// 修改成功释放该窗口
					frame.dispose();
					// 释放老师窗口
					teaJFR.dispose();
					// 同时调用出登录窗口
					new LoginWindow();
				}
			}
		});
	}
}

// 关于窗口
class AboutWindow {
	JFrame frame = new JFrame();
	private String backURL = "src//images//icons//about.jpg";

	public AboutWindow() {
		PublicWindowSet.windowAttribute(this.frame, 360, 190, backURL, "关于窗口");
	}
}

// 发布课程窗口
class ReleaseCourseWindow {
	private JFrame frame = new JFrame();
	private JTable table = null;
	private String backURL = "src//images//icons//rcourse.jpg";
	private static DefaultTableModel tableModel = null;

	public ReleaseCourseWindow() {
		this.liftInformation();
		this.rightList();
		PublicWindowSet.windowAttribute(this.frame, 600, 460, backURL, "注册课程");
	}

	// 右部列表
	private void rightList() {
		// 设置JTabel的默认类型
		this.tableModel = new DefaultTableModel(new CourseInformationList().userInfo,
				new CourseInformationList().titles);
		// 添加JLabel组件
		this.table = new JTable(this.tableModel);

		// 禁止JLabel组件随着窗口的大小而改变
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		// JTabel组件表格的显示尺寸
		table.setPreferredScrollableViewportSize(new Dimension(390, 0));

		// 使列表不可以整列的进行移动
		table.getTableHeader().setReorderingAllowed(false);

		// 使列表框不可被编辑
		table.enable(false);

		// 给JTabel组件添加滑动条
		JScrollPane scr = new JScrollPane(this.table);

		// 设置面板
		JPanel toolBar = new JPanel();

		// 将带滚动条的Tabel组件添加入面板的东部区域
		frame.add(scr, BorderLayout.EAST);
	}

	// 左边信息窗口
	private void liftInformation() {
		PublicWindowSet.addLabel(this.frame, 26, 20, 25, 180, 45, "填写课程信息");

		// 添加标签
		PublicWindowSet.addLabel(this.frame, 16, 10, 100, 45, 20, "  ID:");
		PublicWindowSet.addLabel(this.frame, 16, 10, 135, 45, 20, "课名:");
		PublicWindowSet.addLabel(this.frame, 16, 10, 170, 45, 20, "学分:");
		PublicWindowSet.addLabel(this.frame, 16, 10, 205, 45, 20, "学时:");
		PublicWindowSet.addLabel(this.frame, 16, 10, 240, 45, 20, "类型:");
		PublicWindowSet.addLabel(this.frame, 16, 10, 273, 45, 20, "老师:");
		PublicWindowSet.addLabel(this.frame, 16, 10, 307, 45, 20, "人数:");

		// 添加文本框
		// 一个容器,保存下面的对象
		List<JTextField> list = new ArrayList<JTextField>();

		JTextField id = new JTextField();
		JTextField name = new JTextField();
		JTextField cridits = new JTextField();
		JTextField time = new JTextField();
		JTextField type = new JTextField();
		JTextField teac = new JTextField();
		JTextField number = new JTextField();

		PublicWindowSet.addTextField(id, 60, 95, 100, 30, this.frame);
		PublicWindowSet.addTextField(name, 60, 130, 100, 30, this.frame);
		PublicWindowSet.addTextField(cridits, 60, 165, 100, 30, this.frame);
		PublicWindowSet.addTextField(time, 60, 200, 100, 30, this.frame);
		PublicWindowSet.addTextField(type, 60, 235, 100, 30, this.frame);
		PublicWindowSet.addTextField(teac, 60, 270, 100, 30, this.frame);
		PublicWindowSet.addTextField(number, 60, 305, 100, 30, this.frame);

		list.add(id);
		list.add(name);
		list.add(cridits);
		list.add(time);
		list.add(type);
		list.add(teac);
		list.add(number);

		// 添加确认button
		this.addButton(1, 350, "确认提交", list, TeacherWindows.teacher);
		this.addButton(2, 390, "已注册课程", list, TeacherWindows.teacher);
	}

	// 添加button
	private void addButton(int flag, int high, String str, List<JTextField> l, Teacher teacher) {
		JButton confrim = new JButton(str);
		confrim.setFont(new Font("楷体", Font.PLAIN, 16));
		confrim.setBounds(40, high, 120, 35);
		confrim.setContentAreaFilled(false);
		frame.add(confrim);
		confrim.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				switch (flag) {
				case 1:
					if (l.get(0).getText().length() == 0 || l.get(1).getText().length() == 0
							|| l.get(2).getText().length() == 0 || l.get(3).getText().length() == 0
							|| l.get(4).getText().length() == 0 || l.get(5).getText().length() == 0
							|| l.get(6).getText().length() == 0)
						PublicWindowSet.promptPopUp("请填写完整的课程信息!", "录入课程提示", frame);
					else {
						new CourseDAO().insertCourseInformation(l, teacher);
						for (int i = 0; i < l.size(); i++) {
							l.get(i).setText("");
						}
					}

					break;
				case 2:
					List<Course> list = new CourseDAO().searchCourseInformation();
					Course course = null;
					for (int i = 0; i < list.size(); i++) {
						course = list.get(i);
						ReleaseCourseWindow.tableModel.addRow(new Object[] { i, course.getCourID(),
								course.getCourName(), course.getCourTeacher(), course.getCourType() });
					}
					confrim.setEnabled(false);
					break;
				}
			}
		});
	}

	// JTabel列表属性设置类
	class CourseInformationList extends AbstractTableModel {
		public String[] titles = { "序号", "课程ID", "课程名", "老师", "类型" };
		public Object[][] userInfo = {}; // 定义数据

		public int getRowCount() {
			return 0;
		}

		public int getColumnCount() {
			return 0;
		}

		public Object getValueAt(int rowIndex, int columnIndex) {
			return null;
		}
	}
}

// 删除插入的课程
class DeleteYourInsertCourse {
	private JFrame frame = new JFrame();
	private JFrame coursePopUpJFR = null;
	private String url = "src//images//icons//admin.jpg";
	private String[] courseStr = { "课程ID", "课程名", "学分", "学时", "人数" };
	private static DefaultTableModel courseTableModel;
	JTextField courseID = null;

	public DeleteYourInsertCourse(Teacher teacher) {

		this.windowInformation(teacher);
		PublicWindowSet.windowAttribute(this.frame, 400, 170, url, "删除注册课程");
	}

	private void windowInformation(Teacher teacher) {
		// 添加大标签
		PublicWindowSet.addLabel(frame, 26, 110, 5, 300, 30, "删除注册课程");
		// 添加小标签
		PublicWindowSet.addLabel(frame, 16, 45, 55, 90, 30, "  课程ID:");
		// 添加button
		this.addButton(1, frame, 55, "查看注册课程", teacher, this);
		this.addButton(2, frame, 205, "删除注册课程", teacher, this);
		// 添加文本域
		courseID = new JTextField();
		PublicWindowSet.addTextField(courseID, 130, 55, 200, 30, this.frame);
	}

	public void showCourseWindow(Teacher teacher) {
		coursePopUpJFR = new JFrame();
		PublicWindowSet.windowAttribute(coursePopUpJFR, 400, 200, null, "学生信息窗口");
		courseTableModel = PublicWindowSet.addTableList(coursePopUpJFR, courseStr);
		List<Course> list = new CourseDAO().searchCourse(teacher.getTeacID());
		Course course = null;
		for (int i = 0; i < list.size(); i++) {
			course = list.get(i);
			courseTableModel.addRow(new Object[] { course.getCourID(), course.getCourName(), course.getCourCridits(),
					course.getCourTimes(), course.getCourNumber() });
		}
	}

	private void addButton(int flag, JFrame jfr, int x, String str, Teacher teacher, DeleteYourInsertCourse dyi) {
		JButton button = new JButton(str);
		button.setFont(new Font("楷体", Font.PLAIN, 16));
		button.setContentAreaFilled(false);
		button.setBounds(x, 100, 140, 30);
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				switch (flag) {
				case 1:
					dyi.showCourseWindow(teacher);
					break;
				case 2:
					if (courseID.getText().length() != 0) {
						new CourseDAO().deleteCourseInformation(courseID.getText());
						coursePopUpJFR.dispose();
						courseID.setText("");
						dyi.showCourseWindow(teacher);
					} else
						PublicWindowSet.promptPopUp("请填写要删除的课程ID!", "删除课程提示", jfr);
					break;
				}
			}
		});
		jfr.add(button);
	}
}

// 录入学生成绩
class addStudentGrade {
	JFrame frame = new JFrame();
	private DefaultTableModel gradeTableModel;
	private JFrame popUpJFR = null;
	private String courseID = null;
	private JTextField courseText = null;
	private JTextField gradeText = null;
	private JTextField studentText = null;

	private String url = "src//images//icons//admin.jpg";
	private String[] gradeStr = { "课程ID", "课程名称", "任课老师", "学生ID", "学生姓名", "课程成绩" };

	public addStudentGrade() {
		this.displayInformation(frame);
	}
	
	// 老师显示信息
	private void displayInformation(JFrame jfr) {
		PublicWindowSet.addLabel(jfr, 26, 110, 5, 300, 30, "学生成绩录入");

		PublicWindowSet.addLabel(jfr, 16, 45, 55, 90, 30, "  课程ID:");
		courseText = new JTextField();
		PublicWindowSet.addTextField(courseText, 130, 55, 200, 30, jfr);

		PublicWindowSet.addLabel(jfr, 16, 45, 90, 90, 30, "  学生ID:");
		studentText = new JTextField();
		PublicWindowSet.addTextField(studentText, 130, 90, 200, 30, jfr);

		PublicWindowSet.addLabel(jfr, 16, 45, 125, 90, 30, "课程成绩:");
		gradeText = new JTextField();
		PublicWindowSet.addTextField(gradeText, 130, 125, 200, 30, jfr);

		addButton(1, jfr, "选课学生", 75, this);
		addButton(2, jfr, "添加成绩", 210, this);

		PublicWindowSet.windowAttribute(jfr, 380, 235, url, "老师界面");
	}

	// 学生信息显示窗口
	private void showInformation() {
		popUpJFR = new JFrame();
		PublicWindowSet.windowAttribute(popUpJFR, 475, 200, null, "学生信息窗口");
		gradeTableModel = PublicWindowSet.addTableList(popUpJFR, gradeStr);
		courseID = courseText.getText();
		List<Object> list = new SelectCourseDAO().searchUnionInformation(courseID);
		for (int i = 0; i < list.size(); i = i + 3) {
			Course course = (Course) list.get(i);
			Student student = (Student) list.get(i + 1);
			SelectCourse sc = (SelectCourse) list.get(i + 2);
			gradeTableModel.addRow(new Object[] { course.getCourID(), course.getCourName(), course.getCourTeacher(),
					student.getStuID(), student.getStuName(), sc.getStudentGrade() });
		}
	}

	private void addButton(int flag, JFrame jfr, String str, int x, addStudentGrade th) {
		JButton button = new JButton(str);
		button.setFont(new Font("楷体", Font.PLAIN, 16));
		button.setContentAreaFilled(false);
		button.setBounds(x, 170, 100, 30);
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				switch (flag) {
				case 1:
					if (courseText.getText().length() == 0) {
						PublicWindowSet.promptPopUp("请先输入课程ID,在查看选修的学生", "错误提示", jfr);
					} else {
						th.showInformation();
					}
					break;
				case 2:
					if (courseText.getText().length() == 0) {
						PublicWindowSet.promptPopUp("请先输入课程ID,在录入学生成绩", "错误提示", jfr);
					}
					if (courseText.getText().length() != 0 && studentText.getText().length() == 0) {
						PublicWindowSet.promptPopUp("请先输入学生ID,在录入学生成绩", "错误提示", jfr);
					}
					if (courseText.getText().length() != 0 && studentText.getText().length() != 0
							&& gradeText.getText().length() == 0) {
						PublicWindowSet.promptPopUp("请学生成绩,在录入成绩", "错误提示", jfr);
					} else {
						new SelectCourseDAO().addStudentGrade(studentText.getText(), courseText.getText(),
								Float.valueOf(gradeText.getText()));
						studentText.setText("");
						gradeText.setText("");
						popUpJFR.dispose();
						th.showInformation();
					}
					break;
				}
			}
		});
		jfr.add(button);
	}
}

  

 

以上是关于学生选课系统----TeacherWindow的主要内容,如果未能解决你的问题,请参考以下文章

JAVA | 学生选课系统

XK关系型学生选课数据库,关系如下:

面向对象的应用:学生选课系统

数据库实验(学生选课系统)

用数据结构(c语言版)编写的学生选课系统

python之路34面向对象作业之学生选课系统