計(jì)算機(jī)專業(yè)初級課程設(shè)計(jì)說明書_第1頁
計(jì)算機(jī)專業(yè)初級課程設(shè)計(jì)說明書_第2頁
計(jì)算機(jī)專業(yè)初級課程設(shè)計(jì)說明書_第3頁
計(jì)算機(jī)專業(yè)初級課程設(shè)計(jì)說明書_第4頁
計(jì)算機(jī)專業(yè)初級課程設(shè)計(jì)說明書_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

設(shè)計(jì)1題目:模擬新浪微博用戶注冊

1、設(shè)計(jì)1目的

編寫一個(gè)模擬新浪微博用戶注冊的程序,要求使用集合實(shí)現(xiàn)假設(shè)當(dāng)用戶輸入用戶名、密碼、確

認(rèn)密碼、生日(輸入格式為yyyy-mnrdd為正確)、手機(jī)號碼(手機(jī)號長度為11位,并且以13、15、

17或18為開頭的手機(jī)號為正確)、郵箱(包含符號”為正確)信息之后,判斷信息輸入是否

正確,正確驗(yàn)證用戶是否為重復(fù)注冊,如果不是重復(fù)注冊則注冊成功。例如,用戶信息列表中已經(jīng)

存在用戶“張正”,當(dāng)“張正”再次注冊是,則輸出“注冊結(jié)果:用戶重復(fù)!”

運(yùn)行結(jié)果:

請輸入用戶名:劉梅

請輸入密碼:liumeil23

請重復(fù)密碼:liumeil23

出生日期:1991-03-26

手機(jī)號碼/p>

電子郵箱:liumei@

注冊結(jié)果:注冊成功!

(1)掌握集合存儲數(shù)據(jù)的流程。

(2)掌握集合分類。

2、設(shè)計(jì)1正文

2.1實(shí)驗(yàn)內(nèi)容

1)為了便于存儲用戶信息,需要?jiǎng)?chuàng)建一個(gè)用戶類、在類中重寫其中的HashCode()方法,令其

返回用戶名的哈希值,再重寫equals()方法,來比較對象的用戶名屬性是否相等。

2)有了用戶類后,還需要?jiǎng)?chuàng)建一個(gè)用戶注冊類來模擬注冊信息,該類中可以用HashSct集合來創(chuàng)

建一個(gè)數(shù)據(jù)列表,然后向列表中添加兩條初始用戶信息。

3)從控制臺獲取用戶填寫信息,可以通過Scanner類的nextLine()方法來實(shí)現(xiàn),獲取后,需

要對獲取的信息進(jìn)行校驗(yàn)。

4)校驗(yàn)信息可以單獨(dú)創(chuàng)建一個(gè)校驗(yàn)信息類,在類中實(shí)現(xiàn)檢驗(yàn)用戶輸入信息的方法。校驗(yàn)結(jié)束后,

如果校驗(yàn)結(jié)果錯(cuò)誤就直接返回錯(cuò)誤信息,這里可以聲明一個(gè)校驗(yàn)結(jié)果變量和一個(gè)校驗(yàn)狀態(tài)變量。

檢驗(yàn)結(jié)果變量用于存儲提示信息,校驗(yàn)狀態(tài)用于存儲結(jié)果的判斷標(biāo)識。

5)當(dāng)用戶的信息不滿足規(guī)定的格式,需要修改變量狀態(tài)進(jìn)行存儲錯(cuò)誤信息。

6)判斷校驗(yàn)狀態(tài),如果所有的信息都通過校驗(yàn),則將用戶信息創(chuàng)建成為用戶對象,通過洛對象添

加到用戶列表返回結(jié)果來判斷用戶名是否重復(fù),并紀(jì)錄下返回結(jié)果信息。

2.2實(shí)驗(yàn)分析

類的建立:

User:用戶實(shí)體類

UserRegister:用戶操作注冊類

CheckInfo:用戶信息驗(yàn)證類

1)創(chuàng)建用戶類,并重寫其hashCode()和equals。方法。重寫了hashCode方法,使其返

回username屬性的哈希值,重寫equals。方法用于比較對象username屬性是否相等,并

返回結(jié)果。

2)創(chuàng)建用戶注冊類,模擬注冊信息。在程序運(yùn)行main。方法之后,首先執(zhí)行initDataO

方法,創(chuàng)建“張正”和“周琦”兩位用戶,并將其放入用戶數(shù)據(jù)列表,獲取輸入信息并將其

傳入Checkinfo類的checkAclionO方法對輸入信息進(jìn)行校驗(yàn)。最后將結(jié)果輸出。

3)在主程序調(diào)用此類中的checkActionO方法后,會校驗(yàn)用戶填寫信息,所有校驗(yàn)通過

后,將信息創(chuàng)建成User對象,判斷用戶名的哈希值是否相等,相等則添加失敗,反之則成

功,返回結(jié)果。

顯示集合中用

戶信息

注冊結(jié)果:用

戶重曼!

LI-新浪微博注冊流程圖

HashSet

1.2-通過使用HashSet集合的方法來進(jìn)判斷對象是否相同

Problems'JavadocJDeclaration□Console23

