光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置JDK已经到了现在快学完网络编程了。学了这么多,眼看就要进入下一个阶段了,数据库编程了,那么在进入下个阶段前,我们来完成一个综合性比较强的结业项目,告别JavaSE阶段,学完JavaSE,大家已经对编程这块相信已经有了一个很深的理解,但是仅仅是JavaSE还是不够的,我们还需要学习更多的,更全面知识才足以在接下来的生活中过五关斩六将。为了提高大家的编程技能和逻辑思维。特地整理出了一份综合性比较全面的结业项目。大家各自发挥想象力,创造力,计算力,逻辑力完成下面这道题。

整个项目涉及到的类如下

抽象类 Person
ID(id)、  用户名(username)密码(password)、性别(age) 管理员类 Admin (继承Person)
属性有 ID(id)、  用户名(username)、性别(age) 老师类 Teacher (继承Person)
老师教的课程(course)、班级(className) 学生类 Student (继承Person)
学生的专业(major)  、班级(className)、成绩(score) //以上类字段属性为基础,如需要可自行在上面扩展

管理员账号默认为admin,老师帐号默认为t1,学生默认帐号为s1,t1和s1是默认帐号,用户用t1和s1登录进去的时候任何也做不了,只能选择注册老师或者注册学生,(用t1或者s1登录进去后不需要验证密码,直接显示菜单,用非t1和s1帐号需要验证密码

项目启动在控制台打印如下:

  1. 我是管理员
  2. 我是老师
  3. 我是学生
  4. 常用工具

显四三个菜单,用户选择对应的序号进行对应的操作和显示子菜单。每选择一个菜单相当于确定了你目前的身份,需要输入帐号和密码进行验证。如果都正确,则提示登录成功,显示子菜单。比如输入1后,控制台提示

请输入帐号:
请输入密码:

用户输入后后台程序进行验证,如果成功。就进行下一步操作。

下面我们来看管理员对应的操作有:(也就是输入1,以管理员的身份进入系统):

以管理员的身份进入系统,控制台打印如下:

***********************************************************
1、查看所有学生 (注:这里显示所有的学生)
2、查看所有老师 (注:这里显示所有的老师)
3、分类查看
4、添加班级
5、添加课程 // 当用户输入3后,3下面对应的子菜单有
***********************************************************
1、按性别查看 (具体输入值为男或者女)
2、按班级查看 (输入2之后在控制台继续显示,1、按班级查看老师 2、按班级查看学生)
3、查看成绩大于_分的学生(这里输入具体数字,输入后把大于多少分的匹配出来)
4、查看成绩小于_分的学生(同上)
5、查看成绩等于_分的学生(同上)
6、查看具体学生的信息(提示输入学生的姓名和ID,防止有重名同学)
7、查看学生的平均成绩
8、按成绩降序查看所有学生
9、按成绩升序查看所有学生
10、查看当前老师和学生的总数
11、显示成绩综合信息 (打印如下信息) //这里针对11 打印的信息如下 (60分及格)
学生总成绩 学生平均成绩 及格学生所占百分比 未及格学生所在百分比
345分 80分 80% 20%
***********************************************************
/*
当用户输入4 添加班级 控制台提示请输入班级名称,用户输入班级名称后,程序保存到后台,最好能保存到文件中,下次启动程序直接去读取使用,不用每次都输入。 当用户输入5 添加课程 控制台提示请输入课程名称,用户输入课程名称后,程序保存到后台,最好能保存到文件中,下次启动程序直接去读取使用,不用每次都输入。 以上不管是添加班级还是添加课程,程序都要判断用户输入的有没有重复的,比如第一次输入的是计算机班,第二次如果在输入计算机班的话就是重复的,控制台提示当天班级已经存在,请重新输入
*/

以老师的身份进去系统,控制台打印如下:(注:老师只能看见他班级下面的学生,下面所有的菜单均是,比如按性别查看,也是看的他班级下面的)

	1、查看所有学生
2、按性别查看学生(选择2之后输入男或者女进行查看)
3、查看成绩大于_分的学生(这里输入具体数字,输入后把大于多少分的匹配出来)
4、查看成绩小于_分的学生(同上)
5、查看成绩等于_分的学生(同上)
6、查看具体学生的信息(提示输入学生的姓名和ID,防止有重名同学)
7、查看学生的平均成绩
8、按成绩降序查看所有学生
9、按成绩升序查看所有学生
10、显示成绩综合信息 (这里统计的信息和管理员端一样,只不过是统计本班级下面的,用户可以选择导出,和学生端查看成绩的情况一样,具体看学生端这块)
=========================================
11、注册老师帐号 //当用户选择11的时候控制台如下:
请输入您的姓名:
请输入您的密码:
请输入您的性别:
请输入您的年龄:
请选择您的课程:
请选择您的班级:
/*
这里注意,课程由管理员端添加,当用户输入完年龄后,系统自动列出管理员添加的课程,用户可以
输入现有的课程,程序接收到后进行判断用户输入的课程名字是否存在,如果存在的话就添加成功。
选择班级也一样 老师类里边有一个id,继承自person类,系统判断目前有多少个老师,自动生成老师总个数+1的序号设置上去 */ 12、修改老师信息 //当用户输入12后,控制台显示子菜单如下:
1、修改年龄
2、修改性别
3、修改密码(如果选择3,请提示用户输入原密码)
注:用户的信息最好存储到文件,避免程序启动每次添加

以学生的身份进入系统,当用户输入3之后

以学生的身份进入系统后控制台打印如下菜单:
1、查看本班所有学生
2、按性别查看本班学生(提示用户输入男或者女)
3、查找本班学生(输入学生的姓名)
4、按课程查看(有的学生是同班不同课程,当输入4的时候系统自动查询管理员添加的所有的课程,列出来)
5、查看所在班的老师信息(打印所在班级的老师) //用户输入5后打印如下信息
老师姓名 性别 年龄 所在班级 所授课课程
张丽丽 女 12 1班 计算机 6、注册/修改学生帐号
*********************************************
//当用户输入6之后,控制台显示如下菜单
1、注册学生帐号 //当用户输入1之后,控制台打印如下信息
请输入您的姓名:
请输入您的密码:
请输入您的年龄:
请输入您的性别:
请输入您的综合成绩:
请输选择您的课程:(系统自动列出管理员添加的所有课程,用户输入后,判断是不是存在的)
请选择您的班级:(系统自动列出管理员添加的所有班级,用户输入后,判断是不是存在的) //学生类里边有个id,继承自Person,类的id系统自动判断当前班级有多个人,根据人数+1生成
2、修改学生信息 //用户输入2的情况下,控制台打印以下子菜单
1、修改年龄
2、修改性别
3、修改班级(系统自动列出,同上)
4、修改课程(系统自动列出,同上)
5、修改密码(如果选择5,请提示用户输入原密码)
注:用户的信息最好存储到文件,避免程序启动每次添加
3、注销学生 (删除学生)
*********************************************
7、查看本班成绩情况 //当用户输入7以后,控制台显示如下:
本班总成绩 本班平均成绩 及格学生所在比例 未及格学生所在比例
345 89 70% 60%
100~80分人数 80~60分人数 60~40分人数 40分以下人数
6 8 8 1
======= 导出当前结果请输入 p ,把当前的结果保存到记事本,文件路径为当前的类路径,同包下,记事本标题为:A班学生成绩.txt ========

常用工具菜单

当用户输入4之后,进入常用工具菜单,(此菜单主要包含了学生对javase的理解和综合使用)

 输入4之后,控制台打印如下:
1、计算质数(请输入一个数,计算后该数以内有多少个质数,在控制台打印来一共有多少个,分别是什么)
2、查看电脑信息
//当用户输入2后,在控制台打印
当前电脑磁盘空间总共有:400G
当前电脑内存空间总共有:8G
当前电脑系统的版本是:xxxx
当前电脑共有磁盘:4个,分别是 C盘、D盘、E盘、F盘
。。。。其他信息同学们自己收集,越详细越好
3、查看目录
//当用户输入3之后,在控制台打印出来当前目录下面所有的文件名,比如用户输入的是C盘,以下是我电脑C盘的信息。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/2/12 14:02 360安全浏览器下载
d----- 2019/1/10 7:50 AppData
d----- 2019/1/29 13:10 downloads
d----- 2018/9/14 19:07 DRMsoft
d----- 2018/1/19 20:06 EFI
d----- 2019/2/3 20:09 FFOutput
d----- 2018/11/26 14:37 gofile
d----- 2018/11/17 12:32 golog
d----- 2018/1/19 21:24 Intel
d----- 2019/2/12 13:42 KuGou
d----- 2019/2/3 21:20 LDSGameMaster
d----- 2018/8/1 19:52 logs
d----- 2018/6/9 8:36 lpwz
d----- 2018/10/6 10:17 MinGW
d----- 2018/1/19 21:28 NVIDIA
d----- 2018/4/12 7:38 PerfLogs
d-r--- 2019/4/13 14:14 Program Files
d-r--- 2019/4/9 16:25 Program Files (x86)
d----- 2019/1/18 18:05 QMLogEx
d----- 2019/2/1 21:24 temp
d----- 2018/12/16 20:03 tourism
d-r--- 2018/10/3 18:04 Users
d----- 2019/4/19 21:45 Windows
d----- 2018/2/11 22:43 Windows10Upgrade
-a---- 2019/4/11 9:03 24568651 aow_drv.log
-a---- 2007/11/7 8:00 17734 eula.1028.txt
-a---- 2007/11/7 8:00 17734 eula.1031.txt
-a---- 2007/11/7 8:00 5686 vcredist.bmp
-a---- 2007/11/7 8:09 1442522 VC_RED.cab
-a---- 2007/11/7 8:12 232960 VC_RED.MSI 4、压缩文件 //当用户输入4的时候,提示用户输入文件路径,用户把文件路径输入后判断这个路径是不是目录,如果是目录的话压缩这个目录里边所有的文件,如果是文件,压缩单独一个文件,压缩后的文件放在原目录同级目录下 5、播放音乐 //当用户输入5的时候,系统按照序号把电脑的的上的mp3检索出来,显示前10个,用户输入对应的序号后播放对应的,这里启用多线程进行播放,用户输入2后,开启一个线程去播放序号为2的音乐,用户输入3后,结束原来播放2的线程,重新开启一个线程去播放序号为3的音乐 6、Socket通信相关(选做题) //当用户输入6的时候,控制台显示菜单如下:
1、开启一个服务端
2、给服务端发送一个消息,服务器接收到后原样返回
7、从网上下载一个首歌 //当用户输入7后,控制台提示用户输入一个有效的mp3网址,用户输入后程序去把这个mp3下载下来放到同包目录下面,下载完成后提示下载完成,是否播放,选是进行播放 8、读取文件显示到控制台 //当用户输入8之后,程序要求输入一个txt文本的路径,判断路径是不是存在的,如果存在,就把内容读出来打印到控制台,如果不存在,提示不存在,请重新输入。 9、常用效验 //当用户输入9之后,控制台显示子菜单为:
1、效验电话号码
2、效验邮箱
3、效验密码强度
4、效验是否为字母
5、效验是否为数字
6、效验是否为中文 10、打开文件 //当用户输入10之后,在控制台输入一个路径,系统检测路径是否存在有效,如果有效,调用bat命令打开文件。

以上为JavaSE阶段结业综合项目。项目为初始版本。

几点要求

  • 以上控制台所显示的子菜单后面都加一个n1和nn的选项,n1退回上一级,nn退回到顶层
  • 所有在控制台输入的数据都要进行效验,比如说成绩,如果输入的是a12,或者,,,之类的,控制台提示,您输入的数据类型错误,应该输入整型的,例如 24,98等
  • 保证程序的健壮性,用户无论怎么玩,程序进程都不会退出,除非是手动退出
  • 以上项目都是比较基础的,但是逻辑能力稍强,完成的代码量稍大,所以一步一步来,不要急于求成
  • 对可用性强的代码进行单独封装,多次调用的原则
  • 针对以上项目具体的实现思路学员自己完成,思路想好后先把实现思路发给老师,老师看看是否可行。
  • 在完成的过程中要求每个方法和每行代码都有相关的注释
  • 控制台打印相关信息布局要求美观,简单,一目了然。
  • 尽可能用已经学到的知识点去实现和编码,活学活用

以上就是整个项目的流程,此项目并不难,但是逻辑稍微有点绕,但是我相信大家只要愿意思考,对你们来说都不是问题,问题是你们不去思考。天行健,君子以自强不息。

有问题可以在下面留言,技术问题可以私聊我。

JavaSE综合项目演练的更多相关文章

  1. java设计模式综合项目实战视频教程

    java设计模式综合项目实战视频教程 视频课程目录如下: 第01节课:本课程整体内容介绍:X-gen系统概况,包括:引入.X-gen项目背景.X-gen的HelloWorld第02节课:X-gen整体 ...

  2. 15套java架构师大型分布式综合项目实战、千万高并发-视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  3. Java基础学习笔记二十八 管家婆综合项目

    本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...

  4. 项目:《ssh框架综合项目开发视频》-视频目录和第六天的EasyUI简单讲解

    4 练习使用技术: Struts2 + hibernate5.x + spring4.x + mysql数据库 1 crm:customer relational manager,客户关系管理 2 c ...

  5. C# WebApi+Task+WebSocket实战项目演练(四)

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第四部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...

  6. C#网络编程技术微软Socket实战项目演练(三)

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第三部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...

  7. ASP.NET WebAPI数据传输安全HTTPS实战项目演练

    一.课程介绍 HTTPS是互联网 Web 大势所趋,各大网站都已陆续部署了 HTTPS .  全站HTTPS时代,加密用户与网站间的交互访问,在客户端浏览器和Web服务器之间建立安全加密通道,一般情况 ...

  8. C# RabbitMQ优先级队列实战项目演练

    一.需求背景 当用户在商城上进行下单支付,针对客户等级的不同和订单金额的大小划分客户级别,需要优先处理给标识为大订单的客户发送一份订单邮件提醒.那么我们应用程序如何解决这样的需求场景呢?今天阿笨给大家 ...

  9. C#模板引擎NVelocity实战项目演练

    一.背景需求 很多人在做邮件模板.短信模板的时候,都是使用特殊标识的字符串进行占位,然后在后台代码中进行Replace字符串,如果遇到表格形式的内容,则需要在后台进行遍历数据集合,进行字符串的拼接,继 ...

随机推荐

  1. Codeforces Round #530 (Div. 2) (前三题题解)

    总评 今天是个上分的好日子,可惜12:30修仙场并没有打... A. Snowball(小模拟) 我上来还以为直接能O(1)算出来没想到还能小于等于0的时候变成0,那么只能小模拟了.从最高的地方进行高 ...

  2. 【IDEA】【Git】pull代码始终无法pull到最新的代码或者提示pull no items 【解决方式】

    最近pull代码老是提示pull no items,但是本地并不是最新的代码,看了各种博客始终无法解决,最后靠自己的方式解决.下面是解决方法. 方法:1.首先git --> repository ...

  3. Python学习:ModuleNotFoundError: No module named 'pygal.i18n' 的解决方法

    最近在学<Python编程:从入门到实践>,16.2小结中 from pygal.i18n import COUNTRIES 获取两个字母的国别码,我用的pygal的版本是2.4.0(终端 ...

  4. oc门的设计思路

    oc门,又称集电极开路门,Open Collector. mc1413bd就是这样一款oc门,在网上听说又叫uln2003a. 1.其符号是: 2.内部的组成就是NPN型的达林顿管 用非门的意思,我的 ...

  5. ceph 简介

    Ceph 存储集群 数据的存储 伸缩性和高可用性 CRUSH 简介 集群运行图 高可用监视器 高可用性认证 智能程序支撑超大规模 动态集群管理 关于存储池 PG 映射到 OSD 计算 PG ID 互联 ...

  6. Introduction to TensorFlow

    Lecture note 1: Introduction to TensorFlow Why TensorFlow TensorFlow was originally created by resea ...

  7. 转载 - JSONObject简介

    出处: http://www.cnblogs.com/java-pan/archive/2012/04/07/JSONObject.html JSONObject简介   本节摘要:之前对JSON做了 ...

  8. [K/3Cloud]有关单据显示行数限制和数据导出的建议

    1.针对显示行数限制: 模仿现在很流行的"查看更多"的模式,动态加载数据. 我相信这一点建议别人也提过,还请总部对此开展头脑风暴,因为在实际使用中客户总是不理解为何要限制行数,解释 ...

  9. 生产(production)

    [题目描述] 工厂为了生产一种复杂的产品,给各个生产部门制定了详细的生产计划.那么,就经常会有生产部门要把产品送到另一个生产部门作为原料.这是一个注重产品质量的工厂,所以每当有产品要从A部门运到B部门 ...

  10. Ubuntu 16.04禁用来宾账号(Guest User)

    1.打开50-ubuntu.conf sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 2.在最后加入 allow-guest=fal ...