import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.*; import java.io.*; import java.util.*; import java.util.stream.Collectors; import java.util.Map.Entry;
import javax.swing.*; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener;
public class CourseSelectionSystem{ Database db; LoginFrame login_frame; MainFrame manager_frame; Teach teach; public CourseSelectionSystem() throws IOException { db = new Database("course.txt","score.txt","account.txt");
db.addAccount("teach", "666666", 0, "教务员 "); db.addAccount("lil", "666666", 1, "李立 "); db.addAccount("yangf", "666666", 1, "杨帆 "); db.addAccount("zhangdw", "666666", 1, "张大伟 "); db.addAccount("wangqs", "666666", 2, "王青松 "); db.addAccount("chenl", "666666", 2, "陈丽 "); db.addAccount("wus", "666666", 2, "吴松 "); db.addAccount("liuq", "666666", 2, "刘强 "); teach = new Teach(db); login_frame = new LoginFrame(db, teach); manager_frame = new MainFrame(db); login_frame.initFrame(manager_frame); manager_frame.initFrame(login_frame); }
public LoginFrame getLogin() { return login_frame; } public static void main(String[] args) throws IOException { CourseSelectionSystem css = new CourseSelectionSystem(); css.getLogin().setVisible(true); } }
class MainFrame extends JFrame{ Database db; LoginFrame login_frame; private User user; private JButton manager_new_course = new JButton("添加课程"); private JButton student_select_course = new JButton("选择课程"); private JButton student_delect_course = new JButton("删除课程"); private JButton teacher_view_course = new JButton("查看选课情况"); private JButton teacher_info_course = new JButton("查看课程信息"); private JButton teacher_score = new JButton("打分"); private JLabel manager_jl_0 = new JLabel(); private JLabel teacher_jl_0 = new JLabel(); private JLabel teacher_jl_1 = new JLabel("选择课程:"); private JLabel student_jl_0_0 = new JLabel(); private JLabel student_jl_0_1 = new JLabel(); private JLabel student_jl_0_2 = new JLabel(); private JTextField manager_jt_course_name = new JTextField(); private JTextField manager_jt_course_info = new JTextField(); private JTextField teacher_jt_score = new JTextField(); private JLabel manager_jl_init = new JLabel(); private JLabel teacher_jl_init = new JLabel(); private JLabel student_jl_init = new JLabel(); private JLabel manager_jl_1 = new JLabel("课程名字\n"); private JLabel manager_jl_2 = new JLabel("课程教师\n"); private JLabel manager_jl_3 = new JLabel("课程信息\n"); private JComboBox manager_jc_teacher = new JComboBox(); private JComboBox teacher_jc_course = new JComboBox(); DefaultListModel student_select_course_dlm = new DefaultListModel(); JList student_select_course_jl = new JList(student_select_course_dlm); JScrollPane student_select_course_jsp = new JScrollPane(student_select_course_jl);
DefaultListModel student_delect_course_dlm = new DefaultListModel(); JList student_delect_course_jl = new JList(student_delect_course_dlm); JScrollPane student_delect_course_jsp = new JScrollPane(student_delect_course_jl); DefaultListModel teacher_score_dlm = new DefaultListModel(); JList teacher_score_jl = new JList(teacher_score_dlm); JScrollPane teacher_score_jsp = new JScrollPane(teacher_score_jl);
private JPanel menu_cards = new JPanel(); private CardLayout menu_c_layout = new CardLayout(); private JPanel content_cards = new JPanel(); private CardLayout content_c_layout = new CardLayout();
private JPanel manager_cards = new JPanel(); private CardLayout manager_c_layout = new CardLayout(); private JMenuBar manager_menuBar = new JMenuBar(); private JMenu manager_menu = new JMenu("添加课程"); private JPanel manager_init_page = new JPanel(); private JPanel manager_new_course_page = new JPanel();
private JPanel teacher_cards = new JPanel(); private CardLayout teacher_c_layout = new CardLayout(); private JMenuBar teacher_menuBar = new JMenuBar();
private JMenu teacher_menu = new JMenu("教学任务管理"); private JPanel teacher_init_page = new JPanel(); private JPanel teacher_score_page = new JPanel(); private JPanel teacher_score_north = new JPanel(); private JPanel teacher_score_north_course = new JPanel(); private JPanel teacher_score_south = new JPanel();
private JPanel student_cards = new JPanel(); private CardLayout student_c_layout = new CardLayout(); private JMenuBar student_menuBar = new JMenuBar(); private JMenu student_menu_select_course = new JMenu("选课"); private JMenu student_menu_delect_course = new JMenu("退选"); private JMenu student_menu_view_course = new JMenu("View Course"); private JPanel student_init_page = new JPanel(); private JPanel student_select_course_page = new JPanel(); private JPanel student_delect_course_page = new JPanel(); private JPanel student_view_score_page = new JPanel(); public MainFrame(Database db) { super("选课系统"); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { try { db.updataAll(); } catch (IOException e1) {
e1.printStackTrace(); } setVisible(false); login_frame.setVisible(true); clear(); } }); this.db = db; setLocation(800,400);
setLayout(new BorderLayout()); menu_cards.setLayout(menu_c_layout); content_cards.setLayout(content_c_layout); add("North",menu_cards); add("Center",content_cards); initManagerPage(); initTeacherPage(); initStudentPage(); pack(); } private void initTeacherPage() { teacher_score_jl.setCellRenderer(new ScoreCellRenderer()); teacher_jc_course.setRenderer(new CourseTeaCellRenderer()); teacher_menuBar.add(teacher_menu); teacher_menu.addMenuListener(new MenuListener() { @Override public void menuSelected(MenuEvent e) { teacher_c_layout.show(teacher_cards, "teacher_score_page"); } @Override public void menuDeselected(MenuEvent e) { } @Override public void menuCanceled(MenuEvent e) { } }); menu_cards.add("teacher_menuBar",teacher_menuBar); teacher_init_page.add(teacher_jl_init); teacher_score_page.setLayout(new BorderLayout()); teacher_view_course.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Teacher t = (Teacher) user; reloadScoreTea(t, (int)teacher_jc_course.getSelectedItem()); } }); teacher_info_course.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Teacher t = (Teacher) user; t.getCourseInfo((int)teacher_jc_course.getSelectedItem()); JOptionPane.showMessageDialog(null, "<html><body>"+"课程编号: "+t.getCourseInfo((int)teacher_jc_course.getSelectedItem()).get(1) +"<br>"+"课程名称: "+t.getCourseInfo((int)teacher_jc_course.getSelectedItem()).get(0) +"<br>"+"课程信息: "+t.getCourseInfo((int)teacher_jc_course.getSelectedItem()).get(2)+"<body></html>"); } }); teacher_score.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Teacher t = (Teacher) user; t.scoreStuCourse((int)((List)teacher_score_jl.getSelectedValue()).get(0), (int)((List)teacher_score_jl.getSelectedValue()).get(1), Integer.parseInt(teacher_jt_score.getText())); reloadScoreTea(t, (int)teacher_jc_course.getSelectedItem()); } });
teacher_score_north.setLayout(new BorderLayout()); teacher_score_north_course.setLayout(new GridLayout(2,2)); teacher_score_north_course.add(teacher_jl_1); teacher_score_north_course.add(teacher_jc_course); teacher_score_north_course.add(teacher_view_course); teacher_score_north_course.add(teacher_info_course); teacher_score_south.setLayout(new GridLayout(1,0)); teacher_score_south.add(teacher_jt_score); teacher_score_south.add(teacher_score); teacher_score_north.add("North",teacher_jl_0); teacher_score_north.add("Center",teacher_score_north_course); teacher_score_page.add("North",teacher_score_north); teacher_score_page.add("Center",teacher_score_jsp); teacher_score_page.add("South",teacher_score_south); teacher_cards.setLayout(teacher_c_layout); teacher_cards.add("teacher_init_page",teacher_init_page); teacher_cards.add("teacher_score_page",teacher_score_page);
content_cards.add("teacher_cards",teacher_cards); } private void initStudentPage() { student_select_course_jl.setCellRenderer(new CourseSelCellRenderer()); student_delect_course_jl.setCellRenderer(new CourseDelCellRenderer()); student_menuBar.add(student_menu_select_course); student_menuBar.add(student_menu_delect_course); student_menu_select_course.addMenuListener(new MenuListener() { @Override public void menuSelected(MenuEvent e) { reloadCourseStuNotSelectedList((Student) user); student_c_layout.show(student_cards, "student_select_course_page"); } @Override public void menuDeselected(MenuEvent e) { } @Override public void menuCanceled(MenuEvent e) { } }); student_menu_delect_course.addMenuListener(new MenuListener() { @Override public void menuSelected(MenuEvent e) { reloadScoreStuList((Student) user); student_c_layout.show(student_cards, "student_delect_course_page"); } @Override public void menuDeselected(MenuEvent e) { } @Override public void menuCanceled(MenuEvent e) { } }); student_menu_view_course.addMenuListener(new MenuListener() { @Override public void menuSelected(MenuEvent e) { student_c_layout.show(student_cards, "student_view_course_page"); } @Override public void menuDeselected(MenuEvent e) { } @Override public void menuCanceled(MenuEvent e) { } }); menu_cards.add("student_menuBar",student_menuBar); student_init_page.add(student_jl_init); student_select_course_page.setLayout(new BorderLayout()); student_select_course.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Student s = (Student)user; HashMap<Integer, List> stu_not_course = s.getCourseStuNotSelected(); s.selStuCourse(((Entry<Integer, List>)student_select_course_jl.getSelectedValue()).getKey()); reloadCourseStuNotSelectedList(s); } });
student_delect_course_page.setLayout(new BorderLayout()); student_delect_course.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Student s = (Student)user; s.delStuCourse((int)((List)student_delect_course_jl.getSelectedValue()).get(1)); reloadScoreStuList(s); } }); student_select_course_page.add("North",student_jl_0_0); student_select_course_page.add("Center",student_select_course_jsp); student_select_course_page.add("South",student_select_course); student_delect_course_page.add("North",student_jl_0_1); student_delect_course_page.add("Center",student_delect_course_jsp); student_delect_course_page.add("South",student_delect_course); student_view_score_page.add(student_jl_0_2);
student_cards.setLayout(student_c_layout); student_cards.add("student_init_page",student_init_page); student_cards.add("student_select_course_page",student_select_course_page); student_cards.add("student_delect_course_page",student_delect_course_page);
content_cards.add("student_cards",student_cards); }
private void initManagerPage() { manager_jc_teacher.setRenderer(new TeaCellRenderer()); manager_menuBar.add(manager_menu); manager_menu.addMenuListener(new MenuListener() { @Override public void menuSelected(MenuEvent e) { manager_c_layout.show(manager_cards, "manager_new_course_page"); } @Override public void menuDeselected(MenuEvent e) { } @Override public void menuCanceled(MenuEvent e) { } }); menu_cards.add("manager_menuBar",manager_menuBar); manager_init_page.add(manager_jl_init); manager_new_course_page.setLayout(new GridLayout(0,1)); manager_new_course.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Entry<Integer,String> t = (Entry<Integer, String>) manager_jc_teacher.getSelectedItem(); Manager m = (Manager)user; m.newCourse(manager_jt_course_name.getText(), t.getKey(), manager_jt_course_info.getText()); manager_jt_course_name.setText(""); manager_jt_course_info.setText(""); JOptionPane.showMessageDialog(null, "课程添加成功!"); } }); manager_new_course_page.add(manager_jl_0); manager_new_course_page.add(manager_jl_1); manager_new_course_page.add(manager_jt_course_name); manager_new_course_page.add(manager_jl_2); manager_new_course_page.add(manager_jc_teacher); manager_new_course_page.add(manager_jl_3); manager_new_course_page.add(manager_jt_course_info); manager_new_course_page.add(manager_new_course);
manager_cards.setLayout(manager_c_layout); manager_cards.add("manager_init_page",manager_init_page); manager_cards.add("manager_new_course_page",manager_new_course_page);
content_cards.add("manager_cards",manager_cards); } public void setUser(User user) { this.user = user; if(user.getType()==0) { setTeacherList(); manager_jl_0.setText("管理员:"+user.getUsername()+" 编号:"+user.getUserId()); manager_jl_init.setText("<html><body>"+"欢迎来到选课系统<br>"+"管理员:"+user.getUsername()+" 编号:"+user.getUserId()+"<br>请选择功能"+"<body></html>");
content_c_layout.show(content_cards, "manager_cards"); menu_c_layout.show(menu_cards, "manager_menuBar"); manager_c_layout.show(manager_cards, "manager_init_page"); } else if(user.getType()==1) { setTeacherList_course(); teacher_jl_0.setText("教师: "+user.getUsername()+" 编号:"+user.getUserId()); teacher_jl_init.setText("<html><body>"+"欢迎来到选课系统<br>"+"教师: "+user.getUsername()+" 编号:"+user.getUserId()+"<br>请选择功能"+"<body></html>");
content_c_layout.show(content_cards, "teacher_cards"); menu_c_layout.show(menu_cards, "teacher_menuBar"); teacher_c_layout.show(teacher_cards, "teacher_init_page"); } else if(user.getType()==2) { student_jl_0_0.setText("学生姓名:"+user.getUsername()+" 编号:"+user.getUserId()); student_jl_0_1.setText("学生姓名:"+user.getUsername()+" 编号:"+user.getUserId()); student_jl_0_2.setText("学生姓名:"+user.getUsername()+" 编号:"+user.getUserId()); student_jl_init.setText("<html><body>"+"欢迎来到选课系统<br>"+"学生: "+user.getUsername()+" 编号: "+user.getUserId()+"<br>请选择功能"+"<body></html>"); content_c_layout.show(content_cards, "student_cards"); menu_c_layout.show(menu_cards, "student_menuBar"); student_c_layout.show(student_cards, "student_init_page"); } } public void setTeacherList() { manager_jc_teacher.removeAllItems(); HashMap<Integer, String> teacher = db.getTeacher(); for(Entry<Integer, String> entry:teacher.entrySet()) { manager_jc_teacher.addItem(entry); } } public void reloadScoreTea(Teacher t, int course_id) { teacher_score_dlm.clear(); ArrayList<List> teacher_course = t.getScoreTeacher(course_id); for(List l:teacher_course) { teacher_score_dlm.addElement(l); } } public void setTeacherList_course() { teacher_jc_course.removeAllItems(); List<Integer> teacher_course = db.getTeacherCourse(user.getUserId()); for(int l:teacher_course) { teacher_jc_course.addItem(l); } } public void reloadCourseStuNotSelectedList(Student s) { student_select_course_dlm.clear(); HashMap<Integer, List> course = s.getCourseStuNotSelected(); for(Entry<Integer, List> entry:course.entrySet()) { student_select_course_dlm.addElement(entry); } } public void reloadScoreStuList(Student s) { student_delect_course_dlm.clear(); ArrayList<List> student_score = s.getScoreStu(); for(List l:student_score) { student_delect_course_dlm.addElement(l); } } public void initFrame(LoginFrame login_frame) { this.login_frame = login_frame; } public void clear() { teacher_score_dlm.clear(); manager_jt_course_name.setText(null); manager_jt_course_info.setText(null); teacher_jt_score.setText(null); user = null; } }
class LoginFrame extends JFrame{ private MainFrame manager_frame; private JTextField tf_user = new JTextField(); private JPasswordField tf_pwd = new JPasswordField(); private JButton login = new JButton("登录"); private JLabel jl = new JLabel(); private JLabel jl_login = new JLabel(""); private Database db; private Teach teach; private User u; public LoginFrame(Database db, Teach teach) { super("选课系统登录"); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); this.db = db; this.teach = teach; setLayout(new GridLayout(0,1));
setLocation(800,400); setSize(250,200); login.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { User user = verifyUser(tf_user.getText(), String.valueOf(tf_pwd.getPassword())); if(user==null) { jl.setText("user or pwd error"); } else { tf_user.setText(null); tf_pwd.setText(null); setVisible(false); manager_frame.setUser(user); manager_frame.setVisible(true); jl.setText(null); } } }); add(tf_user); add(tf_pwd); add(login); add(jl); } public void initFrame(MainFrame manager_frame) { this.manager_frame = manager_frame; } public User verifyUser(String user, String pwd) { List account = db.getAccount(user); u = null; if(account == null) { return null; } else if(pwd.compareTo((String)account.get(0))==0){ if((int)account.get(1) == 0) { u = new Manager(user, pwd, (int)account.get(1),(int)account.get(2),(String)account.get(3), teach); } else if((int)account.get(1) == 1) { u = new Teacher(user, pwd, (int)account.get(1),(int)account.get(2),(String)account.get(3), teach); } else if((int)account.get(1) == 2) { u = new Student(user, pwd, (int)account.get(1),(int)account.get(2),(String)account.get(3), teach); } return u; } return null; } }
class User{ String user; String pwd; int type; int account_id; String account_name; Teach teach; public User(String user, String pwd, int type, int account_id, String account_name, Teach teach) { this.user = user; this.pwd = pwd; this.type = type; this.account_id = account_id; this.account_name = account_name; this.teach = teach; } public int getType() { return type; } public String getUser() { return user; } public String getUsername() { return account_name; } public int getUserId() { return account_id; } }
class Student extends User{ public Student(String user, String pwd, int type, int account_id, String account_name, Teach teach) { super(user, pwd, type, account_id, account_name, teach); } public int selStuCourse(int course_id) { teach.selStuCourse(account_id, course_id); return 1; } public HashMap<Integer, List> getCourseStuNotSelected(){ return teach.getCourseStuNotSelected(account_id); } public int delStuCourse(int course_id) { teach.delStuCourse(account_id, course_id); return 1; } public ArrayList<List> getScoreStu() { return teach.getScoreStu(account_id); } }
class Teacher extends User{ public Teacher(String user, String pwd, int type, int account_id, String account_name, Teach teach) { super(user, pwd, type, account_id, account_name, teach); } public ArrayList<List> getScoreTeacher(int course_id) { return teach.getScoreTeacher(course_id); } public List getCourseInfo(int course_id) { return teach.getCourseInfo(course_id); } public void scoreStuCourse(int student_id, int course_id, int student_score) { teach.scoreStuCourse(student_id, course_id, student_score); } }
class Manager extends User{ public Manager(String user, String pwd, int type, int account_id, String account_name, Teach teach) { super(user, pwd, type, account_id, account_name,teach); } public int newCourse(String course_name, int teacher_id , String course_info) { teach.newCourse(course_name, teacher_id, course_info); return 1; } }
class Teach{ private Database db; public Teach(Database db) { this.db = db; } public int newCourse(String course_name, int teacher_id , String course_info) { db.addCourse(course_name, teacher_id, course_info); return 1; } public int selStuCourse(int account_id, int course_id) { db.addStuCourse(account_id, course_id); return 1; } public int delStuCourse(int account_id, int course_id) { db.delStuCourse(account_id, course_id); return 1; } public int scoreStuCourse(int student_id, int course_id, int student_score) { if(student_score<-1 | student_score>100) { JOptionPane.showMessageDialog(null, "请输入0-100的整数"); return -1; } else { db.addStuScore(student_id, course_id, student_score); return 1; } } public List getCourseInfo(int course_id) { return db.getCourse().get(course_id); } public ArrayList<List> getScoreTeacher(int course_id) { return db.getScoreCourse(course_id); } public HashMap<Integer, List> getCourseStuNotSelected(int account_id){ return db.getCourseNotSelected(account_id); } public ArrayList<List> getScoreStu(int account_id) { return db.getScoreStu(account_id); } }
class Database { private File data_course; private File data_score; private File data_account; private int course_id = 0; private int student_id = 0; private int teacher_id = 0; private int manager_id = 0; private HashMap<Integer, List> course = new HashMap<Integer, List>(); private HashMap<String, List> account = new HashMap<String, List>(); private HashMap<Integer, String> manager = new HashMap<Integer, String>(); private HashMap<Integer, String> teacher = new HashMap<Integer, String>(); private HashMap<Integer, String> student = new HashMap<Integer, String>(); private ArrayList<List> score = new ArrayList<List>(); public Database(String file_course, String file_score, String file_account) throws IOException { this.data_course = new File(file_course); this.data_score = new File(file_score); this.data_account = new File(file_account); this.readIn(); } public HashMap<Integer, List> getCourse() { return course; } public HashMap<Integer, List> getCourseNotSelected(int student_id) { HashMap<Integer, List> map_copy = (HashMap<Integer, List>) course.clone(); System.out.println(map_copy.toString()); for(List l: score) { if((int)l.get(0)==student_id) { map_copy.remove((int)l.get(1)); } } System.out.println(map_copy.toString()); return map_copy; }
public List getTeacherCourse(int teacher_id) { List teacher_course_list = new ArrayList(); for(Entry<Integer, List> entry: course.entrySet()) { if((int)entry.getValue().get(1)==teacher_id) { teacher_course_list.add((int)entry.getKey()); } } return teacher_course_list; }
public ArrayList<List> getScoreCourse(int course_id) { ArrayList<List> list_copy = new ArrayList(); for(List l : score) { if((int)l.get(1)==course_id) { list_copy.add(l); } } return list_copy; } public HashMap<Integer, String> getTeacher() { return teacher; } public HashMap<Integer, String> getStudent() { return student; }
public ArrayList<List> getScore(int student_id) { ArrayList<List> list_copy = new ArrayList(); for(List l : score) { if((int)l.get(0)==student_id) { list_copy.add(l); } } return list_copy; } public ArrayList<List> getScoreStu(int student_id) { ArrayList<List> list_copy = new ArrayList(); for(List l : score) { if((int)l.get(0)==student_id) { list_copy.add(l); } } return list_copy; }
public HashMap<String, List> getAccount() { return account; }
public List getAccount(String user) { return account.get(user); } public void readIn() throws IOException { RandomAccessFile raf_course = new RandomAccessFile(data_course,"rw"); RandomAccessFile raf_score = new RandomAccessFile(data_score,"rw"); RandomAccessFile raf_account = new RandomAccessFile(data_account,"rw"); long fileLength = raf_course.length(); long filePoint = 0; int course_id; String course_name; int course_teacher_id; String course_info; raf_course.seek(0); if(filePoint < fileLength) { this.course_id = Integer.parseInt(raf_course.readLine()); } while(filePoint < fileLength) { course_id = Integer.parseInt(raf_course.readLine()); course_name = raf_course.readLine(); course_name = new String(course_name.getBytes("ISO-8859-1"),"gbk"); course_teacher_id = Integer.parseInt(raf_course.readLine()); course_info = raf_course.readLine(); course_info = new String(course_info.getBytes("ISO-8859-1"),"gbk"); course.put(course_id, Arrays.asList(course_name,course_teacher_id,course_info)); filePoint = raf_course.getFilePointer(); } raf_course.close(); fileLength = raf_account.length(); filePoint = 0; String account_user; String account_pwd; int account_type; Integer account_id; String account_name;
raf_account.seek(0); if(filePoint < fileLength) { this.manager_id = Integer.parseInt(raf_account.readLine()); this.teacher_id = Integer.parseInt(raf_account.readLine()); this.student_id = Integer.parseInt(raf_account.readLine()); filePoint = raf_account.getFilePointer(); } while(filePoint < fileLength) { account_user = raf_account.readLine(); account_user = new String(account_user.getBytes("ISO-8859-1"),"gbk"); account_pwd = raf_account.readLine(); account_pwd = new String(account_pwd.getBytes("ISO-8859-1"),"gbk"); account_type = Integer.parseInt(raf_account.readLine()); account_id = Integer.parseInt(raf_account.readLine()); account_name = raf_account.readLine(); account_name = new String(account_name.getBytes("ISO-8859-1"),"gbk"); switch(account_type) { case 0: manager.put(account_id, account_name); break; case 1: teacher.put(account_id, account_name); break; case 2: student.put(account_id, account_name); break; } account.put(account_user, Arrays.asList(account_pwd, account_type, account_id,account_name)); filePoint = raf_account.getFilePointer(); } raf_account.close(); fileLength = raf_score.length(); filePoint = 0; int student_id; int student_course_id; int student_score; raf_score.seek(0); while(filePoint < fileLength) { student_id = Integer.parseInt(raf_score.readLine()); student_course_id = Integer.parseInt(raf_score.readLine()); student_score = Integer.parseInt(raf_score.readLine()); score.add(Arrays.asList(student_id,student_course_id,student_score)); filePoint = raf_score.getFilePointer(); } raf_score.close(); } public void addAccount(String account_user, String account_pwd, int account_type, String account_name) throws IOException { int id = -1; if(!account.containsKey(account_user)) { switch(account_type) { case(0): manager_id = manager_id+1; id = manager_id; manager.put(id, account_name); break; case(1): teacher_id = teacher_id+1; id = teacher_id; teacher.put(id, account_name); break; case(2): student_id = student_id+1; id = student_id; student.put(id, account_name); break; } account.put(account_user, Arrays.asList(account_pwd, account_type, id, account_name)); }else { System.out.println("Account "+account_user+" has already exists."); } updateAccountData(); } public void addCourse(String course_name, int course_teacher_id, String course_info) { course_id = course_id + 1; course.put(course_id, Arrays.asList(course_name, course_teacher_id, course_info)); } public void addStuCourse(int student_id, int course_id) { score.add(Arrays.asList(student_id, course_id, -1)); } public void delStuCourse(int student_id, int course_id) { System.out.println("del "+student_id+" "+course_id); Iterator<List> i = score.iterator(); while(i.hasNext()){ List l = i.next(); if((int)l.get(0)==student_id & (int)l.get(1)==course_id){ i.remove(); } } } public void addStuScore(int student_id, int course_id, int student_score) { for(List<Integer> l:score) { if(l.get(0)==student_id & l.get(1)==course_id) { l.set(2, student_score); return; } } } public void clearFile(File file) throws IOException { FileWriter fileWriter =new FileWriter(file); fileWriter.write(""); fileWriter.flush(); fileWriter.close(); } private void updateCourseData() throws IOException { clearFile(data_course); RandomAccessFile raf_course = new RandomAccessFile(data_course,"rw"); raf_course.writeBytes(course_id+"\n");
for(int key:course.keySet()) { raf_course.write((key+"\n").getBytes()); raf_course.write((course.get(key).get(0)+"\n").getBytes()); raf_course.write((course.get(key).get(1)+"\n").getBytes()); raf_course.write((course.get(key).get(2)+"\n").getBytes()); } raf_course.close(); }
private void updateScoreData() throws IOException { clearFile(data_score); RandomAccessFile raf_score = new RandomAccessFile(data_score,"rw");
for(List l:score) { raf_score.write((l.get(0)+"\n").getBytes()); raf_score.write((l.get(1)+"\n").getBytes()); raf_score.write((l.get(2)+"\n").getBytes()); } raf_score.close(); } private void updateAccountData() throws IOException { clearFile(data_account); RandomAccessFile raf_account = new RandomAccessFile(data_account,"rw");
raf_account.writeBytes(manager_id+"\n"); raf_account.writeBytes(teacher_id+"\n"); raf_account.writeBytes(student_id+"\n");
for(String key:account.keySet()) { raf_account.write((key+"\n").getBytes()); raf_account.write((account.get(key).get(0)+"\n").getBytes()); raf_account.write((account.get(key).get(1)+"\n").getBytes()); raf_account.write((account.get(key).get(2)+"\n").getBytes()); raf_account.write((account.get(key).get(3)+"\n").getBytes()); } raf_account.close(); } public void updataAll() throws IOException { updateCourseData(); updateScoreData(); updateAccountData(); System.out.println("update finish"); } }
class ScoreCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); List<Integer> ci = (List<Integer>) value;
this.setText("学生编号: "+ci.get(0)+" 分数: "+ci.get(2)); return this; } }
class CourseTeaCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); Integer ci = (Integer) value; this.setText("课程编号: "+ci); return this; } }
class CourseSelCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); Entry<Integer, List> ci = (Entry<Integer, List>) value;
this.setText("课程编号: "+ci.getKey()+" 课程名称: "+ci.getValue().get(0)+" 教师编号: "+ci.getValue().get(1)+" 课程信息: "+ci.getValue().get(2)); return this; } }
class CourseDelCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); List ci = (List) value;
this.setText("课程编号: "+ci.get(1)+" 分数: "+ci.get(2)); return this; } }
class TeaCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); Entry<Integer, String> ci = (Entry<Integer, String>) value;
this.setText("编号: "+ci.getKey()+" 姓名: "+ci.getValue()); return this; } }
|