版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p> 課程設(shè)計名稱: java課程設(shè)計 </p><p> 專 業(yè) 班 級 : 計科卓F1201班級 </p><p> 學 生 姓 名 : </p><p> 學 號 : 2012160
2、10109 </p><p> 指 導 教 師 : </p><p> 課程設(shè)計時間: 2014.6.30-2014.7.11 </p><p><b> 目錄</b></p><p> 目錄 ------------------
3、------ 1</p><p> 課程設(shè)計任務(wù)書 ------------------------- 2</p><p> 一、需求分析 ------------------------- 3</p><p> 二、概要設(shè)計 -------------------------
4、 4</p><p> 三、開發(fā)語言 ------------------------- 4</p><p> 四、詳細設(shè)計 ------------------------ 4</p><p> 五、調(diào)試與分析 ------------------------- 13</p>
5、<p> 六、功能測試 ------------------------- 14</p><p> 七、結(jié)論與心得 -------------------------- 15</p><p> 八、參考資料 -------------------------- 16</p><p>
6、 九、成績評價表 -------------------------- 17</p><p> 計算機科學技術(shù)(卓越計劃) 專業(yè)課程設(shè)計任務(wù)書</p><p><b> 文件管理系統(tǒng)</b></p><p><b> 一、需求分析</b></p><p> 題目要求對文件
7、進行復制,壓縮,解壓等操作,相當于一個簡單的文管理系統(tǒng)。對此我新加了剪切,刪除,和重命名等功能。程序的整體輸入控制是采用圖形用戶界面,同時為了減少用戶輸入時不必要的錯誤,程序還支持文件選擇器功能,用戶可以直接點擊相應的按鈕選擇相應的文件或文件夾。</p><p> 復制功能實現(xiàn)了將文件復制到指定的文件夾中(包括文件夾的復制和單個文件的復制),同時允許用戶選擇不同類型的文件復制。其中有全文件復制(文件夾里所有文件
8、全部復制)、無空文件夾的文件復制(即復制的文件夾不含空文件夾)、指定參數(shù)的文件復制(即文件夾復制時可以指定相應的類型參數(shù)doc、txt等選擇要被復制的文件類型)。</p><p> 壓縮功能實現(xiàn)將文件壓縮到指定路徑(包括單個文件的壓縮和文件夾的壓縮)。</p><p> 解壓功能實現(xiàn)將指定的壓縮文件解壓到指定的路徑</p><p> 剪切功能實現(xiàn)將制訂文件夾下
9、的文件剪切到制訂的文件夾下,與復制不同的,剪切后該文件只存在于剪切后的文件夾。</p><p> 刪除功能實現(xiàn)了文件的刪除和文件夾刪除,其中文件的刪除可以直調(diào)用文件的方法刪除文件,而文件夾的刪除必須遞歸刪除文件夾中的所有文件,然后再層層調(diào)用方法刪除文件夾。</p><p> 重命名功能實現(xiàn)對指定文件夾下的文件的重命名,如果該文件夾下已經(jīng)存在該文件名,則提示重新命名</p>
10、<p><b> 二、概要設(shè)計</b></p><p><b> 圖2-1設(shè)計模塊圖</b></p><p> 創(chuàng)建 Menu對象</p><p><b> 選擇功能</b></p><p> 創(chuàng)建 Copy 創(chuàng)建 Zip 創(chuàng)建 Un
11、zip 創(chuàng)建 Cut 創(chuàng)建 Delete 創(chuàng)建Rename</p><p> 調(diào)用compactFile 調(diào)用 Unzip changeDirectory renameFile </p><p> 調(diào)用 copy 調(diào)用 empty 調(diào)用 extcopy 調(diào)用 delFile 調(diào)用 del
12、Dir</p><p><b> 圖2-2系統(tǒng)流程圖</b></p><p> 三、運行環(huán)境、開發(fā)語言</p><p> Eclipse、Java</p><p><b> 四、詳細設(shè)計</b></p><p><b> 1 程序清單</b>&
13、lt;/p><p> 表4-1主要列出了各個文件實現(xiàn)的功能</p><p><b> 表4-1 程序清單</b></p><p> 表4-2主要列出Copytest.java文件中各個方法的所實現(xiàn)的功能。其余文件的 方法基本都是用于圖形用戶界面的設(shè)置,在此就不一一例舉。</p><p> 表4-2 Copytest
14、.java中方法清單</p><p><b> 2 主要代碼</b></p><p><b> 2.1菜單界面</b></p><p> 運行程序時會彈出一個菜單界面,供用戶選擇相應的文件操作。包括復制、壓縮、解壓、剪切、刪除、重命名。該功能截圖如圖2-1所示.</p><p> 圖4-1
15、 菜單功能界面</p><p><b> 2.2復制界面</b></p><p> 點擊復制選項,會彈出窗口,如圖4-2所示。在文本框里輸入相應信息,或者直接點擊相應的按鈕,通過文件選擇器選擇文件,獲取路徑信息,如圖4-3所示。具體代碼如下:</p><p> 圖4-2 文件復制 圖4-3文件選
16、擇器選擇文件</p><p> 復制功能代碼,用于調(diào)用</p><p> //單個文件復制,用于調(diào)用</p><p> public static void doCopy(String path1,String path2,String name){</p><p> Reader in= null;</p><p
17、> Writer out= null;</p><p><b> try {</b></p><p> in = new FileReader(path1+"/"+name);</p><p> out = new FileWriter(path2+"/"+name);</p>
18、<p> int len= 0;</p><p> char[] c= new char[1024];</p><p> while((len= in.read(c))!=-1){</p><p> out.write(c,0,len);</p><p><b> }</b></p>
19、<p> } catch (IOException e) {</p><p> e.printStackTrace();</p><p><b> }finally{</b></p><p><b> try {</b></p><p> in.close();</p>
20、;<p> out.close();</p><p> } catch (IOException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p
21、><b> }</b></p><p> ?。?)無參數(shù)的文件復制,遞歸遍歷文件夾,調(diào)用doCopy()方法實現(xiàn)復制</p><p> //無參數(shù)文件夾復制(含空文件夾)</p><p> public static void copy(String frompath,String topath){</p><p
22、> File ffile = new File(frompath);</p><p> File[] fs = ffile.listFiles();</p><p> if(fs != null){</p><p> for(File f : fs){</p><p> if(f.isDirectory()){</p
23、><p> new File(topath +"/"+ f.getName()).mkdirs();</p><p> copy(f.getAbsolutePath(),topath +"/"+ f.getName());</p><p><b> }</b></p><p>&
24、lt;b> else{</b></p><p> doCopy(frompath,topath,f.getName()); //執(zhí)行文件復制操作</p><p><b> }</b></p><p><b> }</b></p><p><b> }&l
25、t;/b></p><p><b> }</b></p><p> (3)功能是在全文件復制的基礎(chǔ)上改動的,在方法中增加判斷語句,如果是空文件夾就不復制。</p><p> //無空文件夾的復制</p><p> public static void emptycopy(String frompath,St
26、ring topath){</p><p> File ffile = new File(frompath);</p><p> File[] fs = ffile.listFiles();</p><p> if(fs != null){</p><p> for(File f : fs){</p><p>
27、; if(f.isDirectory()){</p><p> if((f.listFiles()).length>0){</p><p> new File(topath +"/"+ f.getName()).mkdirs();</p><p> emptycopy(f.getAbsolutePath(),topath +&q
28、uot;/"+ f.getName());</p><p><b> }</b></p><p><b> }</b></p><p><b> else{</b></p><p> doCopy(frompath,topath,f.getName());
29、//執(zhí)行文件復制操作</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> ?。?)從用戶輸入操作獲取
30、要被復制的文件類型,然后通過數(shù)組傳遞參數(shù),根據(jù)參數(shù)來限制復制的文件類型</p><p> //有參數(shù)限制的文件復制</p><p> public static void extcopy(String frompath,String topath,String[] temp){</p><p> File fromfile = new File(frompa
31、th);</p><p> File[] fs = fromfile.listFiles();</p><p> if(fs != null){</p><p> for(File f : fs){</p><p> //如果是文件夾則進行遞歸調(diào)用 </p><p> if(f.isDirectory()){
32、</p><p> if((f.listFiles()).length>0){</p><p> new File(topath +"/"+ f.getName()).mkdirs();</p><p> extcopy(f.getAbsolutePath(),topath +"/"+ f.getName(),
33、temp);</p><p><b> }</b></p><p><b> }</b></p><p> //如果是文件則進行判斷</p><p> else{ </p><p> for(int i=0;i<temp.length
34、;i++){</p><p> if(f.getName().endsWith(temp[i])){ //過濾不符合要求的文件</p><p> doCopy(frompath,topath,f.getName());//執(zhí)行文件復制操作 </p><p><b> }</b></p
35、><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&g
36、t;<p><b> 2.3 壓縮界面</b></p><p> 點擊壓縮選項,會彈出窗口,如圖4-4所示。在文本框里輸入相應信息,或者直接點擊相應的按鈕,通過文件選擇器選擇文件,獲取路徑信息,類似可參照圖4-3。具體代碼如下:</p><p> 圖4-4 文件壓縮界面</p><p> ?。?)通過該方法傳遞路徑信息,同時
37、調(diào)用遞歸遍歷的方法</p><p><b> //文件壓縮</b></p><p> public static void compactFile(String source,String target){</p><p><b> try{</b></p><p> out = new Z
38、ipOutputStream(new BufferedOutputStream</p><p> (new FileOutputStream(target))); // 創(chuàng)建壓縮文件輸出流</p><p> recursionFile(source,source); // 遞歸遍歷文件</p><p> out.close();// 關(guān)閉輸入流<
39、/p><p> }catch(Exception e){</p><p> System.out.println("壓縮出現(xiàn)錯誤!");</p><p><b> }</b></p><p><b> }</b></p><p> ?。?)該方法實現(xiàn)遞
40、歸遍歷文件夾,同時判斷文件是否為文件夾,如果是,就添加壓縮項,如果不是就調(diào)用單個文件壓縮的方法</p><p><b> //壓縮文件夾</b></p><p> public static void recursionFile(String filepath,String origin) throws Exception {</p><p&g
41、t; //該方法的作用是遞歸遍歷文件 </p><p> String[] temp=origin.split("/"); //將文件路徑以“/”分割為若干字符串</p><p> String origin1=temp[temp.length-1]; //要保留的路徑值</p><p> File file = new Fi
42、le(filepath);</p><p> File[] files = file.listFiles();</p><p> for (File f : files) {</p><p> if (!f.isDirectory()) {</p><p> // 如果是文件, 則執(zhí)行壓縮操作</p><p>
43、 ZipAFile(f,origin);</p><p><b> } else {</b></p><p> // 如果是目錄, 則首先將目錄添加到壓縮項中</p><p> out.putNextEntry(new ZipEntry(f.getAbsolutePath().substring(</p><p>
44、; f.getAbsolutePath().indexOf(origin1))+ "/"));</p><p> recursionFile(f.getAbsolutePath(),origin);</p><p><b> }</b></p><p><b> }</b></p>
45、<p><b> }</b></p><p> ?。?)該方法用于實現(xiàn)單個文件壓縮</p><p><b> //壓縮文件</b></p><p> public static void ZipAFile(File file,String origin) throws IOException {
46、</p><p> String[] temp=origin.split("/"); //將文件路徑以“/”分割為若干字符串</p><p> String origin1=temp[temp.length-1]; //要保留的路徑值</p><p> in = new FileInputStream(file); //
47、創(chuàng)建文件源輸入流</p><p> out.putNextEntry(new ZipEntry(file.getAbsolutePath().substring(</p><p> file.getAbsolutePath().indexOf(origin1)))); //將當前文件添加到壓縮項</p><p> byte[] b = new byte[1
48、024];</p><p><b> int len;</b></p><p> while ((len = in.read(b)) != -1) {</p><p> out.write(b, 0, len);</p><p><b> }</b></p><p>
49、 in.close();// 關(guān)閉輸入流</p><p><b> }</b></p><p><b> 2.4解壓界面</b></p><p> 點擊解壓選項,會彈出窗口,如圖4-5所示。在文本框里輸入相應信息,或者直接點擊相應的按鈕,通過文件選擇器選擇文件,獲取路徑信息,類似可參照圖2-3。具體代碼如下:<
50、;/p><p> 圖4-5 文件解壓界面</p><p> 通過傳遞的路徑信息完成解壓操作</p><p><b> //解壓文件</b></p><p> public static void UnZip(String source,String target){</p><p><b
51、> try{</b></p><p> ZipFile zf = new ZipFile(source); //創(chuàng)建一個指向zip文件的ZipFile對象</p><p> Enumeration entriesEnum = zf.entries(); //得到該壓縮文件的所有壓縮項</p><p> while(entriesEnu
52、m.hasMoreElements()){</p><p> ZipEntry entry=(ZipEntry)entriesEnum.nextElement();</p><p> if(entry.isDirectory()){ //如果是文件夾</p><p> new File(target+"/"+entry.getName(
53、)).mkdirs();</p><p><b> }</b></p><p> else{ //如果是文件</p><p> InputStream in =zf.getInputStream(entry); //得到指向該內(nèi)容的流</p><p> BufferedOutputStream out
54、 = new BufferedOutputStream(</p><p> new FileOutputStream(target + "/"+ entry.getName()));</p><p> byte[] b =new byte[8*1024];</p><p> int len = 0;</p><p>
55、 while((len=in.read(b))!=-1){</p><p> out.write(b,0,len);</p><p><b> }</b></p><p> in.close();</p><p> out.close();</p><p><b> }<
56、;/b></p><p><b> }</b></p><p> }catch(IOException e){</p><p> JOptionPane.showMessageDialog(null,"解壓出現(xiàn)錯誤!");</p><p><b> }</b><
57、;/p><p><b> }</b></p><p><b> 2.5刪除界面</b></p><p> 點擊刪除選項,會彈出窗口,如圖4-6所示。選擇相應的刪除類型,在文本框里輸入相應信息?;蛘咧苯狱c擊相應的按鈕,通過文件選擇器選擇文件,獲取路徑信息,類似可參照圖4-3。具體代碼如下:</p><p
58、> 圖4-6 文件刪除界面</p><p> ?。?)該方法主要調(diào)用了File的delete()方法刪除單個文件</p><p><b> //刪除文件</b></p><p> public static void delFile(String filepath){</p><p> File file
59、= new File(filepath);</p><p> if(file.exists()&&file.isFile())</p><p> file.delete();</p><p><b> }</b></p><p> ?。?)該方法主要調(diào)用File的delete()刪除文件夾,不同的是
60、要刪除文件夾,必須保證里面無文件和子目錄,所以需要遞歸遍歷鎮(zhèn)整個文件夾,逐層刪除各級文件夾</p><p><b> //刪除文件夾目錄</b></p><p> public static void delDir(String path){</p><p> File dir =new File(path);</p>&l
61、t;p> if(dir.exists()){</p><p> File[] temp=dir.listFiles();</p><p> for(int i =0;i<temp.length;i++){</p><p> if(temp[i].isDirectory()){ //刪除目錄必須遞歸刪除該目錄下所有子目錄和文件</p&
62、gt;<p> delDir(path+"/"+temp[i].getName());</p><p><b> }</b></p><p><b> else{</b></p><p> temp[i].delete();</p><p><b>
63、; }</b></p><p><b> }</b></p><p> dir.delete();</p><p><b> }</b></p><p><b> }</b></p><p><b> 2.5重命名界面&
64、lt;/b></p><p> 點擊重命名選項,會彈出窗口,如圖4-7所示。在文本框里輸入相應信息?;蛘咧苯狱c擊相應的按鈕,通過文件選擇器選擇文件,獲取路徑信息,類似可參照圖4-3。具體代碼如下:</p><p> 圖4-7 文件重命名界面</p><p> 該方法獲取傳遞的路徑信息及文件名信息,調(diào)用的是文件的renameTo方法實現(xiàn)文件的重命名<
65、/p><p> //指定文件夾下的文件重命名</p><p> public static void renameFile(String path,String oldname,String newname){</p><p> if(!oldname.equals(newname)){ //新名字和舊名字不一樣才進行重命名</p><
66、;p> File oldFile=new File(path+"/"+oldname);</p><p> File newFile=new File(path+"/"+newname);</p><p> if(newFile.exists()) //當前目錄存在與新文件名重名的文件,則不允許重命名</p><p&
67、gt; JOptionPane.showMessageDialog(null,newname+"文件已存在,請重新輸入文件名!");</p><p><b> else{</b></p><p> oldFile.renameTo(newFile);</p><p> JOptionPane.showMessageD
68、ialog(null,"重命名文件成功!");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 2.5剪切界面</b></p>
69、;<p> 點擊剪切選項,會彈出窗口,如圖4-8所示。在文本框里輸入相應信息?;蛘咧苯狱c擊相應的按鈕,通過文件選擇器選擇文件,獲取路徑信息,類似可參照圖4-3。具體代碼如下:</p><p> 圖4-8文件剪切界面</p><p> 該方法類似于重命名,也是通過調(diào)用renameTo()方法實現(xiàn)重命名,不同是剪切是在兩不同的路徑下調(diào)用該方法的。</p>&l
70、t;p> //文件從一個目錄下轉(zhuǎn)移到另一個文件夾下(剪切)</p><p> public static void changeDirectory(String filename,String oldpath,String newpath){</p><p> if(!oldpath.equals(newpath)){</p><p> File ol
71、dFile=new File(oldpath+"/"+filename);</p><p> File newFile=new File(newpath+"/"+filename);</p><p> if(newFile.exists()) //若在轉(zhuǎn)移的目錄下已存在要轉(zhuǎn)移的文件</p><p> JOptionPan
72、e.showMessageDialog(null,filename+"文件在新目錄下已存在,請重新輸入!");</p><p><b> else{</b></p><p> oldFile.renameTo(newFile);</p><p> JOptionPane.showMessageDialog(null,&
73、quot;剪切文件成功!");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b&g
74、t; 五、調(diào)試與分析</b></p><p> ?。?) 有參數(shù)限制的文件復制,獲取用戶輸入的多個參數(shù),如何將參數(shù)分開,以及將參數(shù)傳入相應的方法運行。解決辦法,獲取用戶輸入的字符串,要求參數(shù)戶之間用空格分開,之后調(diào)用string方法中的split()將字符串按空格分隔為一個字符數(shù)組,最后作為參數(shù)傳給相應的方法。</p><p> ?。?) 壓縮文件時,確定壓縮后的路徑名,要保
75、留哪些,要刪除哪些。很容易出現(xiàn)錯誤。采用String中的substring()截取原路徑信息中要保留的信息,然后將要保留的信息整合到新路徑中,最后調(diào)用方法添加壓縮項。</p><p> ?。?) 刪除文件中,文件夾刪除調(diào)用File的delDir()刪除文件總是出現(xiàn)錯誤。要利用File類的delete()方法深處目錄,必須保證該目錄下沒有文件或者子目錄,否則刪除失敗,因此在實際應用中,我們要刪除目錄必須遞歸刪除該目
76、錄下所有子目錄和文件,然后再刪除文件夾。</p><p><b> 六、功能測試</b></p><p><b> 1.復制文件</b></p><p> 復制后d盤copy文件下出現(xiàn)test文件夾,內(nèi)容和原文件夾內(nèi)容相同,另外還有其他類型文件復制,在此就不全部演示</p><p><b
77、> 2. 壓縮文件</b></p><p> 壓縮后d盤下出現(xiàn)test.zip壓縮文件</p><p><b> 3. 解壓文件</b></p><p> 通過解壓前面壓縮文件,在d盤unzip文件夾下出現(xiàn)test文件夾,內(nèi)容與原文件夾相同,驗證了壓縮,解壓功能。</p><p><b&
78、gt; 4. 剪切文件</b></p><p> 剪切后d盤txt文件夾下無1.txt文件,同時d盤cut文件夾下出現(xiàn)1.txt文件</p><p><b> 5. 刪除文件</b></p><p> 刪除后,d盤下無copy文件夾,另外單個文件的刪除類似以上操作</p><p><b>
79、 6. 文件重命名</b></p><p> 文件重命名后,d盤test文件夾下的Test3.java成功更名為3.java</p><p><b> 七、結(jié)論與心得</b></p><p> 通過這次程序設(shè)計,我清楚地認識到應該不斷改進自己的程序,滿足不同用戶的不同需求,使用戶能更加方便的使用功能。剛開始整個程序是在控制臺
80、上接受用戶的輸入以及顯示相應的輸出的,看起來給人的感覺很不直觀。然后就改成圖形用戶界面來接受輸入、顯示輸出。最后為了減少用戶輸入路徑信息時必要的輸入錯誤,又添加文件選擇器功能,從而更見方便用戶進行相應的操作。</p><p> 另外由于課程設(shè)計時間的限制,很多功能都沒有來得及實現(xiàn),例如用戶登錄驗證,文件信息的保密,以及文件的隱藏與顯示等。但是這次設(shè)計并不是一個結(jié)束,相反地它恰恰只是一個開始。我相信以后,我會越來
81、越多地使用到j(luò)ava語言去設(shè)計更多的程序。</p><p><b> 八、參考資料</b></p><p> Cay S. Horstmann, Gary Cornell. Core Java Volume I: Fundamentals. 8th Edition. Prentice Hall, 2008.</p><p> Cay S.
82、 Horstmann, Gary Cornell. Core Java Volume II: Advanced Features. 8th Edition. Prentice Hall, 2008.</p><p> Maydene Fisher, Jon Ellis, Jonathan Bruce. JDBC API Tutorial and Reference. 3rd Edition. Addison W
83、esley, 2003. </p><p> 埃克爾著,陳昊譯,Java編程思想,機械工業(yè)出版社,2007-6-1</p><p> 國家863中部軟件孵化器,Java從入門到精通,人民郵電出版社,2010-04</p><p> 信息科學與工程 學院課程設(shè)計成績評價表</p><p> 課程名稱:java課程設(shè)計
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java文件加密解密課程設(shè)計
- java課程設(shè)計--酒店管理系統(tǒng)
- java課程設(shè)計學籍管理系統(tǒng)
- 學生管理系統(tǒng)課程設(shè)計(java)
- 學生管理系統(tǒng)-java課程設(shè)計
- 學生管理系統(tǒng)課程設(shè)計(java)
- java課程設(shè)計--酒店管理系統(tǒng)
- java酒店管理系統(tǒng)課程設(shè)計
- java課程設(shè)計-學籍管理系統(tǒng)
- java課程設(shè)計-----健身管理系統(tǒng)
- java課程設(shè)計(班級管理系統(tǒng))
- java課程設(shè)計--學籍管理系統(tǒng)
- java學生管理系統(tǒng)課程設(shè)計
- java課程設(shè)計(班級管理系統(tǒng))
- java課程設(shè)計 -- 文件加密與解密
- unix課程設(shè)計--java學生管理系統(tǒng)
- java課程設(shè)計--圖書管理系統(tǒng)
- java課程設(shè)計報告學生管理系統(tǒng)
- java課程設(shè)計---學生學籍管理系統(tǒng)
- java課程設(shè)計--企業(yè)銷售管理系統(tǒng)
評論
0/150
提交評論