《Java語言編程基礎(chǔ)立體化實用教程》課件1.6 學(xué)生成績查詢與寫入文件功能_第1頁
《Java語言編程基礎(chǔ)立體化實用教程》課件1.6 學(xué)生成績查詢與寫入文件功能_第2頁
《Java語言編程基礎(chǔ)立體化實用教程》課件1.6 學(xué)生成績查詢與寫入文件功能_第3頁
《Java語言編程基礎(chǔ)立體化實用教程》課件1.6 學(xué)生成績查詢與寫入文件功能_第4頁
《Java語言編程基礎(chǔ)立體化實用教程》課件1.6 學(xué)生成績查詢與寫入文件功能_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

任務(wù)六

學(xué)生成績查詢與寫入文件功能一、任務(wù)描述

在任務(wù)五的基礎(chǔ)上,完成學(xué)生成績查詢功能和將成績寫入文件的功能。這里所說的成績查詢功能并非從文件中查詢已有數(shù)據(jù),而是查詢本次輸入的所有數(shù)據(jù),待打印出來檢查無誤后,再調(diào)用寫入文件功能,將學(xué)生成績信息寫入txt文件中。任務(wù)六

學(xué)生成績查詢與寫入文件功能二、任務(wù)分析操作步驟如下:步驟一:添加select()方法,完成成績查詢功能;步驟二:添加writeFile()方法,完成成績信息寫入txt文件功能。任務(wù)六

學(xué)生成績查詢與寫入文件功能三、任務(wù)實施