<terminated>UserRegister(1)[JavaApplication]D:\Java\bin\javaw.exe(2021攵

-----------當(dāng)前集合中用戶猾息-----------

[用戶信息:

姓名:張正

生日:TueJun0115:18:21GMT+08:002021

郵箱:zhangzheng@itcast.cn

手機(jī)號/p>

用戶密碼:zz,123,用戶信息:

姓名:周琦

生日:TueJun0115:18:21GMT+08:002021

郵箱:zhouqi@itcast.cn

手機(jī)號:186181211機(jī)

用戶密碼:zq,123]

請輸入用戶名:白楓

請輸入密碼:123456

請重復(fù)密碼:123456

出生日期:2001-06-24

手機(jī)號碼:二552641241

電子郵箱:baifeng@

注冊結(jié)果:注冊成功!

------------當(dāng)前集合中用戶信息------------

[用戶信息:

姓名:白楓

生日:SunJun2400:00:00GMT+08:002001

郵箱:baifeng@qq.com

手機(jī)號/p>

用戶密碼:123456,用戶信息:

姓名:張正

生日:TueJun0115:18:21GMT+08:002021

郵箱:zhangzheng@itcast.cn

手機(jī)號/p>

用戶密碼:zz,123,用戶信息:

姓名:周琦

生日:TueJun0115:18:21GMT+08:002021

郵箱:zhouai@itcast.cn

L4-新浪微博用戶注冊成功結(jié)果

3、設(shè)計(jì)1總結(jié)

做了哪些工作:用戶類中重寫了hashCodeO方法以及equals。方法,用來返回用戶名的哈希值以

及比較用戶屬性是否相等,其中還需注意將對象強(qiáng)轉(zhuǎn)為User類型,用戶注冊類中,用HashSet集

合創(chuàng)建數(shù)據(jù)列表并添加用戶信息,是一個(gè)靜態(tài)方法,獲取從鍵盤上輸入的用戶信息需要通過Scanner

類中的nextLineO方法來實(shí)現(xiàn),檢驗(yàn)用戶信息時(shí),主程序調(diào)用checkAction方法,單獨(dú)創(chuàng)建檢驗(yàn)

信息類,在類中實(shí)現(xiàn)校驗(yàn)用戶信息的方法。

工作中的不足:對hashCode與equals方法的使用不大熟悉。

學(xué)習(xí)到了equals和hashCode的用法。在重寫equals。方法時(shí),遇到很大的困難,翻了書看了教

學(xué)視頻都沒有詳細(xì)的解釋為何在重寫方法時(shí)要強(qiáng)制轉(zhuǎn)型,找到了幾篇大概像個(gè)合理的解釋。

在Java的繼承中,子類可以轉(zhuǎn)換成父類,在此過程中會丟失一些屬性,不需要進(jìn)行強(qiáng)制類型的

轉(zhuǎn)換。但父類轉(zhuǎn)成子類就不行了,必須進(jìn)行類型的強(qiáng)轉(zhuǎn)。

重寫equals。方法需要傳入object對象,obj對象是子類對象自動(dòng)向上轉(zhuǎn)型而來,在第三次

if判斷后,進(jìn)行第四次if判斷時(shí),需要比較子類對象的屬性,所以需要進(jìn)行類型的強(qiáng)轉(zhuǎn)。

當(dāng)使用類型構(gòu)造器構(gòu)造處一人時(shí)象的容器時(shí),這個(gè)對象的類型是確定的,例如項(xiàng)目中使用result

作為容器,將校驗(yàn)信息放入result當(dāng)中。但是result輸出需要調(diào)用toString函數(shù)。所以,在

繼承中,子類可以自動(dòng)轉(zhuǎn)型成父類,但父類強(qiáng)制轉(zhuǎn)換為子類時(shí)只有當(dāng)引用類型真正為子類時(shí)才會

強(qiáng)制轉(zhuǎn)換成功,否則失敗。

設(shè)計(jì)2題目:模擬物流快遞系統(tǒng)

1、設(shè)計(jì)2目的(各級題目粗體,宋體,五號,1.5行倍距,下同)

網(wǎng)購已成為人們生活的重要組成部分,當(dāng)人們在購物網(wǎng)站中下訂單后,訂單中的貨物就會在經(jīng)

過一系列的流程后,送到客戶的手中。而在送貨期間,物流管理人員可以在系統(tǒng)中查看所有物品的

物流信息。編寫一個(gè)模擬物流快遞系統(tǒng)的程序,模擬后臺系統(tǒng)處理貨物的過程。

運(yùn)行結(jié)果

Run:Ta$kO2Test。一

I?H"C:\ProgramFiles\Java\jdkl.8.0_201\bin\java.exen...

訂單開始處理,倉庫驗(yàn)貨中。。。

貨物重量:76.34kg

K二貨物檢驗(yàn)完畢!

?i貨物填裝完畢!

運(yùn)貨人已通知!

快遞單號:HYX600235

運(yùn)貨人小韓正在駕駛編號為Z025的大奔發(fā)送貨物!

運(yùn)輸進(jìn)行中。。。

貨物當(dāng)前的坐標(biāo)為:193,485

貨物運(yùn)輸任務(wù)已完成!

運(yùn)貨人小韓所駕駛的編號為Z025的大奔已歸還!

貨物運(yùn)輸車輛保養(yǎng)完畢!

Proccosfinishedwithexitcode0

(1)學(xué)會分析“模擬物流快遞系統(tǒng)程序設(shè)計(jì)”任務(wù)實(shí)現(xiàn)的邏輯思路。

(2)能夠獨(dú)立完成“模擬物流快遞系統(tǒng)程序設(shè)計(jì)”的源代碼編寫、編譯及運(yùn)行。

(3)掌握面向?qū)ο蠓庋b、繼承和多態(tài)的概念和使用。

(4)掌握抽象類和接口的使用。

2、設(shè)計(jì)2正文

2.1實(shí)驗(yàn)內(nèi)容

1)運(yùn)輸貨物首先需要有交通工具,所以需要定義一個(gè)交通工具類。由于交通工具可能有很多,所

以可以將該交通工具類定義成一個(gè)抽象類,類中需要包含該交通工具的編號、型號以及運(yùn)貨負(fù)責(zé)人

等屬性,還需要定義一個(gè)抽象的運(yùn)輸方法。

2)當(dāng)運(yùn)輸完成后,需要對交通工具進(jìn)行保養(yǎng),所以需要定義保養(yǎng)接口,具備交通工具的保養(yǎng)功能。

3)交通工具可能有很多種,這里可以定義一個(gè)專用運(yùn)輸車類,該類需要繼承交通工具類,并實(shí)現(xiàn)

保養(yǎng)接口

4)有了運(yùn)輸?shù)慕煌üぞ吆?,就可以開始運(yùn)送貨物了。貨物在運(yùn)輸前、運(yùn)輸時(shí)和運(yùn)輸后,都需要檢

查和記錄,并且每一個(gè)快遞都有快遞單號,這時(shí)可以定義一個(gè)快遞任務(wù)類,包含快遞單號和貨物重

