代码纠错:有读者反映代码中God类的代码没有找到
该类是调试过程中加上去的,那句话没有用,直接删掉就可以
/*********************************************************************/
偷偷打个广告
专业C,Java,Python,MySQL,单片机程序代写
有需要可以联系我哟,价格实惠,质量保证
/*********************************************************************/
大家好,我是WilliamCode,继高中C++的lowB学习之后,大一的我来学Java了。其实都是为了学Android才来学Java的。自己写了一个java模拟选课的作业,写一篇博客分享一下。
本篇文章为个人作品,转载请注明出处,并注明:WilliamCode真帅。(emmm,开个玩笑)

不说了,直接上代码。(下面有代码相关说明,以及我在写这段代码之后觉得的注意事项和一些感受)

*我是分割线
显示Course类,存储课程信息,静态变量mark用于给新输入的课程编代号。

package com.classselect;public class Course {long ID;String name;public static int mark=0;public Course(String name) {this.ID=++mark;this.name=name;}public void ChangeId(int a) {this.ID=a;}public Course() {}
}然后是Student类,其中CourseSelect是存储该学生已选课程的ArrayList。package com.classselect;import java.util.ArrayList;
import java.util.List;public class Student {int ID;String name;List<Course> CourseSelected = new ArrayList<Course>();public Student(int num,String name) {this.ID=num;this.name=name;}public Student() {}public int compare(Student aa,Student bb) {if (aa.ID>bb.ID) return 1;if (aa.ID<bb.ID) return -1;return 1;}
}

然后是AllCourse类,用于存储待选课程。

package com.classselect;import java.util.ArrayList;
import java.util.List;public class AllCourse {List<Course> CourseList = new ArrayList<Course>();public void AddCourse(Course a) {this.CourseList.add(a);}public boolean CourseExist(String a) {for (int i=0;i<CourseList.size();i++) {Course tmp = (Course)CourseList.get(i);if (tmp.name == a) return true;}return false;}public boolean CourseExist(int id) {Course a=new Course();if (id>0 && id<=a.mark) {return true;}return false;}public void PrintCourseList() {for (int i=0;i<CourseList.size();i++) {Course a=(Course)CourseList.get(i);System.out.println(a.ID+" "+a.name);}if (CourseList.size()==0) {System.out.println("你还没有选择任何课程");}}public void CourseInit() {Course a = new Course("高等数学");CourseList.add(a);Course b = new Course("大学英语");CourseList.add(b);Course c = new Course("世界史");CourseList.add(c);}public String ReturnCourseName(int aa) {Course a=new Course();for (int i=0;i<CourseList.size();i++) {a=(Course)CourseList.get(i);if (a.ID==aa) break;}return a.name;}}

下面是SCList(Student-Course List)类,存储多个学生及其已经选择的课程。

