JavaSE综合项目演练

JavaSE综合项目演练光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置JDK已经到了现在快学完网络编程了。学了这么多,眼看就要进入下一个阶段了,数据库编程了,那么在进入下个阶段前,我们来完成一个综合性比较强的结业项目,告别JavaSE阶段,学完JavaSE,大家已经对编程这块相信已经有了一个很深的理解,但是仅仅是JavaSE还是不够的,我们还需要学习更多的,更全面知识才足以在接下来的生活中过五关斩…

大家好,又见面了,我是你们的朋友全栈君。

光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置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等
  • 保证程序的健壮性,用户无论怎么玩,程序进程都不会退出,除非是手动退出
  • 以上项目都是比较基础的,但是逻辑能力稍强,完成的代码量稍大,所以一步一步来,不要急于求成
  • 对可用性强的代码进行单独封装,多次调用的原则
  • 针对以上项目具体的实现思路学员自己完成,思路想好后先把实现思路发给老师,老师看看是否可行。
  • 在完成的过程中要求每个方法和每行代码都有相关的注释
  • 控制台打印相关信息布局要求美观,简单,一目了然。
  • 尽可能用已经学到的知识点去实现和编码,活学活用

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133197.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • gcc命令和make命令[通俗易懂]

    gcc命令和make命令[通俗易懂]针对gcc,新建一个c语言文件:3.常用的有两个命令:-o将main.c预处理、编译、汇编并链接形成可执行文件main。-o选项用来指定输出文件的文件名。-S把.c文件编译成汇编文件.s查看汇编文件:其他还有把.s文件输出为.o文件的命令-c把.o文件链接为可执行文件的命令也是-o…

    2022年10月11日
  • 漏斗模型和路径分析的区别_漏斗转化模型

    漏斗模型和路径分析的区别_漏斗转化模型在互联网数据化运营实践中,有一类数据分析应用是互联网行业所独有的,那就是漏斗模型和路径分析的应用漏斗模型通常是对用户在网页浏览中一些关键节点的转化程度所进行的描述,比如从浏览到实际购买产品都需要经历三个步骤:浏览商品、将商品加入到购物车、将购物车的东西提交到订单,直到订单完成在线支付,上面的三个步骤走下来,买家人数越来越少,这个过程就是漏斗模型,漏斗模型的主要分析目的是针对网站运营过程中的各个关键…

  • torchvision 安装出现错误[通俗易懂]

    torchvision 安装出现错误[通俗易懂](base)C:\Users\pxsj_admin>pipinstalltorchvisionCollectingtorchvisionUsingcachedhttps://files.pythonhosted.org/packages/fb/01/03fd7e503c16b3dc262483e5555ad40974ab5da8b9879e164b56c1f4ef6f/tor…

  • 简单易学的机器学习算法——梯度提升决策树GBDT「建议收藏」

    简单易学的机器学习算法——梯度提升决策树GBDT「建议收藏」梯度提升决策树(GradientBoostingDecisionTree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越表现,有很多人对GBDT算法进行了开源代码的开发,比较火的是陈天奇的XGBoost和微软的LightGBM。一、监督学习1、监督学习的主要任务监督学习是机器学习算法中重要的一种,对于监督学习,假设有mm…

    2022年10月12日
  • startService与bindService的区别「建议收藏」

    startService与bindService的区别「建议收藏」Android执行Service有两种方法,一种是startService,一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。1、生命周期上的区别执行startService时,Service会经历onCreate->onStartCommand。当执行stopService时,直接调用onDestroy方法。调用者如果没有stopService,Servi

  • 安卓ExpandableListView的详细使用教程(附代码解析过程)[通俗易懂]

    安卓ExpandableListView的详细使用教程(附代码解析过程)[通俗易懂]ExpandableListView又称可扩展的ListView,它可以实现点击父项展开子项的效果,本文实现了一个比较精美的ExpandableListView。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号