量的屬性,以及貨物發(fā)送前、發(fā)送途中和送到后的方法。

5)在貨物運(yùn)輸過程中,需要對運(yùn)輸車輛定位,以便隨時(shí)跟蹤貨物的位置信息。定位功能可以使用

GPS,而考慮到能夠?qū)崿F(xiàn)定位功能的設(shè)備可能很多(如手機(jī)、專用定位儀器等),這時(shí)可以定義一個(gè)

包含定位功能的GPS接口,以及實(shí)現(xiàn)了該接口的儀器類(如Phone等)。

2.2實(shí)驗(yàn)分析

1)定義交通工具類Transportation類,該類是一個(gè)抽象類,包含交通工具信息和運(yùn)輸貨物方法。

分別定義了車輛編號、車輛型號和車輛負(fù)責(zé)人的屬性,以及其其各自的getter和setter方法,同

時(shí)還定義了一個(gè)抽象的運(yùn)輸方法transport()。

2)定義交通工具保養(yǎng)接口Careable,該接口中包含車輛保養(yǎng)方法。

3)定義專用運(yùn)輸車類Zlransportation,該類繼承了交通工具類,并實(shí)現(xiàn)了保養(yǎng)接口,進(jìn)行了有

參構(gòu)造函數(shù)和無參構(gòu)造函數(shù)的定義。定義快遞任務(wù)類SendTask,該類實(shí)現(xiàn)了送前,發(fā)送貨物和送后

操作的輸出。

4)定義包含顯示位置的GPS接口和實(shí)現(xiàn)類Phone

5)定義測試類,實(shí)例化對象并傳入數(shù)據(jù),測試結(jié)果。

2.1-物流快遞系統(tǒng)流程圖

2.3實(shí)驗(yàn)結(jié)果與測試

訂單開始處理,倉庫驗(yàn)貨中。。。

貨物重量:76.34kg

貨物檢驗(yàn)完畢!

貨物填裝完畢!

運(yùn)貨人已通知!

快遞單號:HYX600235

昌貨人小韓正在駕駛編號為Z025的大奔發(fā)送貨物

輸中°°°°

貨物當(dāng)前的坐標(biāo)為:193,485

貨物運(yùn)輸任務(wù)已完成!

運(yùn)貨人小韓所駕駛的編號為Z025的大奔已歸還!

貨物運(yùn)輸車輛保養(yǎng)完畢!

2.2-模擬物流快遞系統(tǒng)成功盂行結(jié)果

3、設(shè)計(jì)2總結(jié)

做了哪些工作:模擬物流快遞系統(tǒng)程序設(shè)計(jì)項(xiàng)目要先分析人物實(shí)現(xiàn)的邏輯思路,其中用到了封裝,

繼承和多態(tài)的基本思想,類的繼承是在現(xiàn)有類的基礎(chǔ)上構(gòu)建一個(gè)新的類,子類會擁有父類的所有可

繼承的屬性和方法,需要使用extends關(guān)鍵字來實(shí)現(xiàn)。類只支持單繼承,不允許多重繼承,多個(gè)類

可以繼承一個(gè)父類,一個(gè)類的父類可以再去繼承另外的父類,一個(gè)類是某個(gè)匪類的同時(shí)也可以是另

一個(gè)類的子類。

還需掌握抽象類和接口的使月,抽象類不一定有抽象方法,不能實(shí)例化對象,抽象方法必須使用

abslracl關(guān)鍵字來修飾,定義抽象類時(shí),包含抽象方法的類必須聲明為抽象類。接口使用interface

關(guān)鍵字來聲明,接口不能實(shí)例化對象,一個(gè)接口可以有多個(gè)父接口,使用implements關(guān)健字實(shí)現(xiàn)

接口中的所有方法,,一個(gè)類可以在繼承另?個(gè)類的同時(shí)實(shí)現(xiàn)多個(gè)接口,接口中只有抽象方法和常

量。

工作中的不足:對接口和抽象類的有了進(jìn)一步的了解。

學(xué)到了什么:程序中用到了兩個(gè)接口分別是Careable、GPS,因?yàn)榻涌诘膯卫^承問題所以選擇了接

口方法。其中Careable抽象類是用來捕捉子類的通用特性的,而接口則是抽象方法的集合;抽象

類不能被實(shí)例化,只能被用做子類的超類,是被用來創(chuàng)建繼承層級里子類的模板。而接口只是一種

形式,接口自身不能做任何事。

抽象類的子類用extends關(guān)鋌字來繼承抽象類,如果子類不是抽象類,需要提供抽象類中的所有聲

明方法來實(shí)現(xiàn)。接口完全是抽象的,子類使用關(guān)鍵字implements來實(shí)現(xiàn)接口,它需要提供接口中

所有聲明方法的實(shí)現(xiàn)。

設(shè)計(jì)3題目:商城進(jìn)貨交易記錄

1、設(shè)計(jì)3目的

每個(gè)商城都需要進(jìn)貨,而這些進(jìn)貨記錄整理起來很不方便,要求編寫一個(gè)記錄商城進(jìn)貨交

易的程序,使用字節(jié)流將商城的進(jìn)貨信息記錄在本地的CSV文件中,要求:當(dāng)用戶輸入商品編

號時(shí),后臺會根據(jù)商品編號查詢到相應(yīng)商品信息,并打印商品信息。接著讓用戶輸入需要進(jìn)貨

的商品數(shù)量.程序?qū)⒃械睦Т鍞?shù)量弓愉入的數(shù)量想加,將想加后的結(jié)果信息保存在木地的

csv中。在csv中,每條記錄中包含商品編號、商品名稱、購買數(shù)量、單價(jià)、總價(jià)、審核人等

數(shù)據(jù),每條記錄的數(shù)據(jù)之間直接用英文逗號或空格分隔:每條記錄之間用換行符分隔,文件命

名格式為“進(jìn)貨記錄”加上當(dāng)天日期加上“.csv”后綴,如“20210527.csv”.保存文件時(shí),

需判斷本地文件是否存在當(dāng)天的數(shù)據(jù),如果存在則追加,不存在在新建。