package com.classselect;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;public class SCListGo {public static int NowPos = 0;List<Student> SCList = new ArrayList<Student>();public void AddStudent(Student a) {SCList.add(a);NowPos=SCList.size()-1;}public String StudentExist(int a) {for (int i=0;i<SCList.size();i++) {Student tmp2 = (Student)SCList.get(i);if (a == tmp2.ID) {NowPos=i;return tmp2.name;}}return "111111";}public boolean StudentCourseExist(int CID) {Student b=(Student)SCList.get(NowPos);for (int i=0;i<b.CourseSelected.size();i++) {Course c=b.CourseSelected.get(i);if (c.ID==CID) return true;}return false;}public void CourseDelete(int CID) {Student b=SCList.get(NowPos);for (int i=0;i<b.CourseSelected.size();i++) {Course c=b.CourseSelected.get(i);if (c.ID==CID) {b.CourseSelected.remove(i);   return;}}       }public void AddCourse(Course a) {Student b=(Student)SCList.get(NowPos);Course c=new Course();for (int i=0;i<b.CourseSelected.size();i++) {c=b.CourseSelected.get(i);      }b.CourseSelected.add(a);for (int i=0;i<b.CourseSelected.size();i++) {a=b.CourseSelected.get(i);}SCList.set(NowPos, b);}public static int Compare(Student aa,Student bb) {if (aa.ID>bb.ID) return 1;if (aa.ID<bb.ID) return -1;return 1;}public void PrintSCInfo() {int flag1=0;int flag2=0;for (int i=0;i<SCList.size();i++) {flag1=1;Student b = (Student)SCList.get(i);System.out.println("学号:"+b.ID+"  姓名:"+b.name);System.out.println("      已经选择了如下课程:");for (int j=0;j<b.CourseSelected.size();j++) {flag2=1;Course c=(Course)b.CourseSelected.get(j);System.out.println("        "+c.ID+" "+c.name);}if (flag2==0) {System.out.println("该学生还没有选择课程");}}if (flag1==0) {System.out.println("没有学生的选课信息");}}public void PrintSingleStudentInfo(int a) {for (int i=0;i<this.SCList.size();i++) {Student tmp2 = (Student)SCList.get(i);if (tmp2.ID==a) {for (int j=0;j<tmp2.CourseSelected.size();j++) {Course b=tmp2.CourseSelected.get(j);System.out.println(b.ID+"  "+b.name);}if (tmp2.CourseSelected.size()==0) {System.out.println("你没有选择任何课程");}return;}}}
}

下面是主函数ToSelect类

