版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件學院課程設計報告書課程名稱
面向對象程序設計
設計題目
敏感詞匯分析程序
專業(yè)班級
學
號
姓
名
指導教師
2012年6月目錄1設計時間2設計目的3設計任務4設計內容4.1需求分析4.1.1問題描述4.1.2基本要求4.2總體設計4.2.1包的描述4.2.2類的描述4.2.3類之間的關系4.3詳細設計4.3.1類圖4.4測試與分析4.5程序代碼5總結與展望參考文獻課程設計成績評定1設計時間2011年6月13日-2011年6月19日2設計目的《面向對象程序設計》是一門實踐性很強的計算機專業(yè)基礎課程,課程設計是學習完該課程后進行的一次較全面的綜合練習。其目的在于通過實踐加深學生對面向對象程序設計的理論、方法和基礎知識的理解,掌握使用Java語言進行面向對象設計的基本方法,提高運用面向對象知識分析實際問題、解決實際問題的能力,提高學生的應用能力。此次課程設計,重溫了java界面生成、字節(jié)流的輸入輸出、循環(huán)語句的應用等等。3設計任務敏感詞匯分析程序。要求如下:(1)使用圖形用戶界面實現。(2)任意選擇一個文本文件,分析該文件,如果存在敏感詞匯,報告每個詞出現的次數。(3)敏感詞匯保存在sentive.txt文件中,每個詞占一行,至少設置10個敏感詞匯。(4)系統使用的GUI組件不得少于5種,越全面越好,但要合適(和諧界面)。4設計內容
4.1需求分析4.1.1問題描述(1)實現一個圖形用戶界面;(2)敏感詞匯文件;(3)可以輸入任意文本,然后進行分析,找出敏感詞匯出現的次數;(4)也可以打開已存在的文本文件,同樣進行分析;4.1.2基本要求(1)使用圖形用戶界面實現;(2)任意選擇一個文本文件,分析該文件,如果存在敏感詞匯,報告每個詞出現的次數;
(3)任意編輯一個文本文件,分析該文件,如果存在敏感詞匯,報告每個詞出現的次數;(4)敏感詞匯保存在sentive.txt文件中,每個詞占一行,至少設置10個敏感詞匯;(5)系統使用的GUI組件不得少于5種,越全面越好,但要合適(和諧界面);4.2總體設計4.2.1包的描述主程序:MinGanCiHui.javaimportjava.awt.Button;
//創(chuàng)建一個標簽按鈕importjava.awt.Color;
//用于封裝默認sRGB顏色空間中的顏色importjava.awt.GridLayout;
//布局處理器,它以矩形網格形式對容器的組件進行布置。importjava.awt.Label;
//Label對象是一個可在容器中放置文本的組件。importjava.awt.Panel;
//Panel是最簡單的容器類,面板。importjava.awt.event.ActionEvent;
//用于激活組件importjava.awt.event.ActionListener;
//時間監(jiān)聽器importjavax.swing.JFrame;
//java.awt.Frame的擴展版本分析程序:Fenx.javaImportjava.io.BufferedReader;
//從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。importjava.io.FileReader;
//用來讀取字符文件的便捷類。importjava.util.ArrayList;
//是List接口的一個可變長數組實現,實現了所有List接口的操作,并允許存儲null值。importjava.util.List;
//讓集合的長度能自動改變,能夠增加/刪除元素它是JAVA自帶的接口。importjava.util.regex.Matcher;
//Matcher類的實例用于匹配字符序列與給定模式。importjava.util.regex.Pattern;
//Pattern類的實例采用類似于Perl的語法來表示以字符串形式指定的正則表達式。顯示敏感詞匯文件:Shows.javaimportjava.io.BufferedReader;
////從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。importjava.io.FileReader;
//用來讀取字符文件的便捷類。importjava.io.IOException;
//當發(fā)生某種I/O異常時,拋出此異常。importjavax.swing.JFrame;
//java.awt.Frame的擴展版本。importjavax.swing.JTextArea;
//一個顯示純文本的多行區(qū)域。測試菜單程序:TestJMenu.javaimportjava.awt.event.ActionEvent;
//用于激活組件。importjava.awt.event.ActionListener;
//時間監(jiān)聽器。importjava.io.File;
//文件和目錄路徑名的抽象表示形式。importjava.io.FileInputStream;
//FilterInputStream包含其他一些輸入流,它將這些流用作其基本數據源,它可以直接傳輸數據或提供一些額外的功能。importjavax.swing.JFileChooser;
//為用戶選擇文件提供了一種簡單的機制。importjavax.swing.JFrame;
//java.awt.Frame的擴展版本,該版本添加了對JFC/Swing組件架構的支持。importjavax.swing.JMenu;
//菜單的該實現是一個包含JMenuItem的彈出窗口,用戶選擇JMenuBar上的項時會顯示該JMenuItem。importjavax.swing.JMenuBar;
//菜單欄的實現。importjavax.swing.JMenuItem;
//菜單中的項的實現。importjavax.swing.JTextArea;
//JTextArea是一個顯示純文本的多行區(qū)域。4.2.2類的描述1、MinGanCiHui(1)類名:MinGanCiHui作用:主類(2)主要成員變量說明:Buttonb1=newButton("我要查看");
//點擊可以查看敏感詞匯文件Buttonb2=newButton("確定");
//點擊輸入文本,進行敏感詞匯分析(3)主要成員方法說明:
b1.addActionListener();
//對“我要查看”按鈕進行事件監(jiān)聽b2.addActionListener();
//對“確定”按鈕進行事件監(jiān)聽2、Fenx(1)類名:Fenx作用:對輸入的文本進行敏感詞匯分析,或者對打開的文本文件進行詞匯分析。(2)異常處理:處理文件讀取異常。(3)主要成員變量說明:StringfilterText=newString();
//創(chuàng)建一個字符串BufferedReaderbr=newBufferedReader(reader);
//以字符形式獲取打開文件的內容ListlistWord=newArrayList();
//設為敏感詞匯數組,匹配使用(4)主要成員方法說明:Ppile(regex,flags)
//進行匹配3、Shows(1)類名:Shows作用:通過JFrame顯示敏感詞匯文本繼承的父類:JFrame(2)異常處理:文件讀取異常處理(3)主要成員變量說明:staticJTextAreass;
//文本顯示(4)主要成員方法說明:publicstaticStringfilein()
//獲取文件中的字符4、TestJMenu(1)類名:TestJMenu作用:分析文本或者文本文件中敏感詞匯出現的次數繼承的父類:JFrame(2)實現的接口:ActionListener(3)主要成員變量說明:JTextAreajta=newJTextArea();
//多行的純文本區(qū)域JMenuItemjmiOpen=newJMenuItem("打開");
//打開已存在的文本文件JMenujmFenxi=newJMenu("分析");
//分析當前的文本中敏感詞匯的出現(4)主要成員方法說明:jmiSure.addActionListener(newActionListener())
//對分析按鈕進行事件監(jiān)聽publicvoidactionPerformed(ActionEvente)
//對打開按鈕進行事件監(jiān)聽4.2.3類之間的關系MinGanCiHui
ShowsFenxTestJMenu4.3詳細設計4.3.1類圖(1)主類MinGanCiHui
圖4.3.1-1(2)TestJMenu
圖4.3.1-2(3)Fenx圖4.3.1-3(4)Shows圖4.3.1-44.4測試與分析(1)主程序面板
圖4.4-1(2)點擊我要查看,查看敏感詞匯圖4.4-2(3)點擊主面板的確定,進入分析主程序圖4.4-3(4)在文本框中輸入文本圖4.4-4(5)點擊分析中的確定按鈕圖4.4-5(6)顯示分析結果圖4.4-6(7)從文件中選擇以存在的文本文件進行分析圖4.4-7(8)顯示打開的文本文件圖4.4-8(9)進行分析圖4.4-94.5程序代碼importjava.awt.Button;importjava.awt.Color;importjava.awt.GridLayout;importjava.awt.Label;importjava.awt.Panel;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JFrame;publicclassMinGanCiHui{
publicstaticvoidmain(Stringargs[]){
JFramef1=newJFrame("敏感詞分析程序");
f1.setBounds(100,100,500,400);
f1.setBackground(Color.lightGray);
f1.setLayout(newGridLayout(2,1));
Panelp1=newPanel();
f1.add(p1);
Panelp2=newPanel();
f1.add(p2);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Labell2=newLabel("敏感詞匯保存在sensitive.txt文件中,查看敏感詞匯請點擊:");
p1.add(l2);
Buttonb1=newButton("我要查看");
p1.add(b1);
b1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Showss=newShows();
}
});
Labell1=newLabel("請輸入含有敏感詞的文本文件,點確定進入:");
p2.add(l1);
Buttonb2=newButton("確定");
p2.add(b2);
b2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
TestJMenujmFrame=newTestJMenu();
}
});
f1.setVisible(true);
}}importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.File;importjava.io.FileInputStream;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JTextArea;publicclassTestJMenuextendsJFrameimplementsActionListener{
JTextAreajta=newJTextArea();
TestJMenu(){
this.setSize(400,300);
JMenuBarjmb=newJMenuBar();
this.setTitle("分析程序");
//創(chuàng)建菜單欄
JMenujmFile=newJMenu("文件");
JMenuItemjmiNew=newJMenuItem("新建");
JMenuItemjmiOpen=newJMenuItem("打開");
jmiOpen.addActionListener(this);
jmFile.add(jmiNew);
jmFile.add(jmiOpen);
JMenujmFenxi=newJMenu("分析");
JMenuItemjmiSure=newJMenuItem("確定");
JMenuItemjmiCancel=newJMenuItem("取消");
jmFenxi.add(jmiSure);
jmFenxi.add(jmiCancel);
JMenujmHelp=newJMenu("幫助");
jmb.add(jmFile);
jmb.add(jmFenxi);
jmb.add(jmHelp);
this.setJMenuBar(jmb);
this.getContentPane().add(jta);
this.setVisible(true);
//設置事件監(jiān)聽,如果點擊了分析中的確定,表明要進行分析測試
jmiSure.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
StringfilterText=jta.getText();
try{
jta.setText(Fenx.getFilterText(filterText));
}catch(Exceptione1){
e1.printStackTrace();
}
}
});
}
//對打開按鈕進行事件監(jiān)聽
publicvoidactionPerformed(ActionEvente){
JFileChooserjc=newJFileChooser();
if(jc.showOpenDialog(this)!=1){
try{
Filefile=jc.getSelectedFile();
FileInputStreamfis=newFileInputStream(file);
byte[]buf=newbyte[10*1024];
intlen=fis.read(buf);
jta.append(newString(buf,0,len));
}catch(Exceptionex){
ex.printStackTrace();
}
}
}
publicstaticvoidmain(String[]args){
MinGanCiHuim=newMinGanCiHui();
TestJMenujmFrame=newTestJMenu();
//jmFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}importjava.io.BufferedReader;importjava.io.FileReader;importjava.util.ArrayList;importjava.util.List;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassFenx{
publicstaticvoidmain(String[]args)throwsException{
StringfilterText=newString();
System.out.println(getFilterText(filterText));
}
publicstaticStringgetFilterText(StringfilterText)throwsException{
ListlistWord=newArrayList();
FileReaderreader=newFileReader("d:/sensitive.txt");
BufferedReaderbr=newBufferedReader(reader);
Strings=null;
while((s=br.readLine())!=null){
listWord.add(s.trim());
}
br.close();
reader.close();
Matcherm=null;
Stringstr1=newString();
for(inti=0;i<listWord.size();i++){
intnum=0;
Patternp=Ppile(listWord.get(i).toString(),
Pattern.CASE_INSENSITIVE);
StringBuffersb=newStringBuffer();
m=p.matcher(filterText);
while(m.find()){
m.appendReplacement(sb,"*");
num++;
}
str1='\n'+"敏感詞"+p.toString()+"出現:"+num+"次";
m.appendTail(sb);
filterText=sb.toString();
filterText+=str1;
}
returnfilterText;
}}importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;importjavax.swing.JFrame;importjavax.swing.JTextArea;publicclassShowsextendsJFrame{
staticJTextAreass;
JFramej1;
Shows(){
ss=newJTextArea();
j1=newJFrame("敏感詞匯文本顯示窗口");
Stringss1=filein();
j1.add(ss);
j1.setSize(500,400);
j1.setVi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年浮標式氧氣吸入器項目融資計劃書
- 生命科學試題庫
- 養(yǎng)老院老人生日慶祝制度
- 養(yǎng)老院老人緊急救援服務質量管理制度
- 質量管理體系國家審核員培訓考試題
- 房建木工合同范本(2篇)
- 2025年鎮(zhèn)江c1貨運從業(yè)資格證模擬考試題
- 2025年合作下載貨運從業(yè)資格證模擬考試
- 2025年南寧貨運從業(yè)資格證實操考試題
- 2025年舟山駕??荚囏涍\從業(yè)資格證考試
- 2024年度技術轉讓合同及技術交付
- 電力變壓器生產項目可行性研究報告
- 充電樁知識培訓
- 2024年廣東省廣州二中中考語文二模試卷
- 規(guī)劃課題申報范例:“三教”改革背景下教材改革的實踐研究(附可修改技術路線圖)
- 農業(yè)氣象學-作業(yè)1-國開(ZJ)-參考資料
- 2024北京市房屋租賃合同自行成交
- 鉗工工藝與技能課件
- 北京市海淀區(qū)2023-2024學年高三上學期期末考試+歷史 含答案
- 2024-2030年地質勘察行業(yè)市場前景與發(fā)展預測
- 大學輔導員崗位考核參考指標
評論
0/150
提交評論