任務(wù)運(yùn)行結(jié)果如圖所示。

Run:耳RecordGoodOrder。一

c~進(jìn)貨記錄編號

■商品名稱:百事可樂

C_聯(lián)系人:張三

;單價(jià):4.5

庫存數(shù)量:100

二"進(jìn)貨記錄編號:1002

#商品名稱:可口可樂

聯(lián)系人:李四

單價(jià):4.0

庫存數(shù)量:100

進(jìn)貨記錄編號:1003

商品名稱:百事雪碧

聯(lián)系人:張三

單價(jià):3.8

庫存數(shù)量:100

請愉入商品編號

1001

當(dāng)前商品庫存信息進(jìn)貨記錄編號:1001

商品名稱:百事可樂

聯(lián)系人:張三

單價(jià):4.5

庫存數(shù)量:100

請輸入進(jìn)貨數(shù)量:300

請檢入商品編號

I1001

當(dāng)前商品庫存信息進(jìn)貨記錄編號:1001

商品名稱:百事可樂

聯(lián)系人:張三

I單價(jià):4.5

庫存數(shù)量:400

圖7-1運(yùn)行結(jié)果

運(yùn)行結(jié)束后在本地生成一個(gè)“進(jìn)貨記錄20191209.csv”文件,用Excel方式打開此文件,如

下圖所示。

因’H'B-|T進(jìn)fiHB?20191209.c$v-MicrosoftExcelo回S3

(1)學(xué)會分析〃商城進(jìn)貨交易記錄”程序的實(shí)現(xiàn)思路。

(2)根據(jù)思路獨(dú)立完成”商城進(jìn)貨交易記錄〃的源代碼編寫、編譯及運(yùn)行。

(3)掌握字節(jié)流操作本地文件的方法。

(4)掌樨ArrayList和StringBuffcr的便用,以及異常的處理

2、設(shè)計(jì)3正文

2.1實(shí)驗(yàn)內(nèi)容

1)為方便保存商店進(jìn)貨交易的相關(guān)消息,可以將商品信息封裝成一個(gè)實(shí)體類。商品售出過程中

可能會打印商品相關(guān)信息,所以需要對該實(shí)體類的“String。方法進(jìn)行重寫,使其能更清

晰地顯示商品信息。每次商品售出之后要修改庫存數(shù)量,還應(yīng)在實(shí)體類中編寫一個(gè)操作庫數(shù)

量的方法。

2)對于一個(gè)商店,首先要有一個(gè)貨架,貨架上會有許多商品供挑選。這里可以創(chuàng)建一個(gè)集合用

于模擬貨架,然后向集合中添加有具體商品信息的商品對象,此時(shí)貨架上面便有了商品。

3)用戶購買商品是通過在控制臺鍵盤輸入商品編號和購買數(shù)量的方式進(jìn)行的,如果商品編號正

確,且購買數(shù)量在庫存數(shù)量之內(nèi),則商品購買成功,并將此商品的銷售信息保存讀到csv文

件中,同時(shí)要將庫存數(shù)量減少。

4)查詢商品信息時(shí),可以通過Scanner類的nextlnt()方法從控制臺獲取商品編號,之后根

據(jù)這個(gè)編號到貨架上查詢這個(gè)商品的信息。如果杳到了商品的信息,從控制臺獲取購買的數(shù)

量之后,判斷庫存是否充足,如果充足則將此商品的所有信息進(jìn)行封裝。

5)將商品的銷售信息寫到csv文件之前,需先拼湊好csv文件名,再判斷本地是否已存在此

文件。這里可通過輸入流嘗試獲取此文件的字節(jié)流,如果獲取成功,則證明這個(gè)文件已存在,

那么就通過輸出流向文件末尾追加銷售信息;如果獲取失敗,即異常,說明之前并沒有生成

當(dāng)FI的銷售信息.需要新建此文件.

6)將封裝的信息寫入csv文件中時(shí),csv格式的文件以純文本形式存儲表格數(shù)據(jù),寫入文件

時(shí)可用Excel進(jìn)行編輯。

7)在拼湊csv文件名時(shí),需要獲取當(dāng)日的日期。這里可以通過以下代碼獲取并拼湊csv文件

名。

DateFormatformat=newSimpleDateFormat(^yyyyMMdd^);

Stringname="銷售記錄"+format.format(date)+A.csv”;

2.2實(shí)驗(yàn)分析

定義了一個(gè)Goods類,規(guī)定Goods類擁有的屬性:intid,Stringname,Stringpeople,doubIe

price,intnumber,doublemoney<,并定義了有參構(gòu)造方法,用于對象的創(chuàng)建與初始化,重寫了

toStringO方法,方便打印Goods類定義的某個(gè)實(shí)體的信息。

定義了一個(gè)方法:setNumberO用來修改Goods實(shí)體的number?!▽⑸唐沸畔⒎庋b成,個(gè)實(shí)體

定義RecordBooksOrdci'類來記錄和操作商品信息:創(chuàng)建一個(gè)ArrayList類型的集合作為商品

的貨架。在init()函數(shù)中初始化了貨架信息,向ArrayList中添加了3個(gè)商品的信息,并在

通過for循環(huán)進(jìn)行展示。使用while循環(huán)來獲取和處理用戶輸入信息,每次循環(huán)由從控制臺獲取

商品編號的數(shù)據(jù),再根據(jù)商品編號查詢到商品信息。當(dāng)獲得的商品不為空時(shí),可獲得購買的數(shù)量,

通過goodNumber<=stockGoods.number判斷庫存是否充足,如果庫存足夠,可通過第30行代碼將

所有數(shù)據(jù)封裝,再調(diào)用FileUtil類中的saveGoodO方法,將其保存到本地。最后再調(diào)用

setNumber()方法,修改庫存。

定義工具類FileUtil保存商品信息:當(dāng)saveGoodO方法被調(diào)用時(shí),獲取當(dāng)前日期并格式

化后,拼出了文件名,再嘗試獲取此文件的字節(jié)輸入流。當(dāng)能夠獲取輸入流時(shí),可通過處理異常,

