光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置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. 53.doc value机制内核级原理深入探秘

    主要知识点: doc value的原理 doc value性能优化     一.doc value原理     1. 生成时间:index-time生成     PUT/POST的时候,就会生成doc ...

  2. CCF201612-2 工资计算 java(100分)

    试题编号: 201612-2 试题名称: 工资计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资.假 ...

  3. CTSC2018 Day2T1 Juice混合果汁

    [题解] 在考场上A掉的题. 把美味度排个序,然后按照价格p为权值建立主席树,把每个果汁按照拍好的顺序添加进去.主席树上维护总升数cnt以及总价格sum.对于每个询问,我们二分一个美味值,check的 ...

  4. Shiro_DelegatingFilterProxy

    1.DelegatingFilterProxy实际上是Filter的一个代理对象.默认情况下,Spring会到IOC容器中查找与<filter-name>对应的filter bean.也可 ...

  5. 【Codeforces 493D】Vasya and Chess

    [链接] 我是链接,点我呀:) [题意] [题解] 会发现两个皇后之间如果只有奇数个位置 也就是n%2==1 那么第二个人总是赢的 因为如果white往下跑的话,black也能往下跑. 第二个人没有输 ...

  6. noip模拟赛 洗衣

    分析:好神的一道题啊.对每棵树建个图跑一下floyd可以有40分,想要打出正解就得对树有比较深的认识了. 每次新生成一棵树都是由两棵树i,j拼成的,答案为原来两棵树的答案和+i中每个点到j中每个点的距 ...

  7. poj 2420 模拟退火法基础

    /* 题意:给n个电脑,求一个点到这n个电脑的距离和最小. 模拟退火法:和poj1379的方法类似 因为坐标范围是0-10000 不妨把它看成是10000*10000的正方形来做 */ #includ ...

  8. 关于${ctx}拿不到值的问题

    当项目开发时我们喜欢用 <c:set var="ctx" value="${pageContext.request.contextPath}"/>来 ...

  9. 校长的收藏(洛谷 U4534)

    题目背景 XS中学的校长喜欢收集手办,家里面都是价值不菲的手办. 校长喜欢给手办们排队并且对于某些些区间内的手办喜爱有加. 现在,校长外出散步(找乐子),你潜入他的房间打算借(偷走)他的手办炫耀一下. ...

  10. Mutual Training for Wannafly Union #6

    A =w= B QvQ C 题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c& ...