任務(wù)概覽:步驟一:添加select()方法,完成成績查詢功能;publicvoidselect()throwsIOException{ this.judge(); System.out.println("學(xué)生信息列表\r\n\r\n學(xué)號\t\t姓名\t\t班級\t\tsql成績\t\tjava成績\t\t網(wǎng)頁制作成績\t\t體育成績\r\n"); for(inti=0;i<n;i++){ System.out.println(s[i].getSno()+"\t\t"+s[i].getName()+"\t\t"+s[i].getClassname()+"\t\t"+s[i].getSql()+"\t\t"+s[i].getJava()+"\t\t"+s[i].getWebdesign()+"\t\t\t"+s[i].getGym()); } System.out.println("系統(tǒng)返回主菜單!"); System.out.println(); this.menu(); }publicclassStudent{}publicclassSMS{menu();//主菜單add();//添加學(xué)生信息select();//顯示本次錄入學(xué)生信息modify();//修改學(xué)生信息delete();//刪除學(xué)生信息writeFile();//將確認(rèn)無誤的學(xué)生信息寫入txt文件judge();//判斷本次是否錄入了學(xué)生信息main();}任務(wù)六

學(xué)生成績查詢與寫入文件功能三、任務(wù)實施publicvoidwriteFile()throwsIOException{ FileWriterfw=newFileWriter(file,true);//將學(xué)生信息錄入指定的txt文件中 if(file.exists()&&file.length()==0){ fw.write("學(xué)生信息列表\r\n\r\n學(xué)號\t\t姓名\t\t班級\t\tsql成績\t\tjava成績\t\t網(wǎng)頁制作成績\t\t體育成績\r\n"); }

for(inti=0;i<n;i++){fw.write(s[i].getSno()+"\t\t"+s[i].getName()+"\t\t"+s[i].getClassname()+"\t\t"+s[i].getSql()+"\t\t"+s[i].getJava()+"\t\t\t"+s[i].getWebdesign()+"\t\t"+s[i].getGym()+"\r\n"); } fw.flush(); fw.close(); System.out.println("此次錄入學(xué)生成績已存入txt文件!"); }步驟二:添加writeFile()方法,完成成績錄入情況顯示功能。任務(wù)六

學(xué)生成績查詢與寫入文件功能三、任務(wù)實施【注意】1、定義fw時,其關(guān)聯(lián)文件“C:\\stu.txt”如果不存在則提示錯誤,如下圖所示,因此C盤下的txt文件在關(guān)聯(lián)前需要先建立同名的txt文件,而其他盤則不會。2、文章讀寫操作需要對可能出現(xiàn)的異常做出處理,通常的做法是向上拋出異常,throws

Exception或者利用try...catch...finally進行主動處理。3、設(shè)置學(xué)生對象的屬性的值,因其是私有的,因此應(yīng)采用setter方法,而不能用賦值符號直接賦值。圖6-1文件不存在提示異常任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識6.4.1java中String的常用方法

序號方法聲明方法描述1charcharAt(intindex)返回指定索引處的char值。2intcompareTo(Objecto)把這個字符串和另一個對象比較。3Stringconcat(Stringstr)將指定字符串連接到此字符串的結(jié)尾。4booleancontains(CharSequencecs)判斷此字符串是否包含指定字符序列5booleanequals(ObjectanObject)將此字符串與指定的對象比較。6booleanequalsIgnoreCase(StringanotherString)將此String與另一個String比較,不考慮大小寫。7intindexOf(intch)返回指定字符在此字符串中第一次出現(xiàn)處的索引。8intindexOf(intch,intfromIndex)返回在此字符串中第一次出現(xiàn)指定字符處的索引,從指定的索引開始搜索。9intindexOf(Stringstr)返回指定子字符串在此字符串中第一次出現(xiàn)處的索引。10intindexOf(Stringstr,intfromIndex)返回指定子字符串在此字符串中第一次出現(xiàn)處的索引,從指定的索引開始。11intlastIndexOf(intch)返回指定字符在此字符串中最后一次出現(xiàn)處的索引。12intlastIndexOf(intch,intfromIndex)返回指定字符在此字符串中最后一次出現(xiàn)處的索引,從指定的索引處開始進行反向搜索。13intlastIndexOf(Stringstr)返回指定子字符串在此字符串中最右邊出現(xiàn)處的索引。14intlastIndexOf(Stringstr,intfromIndex)返回指定子字符串在此字符串中最后一次出現(xiàn)處的索引,從指定的索引開始反向搜索。表6-1String中的常用方法任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識6.4.1java中String的常用方法

序號方法聲明方法描述15intlength()返回此字符串的長度。16booleanmatches(Stringregex)告知此字符串是否匹配給定的正則表達式。17Stringreplace(charoldChar,charnewChar)返回一個新的字符串,它是通過用newChar替換此字符串中出現(xiàn)的所有oldChar得到的。18String[]split(Stringregex)根據(jù)給定正則表達式的匹配拆分此字符串。19String[]split(Stringregex,intlimit)根據(jù)匹配給定的正則表達式來拆分此字符串。20Stringsubstring(intbeginIndex)返回一個新的字符串,它是此字符串的一個子字符串。21Stringsubstring(intbeginIndex,intendIndex)返回一個新字符串,它是此字符串的一個子字符串。22StringtoLowerCase()使用默認(rèn)語言環(huán)境的規(guī)則將此String中的所有字符都轉(zhuǎn)換為小寫。23StringtoLowerCase(Localelocale)使用給定Locale的規(guī)則將此String中的所有字符都轉(zhuǎn)換為小寫。24StringtoString()返回此對象本身(它已經(jīng)是一個字符串!)。25StringtoUpperCase()使用默認(rèn)語言環(huán)境的規(guī)則將此String中的所有字符都轉(zhuǎn)換為大寫。26StringtoUpperCase(Localelocale)使用給定Locale的規(guī)則將此String中的所有字符都轉(zhuǎn)換為大寫。27Stringtrim()返回字符串的副本,忽略前導(dǎo)空白和尾部空白。28staticStringvalueOf(primitivedatatypex)返回給定datatype類型x參數(shù)的字符串表示形式。表6-1String中的常用方法任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識

publicclassExp61{ publicstaticvoidmain(String[]args){ Stringstr="banana"; inta=101; char[]charArray=str.toCharArray();//字符串轉(zhuǎn)換為字符數(shù)組 System.out.print("將字符串轉(zhuǎn)換為字符數(shù)組的遍歷結(jié)果:"); for(inti=0;i<charArray.length;i++){ if(i!=charArray.length-1){ //如不是數(shù)組最后的一個元素,則加逗號 System.out.print(charArray[i]+","); }else{ //如是最后一個元素,則不加逗號 System.out.print(charArray[i]); } } System.out.println(); System.out.println(String.valueOf(a));//將int型數(shù)據(jù)轉(zhuǎn)換為String類型 System.out.println(str.toUpperCase());//將字符串str轉(zhuǎn)換為大寫字母 }}運行結(jié)果:【例6.1】字符串轉(zhuǎn)換操作任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識【例6.2】字符替換、去除空格、判斷等操作publicclassExp62{ publicstaticvoidmain(String[]args){ Stringstr="Tomorrowwillbebetter."; Stringstr1=newString("ok"); Stringstr2=newString("ok"); //去除字符串前后空格 System.out.println(str.trim()); //將英文句號替換為英文嘆號 System.out.println(str.replace('.','!')); //判斷字符串是否為空 System.out.println(str.isEmpty()); //判斷兩個字符串是否相等 System.out.println(str.equals(str1)); //以下結(jié)果為true,因為str1和str2內(nèi)容相同 System.out.println(str1.equals(str2)); //以下結(jié)果為false,因為str1與str2是兩個對象 System.out.println(str1==str2); //判斷是否包含指定字符序列 System.out.println(str.contains("be"));

}}

運行結(jié)果:【注意】

在程序中可以通過==和equals()兩種方式對字符串進行比較,但這兩種方式有明顯的區(qū)別。equals()方法用于比較兩個字符串的字符值是否相等,==方法用于比較兩個字符串對象的內(nèi)存地址是否相同。任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識

在程序開發(fā)中,經(jīng)常需要對文本內(nèi)容進行讀取,如果想從文件中直接讀取字符就可以用字符流FileReader,通過該類可以從文件中讀取一個或一組字符。如果需要寫入字符需要使用FileWriter。FileWriter類創(chuàng)建字符輸出流類對象和已存在的文件相關(guān)聯(lián)。構(gòu)造方法1:FileWriterfw=newFileWriter(StringfileName);例如:FileWriterfw=newFileWriter("C:\\demo.txt");下面的構(gòu)造方法2將創(chuàng)建字符輸出流類對象和已存在的文件相關(guān)聯(lián),并設(shè)置該流對文檔的操作是否為續(xù)寫。構(gòu)造方法2:FileWriterfw=newFileWriter(StringfileName,booleanappend);例如:FileWriterfw=newFileWriter("C:\\demo.txt",true);

6.4.2FileWriter類任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識【注意】(1)使用FileWriter時,如果文件不存在,則會先創(chuàng)建文件,再寫入數(shù)據(jù);(2)根據(jù)構(gòu)造方法1構(gòu)造FileWriter,如果文件存在,則會先清空文件內(nèi)容,再進行寫入;(3)根據(jù)構(gòu)造方法2構(gòu)造FileWriter,第二個參數(shù)為true時,對文檔再次寫入時,會在該文檔的結(jié)尾續(xù)寫,并不會覆蓋掉之前的數(shù)據(jù)。

6.4.2FileWriter類表6-2FileWriter的常用方法方法功能voidwrite(Stringstr)寫入字符串。當(dāng)執(zhí)行完此方法后,字符數(shù)據(jù)還并沒有寫入到目的文檔中去。此時字符數(shù)據(jù)會保存在緩沖區(qū)中。此時再使用刷新方法就可以使數(shù)據(jù)保存到目的文件中去。voidflush()刷新該流中的緩沖。將緩沖區(qū)中的字符數(shù)據(jù)保存到目的文件中去。voidclose()

關(guān)閉此流。在關(guān)閉前會先刷新此流的緩沖區(qū)。在關(guān)閉后,再寫入或者刷新的話,會拋出IOException異常。任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識【例6.3】importjava.io.FileWriter;importjava.io.IOException;

publicclassExp63{ publicstaticvoidmain(String[]args)throwsIOException{ //創(chuàng)建字符輸出流對象,并指定輸出文件 FileWriterfw=newFileWriter("D:\\stu.txt"); //將定義的字符寫入文件 fw.write("葡萄美酒夜光杯,\r\n"); fw.write("欲飲琵琶馬上催,\r\n"); fw.write("醉臥沙場君莫笑,\r\n"); fw.write("古來征戰(zhàn)幾人回。\r\n"); //關(guān)閉流 fw.close(); }}

6.4.2FileWriter類運行結(jié)果:任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識

6.4.3Filereader1.構(gòu)造方法FileReaderfr=newFileReader(StringfileName);//使用帶有指定文件的String參數(shù)的構(gòu)造方法。創(chuàng)建該輸入流對象,并關(guān)聯(lián)源文件。2.主要方法intread();//讀取單個字符。返回作為整數(shù)讀取的字符,如果已達到流末尾,則返回-1。intread(char[]cbuf);//將字符讀入數(shù)組。返回讀取的字符數(shù)。如果已經(jīng)到達尾部,則返回-1。voidclose();//關(guān)閉此流對象。釋放與之關(guān)聯(lián)的所有資源。任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識【例6.4】importjava.io.FileReader;

publicclassExp64{ publicstaticvoidmain(String[]args)throwsException{ //創(chuàng)建FileReader對象,并指定需要讀取的文件 FileReaderfr=newFileReader("D://stu.txt"); //定義一個int類型的變量len,其初始化為0 intlen=0; //通過循環(huán)來判斷是否讀取到了文件末尾 while((len=fr.read())!=-1){ //輸出讀取的字符 System.out.print((char)len); } //關(guān)閉流 fr.close(); }

}

任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識【例6.5】importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;

publicclassExp65{

/** *將D:\\的stu.txtcopy到E:\\下 * *首先創(chuàng)建FileReader讀取數(shù)據(jù)的讀取流對象。 * */ publicstaticvoidmain(String[]args){ FileReaderfr=null; FileWriterfw=null; try{ fr=newFileReader("D:\\stu.txt"); fw=newFileWriter("E:\\you.txt"); //讀一個字符,寫一個字符方法 intch=0; while((ch=fr.read())!=-1){ fw.write(ch); } char[]buf=newchar[1024]; intlen=0;

任務(wù)六

學(xué)生成績查詢與寫入文件功能四、相關(guān)知識//讀一個數(shù)組大小,寫一個數(shù)組大小方法。 while((len=fr.read(buf))!=-1){ fw.write(buf,0,len); } }catch(Exceptione){ System.out.println(e.toString()); }finally{ if(fr!=null) try{ fr.close(); }catch(Exceptione1){ thrownewRuntimeException("關(guān)閉失?。?); } if(fw!=null) try{ fw.close(); }catch(IOExceptione2){ thrownewRuntimeException("關(guān)閉失?。?); } } }}

任務(wù)六

學(xué)生成績查詢與寫入文件功能五、任務(wù)訓(xùn)練

1、編寫程序,模擬銀行ATM自動存取款機。

參考代碼:importjava.util.Scanner;classATM{ privateStringid; privateStringname; privatedoublebalance; privateintpassword; publicStringgetId(){ returnid; } publicStringgetName(){ returnname; } publicdoublegetBalance(){ returnbalance; } publicintgetPassword(){ returnpassword; } publicATM(Stringid,Stringname,doublebalance,intpassword){ super(); this.id=id; =name; this.balance=balance; this.password=password; }任務(wù)六

學(xué)生成績查詢與寫入文件功能五、任務(wù)訓(xùn)練

publicvoidmenu(){ System.out.println("========================"); System.out.println("\t1.存款"); System.out.println("\t2.取款"); System.out.println("\t3.查詢余額"); System.out.println("\t4.修改密碼"); System.out.println("\t5.退出"); System.out.println("請輸入數(shù)字1-5:"); System.out.println("========================"); } publicvoidDrawMoney(doublemoney){//取款方法 balance=balance-money; System.out.println("成功取出"+money+"元"); } publicvoidDepositMoney(doublemoney){//存款方法 balance=balance+money; System.out.println("成功存入"+money+"元"); } publicvoidChangePassword(intnewpassword1,intnewpassword2){//修改密碼方法 if((newpassword1==newpassword2)&&(newpassword1!=password)){ password=newpassword1; System.out.println("密碼修改成功!"); } else{ System.out.println("輸入有誤,請重新修改密碼!"); } }}任務(wù)六

學(xué)生成績查詢與寫入文件功能五、任務(wù)訓(xùn)練

publicclassATMTest{ publicstaticvoidmain(String[]args){ ATMatm=newATM("123456789","張麗",2780,123456); intcount=3;//密碼最多可輸入三次 System.out.println("歡迎使用銀行ATM自助服務(wù)"); while(true){//循環(huán)輸入密碼 System.out.println("請輸入密碼:"); Scannersc=newScanner(System.in); intpassword=sc.nextInt(); if(password==atm.getPassword()){ System.out.println("賬戶:"+atm.getId()); System.out.println("戶名:"+atm.getName()); atm.menu(); while(true){//循環(huán)取款存款方法 System.out.println("1.取款2.存款3.查詢4.修改密碼5.退出"); intinput=sc.nextInt(); switch(input){ case1: System.out.println("輸入取款金額"); intmoney1=sc.nextInt(); atm.DrawMoney(money1); break; case2: System.out.println("輸入存款金額"); intmoney2=sc.nextInt(); atm.DepositMoney(money2); break;

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論