先關(guān)閉輸入流,再在文件末尾追加信息。當(dāng)不能獲取輸入流時(shí)則拋出異常,在異常處理中調(diào)用

createFileO方法,可以通過此方法中的label參數(shù)來區(qū)分,是新建文件還是在已有文件中追

加內(nèi)容。如果label值是false則新建文件,并寫入表頭,其中進(jìn)行追加還是新操作,由構(gòu)造

函數(shù)的append參數(shù)來定義c然后拼出一行數(shù)據(jù),且在每次拼接之前都耍加上換行符“\r\n”,

每個(gè)字段之間通過“,”分歌字段,再代碼寫入文件。最后關(guān)閉輸入流。

+輸入商品編號

輸入商品信息

輸入進(jìn)貨數(shù)量

和編號

輸入庫存數(shù)量

3.1-商品進(jìn)貨交易流程圖

2.3實(shí)驗(yàn)結(jié)果與測試

RecordGoodsOrder[JavaApplication]D:\Java\bin\j.

商品編號:1001

商品名稱:百事可樂

聯(lián)系人:張三

商品單價(jià):4.5

進(jìn)貨數(shù)量:100

商品編號:1002

商品名稱:可口可樂

聯(lián)系人:李四

商品單價(jià):4.5

進(jìn)貨數(shù)量:100

商品編號:1003

商品名稱:樂事薯片

聯(lián)系人:王五

商品單價(jià):3.5

進(jìn)貨數(shù)量:100

請輸入商品編號:(如果退出請按0)

3.2-運(yùn)行界面

心又入里:xvu

請輸入商品編號:(如果退出請按0)一

當(dāng)前商品信息商品編號:1001

商品名稱:百事可樂

聯(lián)系人:張三

商品單價(jià):4.5

進(jìn)貨數(shù)量:100

請輸入進(jìn)貨數(shù)量:100

請輸入商品編號:(如果退出請按0)

當(dāng)前商品信息商品編號:1002

冏品名稱:可口可樂

聯(lián)系人:李四

商品單價(jià):4.5

進(jìn)貨數(shù)量,100

請輸入進(jìn)貨數(shù)量:50

請輸入商品編號:(如果退出請按0)一

當(dāng)前商品信息商品編號:1003

商品名稱:樂事薯片

聯(lián)系人:王五

商品單價(jià):3.5

進(jìn)貨數(shù)量:100

請輸入進(jìn)貨數(shù)量:40

請輸入商品編號:(如果退出請按0)

|商城進(jìn)貨交易記錄已關(guān)閉!

商品免號

AB|CF

商品編號商品名稱進(jìn)貨數(shù)量茴品單價(jià)總價(jià)人

45O三

百事可樂

10011004.5225四

1002504.5

1003樂事薯片4'

3.3.選購進(jìn)貨記錄

添加了退出程序功能,用到的函數(shù)語句有:if(goodsld==0)

exitO;

privatestaticvoidexit(){

System.out.printin("商城進(jìn)貨交易記錄已關(guān)閉!”);

System,cxif(0);

)

3、設(shè)計(jì)3總結(jié)

針對題目做了哪些工作:商坂進(jìn)貨交易記錄項(xiàng)目需要掌握ArrayList和StringBuffer的使用,以

及字節(jié)流操作文件的方法,ArrayList是List接口的一個(gè)實(shí)現(xiàn)類,在ArrayList內(nèi)部封裝了一個(gè)

長度可變的數(shù)組對象,當(dāng)存入的元素超過數(shù)組長度時(shí),ArrayList會在內(nèi)存中分配一個(gè)更大的數(shù)組

來存儲這些元素,所以ArrayList集合也可看做一個(gè)長度可變的數(shù)組。ArayList集合中大部分都

是從父類Collection和List繼承過來的。

StringBuffer類也稱字符串緩沖區(qū),為了方便對字符串進(jìn)行修改,它的內(nèi)容和長度都是可以改變

的,在其中添加或刪除字符時(shí),不會產(chǎn)生新的StringBuffer對象。Append。和insert()方法是最

常用的,用于添加字符,append。方法將字符添加到緩沖區(qū)的末尾,insert0方法可以在指定位置

添加字符,StringBuffer類沒有覆蓋Object類的equals。方法,StringBuffer類對象之間不能

用操作符"+”進(jìn)行連接。

總結(jié)工作不足:對于StringBuffer方法和輸入輸出流的掌握還不是很熟悉。

學(xué)到了什么:StringBuffer與String類不同,String類中的內(nèi)容一旦聲明之后不可改變,改變的

只是其內(nèi)存地址的指向,但是StringBuffer中的內(nèi)容是可以改變的。StringBuffer在本次項(xiàng)目中

使用append。方法,完成字符串的連接操作。

I/O流中針對字節(jié)的輸入輸出提供了一系列的流,成為字節(jié)流,分為字節(jié)輸入流和字節(jié)輸出流,字

節(jié)流的兩個(gè)頂級父類為InputStream和OulpulSlream,通過InpulStream從源設(shè)備輸入到程序,

通過Outputstream從程序輸出到目標(biāo)設(shè)備,實(shí)現(xiàn)數(shù)據(jù)的傳輸。10操作結(jié)束后,應(yīng)調(diào)用close。方

法關(guān)閉流從而釋放當(dāng)前10流所占的系統(tǒng)資源。針對文件的讀寫,有FilelnputStream和

FileOutputStream兩個(gè)類,用于讀取文件中的數(shù)據(jù)和把數(shù)據(jù)寫入文件。

設(shè)計(jì)4題目:微信投票

1、設(shè)計(jì)4目的

如今微信聊天已經(jīng)普及到幾乎每一個(gè)人,在聊天中,經(jīng)常會有人需要幫忙在某個(gè)APP中投票。

本案例要求編寫一個(gè)模擬微信投票的程序,通過在控制臺輸入指令,實(shí)現(xiàn)添加候選人、查看當(dāng)前投

票和投票的功能。每個(gè)功能的具體要求如下:

(1)用戶輸入指令1代表”添加候選人”,可以在本地文件中添加被選舉人。

(2)用戶輸入指令2代表”查看當(dāng)前投票”,將本地文件中的數(shù)據(jù)打印到控制臺。

(3)用戶輸入指令3代表“投票”功能,在控制臺輸入被投票人的名字進(jìn)行投票操作。

(4)用戶輸入指令4代表"退出”操作。

運(yùn)行結(jié)果

Run;vote*一

A個(gè)'C:\PrograMFiles\Java\jdkl.8.0_201\bin\Java.exe'...

1:添加候選人2:查看當(dāng)前投票3:投票1:退出

._話輸入操作指令:1

;請諭人需要被投票的人:

*:張三

.請輸入張三的起的票數(shù):

s■1

請愉人操作指令:2

?張三⑵

張三:1,

請洞入操作指令:3

請諭入要投票人的姓名

張三

投票后的票數(shù):

?張三:3,

投票后的票數(shù):

張三2

請輸入操作指令:2

?張三:3,

張三2

請輸入操作指令:/

您已退出系統(tǒng),謝謝使用!

Processfinishedwithexitcode0

運(yùn)行結(jié)果

運(yùn)行過程中,本地D:'下會生成一個(gè)count.txt文件,打開后如圖所示。

count.txt

【目標(biāo)】

(1)學(xué)會分析“投票小功能”任務(wù)實(shí)現(xiàn)的邏輯思路。

(2)能夠獨(dú)立完成“投票小功能”程序的源代碼編寫、編譯以及運(yùn)行。

(3)能夠利用字符流操作本地的方法。

(4)掌握StringBuffer和數(shù)組的使用。

2、設(shè)計(jì)4正文

2.1實(shí)驗(yàn)內(nèi)容

1)根據(jù)任務(wù)介紹和運(yùn)行結(jié)果分析可知,此任務(wù)需要?jiǎng)?chuàng)建一個(gè)記事本類,在類中可以使用while循