package com.classselect;import java.util.InputMismatchException;
import java.util.Scanner;public class ToSelect {public static void main(String[] args) {//Init The ClassAllCourse allcourse=new AllCourse();Student student=new Student();SCListGo e=new SCListGo();Scanner console=new Scanner(System.in);allcourse.CourseInit();int num;int id;String name;while(1==1) {System.out.println("欢迎来到gay理选课系统");System.out.println("请输入你的学号");num=console.nextInt();id=num;if (num == 99991111) {System.out.println("你好,管理员,请输入管理员密码");num=console.nextInt();int flag=0;while(num!=1120172954){System.out.println("管理员密码错误,请重新输入<输入54138退出管理员模式>");num=console.nextInt();if(num==54138) {flag=1;break;}}if (flag==1) continue;//************************************管理员模式代码*****************************************System.out.println("你好,管理员!请输入要执行的操作代码");while(1==1) {System.out.println("1 查看课程");System.out.println("2 添加课程");System.out.println("3 查看所有学生及选课信息");System.out.println("4 退出管理员模式");int tmp;tmp=console.nextInt();while (tmp<=0 || tmp>=5) {System.out.println("代码错误,请输入1到4之间的代码");}if (tmp == 4) break;if (tmp == 1) {allcourse.PrintCourseList();System.out.println("**********************分割线***********************");continue;}String TmpName;if (tmp == 2) {System.out.println("请输入要添加的课程,系统将自动分配代号");TmpName=console.next();if (allcourse.CourseExist(TmpName)==true) {System.out.println("课程已经存在");continue;}Course course=new Course(TmpName);allcourse.AddCourse(course);System.out.println("添加课程成功,课程代码"+course.ID+"  课程名称:"+course.name);System.out.println("**********************分割线***********************");continue;}if (tmp == 3) {e.PrintSCInfo();System.out.println("**********************分割线***********************");continue;}}continue;}name=e.StudentExist(num);if (name!="111111") {System.out.println("你好,"+name);}else {System.out.println("请输入你的姓名");name=console.next();System.out.println("你好,"+name+",你的学号是"+num+"。信息添加成功");student.name=name;student.ID=num;e.AddStudent(student);}while(1==1){System.out.println("请选择操作并输入操作代号");System.out.println("1 查看已选课程");System.out.println("2 选课");System.out.println("3 删除课程");System.out.println("4 退出");System.out.println("**********************分割线***********************");num=console.nextInt();if (num<=0 || num>=5)do {System.out.println("请输入1到3之间的整数");num=console.nextInt();}while(num<=0 || num >4);if(num==4) break;if (num == 1) {e.PrintSingleStudentInfo(id);System.out.println("**********************分割线***********************");continue;}else if (num == 2) {allcourse.PrintCourseList();while(1==1){System.out.println("请输入要选的课程代码,输入9999退出");int CID=console.nextInt();if(CID==9999) break;if (allcourse.CourseExist(CID)==false) {System.out.println("课程不存在");System.out.println("**********************分割线***********************");continue;}if (e.StudentCourseExist(CID)==true) {System.out.println("你已经选择了该课程");System.out.println("**********************分割线***********************");continue;}Course course=new Course();course.ID=CID;course.name=allcourse.ReturnCourseName(CID);e.AddCourse(course);System.out.println("你已经成功选择了该课程:"+CID+" "+course.name);System.out.println("**********************分割线***********************");}}else if (num == 3) {System.out.println("你的已选课程列表为");e.PrintSingleStudentInfo(id);while(1==1) {System.out.println("请输入要删除的课程代码,输入9999退出");int CID=console.nextInt();if (CID==9999) break;if (allcourse.CourseExist(CID)==false) {System.out.println("课程不存在");System.out.println("**********************分割线***********************");continue;}if (e.StudentCourseExist(CID)==false) {System.out.println("你并未选择了该课程");System.out.println("**********************分割线***********************");continue;}e.CourseDelete(CID);    System.out.println("你成功的删除了课程"+CID+" "+allcourse.ReturnCourseName(CID));System.out.println("**********************分割线***********************");}}} }   }
}

完了,这就是所有东西。
这个工程可以下载,我分享在了百度云,下载之后导入就可以了
百度云地址:https://pan.baidu.com/s/1i5iVtCL
提取密码:g6vm
如果链接失效可以给1327804001@qq.com发邮件。
要注意的是代码里面有的方法压根就没有用。只是要用其他方法实现时候要写的。

其中有很多细节,有些细节我已经写出来了,但是有些细节没有写,我知道的细节如下:
1、输入错误时应该用try-catch抛出错误并处理
2、打印学生信息时,给学生、课程列表列表排序,用sort(),重写compare方法可以自定义排序规则
3、判断arraylist中有没有某个学生信息,可以用contain来判断,重写一下equals()就可以,但是contains内部也是由循环来遍历list比较的,所以这里我直接手动遍历了

然后就是我写这个工程的一点体会,作为新手:

1、一定要先写出整个project的思路图。很多资深的开发者用那个什么软件直接画,画好之后就可以直接生成基本的代码结构
2、如果思路不是那么成熟。先建立最基本的类,比如这个模拟选课系统里面我先写Student、Course类的属性和初始化方法;之后先去写主函数,当遇到要调用的方法时就去写其他具体的类。
3、对于新手来说可能这个project是一个比较大的任务。以前学c++老是觉得应该一次写完,但一个比较大的工程可能是很多人一起写,或者需要一个人分多次写很多次。所以程序最好条理清晰,变量命名也必须合乎规范。
4、遇见问题时一定要会用debug程序。新手一定要学会用debug,用断点调试可以大大提高效率。
5、对于一个要用多次的类的实例,不要只在开头实例化一个,后面都用。这样做可以省空间,但可能出现错误,莫名其妙;应该用之前再实例化。
6、一定要理解类、对象、属性、方法之间的关系,要明白只有类实例化成为对象之后才有内存来存储数据。所以在main函数里,基本每一个类都要实例化一次,整个main里面只有一个的对象可以在main方法开头写在一起。
7、新手学习的话,基础一定要扎实,否则写代码这个不会那个有问题还得去查,很浪费时间,比如equal函数怎么重写,比如List之中嵌套set要重写hashset啊,特别细节。

emmm,BB的有点多。以上都是新手的看法,很多东西可能有问题,仅供参考。如果您有什么看法也可以留言或评论,作为新手的我会认真学习的哦。

JAVA模拟学生选课系统(附下载链接)相关推荐

  1. 基于java的学生选课系统_基于Java的学生选课系统.doc

    课程设计 (Java程序设计) 题 目 基于Java的学生选课系统 基于Java的学生选课系统 摘要:课程管理系统是一个学校中不可缺少的部分.课程管理系统应该能够为用户提供充足的信息和快捷的查询手段. ...

  2. 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  3. Java项目:学生选课系统(java+javaweb+jdbc)

    源码获取:博客首页 "资源" 里下载! 功能介绍: 用户菜单.学生管理.教师管理.课程管理.成绩排名查询 学生管理控制层: @Controller @RequestMapping( ...

  4. 《Java标准教程》pdf 附下载链接

    链接:https://pan.baidu.com/s/17GsNHVPzJwEg9NHOcSx1LQ 密码:y2ah 本书为完整版,以下为内容截图:

  5. java选课系统_java实现学生选课系统

    本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下 案例要求: 学生(学号,姓名,专业,所选课程{<3}) 老师(工号,姓名,所教课程{<3}) 课程(课程号,课 ...

  6. (附源码)mysql+ssm学生选课系统 毕业设计 170920

     摘 要 本论文主要论述了如何使用JAVA语言开发一个学生选课系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述学生选课系统的当前 ...

  7. ssm+mysql+ssm学生选课系统 毕业设计-附源码170920

    摘 要 本论文主要论述了如何使用JAVA语言开发一个学生选课系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述学生选课系统的当前背 ...

  8. java学生选课系统课程设计报告_Java语言程序设计课程设计-学生选课系统

    <Java语言程序设计课程设计-学生选课系统>由会员分享,可在线阅读,更多相关<Java语言程序设计课程设计-学生选课系统(23页珍藏版)>请在人人文库网上搜索. 1.10届 ...

  9. 数据库小组作业-学生选课系统(java+java swing+mysql实现)

    最近数据库老师要求组一个小组并且完成一个题目 我们组选择的是学生选课系统,恰巧这学期刚好在学java,所以就用java swing来写界面,数据库使用mysql 注:开发中使用的idea版本为2020 ...

  10. Java Swing Mysql学生选课系统

    此篇是基于Java Swing Mysql学生选课系统的第二阶段 主要功能: 课程添加.编辑.查询.删除.选课.退课.修改已选课程.以及老师.管理员.学生三种角色的权限分配 开发环境: 开发工具:Ec ...

最新文章

  1. 使用CSS3美化复选框checkbox
  2. mysql Got error 28 from storage engine
  3. webpack4.x Loaders
  4. android.provider.documentscontract cannot be resolved.
  5. UVA - 232 ​​​​​​​Crossword Answers
  6. java面试编程面试题_完美的编程面试问题
  7. python 创建文件夹1003python 创建文件夹_在python中创建动态文件名
  8. 在HTML中使用WCF RESTful上传文件
  9. TensorFlow 教程 --教程--2.10偏微分方程
  10. NLP ---文本情感分析
  11. origin8.0快速实现多X,Y绘制
  12. 微分恒等式(助于找到均值、方差和其他矩)
  13. Java中如何通过经纬度坐标获取两个点之间的直线距离
  14. qq邮箱的发件服务器怎么设,如何利用QQ邮箱实现网站SMTP发信,详细邮箱的配置教程...
  15. HTTP请求错误 2xx 3xx 4xx 5xx
  16. Vuex的响应式原理
  17. Conditional Positional Encodings for Vision Transformers(论文阅读笔记)
  18. 财路网每日原创推送: 科普:区块链在其他领域的一些应用
  19. 华为ap3010转胖ap
  20. LintCode python入门题

热门文章

  1. pycharm2019安装包以及汉化文件
  2. 网页设计期末复习 选择+简答+大题
  3. 【期刊推荐】JCR1-4区推荐重点SCI期刊征稿中~
  4. SecoClient接收返回码超时
  5. 在AVEVA PDMSE3D软件实现三维二维码模型
  6. Linux 现在常用的图形化远控软件的大体介绍
  7. C++ 已知两点坐标和半径求圆心坐标程序
  8. android修改系统分辨率,Android4.2修改系统分辨率的方法
  9. phpcms url伪静态
  10. 史上最全的android学习资料