光陰似箭日月如梭,大家學習已經有了一段時間了,轉眼間,從剛開始如何配置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后,控制台提示
請輸入帳號:
請輸入密碼:
用戶輸入后后台程序進行驗證,如果成功。就進行下一步操作。
下面我們來看管理員對應的操作有:(也就是輸入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等
- 保證程序的健壯性,用戶無論怎么玩,程序進程都不會退出,除非是手動退出
- 以上項目都是比較基礎的,但是邏輯能力稍強,完成的代碼量稍大,所以一步一步來,不要急於求成
- 對可用性強的代碼進行單獨封裝,多次調用的原則
- 針對以上項目具體的實現思路學員自己完成,思路想好后先把實現思路發給老師,老師看看是否可行。
- 在完成的過程中要求每個方法和每行代碼都有相關的注釋
- 控制台打印相關信息布局要求美觀,簡單,一目了然。
- 盡可能用已經學到的知識點去實現和編碼,活學活用
以上就是整個項目的流程,此項目並不難,但是邏輯稍微有點繞,但是我相信大家只要願意思考,對你們來說都不是問題,問題是你們不去思考。天行健,君子以自強不息。
有問題可以在下面留言,技術問題可以私聊我。