環(huán)實(shí)現(xiàn)控制臺中操作指令的多次輸入,使用swtich語句根據(jù)控制臺輸入的操作指令來判斷執(zhí)行什么

操作。

2)輸入指令1時(shí)進(jìn)行“添加候選人”操作??梢允褂脕肀4婵刂婆_中每次輸入的內(nèi)容,輸入內(nèi)容

時(shí)會涉及換行。這里可以使用while循環(huán)來循環(huán)輸入,每循環(huán)一次都將控制臺獲取的內(nèi)容拼接換行

符后,追加到文本內(nèi)容中。通過nextlni。來進(jìn)行輸入起始票數(shù)。

3)執(zhí)行指令2時(shí),可以打開指定路徑的文件,由于是模擬記事本程序,因此限定此功能只支持打

開ixt文件。此操作首先要獲取輸入的路徑,判斷此路徑的文件是否是岡文件,如果是則通過字符

流讀取此文件,然后將此文件的內(nèi)容打印至控制臺,并且暫存在全局變量中,將文件的路徑也保存

至全局變量中。

4)執(zhí)行指令3時(shí),進(jìn)行“投票”。輸入被投票人的姓名,通過s.setld(s.getld()+l)語句,讓被投票

人的票數(shù)加一。如果沒有輸入正確名字,則輸出“沒有找到您要投票的人!”;最后調(diào)用show函

數(shù),用for循環(huán)遍歷集合s。

5)執(zhí)行指令4直接退出系統(tǒng),可以通過“Syslem.eW(O);”實(shí)現(xiàn)。

2.2實(shí)驗(yàn)分析

為了方便存儲投票信息,首先需要?jiǎng)?chuàng)建一個(gè)候選人類,在類中定義帶參的構(gòu)造函數(shù),定義toString

()方法來確保投票信息的格式。有了候選人類,還需要?jiǎng)?chuàng)建一個(gè)實(shí)現(xiàn)目錄功能類,該類中可以創(chuàng)

建一個(gè)HashSel的List集合用以存儲投票信息,用輸出語句在控制臺上輸出一個(gè)目錄,用以用戶

的選擇,從控制臺獲取用戶填寫的信息,可以通過Scanner類的nexllnt()和nextLine()方法

來實(shí)現(xiàn),用while循環(huán)語句和switch方法來進(jìn)行目錄的循環(huán)使用和選擇,在使用投票功能時(shí),先

要?jiǎng)?chuàng)建selectO查找函數(shù),用迭代器的方法在哈希集合中查找,并在select()函數(shù)中用equal

()方法進(jìn)行輸入姓名和候選人姓名的比較,如果輸入姓名找不到相同的候選人姓名則在控制臺上

輸出錯(cuò)誤提示信息。最后要?jiǎng)?chuàng)建一個(gè)保存信息類,來進(jìn)行投票信息的保存,新建一個(gè)count,txt文

件用來保存文件,用trycatch進(jìn)行異常拋出,確保無誤后關(guān)閉輸出流。

2.3實(shí)驗(yàn)結(jié)果與測試

小紅:0

小黑:0

1:添加侯選人2:查看當(dāng)前投票3:投票4:退出

請輸入操作指令:

3.2-投票系統(tǒng)操作界面

小黑:0

小紅:0

1:添加候選人2:查看當(dāng)前投票3:投票4:退出

請輸入操作指令:

1

請輸入需要被投票的人姓名:

王琦

請輸入王琦起始票數(shù):

0

3.3-進(jìn)行“添加候選人”功能

當(dāng)前投票信息、:

小黑:0

小紅:0

王琦:0

1:添加候選人2:查看當(dāng)前投票3:投票4:退出

請輸入操作指令:

3.4-“查看當(dāng)前投票”

請輸入您想要投票人的名字:

王琦

"紅:0

王琦:1

小黑:0

球加候選人2:查看當(dāng)前投票3:投票4:退出

請輸入操作指令:

3.5-“投票功能

3、設(shè)計(jì)5總結(jié)

做了哪些工作:定義了File類,創(chuàng)建哈希表Student,實(shí)例化對象創(chuàng)建一個(gè)文本文件“count,txt”。

通過迭代器輸出,其中用到StringBuffer方法使用append追加字符,string以toString形式保

存票數(shù)和姓名。最終處理異常,關(guān)閉輸入流。

