版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
PAGEPAGE37大作業(yè)二圖書館系統(tǒng)重要提示:學生中一切抄襲、復制,剽竊行為,將會給以嚴厲處置。一、總?cè)蝿諘陂_始編程之前,請仔細閱讀以下說明:該作業(yè)只允許你創(chuàng)建一個項目,且項目名只能為:asn2,否則我們不會批改你的作業(yè),你的成績?yōu)?分。跟該項目有關(guān)的類都必須存放在項目文件夾中,確保項目中包括表1-1所示的所有文件:表1-1圖書館系統(tǒng)中的類列表類測試類Assignment2.java
Book.java
BookCatalog.java
Confirm.java
InputValidator.java
Library.java
Patron.java
PatronCatalog.java
Transactions.javaBookTest.java
BookCatalogTest.java
ConfirmTest.java
InputValidatorTest.java
PatronTest.java
PatronCatalogTest.java
TransactionsTest.java
每寫完一個類,請編寫一個測試程序來測試它。也就是說,你的測試程序中得包含一個main方法來調(diào)用類中的各個方法,要用不同的對象、參數(shù)調(diào)用若干次。你遞交完作業(yè)后,我們會用我們的main方法來測試它們。你必須遞交以上表中所列出的所有的測試類。在這個作業(yè)中,要求你編寫一個應用程序,來實現(xiàn)簡單的圖書館系統(tǒng)。當運行這個應用程序時,該程序?qū)拇疟P上訪問兩個文本文件并把文件中的數(shù)據(jù)讀入到程序中。(我們會給你提供這兩個文本文件及實現(xiàn)文件輸入輸出的方法)。其中一個文件中包含有圖書館借書人的信息,另一個包含圖書資料信息。要求程序從文件中讀完數(shù)據(jù)后,能顯示包含以下選項的主菜單:圖書(允許用戶進入“圖書菜單”來進行跟館中的圖書有關(guān)的操作)借書人(允許用戶進入“借書人菜單”來進行跟已注冊到圖書館中的借書人有關(guān)的操作)查詢(允許用戶進入“查詢菜單”來實現(xiàn)對圖書館中的圖書或贊助人的查詢操作)退出(退出圖書系統(tǒng),終止該應用程序)你的輸出窗口應如圖1-1所示:歡迎進入Java圖書系統(tǒng)歡迎進入Java圖書系統(tǒng)主菜單1.圖書(允許用戶進入“圖書菜單”來進行跟館中的圖書有關(guān)的操作)2.借書人(允許用戶進入“借書人菜單”來進行跟已注冊到圖書館中的借書人有關(guān)的操作)3.查詢(允許用戶進入“查詢菜單”來實現(xiàn)對圖書館中的圖書或贊助人的查詢操作)4.退出(退出圖書系統(tǒng),終止該應用程序)請選擇一項:圖1-1主菜單界面下面將討論前3個菜單:1.BookMenu(圖書菜單)給圖書館添加一本新書(給圖書目錄添加一本新書)刪除一本書(從圖書目錄中刪除一本書)圖書統(tǒng)計(顯示圖書中的圖書數(shù)目)打印圖書目錄(打印目前圖書目錄中所包含的所有圖書的清單)借書(允許借書人借書)還書(允許借書人歸還圖書)返回(返回主菜單)你的輸出窗口應如圖1-2所示:圖書菜單圖書菜單添加一本新書(給圖書目錄添加一本新書)刪除一本書(從圖書目錄中刪除一本書)圖書統(tǒng)計(顯示圖書中的圖書數(shù)目)打印圖書目錄(打印目前圖書目錄中所包含的所有圖書的清單)借書(允許借書人借書)還書(允許借書人歸還圖書)返回(返回主菜單)請選擇一項:圖1-2圖書菜單界面2.PatronMenu(借書菜單)添加一個新的借書人(往圖書館的借書人目錄中注冊一個新的借書人)刪除一個借書人(從圖書館的借書人目錄中現(xiàn)有的借書人)借書人數(shù)統(tǒng)計(顯示圖書系統(tǒng)中借書的總?cè)藬?shù))打印借書人目錄(打印目前已注冊的借書人目錄及他們的圖書證號碼的清單)打印某個借書人的借書信息(打印某個借書人所借的所有圖書的基本信息。如:書號,書名和作者)打印所有人的借書信息(打印所有借書人所借的所有圖書的基本信息。如:書號,書名和作者,及借書人名稱)返回(返回主菜單)界面如圖1-3所示:請選擇一項:2請選擇一項:2借書人菜單添加一個新的借書人(往圖書館的借書人目錄中注冊一個新的借書人)刪除一個借書人(從圖書館的借書人目錄中刪除一位現(xiàn)有的借書人)借書人數(shù)統(tǒng)計(顯示圖書系統(tǒng)中借書的總?cè)藬?shù))打印借書人目錄(打印目前已注冊的借書人目錄及他們的圖書證號碼的清單)打印某個借書人的借書信息(打印某個借書人所借的所有圖書的基本信息。如:書號,書名和作者)打印所有人的借書信息(打印所有借書人所借的所有圖書的基本信息。如:書號,書名和作者,及借書人名稱)7.返回(返回主菜單)圖1-3借書人管理界面3.BookandPatronSearchMenu(圖書和借書人檢索菜單)
圖書和借書人檢索菜單提供以下菜單項:按書號檢索一本書(提示用戶輸入書號,若能找到,顯示該書的書號、書名和作者)按作者檢索一本書(提示用戶輸入作者,若能找到,顯示該書的、書號和書名)按借書證號檢索一借書人(提示用戶輸入借書證,若能找到,顯示該借書證號與借書人的姓名)按借書人的全名檢索(提示用戶輸入全名,若能找到,顯示該借書人的借書證號與姓名)返回(返回主菜單)界面如圖1-4所示:請選擇一項:3請選擇一項:3圖書和借書人檢索菜單:1.按書號檢索一本書(提示用戶輸入書號,若能找到,顯示該書的書號、書名和作者)2.按作者檢索一本書(提示用戶輸入作者,若能找到,顯示該書的、書號和書名)3.按借書證號檢索一借書人(提示用戶輸入借書證,若能找到,顯示該借書證號與借書人的姓名)4.按借書人的全名檢索(提示用戶輸入全名,若能找到,顯示該借書人的借書證號與姓名)5.返回(返回主菜單)請選擇一項:圖1-4圖書和借書人檢索請注意:你的圖書系統(tǒng)應該能夠處理輸入的無效數(shù)據(jù)和非正常終止的情況。如:如果用戶輸入了無效的菜單選項,或在該輸入書號的地方輸入了“Hello”,你的程序應該能夠等到輸入有效數(shù)據(jù)為止,不能中斷程序的執(zhí)行。4.文本文件
你可以從指導老師哪里獲取以下兩個文本文件:books.txt,patrons.txt這兩個文件里包含一些數(shù)據(jù)。我們已經(jīng)給你們提供了能夠?qū)⑦@些文件中的數(shù)據(jù)讀入到你程序中的代碼(祥見:PatronCatalog.java和BookCatalog.java類)。在這個作業(yè)中你不必考慮將數(shù)據(jù)寫回文件中的問題,但是你提交完作業(yè)后,可以試著實現(xiàn)一下文件的輸入輸出操作,對你將會是個很有用的訓練。類的框架代碼:以下的類不需要你了解循環(huán)與Vector,你在實驗8中才會接觸到他們。因此你在完成實驗8之前就可以著手做這個作業(yè)。5.第一部分應包含的類Assignment2.java(寫好的類,沒有分)
Book.java(12分)
InputValidator.java(9分)
Confirm.java(10分)
Library.java(14分)在完成實驗8之前你可以開始寫Library.java類,但是你在完成以下列類之前,你還不能結(jié)束對Library.java的編碼。作為開始,你的
Library應該能夠顯示菜單就可以了。當你完成剩余的類之后,再返回Library類,在其中添加通過調(diào)用其他類中的方法實現(xiàn)各菜單項功能的代碼。記?。好吭谀愕念愔性黾哟a,你都得測試你的類。以下的類需要你了解循環(huán)與Vector,所以你在完成實驗8之后,才可以開始對它們進行編碼。以下列列出的順序進行編碼將會對你有所幫助:6.第二部分應包含的類Patron.java(11分)
PatronCatalog.java(17分)
BookCatalog.java(14分)
Transactions.java(13分)二、完成作業(yè)的步驟為了完成作業(yè),你需要編寫若干個類—以以上所列的類的順序進行編寫。因為對列在后面的類進行編碼時,會用到前面的類。開始對一個類進行編碼時,請把該類的框架代碼復制到VisualJ++中。寫完一個類以后,請編寫一個測試應用程序來對其進行測試。你的測試程序應該包含能夠調(diào)用你的類中的各個方法的main方法,你可以用不同的對象作為參數(shù),多調(diào)用幾次。你遞交作業(yè)后,我們會用我們的main程序測試你的類。在開始下一個類的編碼之前,切記測試你已經(jīng)寫好了的類。以下是對Book.java舉的一個例子(如果你喜歡,你也可以這么起名)BookTest.javaInputValidatorTest.javaBookTest.javaInputValidatorTest.java三、第一部分要編寫的類及其框架1.Assignment2.java/**圖書館系統(tǒng)(Librarysystem)的驅(qū)動類(driveclass)*/publicclassAssignment2{ /*主程序Mainprogram*/ publicstaticvoidmain(Stringargs[]){ Librarylibrary=newLibrary(); library.browseLibrary(); }}2.Book.java/*該類的每個實例代表圖書館中的一本書。*每本書都有一個唯一的書號,即:ID號(int),作者(String),書名(String).*該書被借出與否,整型變量loanedTo將會代表借書人的借書證號。若該書沒有被借出,loanedTo的值為-1*/
publicclassBook{//實例變量:盡可能少使用實例變量
//構(gòu)造方法
publicBook(Stringtitle,Stringauthor,intnumber){
/*用給定的書名、作者和書號對我(實例變量)進行初始化,并設置我的借出狀態(tài)為未借出狀態(tài),將書名和作者轉(zhuǎn)換為大寫字母*/
}
//公共實例方法
publicintloanedTo(){
/*
*返回當前借書人的借書證號*/}
publicbooleanonLoan(){
/*
*如果我被借出返回true,否則返回false.*/
}
publicintnumber(){
/*
*返回我的號碼(書號)returnmynumber
*/
}
publicStringauthor(){
/*
*返回我的作者
*/
}
publicStringtitle(){
/*
*返回我的標題(書名)
*/
}
publicvoidreturnMe(){
/*
*如果我被歸還,設置我的狀態(tài)為可獲得狀態(tài),否則什么都別做。*/
}
publicvoidborrowMe(intpatronNum){
/*
*標記我被借給給定的借書證號。*/
}
publicStringtoString(){
/*返回代表我的字符串,該字符串中應包含我的書號,書名和我的作者(如:0
"ONTOJAVA"
作者:
Winston)。因為這個類定義了toString()方法,可以用PrintStream類中的print(Object)和println(Object)打印實例變量的值。也就是說我們可以用System.out.print(aBook)語句。
*/
}}3.InputValidator.java/*該類允許用戶問一個問題并得到有效的整數(shù)和字符串*/ publicclassInputValidator{/*公共的靜態(tài)方法*/ publicstaticintgetInt(StringpromptMsg){ /* *輸出所給定的提示信息并返回一個有效的整型值 *例如:輸出”輸入一個書號”,直到輸入一個有效的整數(shù) */ } publicstaticStringgetStr(StringpromptMsg){ /*輸出一個給定的提示信息并返回一個有效字符串,空字符串無效 *例如:輸出”輸入書名”,直到輸入有效的字符串 *返回的字符串應該被壓縮首尾空格*/ }}4.Confirm.javapublicclassConfirm{
/**該類的一個實例能夠向用戶提出yes或no的問題*///常量//實例變量//構(gòu)造方法
publicConfirm(Stringquestion){
/*用給定的問題初始化我。如:問題字符串可能是:“你想要退出嗎?”
*/
}/*公共實例方法*/
publicbooleanask(){
/*向用戶提問我的問題,如果回答為yes返回true,若回答為no返回false。顯示我的問題的時候,輸出的字符串后面要跟字符串"<y>es或<n>o?"。例如:如果我的字符串是“你想要退出嗎”,我應該顯示以下的字符串:“你想要退出嗎<y>es或<n>o?”。如果用戶輸入任何一個“y”或“Y”開頭的字符串,我會返回true。如果用戶輸入任何一個“n”或“N”開頭的字符串,我會返回false。如果用戶不輸入任何一個“y”,“Y”,“n”或“N”開頭的字符串,我會一直提問,直到用戶輸入“y”,“Y”,“n”或“N”中的一個。*/
}}5.Library.javaLibrary模擬圖書館本身。一個圖書館有一系列書的清單(保存在一個書的目錄里)和借書人清單(保存在一個借書人目錄里)。為了使得用戶能夠跟該系統(tǒng)交互,該類有以下的功能:(1)顯示各種的菜單(主菜單,圖書菜單,借書人菜單,查詢菜單)(2)進行數(shù)據(jù)的有效性檢驗(如:如果不能把用戶的輸入確認為有效的菜單項,那么程序就等下去,直到一個有效的輸入,而不會中斷程序)(3)對用戶的輸入作出適當?shù)姆磻ㄈ纾寒斢脩糨斎胍粋€有效的菜單項,將會作出適當?shù)姆磻┰谕瓿蓪嶒?之前,你可以開始編寫該類。在實驗8,你將會學會如何用循環(huán)和Vectors。雖然你在Library類中用不到這些知識點,你在該作業(yè)的其它類中會用到它們,所以你必須得掌握它們,你編寫完其它的類之后,才能夠?qū)崿F(xiàn)所有的菜單項的功能。開始,你在寫Library類時,只寫一些簡單的用于顯示菜單的代碼。當你完成其它的類之后,你可以回到Library類,實現(xiàn)更多的菜單項功能。/*
*該類的一個實例是一個圖書館。這個圖書館允許你借書,還書,查找圖書和查找借書人。它*還允許你添加圖書,刪除圖書,添加借書人和刪除借書人。借書人和圖書的詳細資料要從磁盤*文件中讀取。該類處理所有用戶和圖書館系統(tǒng)之間的交互。例如:獲得用戶的輸入,打印輸出*操作結(jié)果等*/
publicclassLibrary{//常量
//實例變量
privatePatronCatalogpatronCatalog;
privateBookCatalogbookCatalog;
//構(gòu)造方法
publicLibrary(){
/*初始化圖書館系統(tǒng),以便于它準備處理各種事務。在這里可能有更多的代碼。*/this.patronCatalog=newPatronCatalog();
this.bookCatalog=newBookCatalog();
this.bookCatalog.readBookFile();
this.patronCatalog.readPatronFile();}//公共的實例方法
publicvoidbrowseLibrary(){
/*瀏覽圖書館,該方法提供用戶界面,用于用戶訪問圖書館系統(tǒng)的各個功能(如:*主菜單,圖書菜單)*/
}}提示:你應該至少編寫4個私有方法,每個都得實現(xiàn)一個菜單。如:圖書菜單…6.Book.txt文件的內(nèi)容JavaStructuresBaileyJavaProgrammingKingJavaPattersonHumeOntoJavaWinstonJava,HowToProgramDeitelandDeitelANINTRODUCTIONTOCOMPUTERSCIENCEUSINGJAVAKamin7.Patrons.txt文件的內(nèi)容BillArmstrongAnupBasuJoeCulbersonReneeElioEhabElmallahPawelGburzynski四、第二部分要編寫類的及其框架1.Patron.java/*
*該類的一個實例代表圖書館里的一個借書人。
*每個借書人有唯一的借書證號碼ID(int),姓名(String)和所借書的清單(Vector)。
*/
importjava.util.Vector;publicclassPatron{//常量//實例變量
//構(gòu)造方法
publicPatron(Stringname,intnumber){
/*
*把我用給定的姓名與號碼初始化,姓名轉(zhuǎn)為大寫字母。
*我被初始化了,所以我還沒有借任何書。
*/}
//公共實例方法
publicStringname(){
/*
*返回我的姓名*/
}
publicintnumber(){
/*
*返回我的號碼*/
}
publicintcountLoans(){
/*
*返回我借的書的總數(shù)*/
}
publicStringallLoans(){
/*
*返回一個字符串,其代表所有我在圖書館系統(tǒng)所借的書,如果沒有借任何書,*返回"None"
*(例如:#0號借書人所借的書為:
*#:0"JAVASTRUCTURES"By:BAILE*/
)
publicvoidborrowBook(BookaBook){
/*
*將給定的書填加到我的借書清單中
*/
}
publicvoidreturnBook(intbookNum){
/*
*從我的借書清單中刪除給定的書
*/
}publicStringtoString(){
/*
*返回代表我的一個字符串,該字符串中包含我的借書證號和我的姓名*(例如:#:0BILLARMSTRONG)
*由于該類定義了方法toString(),可以用PrintStream類中的print(Object)*和println(Object)打印該類的實例。也就是說:我們可以用語句*System.out.print(aPatron)。
*/
}}2.PatronCatalog.javaPatronCatalog類模擬了已注冊到圖書館中的借書人清單(或“目錄”)。借書人的詳細信息保存在一個磁盤文件中。這個數(shù)據(jù)將會從磁盤文件讀入到程序中。我們將會提供讀入這些數(shù)據(jù)的方法。importjava.util.Vector;
importjava.io.*;/*
*該類的一個實例代表已注冊到圖書館中的所有借書人清單。
*/publicclassPatronCatalog{//常量
//實例變量
privateVectorpatrons;
privateintlastPatronNum;
//填加你的實例變量
//構(gòu)造方法
publicPatronCatalog(){
/*
*把我初始化為0個借書人
*把借書人的借書證號初始化為0
*/
}//公共實例方法
publicvoidreadPatronFile(){
/*該方法會從patrons.txt文件中讀取數(shù)據(jù),然后用它們填充vector*this.patrons。*/StringpatronFile="patrons.txt";
BufferedReaderbfreader;
Stringstr;
try{bfreader=newBufferedReader(newFileReader(patronFile));
while((str=bfreader.readLine())!=null){
this.patrons.addElement(newPatron(str.trim().toUpperCase(),this.lastPatronNum++));
}}catch(IOExceptione){
}}publicintpatronCount(){
/*
*返回借書人總數(shù)
*/
}publicvoidaddPatron(Stringname){
/*
*用給定的姓名創(chuàng)建一個借書人實例,將他填加到借書人目錄中,增加借書人
*號碼。借書人號碼代表借書人的證件號,而不是Vector的下標。
*如果你刪除了#4借書人,然后又填加了一個借書人,那么該人的號碼會為5,*而不是4。
*/}
publicStringdeletePatron(intpatronNum){
/*從借書人目錄中刪除給定的借書人并返回結(jié)果*刪除借書人,如果1)借書人在目錄中并且2)此人沒有在借的書*如果是無效證件號碼,返回"無效證件號"
*如果有效,刪除并返回代表借書人的字符串后接結(jié)果說明id,*如果有在接的書,返回(例如:#:0BILLARMSTRONG有在借的書,不能刪除)
*并且在刪除之前讓用戶確認(例如:"你確信要刪除#0借書人嗎<Y>es<N>o?"
*如果有效并為yes刪除然后返回(例如:#:0BILLARMSTRONG被刪除了)
*如果有效,但沒有被刪除,返回(例如:#:0BILLARMSTRONG沒有被刪除)
*/
)
publicStringlistLoans(intpatronNum){
/*
*找出給定借書證號所借的所有圖書,當借書人存在時返回結(jié)果
*如果是無效的借書證號,返回"無此借書證號碼"
*/
}
publicStringprintAllLoans(){
/*
*返回圖書館系統(tǒng)中的所有借書人所借的所有圖書的清單,若沒有任何借書人,*則什么都不返回。*/
}
publicStringsearchPatronByNum(intpatronNum){
/*
*按借書證號查找借書人并返回查找結(jié)果
*如果找到返回代表借書人的字符串(如"#:
0
BILLARMSTRONG)"
*若找不到返回"查無此人";
*/
}
publicStringsearchPatronByFullName(Stringname){
/*
*查找給定的姓名的所有借書人并返回查找結(jié)果
*如果找到返回代表借書人的字符串(如"#:
0
BILLARMSTRONG)"
*若找不到返回"查無此人";
*/
}
publicPatronfindPatron(intpatronNum){
/*
*返回一個給定借書證號所代表的借書人對象(patron),若找不到返回NULL
*/}
publicStringtoString(){
/*返回代表我(PatronCatalog)的字符串,該字符串中應包含所有借書人的證件號碼和姓名。因為這個類定義了toString()方法,可以用PrintStream類中的print(Object)和println(Object)打印實例變量的值。也就是說我們可以用System.out.print(aPatronCatalog)語句。
*/
}}3.BookCatalog.java圖書館里包含書的清單(例如:圖書館中的“書的目錄”)。最新的圖書清單也保存在圖書目錄BookCatalog中。當運行圖書應用程序時,會從一個文本文件中讀去圖書數(shù)據(jù)(執(zhí)行此操作的代碼已在以下提供)并且用這些數(shù)據(jù)來初始化BookCatalog對象。由于每本書是從文件里讀出來的,所以每本書都分配有唯一的書號。第一本書的ID號為0,下一本的ID號為1,等等。讀完圖書文件后,你不必擔心檢查書的ID號。importjava.util.*;
importjava.io.*;
/*
*該類的一個實例代表圖書館里的所有圖書
*/
publicclassBookCatalog{//常量
//實例變量
privateVectorbooks;
privateintlastBookNum;
//填加你的實例變量
//構(gòu)造方法
publicBookCatalog(){
/*
*將我初始化為0本書
*初始化書的編號為0
*/
}
//公共實例方法
publicvoidreadBookFile(){
/*每一個圖書的最新書號-你不必理解這個代碼是怎么工作的
*只是簡單的把它用在你的程序中
*/StringbookFile="books.txt";
BufferedReaderbfreader;
Stringtitle;
Stringauthor;
try{bfreader=newBufferedReader(newFileReader(bookFile));
while((title=bfreader.readLine())!=null){
author=bfreader.readLine();
this.books.addElement(newBook(title.trim().toUpperCase(),author.trim().toUpperCase(),this.lastBookNum++));
}}catch(IOExceptione){
}}
publicintbookCount(){
/*
*返回圖書館中藏書總數(shù)
*/
}
publicvoidaddBook(Stringtitle,Stringauthor){
/*
*用給定的書名和作者創(chuàng)建一本書,并把它添加到圖書目錄中
*增加書號
*書號代表書的號碼,而不是Vector的下標
*如果你刪除了4號書并且又增加了另一本書,最后增加的書的號碼應該是5而不是4*/
}publicStringdeleteBook(intbookNum){
/*
*從圖書目錄中刪除給定的書并返回結(jié)果
*刪除書如果1)圖書清單中有這本書2)目前該書沒有被借出去。如果是無效的書號,返回"沒有這樣的書號"
*如果有效,刪除并返回代表書的后接結(jié)果說明的字符串
*(例如:#:
0
"ONTOJAVA"
By:
Winston被刪除)
*如果該書被借,返回(#:
0
"ONTOJAVA"
By:
Winston被借,不能被刪除)
*并在刪除之前要用戶確認(例如:"你確實想要刪除#0<Y>es<N>o?"
*如果有效并且用戶的回答為yes刪除并返回(例如:#:
0
"ONTOJAVA"
By:
Winston被刪除了)
*如果有效并且用戶的回答為no,則返回(例如#:
0
"ONTOJAVA"
By:
Winston沒有被刪除)
*/
publicStringsearchBookByNum(intbookNum){
/*
*查找給定書號的圖書,并返回查找結(jié)果
*如果找到,返回代表書的字符串(例如:#:
0
"ONTOJAVA"
By:
Winston)
*若沒找到,則返回"查無此書";
*/
}
publicStringsearchBookByAuthor(Stringauthor){
/*
*查找給定作者的所有圖書,并返回查找結(jié)果
*如果找到,返回代表書的字符串(例如:#:
0
"ONTOJAVA"
By:
Winston)
*若沒找到,則返回"查無此書";
*/
}publicBookfindBook(intbookNum){
/*
*返回給定書號的圖書對象(book),若沒有找到返回NULL
*/
}
publicStringtoString(){
/*返回代表我(BookCatalog)的字符串,該字符串中應包含所有書的(書號,書名和作者。因為這個類定義了toString()方法,可以用PrintStream類中的print(Object)和println(Object)打印實例變量的值。也就是說我們可以用System.out.print(aBookCatalog)語句。
*/
)}4.Transactions.java
/*
*該類的一個實例,允許借書人從圖書館借書并向圖書館還書。
*/
publicclassTransactions{//常量//實例變量//構(gòu)造方法publicTransactions(PatronCatalogpatronCatalog,BookCatalogbookCatalog){
/*
*將我初始化,使我為借書還書事務做準備
*/
}//公共實例方法publicStringborrowBook(intpatronNum,intbookNum){
/*
*校驗給定的借書證號與書號
*如果有效,圖書館里有此藏書,結(jié)束交易并且不返回任何結(jié)果
*如果該書已被借出去,返回:#:0:ONTOJAVAByWINSTON被借出。
*如果借書證號無效,返回:"沒有此證件號"
*如果書號無效,返回:"沒有此書號"*/
}
publicStringreturnBook(intpatronNum,intbookNum){
/*
*校驗給定的借書證號與書號
*如果有效,并且書是借給此人的,結(jié)束交易并返回"#:0:ONTOJAVAByWINSTON被還"
*如果該書沒有借給此人,則返回:"書沒有被借出"。
*如果借書證號無效,返回:"沒有此證件號"
*如果書號無效,返回:"沒有此書號"*/}}五、運行時例外及其說明表5-1普遍存在于程序中的例外與錯誤列表例外原因修改提示ArrayIndexOutOfBoundsException數(shù)組下標越界例外當數(shù)組下標小于0或大于數(shù)組的實際長度時發(fā)生。需要注意的是數(shù)組的下標從0開始,而不是從1。最后的下標值比數(shù)組的長度少1ClassNotFoundException類沒有找到例外不能夠裝載被請求的類確保java文件的名字與在此文件中定義的類名匹配。IndexOutOfBoundsException下標越界例外下標越界見以上的ArrayIndexOutOfBoundsExceptionNoSuchMethodException沒有這樣的方法例外不能夠解決的方法也許方法名的拼寫有誤或者方法不在那個類中NullPointerException空指針例外試圖訪問一個空的對象成員通常,是因為使用了一個沒有被初始化的接受者對象,例如:沒有給值。確保你的構(gòu)造方法的定義是準確的。構(gòu)造方法沒有返回值類型,不像普通方法。如果像給普通方法一樣,也給構(gòu)造方法定義了一個返回值類型并且在其中定義了初始化代碼,那么對該類進行對象初始化時,初始化代碼就不能被調(diào)用。NumberFormatException數(shù)字格式例外不能夠把字符串轉(zhuǎn)換成數(shù)字類型可能會在使用鍵盤類中的readInt()方法時發(fā)生。StringIndexOutOfBoundsException字符串下標越界例外下標值為負數(shù)或大于字符串的長度可能會在使用subString()得到子串時發(fā)生。表5-2普遍存在的錯誤提示及其原因(java.langerrors)錯誤原因修改提示NoClassDefFoundError沒有找到類定義的錯誤沒有找到類定義時發(fā)生在項目文件夾下沒有該類文件時發(fā)生,確認有沒有該類或類名是否有拼寫錯誤。NoSuchMethodError沒有這樣的方法錯誤當找不到被請求的方法時發(fā)生確認被請求調(diào)用的方法存在,并檢查方法名是否有拼寫錯誤.表5-3程序中普遍存在的輸入輸出類例外例外原因修改提示FileNotFoundException文件沒找到例外文件找不到時發(fā)生確保文件存在,并且其路徑正確表5-4Applet例外例外原因修改提示java.io.FileNotFoundException輸入輸出文件沒找到例外java.lang.ClassNotFoundException類沒有找到HTML文件中的類名可能與java文件名不一致。HTML文件不在項目文件夾里面。確保文件存在,并且其路徑正確例外舉例:importjava.util.*; publicclassTest{ //保存一些值 privateVectorstorage; //初始化Vector的構(gòu)造方法 publicvoidTest(){ this.storage=newVector(); } //往Vector里添加一個整型類 publicvoidadd(Integervalue){ this.storage.add(value); } //測試輸出 publicstaticvoidmain(String[]args){ TestaTest=newTest(); aTest.add(newInteger(1)); } }以上的代碼將會發(fā)生以下的錯誤,你知道為什么嗎?Exceptioninthread"main"java.lang.NullPointerException("main"線程例外java.lang.NullPointerException,即:空指針例外) atTest.add(Test.java) atTest.main(Test.java)六、大作業(yè)二測試代碼
1.BookTest.java/**用于單獨測試Book類*測試每個方法是基本功能**類方法的結(jié)果<->所期望的結(jié)果*/publicclassBookTest{ publicstaticvoidmain(String[]argv){ BookaBook; Stringtitle="Javaprogramming"; Stringauthor="Deitel"; intbookNum=1; intpatronNum=10; System.out.println("======BookTest======"); aBook=newBook(title,author,bookNum); System.out.print(aBook.title()); System.out.println("<->"+title.toUpperCase()); System.out.print(aBook.author()); System.out.println("<->"+author.toUpperCase()); System.out.print(aBook.number()); System.out.println("<->"+bookNum); System.out.print(aBook.onLoan()); System.out.println("<->false"); System.out.print(aBook.loanedTo()); System.out.println("<->-1"); aBook.returnMe(); System.out.print(aBook.onLoan()); System.out.println("<->false"); System.out.println(); System.out.print(aBook); System.out.println("<->#1\"CMPUT114\"By:UOFA"); aBook.borrowMe(10); System.out.print(aBook.onLoan()); System.out.println("<->true"); System.out.print(aBook.loanedTo()); System.out.println("<->"+patronNum); System.out.println(); aBook.returnMe(); System.out.print(aBook.onLoan()); System.out.println("<->false"); System.out.print(aBook.loanedTo()); System.out.println("<->-1"); }}2.InputValidatorTest.javapublicclassInputValidatorTest{publicstaticvoidmain(String[]arg){ StringpromptMsgInt="Enterainteger:"; StringpromptMsgStr="EnteraString:"; System.out.println("1)Enterabc");//你的輸入 System.out.println("2)Enter1"); System.out.println(InputValidator.getInt(promptMsgInt)+"<>1"); System.out.println("\n1)Enter\"abc\"");//輸入時前面留空格 System.out.println(InputValidator.getStr(promptMsgStr)+"<>abc"); System.out.println("2)Enter\"\"");//空格無效,你的程序應該重新提示,直到輸入一個字符串為止 System.out.println(InputValidator.getStr(promptMsgStr));}}七、編程風格要求以下說明了對實驗5,大作業(yè)一,大作業(yè)二中編碼風格的要求。你應該對所有的變量或方法起描述性的名字。(用x,y表示坐標時例外。)在你定義的每個類和方法的開頭加上好的注釋說明。你應該使你的方法盡量的短,以至于每個方法只做一件事情。如果你認為一個方法太長了,你可以建立私有的實例方法并把一些代碼寫在它們當中。程序里有許多私有實例方法不會丟分,但太少會被扣分。你應該對縮進,空格和空行使用一致的、易閱讀的方案。如果一個變量只被一個方法使用中,你應該把它定義為局部變量而非實例變量。你應該盡量少使用實例變量,多使用參數(shù)。你不應該改變在作業(yè)的說明中所給定的任何公共方法的屬性。你必須恰當使用關(guān)鍵字this你必須在所有的私有實例變量前面加上this.你必須在所有調(diào)用的私有實例方法前面加上this,該規(guī)則只應用于定義在當前類中的私有實例方法。八、'this'的恰當使用你必須在所有的私有實例變量前面加this.你在調(diào)用類中的私有實例方法時,必須在其前面加this.以下的代碼說明了如何使用this:/**該類闡述了'this'的恰當使用*/publicclassTest{/**構(gòu)造方法*/publicTest(){intlocalVariable;//私有實例變量前面加“this” this.aVariable=1;//調(diào)用類中的私有實例方法時其前面加“this”this.test1Method();localVariable=this.test2Method();}publicvoidtest1Method(){System.out.println(Test.OUTPUT);}/**該私有實例方法發(fā)揮1.*/privateinttest2Method(){return1;} //實例變量privateintaVariable; //靜態(tài)變量 privatestaticfinalStringOUTPUT="Useless!";}以下是沒有正確使用this的例子:publicclassTest{publicTest(){intlocalVariable;//私有實例變量前面沒有加“this” //要扣分!!aVariable=1;//調(diào)用類中的私有實例方法時其前面沒有加“this” //要扣分?。est1Method();localVariable=test2Method();}publicvoidtest1Method(){System.out.println("Useless!");}privateinttest2Method(){return1;} //實例變量privateintaVariable;}你的代碼中不應該直接出現(xiàn)任何的常量,除了0,1,true,false和null。如果你確實需要使用其它常量,你把它們可以成私有的、靜態(tài)的、final常量。/*用于實驗5.*/privatestaticfinalintWIDTH=190;privatestaticfinalintROOF_HEIGHT=50;privatestaticfinalStringA_STRING="Justanexample";/*用于大作業(yè)一*/privatestaticfinalStringRED="Red";
privatestaticfinalStringYELLOW="Yellow";
privatestaticfinalStringBLUE="Blue";
/*用于大作業(yè)二*/privatestaticfinalStringQUESTION="Doyoureallywanttoquit?";privatestaticfinalStringMAIN_MENU= "1.Books\n"+ "2.Patrons\n"+ "3.Searches\n"+"4.Quit";前述的privatestaticfinal常量只是個例子,并沒有列舉所有用于實驗5、大作業(yè)一、大作業(yè)二的常量。當比較對象時(不是簡單數(shù)據(jù)類型,例如:int,float…),用equals方法,而不是==。(用!equals而不是!=)。如果對同一件事有兩種方法,選擇容易理解的那一個。你不能增加任何你自己的公共方法,你只能使用作業(yè)的說明中給出的公共方法。然而,如果你愿意,你可以增加自己的私有方法。如果你覺得你的代碼太長(超過30行),你可以通過創(chuàng)建多個私有方法對它進行劃分。
大作業(yè)三基于Javaapplication的紙牌游戲一、任務書在這個作業(yè)里,你要編寫一系列能夠?qū)崿F(xiàn)紙牌游戲的類。以指導書中所提供的類的順序?qū)憽R驗楹竺娴念惱飼玫角懊鎸崿F(xiàn)的類。開始編寫一個類之前,請把該類的框架復制到MicrosoftVisualJ++6.0里。寫完一個類后,請編寫自己的測試程序來檢查它。也就是說,你的測試程序中得包含一個main方法來調(diào)用類中的各個方法,要用不同的對象、參數(shù)調(diào)用若干次。你遞交完作業(yè)后,我們會用我們的main方法來測試它們。在寫后面的類之前,對你寫的每一個類都進行測試。測試類不得分。給你的作業(yè)打分時不僅要看你的代碼是否能執(zhí)行,而且要看代碼的質(zhì)量。代碼的質(zhì)量要看你編碼的方式和你的代碼易讀、易理解性等方面。除此之外,你必須遵循以下的四個規(guī)則:
你不能創(chuàng)建,除了在該文檔描述的類之外的任何類。你不能在你的任何類中創(chuàng)建除了在該文檔描述的非私有方法之外的任何非私有方法。但是,如果你愿意可以編寫任意數(shù)量的私有方法。你不能修改任何public方法的屬性(變量名可以改)。你不能定義任何非私有實例變量或非私有靜態(tài)變量。每個類的分值已在其后的括弧中給出。其中,程序的質(zhì)量分占5分,剩余的分將給予程序的正確性。除此之外,學生如果破壞了以上4個規(guī)則之一,將從總分里扣除5到10分。然而,如果你提供的代碼,不能通過編譯,你將會得0分。重要信息:開始編程之前請仔細閱讀。你必須為該作業(yè)創(chuàng)建一個項目。你的項目名必須為:asn3否則,你的作業(yè)將不予評分,你將會得0分。作業(yè)中的所有類都必須加入該項目中,因此你的項目中應該包含以下文件:Assignment2.java
Card.java
CardGame.java
Confirm.java
Deck.java
Hand.java
Player.java
Rank.java
Round.java
Suit.java你必須遞交你所有的測試文件,因此你一定得交以下的測試文件:CardTest.java
ConfirmTest.java
DeckTest.java
HandTest.java
PlayerTest.java
RankTest.java
RoundTest.java
SuitTest.java三、作業(yè)中要編寫的類及其基本框架1.Rank類(12分)publicclassRank{/*該類的一個實例代表撲克牌的等級:Ace(A),King(K),Queen(Q),Jack(J),10...,3或2.*//*構(gòu)造方法*/publicRank(charaChar){/*初始化我的等級:按照給定的字符'A'->Ace,'K'->King,'Q'->Queen,'J'->Jack'T'->10,'9'->9...,'2'->2,來初始化我的等級,如果使用了無效字符,顯示*.*/
}publicRank(intanInt){/*初始化我的等級:給出對應參數(shù)值的等級,按照給定的數(shù)值13->Ace,12->King,11->Queen,10->Jack,9->Ten,8->Nine...,1->Deuce來初始化我的等級,如果使用了無效整數(shù),顯示*。如果參數(shù)值無效,輸出*號。*/
}/*實例方法*/publicintvalue(){/*返回我的值:Ace->13,King->12,...,Deuce->1.如果我有無效等級返回0。*/
}publicStringtoString(){/*返回能代表我的字符串,用大寫字母:A,K,Q,J,T,9,...或2表示。如果我無效,返回*號。由于定義了toString()方法,可以用PrintStream類中的方法print(Object)和println(Object)打印該類的實例。也就是說我們可以使用System.out.print(aRank)。*/
}}提示:你應該為該類只定義一個實例變量。想一下應該將實例變量定義為什么類型能夠更容易實現(xiàn)所需要的信息?你可以在該類中使用字符常量;常量不必定義為私有靜態(tài)常量privatestaticfinal。1.1用于測試Rank類的測試程序?qū)嵗齪ublicclassRankTest{/*該類是用于測試Rank類的例子。*//*主程序*/publicstaticvoidmain(Stringargs[]){/*Rank類的測試程序。*/RankaRank;
intvalue;
System.out.println();
System.out.println("=======RankTest=======");
aRank=newRank('Q');
System.out.print(aRank);
System.out.println("<Q");
System.out.print(aRank.value());
System.out.println("<11");
aRank=newRank(5);
System.out.print(aRank);
System.out.println("<6");
System.out.print(aRank.value());
System.out.println("<5");
aRank=newRank('B');
System.out.print(aRank);
System.out.println("<*");
System.out.print(aRank.value());
System.out.println("<0");
aRank=newRank(14);
System.out.print(aRank);
System.out.println("<*");
System.out.print(aRank.value());
System.out.println("<0");}}2.Suit類(12分)publicclassSuit{/*該類的一個實例代表一套標準撲克牌:黑桃、紅桃、方塊、梅花。*//*構(gòu)造方法*/publicSuit(charaChar){/*按照給定的字符's'->黑桃,'h'->紅桃,'d'->方塊,'c'->梅花來初始化我,如果使用了無效字符,顯示$。*/
}publicSuit(intanInt){/*按照給定的數(shù)值4->黑桃,3->紅桃,2->方塊,1->梅花來初始化我,如果使用了無效整數(shù),顯示$。*/}/*實例方法*/publicintvalue(){/*返回我的數(shù)值:黑桃->4,紅桃->3,方塊->2,梅花->1如果我無效,返回數(shù)值0。*/
}publicStringtoString(){/*用一個小寫字母返回能代表我的字符串:s,h,d,或c.如果我無效,返回字符串:$。由于定義了toString()方法,可以用PrintStream類中的方法:print(Object)println(Object)打印該類的實例。也就是說我們可以使用:System.out.print(aSuit)。*/
}
}提示:你可以在該類中使用字符常量;你不必將該常量定義為私有靜態(tài)常量privatestaticfinal。3.Card類(8分)publicclassCard{/*該類的一個實例代表一個有等級和花色的標準撲克牌。*//*構(gòu)造方法*/publicCard(RankaRank,SuitaSuit){/*用給定的等級和花色初始化我。*/
}/*實例方法*/publicStringtoString(){/*返回一個能代表的等級和花色的字符串。例如:"Ac"或"Kd"或"Ts"或"3h"等。由于定義了toString()方法,可以用PrintStream類中的方法print(Object)和println(Object)打印該類的實例。也就是說我們可以使用System.out.print(aCard)。*/
}publicintvalue(){/*用兩倍于我的花色加我的等級的值來響應我的牌。如:As的值為:13+2*4=21,2c的值為:1+2*1=3.*/
}
}提示:你可以在該類用2這個常數(shù);在Card類中,你不必用privatestaticfinal常量來替換2。假設變量sourceRank已經(jīng)包含了一個Rank對象,并且變量targetRank是一個空的Rank變量: RanksourceRank=newRank(7); RanktargetRank;若想把sourceRank中的對象的地址復制到targetRank,請用以下語句:targetRank=sourceRank;這也可以運用于Suit類的對象。TocopytheRankobjectreferredtobysourceRanktotargetRank,dothefollowing: targetRank=sourceRank; ThisappliestoSuitobjectsaswell.4.Player類(8分)publicclassPlayer{/*該類的一個對象代表撲克牌游戲中的一個玩家。*//*構(gòu)造方法*/publicPlayer(StringaString){/*用所給的字符串初始化我的姓名,并且所贏的次數(shù)為0。*/
}
/*實例方法*/publicvoidincrementScore(){/*將我贏的記錄次數(shù)加一。*/
}publicStringtoString(){/*以以下格式返回代表我的字符串:"Fred--游戲贏數(shù)=4"。由于該類定義了一個toString()方法,可以用PrintStream類中的print(Object)和println(Object)方法打印實例變量的值。也就是說我們可以用System.out.print(aPlayer)。*/
}
}提示:Player類的正確實現(xiàn)只需要很少的代碼。5.Confirm類(12分)publicclassConfirm{/*該類的一個實例會問用戶yes或no的問題。*//*構(gòu)造方法*/publicConfirm(Stringquestion){/*用所給的問題字符串初始化我。例如,這個問題字符串可以是:"Doyouwishtoquit"。*/
}/*實例方法*/publicbooleanask(){/*向用戶提出我的問題,如果用戶以yes響應返回true,以no響應返回false。要求用以下的形式提出問題"Doyouwishtoquit<y>esor<n>o?"。也就是在我的問題后面加上字符串"<y>esor<n>o?"。如果用戶輸入任何以"y"or"Y"開頭的單詞,我返回true,如果用戶輸入任何以"n"or"N"開頭的單詞,我返回false。如果用戶輸入的單詞不是"y","Y","n"或"N”開頭的,我就繼續(xù)提問,直到用戶輸入任何以"y","Y","n"或"N”開頭的單詞。*/
}}在剩余的類中將用到Vector和For語句。所以在做該作業(yè)之前你應該能先做完實驗7,實驗7中包含Vector和For語句。6.Hand類(12分)publicclassHand{/*該類的一個實例代表一輪撲克游戲。*//*構(gòu)造方法*/publicHand(){/*初始化我持有0張紙牌。*/
}/*實例方法*/publicvoidaddCard(CardaCard){/*將所發(fā)的牌作為最后一張牌加在我手中的牌里。*/
}publicCardremoveCard(){/*從我手中的牌里刪除第一張牌,并返回它。如果我手中沒有牌了返回null.*/
}publicStringtoString(){/*返回能代表我手中的牌的字符串,以它們發(fā)到我手中的順序,中間再加上"-"號。如:"As-Kc-3h-2d-5c"。如果沒有牌返回空字符串。由于該類定義了一個toString()方法,可以用PrintStream類中的print(Object)和println(Object)方法打印實例變量的值。也就是說我們可以用System.out.print(aHand)。*/
}publicintvalue(){/*返回我手中的牌的總合。*/
}
}提示:從Hand類看包含在Hand對象中的牌的個數(shù)沒有限制。7.Deck類(13分)publicclassDeck{/*該類的一個實例代表一副普通52張的紙牌。*//*構(gòu)造方法*/publicDeck(){/*以以下順序創(chuàng)建我的一個實例:As,Ks,Qs,...2s,Ah,...,2h,Ad,...,2d,Ac...,2c*/
}/*實例方法*/publicvoidshuffle(){/*洗牌,使我的牌處于隨機的順序。*/
}publicvoiddealHands(Vectorhands,intcount){/*為每個hands(人),分發(fā)給定數(shù)量的紙牌(由參數(shù)count指定),每次每人輪流發(fā)1張。你必須從一副紙牌的最上面開始發(fā)放。例如,如果牌還沒有被洗,方塊A應該在最頂層,因此其應該是發(fā)放的第一張牌。*/
}publicvoidgatherCards(Vectorhands){/*從每人手中收取紙牌,并把它們放在我里面。*/
}publicStringtoString(){/*按順序返回我里面的所有紙牌,用"-"分隔。例如:"As-Kc-3h-2d-5c-4h...".由于該類定義了一個toString()方法,可以用PrintStream類中的print(Object)和println(Object)方法打印實例變量的值。也就是說我們可以用System.out.print(aDeck)。*/
}
}8.Round類(13分)publicclassRound{/*該類的一個實例代表一輪紙牌游戲。*/
/*構(gòu)造方法*/publicRound(VectorplayerVector){/*把我初始化為由參數(shù)playerVector給定的玩家,并且為每個玩家創(chuàng)建一個空手。最后,創(chuàng)建一副新的單牌。*/
}/*實例方法*/publicvoidplay(){/*洗牌,給每個人發(fā)5張牌,并且顯示每個玩家手中的牌和玩家,一行顯示一個玩家,以以下格式:2d-Ac-5s-4d-Thvalue=45Fred--gameswon=4顯示完每人手中的牌后,增加贏家的贏牌次數(shù),然后,以以下格式顯示贏家的信息:贏家是:Fred--gameswon=5注意:如果兩個玩家打成平局,宣布任意一個為贏家。最后,把所有的牌返回給Deck.*/
}
}9.CardGame類(10分)publicclassCardGame{/*該類的一個實例為一個紙牌游戲。由一人和3個由計算機生成的對手進行比賽,對手的名字為:1bot,2bot和3bot。用戶可以想玩幾輪就玩幾輪,并且每一輪過后游戲的成績都得被更新。如果想知道CardGame是如何工作的,請看樣例。*//*構(gòu)造方法*/publicCardGame(){/*把我初始化為能夠玩的狀態(tài)。*/
}/*實例方法*/publicvoidplay(){/*玩紙牌游戲。*/
}
}提示請記住構(gòu)造方法用于初始化其對象的狀態(tài)。9.1用于測試CardGame類的測試代碼:publicclassAssignment2{/*該類是測試紙牌游戲類的測試程序。它只測試了最終的CardGame類。*//*主程序*/publicstaticvoidmain(Stringargs[]){/*程序開始。*/CardGamegame;game=newCardGame();game.play();}}以下為紙牌游戲的運行樣例。你的紙牌游戲的功能應該跟其完全一樣。黑體部分為你的輸入內(nèi)容。WelcometotheCardGame.Whatisyourname?FredWellFredwearegoingtoplayacardgame.
Doyouwantinstructions,<y>esor<n>o?sure
Doyouwantinstructions,<y>esor<n>o?yes
Therearethreecomputerplayersandyou.
Eachplayerwillreceivefivecards.
Theplayerwiththehighesthandscorewillbeassignedonegamepoint.
Youwillthenhavethechoiceofplayinganotherroundorquitting.
Thehandscorewillbethesumofthevaluesofeachcardinyourhand.
Thevalueofacardisthevalueofitsrankplustwicethevalueofitssuit.
value(Ace)=13,value(King)=12,value(Queen)=11,value(Jack)=10,
value(10)=9,value(9)=8...value(2)=1
value(spade)=4,value(heart)=3,value(diamond)=2,value(club)=1.
PresstheENTERkeytocontinue...
Kd-4s-8d-6s-4cvalue=56Fred--gameswon=0
Js-9s-4d-3c-6cvalue=521bot--gameswon=0
7d-Qh-2d-2c-5hvalue=452bot--gameswon=0
Qs-2s-6d-3h-5svalue=573bot--gameswon=0
Thewinneris:3bot--gameswon=1
Doyouwanttoplayanotherround,<y>esor<n>o?Y
3d-As-7c-Qd-Advalue=67Fred--gameswon=0
8d-Js-Jh-Qs-Acvalue=791bot--gameswon=0
3s-3c-Jd-6h-Tdvalue=522bot--gameswon=0
5c-4h-4d-7h-2svalue=433bot--gameswon=1
Thewinneris:1bot--gameswon=1
Doyouwanttoplayanotherround,<y>esor<n>o?YES
9h-Td-5h-6s-Qcvalue=63Fred--gameswon=0
Kd-8h-3c-Qs-Asvalue=731bot--gameswon=1
Th-Ks-Js-2d-Jcvalue=702bot--gameswon=0
4c-8c-Jd-2s-9dvalue=493bot--gameswon=1
Thewinneris:1bot
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025論土地承包經(jīng)營合同
- 關(guān)于承包農(nóng)田合同范例
- 學校采購床品合同范例
- 內(nèi)部交易合同范例
- 銅仁學院《足球運動訓練》2023-2024學年第一學期期末試卷
- 銅陵學院《身邊的化學》2023-2024學年第一學期期末試卷
- 第十冊第四單元《分數(shù)的基本性質(zhì)》說課稿
- 通化醫(yī)藥健康職業(yè)學院《銀行業(yè)務模擬實訓》2023-2024學年第一學期期末試卷
- 長沙2024年湖南瀏陽市金陽醫(yī)院招聘66人歷年參考題庫(頻考版)含答案解析
- 鐵嶺衛(wèi)生職業(yè)學院《微電子制造技術(shù)》2023-2024學年第一學期期末試卷
- 2024數(shù)字中國數(shù)字城市競爭力研究報告
- 2025屆高考語文復習之變換句式
- 動靜脈內(nèi)瘺狹窄
- 大學啟示錄:如何讀大學?學習通超星期末考試答案章節(jié)答案2024年
- 勞動關(guān)系協(xié)調(diào)師競賽技能競賽考試題及答案
- 數(shù)學四年級上冊《角的分類》同步練習題(含答案)
- 2024-2030年中國游樂園行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 山東省淄博市2023-2024學年七年級上學期期末數(shù)學試題(含答案)
- 2024中美獨角獸公司發(fā)展分析報告
- 英語不定式、動名詞、現(xiàn)在分詞和過去分詞公開課教案教學設計課件案例試卷
- 超長期特別國債項目
評論
0/150
提交評論