找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1542|回复: 0
收起左侧

Java学生选课系统程序设计

[复制链接]
ID:992276 发表于 2021-12-14 16:42 | 显示全部楼层 |阅读模式
较简单的学生选课系统,之前做Java设计时写的,代码量大概一千二百行左右,有需要的可以自取
51hei.png
  1. package user;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileWriter;
  8. import java.io.IOException;
  9. import java.io.InputStreamReader;
  10. import java.util.Scanner;

  11. import course.Course;
  12. import inputErr.UsrInput;

  13. public class User {
  14.         public String name; //用户名
  15.         public String pwd;  //密码
  16.         
  17.         public User() {}
  18.         
  19.         /**
  20.          * 显示用户信息
  21.          */
  22.         public void showInfo() {
  23.                 System.out.println(name+":"+pwd);
  24.         }

  25.         /**
  26.          * 设置用户密码
  27.          */
  28.         public void changePwd() {
  29.                 System.out.print("输入原密码:");
  30.                
  31.                 String originalPwd = UsrInput.getString();
  32.                 if (originalPwd.equals(this.pwd))
  33.                         while(true) {
  34.                                 System.out.print("输入新密码:");
  35.                                 String pwd = UsrInput.getString();
  36.                                 
  37.                                 System.out.print("确认密码:");
  38.                                 String pwd2 = UsrInput.getString();
  39.                                 
  40.                                 if (pwd.length()>=6 && pwd.length()<=12 && pwd.equals(pwd2)) {
  41.                                         this.pwd = pwd;
  42.                                         System.out.println("密码修改成功...");
  43.                                         break;
  44.                                 } else {
  45.                                         continue;
  46.                                 }
  47.                         }
  48.                 else {
  49.                         System.out.println("原密码不正确...");
  50.                 }
  51.                
  52.         }
  53.         
  54.         public User login() {
  55.                 // get admin pwd for .txt file
  56.                 User.getAdminInfo();

  57.                 System.out.print("输入管理员密码:");
  58.                 String pwd = UsrInput.getString();

  59.                 if (pwd.equals(AdminUsers.admin.pwd)) {
  60.                         System.out.println(AdminUsers.admin.name + ", 欢迎您!");
  61.                         return AdminUsers.admin; //成功
  62.                 } else {
  63.                         System.out.println("登录失败,密码错误...");
  64.                         return null; //失败
  65.                 }
  66.         }
  67.         
  68.         public static void getAdminInfo() {
  69.                 File f = new File("admin pwd.txt");
  70.                 try {
  71.                         if (!f.exists())
  72.                                 f.createNewFile();
  73.                         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f.getAbsoluteFile())));
  74.                         
  75.                         String info = null;
  76.                         
  77.                         if ((info=br.readLine())==null) {
  78.                                 AdminUsers.admin.name = "admin"; //管理员初始名称
  79.                                 AdminUsers.admin.pwd = "123456"; //管理员初始密码123456
  80.                         } else {
  81.                                 String info_[] = info.split("  ");
  82.                                 AdminUsers.admin.name = info_[0];
  83.                                 AdminUsers.admin.pwd = info_[1];
  84.                         }
  85.                         br.close();
  86.                 } catch (FileNotFoundException e) {
  87.                         // TODO Auto-generated catch block
  88.                         e.printStackTrace();
  89.                 } catch (IOException e) {
  90.                         e.printStackTrace();
  91.                 }
  92.         }
  93.         
  94.         
  95.         public static void saveAdminInfo() {
  96.                 try {
  97.                         BufferedWriter out = new BufferedWriter(new FileWriter("admin pwd.txt"));
  98.                         
  99.                         out.write(AdminUsers.admin.name + "  " + AdminUsers.admin.pwd); // write password

  100.                         out.flush();
  101.                         out.close();
  102.                 } catch (IOException e) {
  103.                         // TODO Auto-generated catch block
  104.                         e.printStackTrace();
  105.                 }
  106.         }
  107.         
  108.         
  109.         public void adminMenu() {
  110.                 int choice=0, innerChoice=0;
  111.                 while (true) {
  112.                         System.out.println("1.管理课程\n2.管理师傅\n3.管理学生\n4.修改管理员密码\n5.修改管理员名称\n0.退出");
  113.                         choice = UsrInput.getInt();
  114.                         switch(choice) {
  115.                                 case 1:
  116.                                         do {
  117.                                                 innerChoice=User.adminCourseMenu();
  118.                                                 if (innerChoice!=0)
  119.                                                         User.funcDistribute(innerChoice);
  120.                                         } while (innerChoice!=0);
  121.                                         break;
  122.                                 case 2:
  123.                                         do {
  124.                                                 innerChoice=User.adminTchMenu();
  125.                                                 if (innerChoice!=0)
  126.                                                         User.funcDistribute(innerChoice);
  127.                                         } while (innerChoice!=0);
  128.                                         break;
  129.                                 case 3:
  130.                                         do {
  131.                                                 innerChoice=User.adminStuMenu();
  132.                                                 if (innerChoice!=0)
  133.                                                         User.funcDistribute(innerChoice);
  134.                                         } while (innerChoice!=0);
  135.                                         break;
  136.                                 case 4:
  137.                                         AdminUsers.admin.changePwd();
  138.                                         break;
  139.                                 case 5:
  140.                                         User.changeAdminName();
  141.                                         break;
  142.                                 case 0:
  143.                                         Course.saveTofile(); //保存所有课程信息
  144.                                         User.saveStuInfo();
  145.                                         User.saveTchInfo();
  146.                                         return;
  147.                                 default: break;
  148.                         }
  149.                 }
  150.         }
  151.         
  152.         public static void changeAdminName() {
  153.                 System.out.print("输入新的管理员名称:");
  154.                 String newAdminName = UsrInput.getString();
  155.                
  156.                 AdminUsers.admin.name = newAdminName;
  157.                 System.out.println("名称修改成功...");
  158.         }
  159.         
  160.         public static void funcDistribute(int funcId) {
  161.                         switch (funcId) {
  162.                         case 1: Course.addCourses();                         break;
  163.                         case 2: Course.deleteCourses();         break;
  164.                         case 3: Course.setCourseTeacher();      break;
  165.                         case 4: Course.showAllCourses();                 break;
  166.                         case 5: Course.sortCourses();                    break;
  167.                         case 6: User.addTeachers();                           break;
  168.                         case 7: User.deleteTeachers();                         break;
  169.                         case 8: Course.searchCourseByTeacher(); break;
  170.                         case 9: AdminUsers.showAllTcher();                 break;
  171.                         case 10: User.resetPwd(1);                                 break;
  172.                         case 11: User.addStudents();                         break;
  173.                         case 12: User.deleteStudents();                 break;
  174.                         case 13: AdminUsers.showAllStudent();         break;
  175.                         case 14: User.resetPwd(0);                                 break;
  176.                         default:
  177.                         }
  178.         }
  179.         
  180.         public static int adminCourseMenu() {
  181.                 System.out.println("选择功能:\n1.添加课程\n2.删除课程\n"
  182.                                 + "3.设置课程师傅\n4.显示课程列表\n5.按选课人数排序\n"
  183.                                 + "0.退出");
  184.                 while (true) {
  185.                         int choice = UsrInput.getInt();

  186.                         if (choice==0) return 0;
  187.                         else if (choice>=1 && choice<=5)
  188.                                 return choice;
  189.                 }
  190.         }

  191.         public static int adminTchMenu() {
  192.                 System.out.println("选择功能:\n1.添加师傅\n2.删除师傅\n"
  193.                                 + "3.查看师傅所授课程\n4.显示师傅列表\n"
  194.                                 + "5.师傅密码恢复\n0.退出");
  195.                 while (true) {
  196.                         int choice = UsrInput.getInt();
  197.                         if (choice==0) return 0;
  198.                         else if (choice>=1 && choice<=5)
  199.                                 return choice+5;
  200.                 }
  201.         }

  202.         public static int adminStuMenu() {
  203.                 System.out.println("选择功能:\n1.添加学生\n2.删除学生\n"
  204.                                 + "3.查看学生列表\n"
  205.                                 + "4.学生密码恢复\n0.退出");
  206.                 while (true) {
  207.                         int choice = UsrInput.getInt();

  208.                         if (choice==0) return 0;
  209.                         else if (choice>=1 && choice<=4)
  210.                                 return choice+10;
  211.                 }
  212.         }

  213.         public static void addTeacher() {
  214.                 System.out.print("姓名:");
  215.                 String name = UsrInput.getString();
  216.                 System.out.print("工号:");
  217.                 int workId = UsrInput.getInt();
  218.                 System.out.print("职位:");
  219.                 String occupation = UsrInput.getString();
  220.                
  221.                 AdminUsers.t.add(new Teacher(name, "123456", workId, occupation));
  222.         }
  223.         
  224.         public static void addTeachers() {
  225.                 while(true) {
  226.                         User.addTeacher();
  227.                         
  228.                         System.out.print("师傅信息添加成功,是否继续添加?(y/n)");
  229.                         if (UsrInput.getString().equals("y"))
  230.                                 continue;
  231.                         else
  232.                                 break;
  233.                 }
  234.         }

  235.         public static boolean deleteTeacher() {
  236.                 System.out.print("输入要删除的师傅信息工号:");
  237.                 int objTeacher = UsrInput.getInt();

  238.                 Teacher tmp = null;
  239.                 for (int i=0; i<AdminUsers.t.size(); ++i)
  240.                         if ((tmp=AdminUsers.t.get(i)).getWorkId()==objTeacher) {
  241.                                 AdminUsers.t.remove(i); //删除师傅信息

  242.                                 //首先级联置空其教授的课程
  243.                                 for (Course c : Course.courseSet)
  244.                                         if (c.teacher.equals(tmp.name))
  245.                                                 c.teacher = "---";
  246.                                 return true;
  247.                         }
  248.                 return false;
  249.         }

  250.         public static void deleteTeachers() {
  251.                 if (AdminUsers.t==null || AdminUsers.t.size()==0) {
  252.                         System.out.println("暂无师傅信息...");
  253.                         return; //空
  254.                 }

  255.                 while(true) {
  256.                         if (User.deleteTeacher())
  257.                                 System.out.print("师傅信息删除成功,是否继续删除?(y/n)");
  258.                         else
  259.                                 System.out.print("删除失败,无匹配师傅信息...\n输入y继续删除,输入n退出:");
  260.                         if (UsrInput.getString().equals("y")) {
  261.                                 continue;
  262.                         } else
  263.                                 break;
  264.                 }
  265.         }
  266.         
  267.         public static void addStudent() {
  268.                 System.out.print("姓名:");
  269.                 String name = UsrInput.getString();
  270.                 System.out.print("学号:");
  271.                 int stuId = UsrInput.getInt();
  272.                 System.out.print("班级:");
  273.                 String class_ = UsrInput.getString();
  274.                
  275.                 AdminUsers.s.add(new Student(name, "123456", stuId, class_));
  276.         }
  277.         
  278.         public static void addStudents() {
  279.                 while(true) {
  280.                         User.addStudent();
  281.                         
  282.                         System.out.print("学生信息添加成功,是否继续添加?(y/n)");
  283.                         if (UsrInput.getString().equals("y"))
  284.                                 continue;
  285.                         else
  286.                                 break;
  287.                 }
  288.         }
  289.         
  290.         public static boolean deleteStudent() {
  291.                 System.out.print("输入要删除的学生信息学号:");
  292.                 int objStu = UsrInput.getInt();

  293.                 Student tmp = null;
  294.                 for (int i=0; i<AdminUsers.s.size(); ++i)
  295.                         if (objStu==(tmp=AdminUsers.s.get(i)).getStuId()) {
  296.                                 AdminUsers.s.remove(i);
  297.                                 
  298.                                 //该学生选修的课程人数减一
  299.                                 for (Integer cid : Student.allStuCourses.get(tmp.getStuId()))
  300.                                         for (Course c : Course.courseSet)
  301.                                                 if (c.id==cid.intValue())
  302.                                                         --c.stuNum;
  303.                                 return true;
  304.                         }
  305.                 return false;
  306.         }

  307.         public static void deleteStudents() {
  308.                 if (AdminUsers.s==null || AdminUsers.s.size()==0) {
  309.                         System.out.println("暂无任何学生信息...");
  310.                         return; //空
  311.                 }

  312.                 Scanner cin = new Scanner(System.in);
  313.                
  314.                 while(true) {
  315.                         if (User.deleteStudent())
  316.                                 System.out.print("学生信息删除成功,是否继续?(y/n)");
  317.                         else
  318.                                 System.out.print("删除失败,无匹配的学生信息...\n输入y继续删除,输入n退出:");
  319.                         if (cin.next().equals("y")) {
  320.                                 continue;
  321.                         } else
  322.                                 break;
  323.                 }
  324.         }
  325.         
  326.         public static void saveStuInfo() {
  327.                 try {
  328.                         BufferedWriter out = new BufferedWriter(new FileWriter("student info.txt"));
  329.                         
  330.                         for (Student s : AdminUsers.s)
  331.                                 out.write(s.toString()+"\r\n");
  332.                         
  333.                         out.flush();
  334.                         out.close();
  335.                 } catch (IOException e) {
  336.                         // TODO Auto-generated catch block
  337.                         e.printStackTrace();
  338.                 }
  339.         }
  340.         
  341.         public static void readStuInfo() {
  342.                 File f = new File("student info.txt");
  343.                 try {
  344.                         if (!f.exists()) f.createNewFile();
  345.                         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f.getAbsoluteFile())));
  346.                         
  347.                         String info = null;
  348.                         
  349.                         while ((info = br.readLine()) != null) {
  350.                                 String[] info_ = info.split("  ");
  351.                                 
  352.                                 int stuId = Integer.parseInt(info_[0]);
  353.                                 String name = info_[1];
  354.                                 String class_ = info_[2];
  355.                                 String pwd = info_[3];
  356.                                 
  357.                                 AdminUsers.s.add(new Student(name, pwd, stuId, class_));
  358.                         }
  359.                         br.close();
  360.                 } catch (FileNotFoundException e) {
  361.                         // TODO Auto-generated catch block
  362.                         e.printStackTrace();
  363.                 } catch (IOException e) {
  364.                         e.printStackTrace();
  365.                 }
  366.         }
  367.         
  368.         public static void saveTchInfo() {
  369.                 try {
  370.                         BufferedWriter out = new BufferedWriter(new FileWriter("teacher info.txt"));
  371.                         
  372.                         for (Teacher t : AdminUsers.t)
  373.                                 out.write(t.toString()+"\r\n");
  374.                         
  375.                         out.flush();
  376.                         out.close();
  377.                 } catch (IOException e) {
  378.                         // TODO Auto-generated catch block
  379.                         e.printStackTrace();
  380.                 }
  381.         }
  382.         
  383.         public static void readTchInfo() {
  384.                 File f = new File("teacher info.txt");
  385.                 try {
  386.                         if (!f.exists()) f.createNewFile();
  387.                         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f.getAbsoluteFile())));
  388.                         
  389.                         String info = null;
  390.                         
  391.                         while ((info = br.readLine()) != null) {
  392.                                 String[] info_ = info.split("  ");
  393.                                 
  394.                                 int workId = Integer.parseInt(info_[0]);
  395.                                 String name = info_[1];
  396.                                 String occupation = info_[2];
  397.                                 String pwd = info_[3];
  398.                                 
  399.                                 AdminUsers.t.add(new Teacher(name, pwd, workId, occupation));
  400.                         }
  401.                         br.close();
  402.                 } catch (FileNotFoundException e) {
  403. ……………………

  404. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

代码: 选课系统.rar (33.13 KB, 下载次数: 6)

评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表