定義Student類,定義屬性name姓名和id票數(shù),重寫toString內(nèi)容,將信息按照名字++

票數(shù)形式輸出。主函數(shù)中調(diào)用init()初始化,并調(diào)用show,遍歷出各條信息。

定義Scanneer類進(jìn)行輸入,nextlnt()函數(shù)獲取輸入信息。通過switch語句判斷應(yīng)該執(zhí)行的操

作,如果輸入其他范圍內(nèi)的數(shù)字則輸出“請重新輸入正確的指令?。?!二在init()函數(shù)中加入

兩條初始記錄。其中利用迭代器在哈希集合中杳找姓名,利用強(qiáng)行轉(zhuǎn)換之后,如果要查找的姓名和

集合中搜尋到的名字相同則返回值Stdo

在in()函數(shù)中通過迭代器遍歷將數(shù)據(jù)寫入count.txt中,利用StringBuffor類中的append萬

法將信息拼接。寫入暫存的數(shù)據(jù)到string中,最后關(guān)閉輸出流。

遇到的問題:對字符流的用法和StringBuffer不是很熟悉,

學(xué)到了什么:通過搜尋資料了解,字符流:就是在字節(jié)流的基礎(chǔ)上,加上編碼,形成的數(shù)據(jù)流。字

符流出現(xiàn)的意義:因?yàn)樽止?jié)流在操作字符時(shí),可能會有中文導(dǎo)致的亂碼,所以由字節(jié)流引申出了字

符:流。

Stringbuff'er:提供的是字符串緩沖區(qū),是屬于java,lang包里的,被final修飾。Stringbuffer

的構(gòu)造方法:StringBuffer():無參構(gòu)造的格式,初始化容量為16。構(gòu)造一個(gè)StringBuffer緩

沖區(qū)的?般格式為:StringBuffers=newStringBuffer()

設(shè)計(jì)5題目:通訊錄

2、設(shè)計(jì)5目的

通訊錄管理系統(tǒng)中包括讀者的姓名、固定電話、移動(dòng)電話、地址、備注等基本信息,能實(shí)現(xiàn)添

加、修改、刪除、查找功能。程序執(zhí)行時(shí),需要從文件中導(dǎo)入數(shù)據(jù),程序退出后將數(shù)據(jù)保存到文件。

第一次執(zhí)行時(shí),新創(chuàng)建一個(gè)文件。

程序運(yùn)行結(jié)果如下圖所示:

(£通訊>-□x

文件編輯幫助

-

固定電話移動(dòng)電話mlii

張三31884569154xxxxxx52河北化學(xué)系

添加刪除I謾改查找

熟練掌握Swing中常用的組件的使用方法。例如JFrame、JButton.JLabcl、JTextFicld,

JTextArea、JMenu、JMenuBar、JPanel、JDialog等等;以及常用布局GridLayout、BoxLayout等

等;

熟練掌握AWT事件處理,理解事件對象、事件源、監(jiān)聽器、事件處理器在事件處理機(jī)制中的作

用:掌握事件監(jiān)聽器和事件適配器;掌握常用事件分類:窗體事件、按鈕事件、鍵盤事件等。

熟練掌握使用I/O流操作類實(shí)現(xiàn)文件存?。豪绮僮魑募淖止?jié)流操作類FilelnputStream.

FilcOutputStroam,操作對象的字節(jié)流操作類ObjectInputStrcam^ObjecOutputStrcam,字節(jié)緩

沖流操作類BufferedlnputStream^BufferedoutputStream等等。

理解Java中序列化與反序列化的含義,熟練掌握java中的序列化實(shí)現(xiàn)。

2、設(shè)計(jì)5正文

2.1實(shí)驗(yàn)內(nèi)容

1)通訊錄管理系統(tǒng)中包括讀者的姓名、固定電話、移動(dòng)電話、地址、備注等基本信息

2)能實(shí)現(xiàn)添加、修改、刪除、查找功能。

3)程序執(zhí)行時(shí),需要從文件中導(dǎo)入數(shù)據(jù),程序退出后將數(shù)據(jù)保存到文件。

4)第一次執(zhí)行時(shí),新倉]建一個(gè)文件。

5)聯(lián)系人的信息能夠直觀的看到,而后進(jìn)行對已存在的信息進(jìn)行刪除,修改,查詢。

2.2實(shí)驗(yàn)分析

創(chuàng)建Address類來實(shí)現(xiàn)Serializable,定義地址項(xiàng)中的成員變量name,phone,mobile,address,note.

定義無參構(gòu)造方法。定義有參構(gòu)造方法,類實(shí)例化對象時(shí),為對象屬性賦初值成員變量初始化。

showAddressBookO函數(shù):顯示地址簿,其中通過增強(qiáng)for循環(huán)遍歷集合內(nèi)容。

inser(Address()函數(shù):添加新的地址項(xiàng)。

initializeO:向窗體中添加組件。其中添加菜單欄,主面板,標(biāo)題為“通訊錄”,再調(diào)整長寬位

置大小。

rcadFile。函數(shù):讀取文件AddrossBook.dat,對象反序列化。先由操作文件的字節(jié)輸入

FilelnputStreamO從文件讀取數(shù)據(jù),存入字節(jié)緩沖流BufferedlnputStreamO,由操作對象的字節(jié)

輸入流ObjectInputSlreamO接收。將接受到的信息轉(zhuǎn)為Acdress類對象,添加到addressList集

合。最后關(guān)閉輸入流,釋放資源,處理異常。

doExit()退出方法判斷changeFlag==true,標(biāo)記變量changeFlag標(biāo)記地址項(xiàng)信息是否被添加、

刪除、修改過才調(diào)用saveFileO進(jìn)行存儲,或者直接System.exit(O)語句退出。

定義Address類繼承JFrame,定義生成filename為常量。使用ArrayList集合。

5.1-通訊錄功能實(shí)現(xiàn)圖

2.3實(shí)驗(yàn)結(jié)果與測試

國通訊錄□X

文件編輯幫助

由名固定電話移動(dòng)電話地址備注

E埼1733018252717330182527天津市節(jié)可區(qū)1

卜紅6910-035717330182528衡水市科毓區(qū)2

添加刪除修改查找

5.2-往通訊錄中添加聯(lián)系人

5.3-從通訊錄中修改聯(lián)系人信息

3、設(shè)計(jì)4總結(jié)

做了哪些工作:實(shí)現(xiàn)有界面的通訊錄,首先是對于主界面的創(chuàng)建,里面具體包含標(biāo)簽(JLabcl)、

文本框(JTextField)>按鈕(JButton)>文本域(JTextArea)等組件。調(diào)用JLabel方法,根據(jù)

所需的通訊錄信息確定標(biāo)簽上顯示內(nèi)容具體分為姓名、固定電話、移動(dòng)電話、地址、備注。對于每

個(gè)標(biāo)簽的后面跟著一個(gè)文本框(JTextFieldO)用來寫對應(yīng)標(biāo)簽內(nèi)容的數(shù)據(jù),其次是對于按鈕

(JButtonO)上面顯示內(nèi)容根據(jù)所需要進(jìn)行修改為添加、刪除、修改、查找。調(diào)用JTextArea類

來顯示進(jìn)行每個(gè)操作后應(yīng)出現(xiàn)的信息o

調(diào)用GridLayoutxBordLayout和JPancl類,利用GridLayout布局通過面板的add。方法依

次對標(biāo)簽、文本框、按鈕進(jìn)行添加,然后利用另一個(gè)面板對于文本框的添加,最后用BoxLayout布

局添加到容器中形成界面。對按鈕添加監(jiān)聽器(ActionLisiener),分別對功能進(jìn)行操作,在刪除

和查找的時(shí)候分別出現(xiàn)另一個(gè)界面,分別是對姓名的刪除和查找工作。

其中運(yùn)用StringBuffer類中的append拼接數(shù)據(jù),進(jìn)行追加。

組件的添加是利用JFrame類中的getContentPane0>add()方法進(jìn)行添加的。通過

insertAddressO進(jìn)行處理關(guān)閉窗口事件。doExit()退出方法判斷changeFlag=true,標(biāo)記變量

changeFlag標(biāo)記地址項(xiàng)信息是否被添加、刪除、修改過才調(diào)用saveFile()進(jìn)行存儲,或者直接

System,exit(0)語句退出。

工作尚存不足:對匿名內(nèi)部類的使用和字節(jié)流字符流的作用不大熟悉。

學(xué)到了什么:通過這次的程序讓我了解了Java程序的三種頁面布局:流體布局,網(wǎng)絡(luò)布局,

安全布局。添加按鈕的過程是一個(gè)熟悉給按鈕增加監(jiān)聽器的過程。除此之外,當(dāng)需要傳值的時(shí)候,

對于添加監(jiān)聽器有使用的是內(nèi)部類,有的使用是匿名內(nèi)部類。

關(guān)于字節(jié)流與字符流:字符流只能處理字符,字節(jié)流能處理二進(jìn)制文件以及圖片任何。

InputStream類和OutputStream類在讀寫文件時(shí)操作的都是字節(jié),如果希望在程序中操作字符,

使用這兩個(gè)類就不太方便,為此JDK提供了字符流。同字節(jié)流一樣,字符流也有兩個(gè)抽象的頂級

父類,分別是Reader和Writer。其中Reader是字符輸入流,用于從某個(gè)源設(shè)備讀取字符,Writer

是字符輸出流,用于向某個(gè)目標(biāo)設(shè)備寫入字符。Reader和肛iler作為字符流的父類,也芍許多子

類。

設(shè)計(jì)6題目:水果超市管理系統(tǒng)

1、設(shè)計(jì)6目的

⑴水果超市管理系統(tǒng)共包括系統(tǒng)歡迎界面和超市貨物管理界面兩個(gè)界面。在系統(tǒng)歡迎界

面通過單擊“進(jìn)入系統(tǒng)”按鈕,進(jìn)入超市貨物管理界面,在貨物管理界面就可以對水果信息

實(shí)現(xiàn)具體的操作。例如:每當(dāng)有新水果運(yùn)送到超市時(shí),就需要系統(tǒng)管理人員在系統(tǒng)中增加新

水果的信息,如果超市中的水果沒有了就刪除該水果信息,或者數(shù)量價(jià)格等需要變更時(shí)進(jìn)行

修改,這些操作都要在管理系統(tǒng)中完成。要求結(jié)合JDBC技術(shù),連接MySql數(shù)據(jù)庫管理水果

信息。

運(yùn)行結(jié)果

任務(wù)運(yùn)行后,首先出現(xiàn)歡迎窗口界面,其界面效果如下圖所示:

當(dāng)單擊歡迎窗口的“進(jìn)入系統(tǒng)”按鈕后,就會進(jìn)入超市貨物的管理窗口界面中,其界面

如卜圖所示:

超市貨物言理!X

水果列表

水果編號水果名稱水果單價(jià)(阮)計(jì)價(jià)單位

1蘋果5.0kg

水果編號水果名稱水果單價(jià)計(jì)價(jià)單位

添加水果

修改水果

刪除水果

⑵熟練掌握Swing中常用的組件的使用方法。例如JFrame「Button、JLabe1、JTextFie1d、

JTextArea、JCheckBox、JRadioButton>JMenu>JMenuBar、JPanel、JDialog等等;五種

布局方式FlowLayout、BordLayout^GridLayoutsCardLayout等等;

⑶熟練掌握AWT事件處理,理解事件對象、事件源、監(jiān)聽器、事件處理器在事件處理機(jī)

制中的作用;掌握事件監(jiān)聽器和事件適配器;掌握常用事件分類:窗體事件、鼠標(biāo)事件、鍵

盤事件、動(dòng)作事件等。

2、設(shè)計(jì)6正文

2.1實(shí)驗(yàn)內(nèi)容

1)系統(tǒng)歡迎窗口是一個(gè)窗體,可■以通過JFrame組件來實(shí)現(xiàn)。該窗口主要分為兩部分,一

個(gè)是北區(qū)圖片區(qū),里面包含一張圖片,另一個(gè)正文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論