Java課程設(shè)計報告模板及范文(Java課程設(shè)計實驗報告模板)
今天給各位分享Java課程設(shè)計報告模板及范文的知識,其中也會對Java課程設(shè)計實驗報告模板進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
本文目錄一覽:
- 1、《Java》期末課程設(shè)計
- 2、求《java課程設(shè)計》制作
- 3、誰教教我怎么寫JAVA的課程設(shè)計論文
- 4、跪求JAVA課程設(shè)計?。?!
- 5、急求 日歷記事本課程設(shè)計報告 java編寫
- 6、急!Java 題庫維護系統(tǒng)課程報告
《Java》期末課程設(shè)計
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class QuestionOne {
/**
* 編程將從鍵盤輸入文本中的子字符串“word”替換為字符串“world”, 并刪除所有的子字符串“this”。
* 序程要求:程序中要包含有注釋,對于使用的變量和方法的功能要加以說明。
*/
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
String message = null; // 存儲用戶輸入的字符串
try {
while ((message = reader.readLine()) != null) {
// 打印處理前的字符串
System.out.println("輸入的字符串為:" + message);
// 把 word 替換為 world
message = message.replaceAll("word", "world");
// 把 this 替換為 空
message = message.replaceAll("this", "");
// 打印處理后的字符串
System.out.println("處理后為:" + message);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("出現(xiàn)異常,程序退出!");
}
}
}
求《java課程設(shè)計》制作
可以使用百度Hi告知我
有時間可以解決你的問題
類似的要求也可以告知我
誰教教我怎么寫JAVA的課程設(shè)計論文
目 錄
一、概要設(shè)計……………………………………………………………3
二、程序整體設(shè)計說明…………………………………………….…..4
三、程序部分源代碼及注釋…………………………………………….9
四、測試結(jié)果………………………………………………………….24
五、設(shè)計心得…………………………………………………………25
六、致 謝…………………………………………………………25
七、參考文獻…………………………………………………………25
【摘 要】該程序是一個圖形界面的java文檔編輯器,其界面主要采用了awt包, 程序?qū)崿F(xiàn)了文本編輯器的基本功能有:新建文件、打開文件、文件保存、文件另存為、剪切、復制、粘貼、刪除、查找/替換、改變字體大小,另外還利用Time類的schedule方法實現(xiàn)了文件的定時自動更新功能,并創(chuàng)建備份文件,由于該編輯器是用的awt包,所以在技術(shù)上沒有實現(xiàn)將Java的關(guān)鍵字以不同顏色顯示功能。
【關(guān)鍵字】java 編輯器
一、概要設(shè)計
Java程序編輯器是:圖形界面、線程、流與文件等技術(shù)的綜合應(yīng)用。
圖形界面的實現(xiàn):考慮到簡單、實用、高效等特點,就選擇了AWT來完成實現(xiàn),在選擇組件上,文本編輯區(qū)就選用了TaxtArea作為主要的部件。
線程實現(xiàn)文件自動保存:在相關(guān)的參考書上查閱到在Time類中有一個schedule方法可以在后臺自動完成一定的功能,而且調(diào)用起來相當簡單,于是就用了Time類中的schedule方法來實現(xiàn)文件自動保存及備份功能。
文件操作的實現(xiàn):利用了字符文件流FileReader和FileWriter類來實現(xiàn)。
由于Java的特性,可能用任何一個編輯器來編輯,于是就將Windows中的記事本作為模仿對象,根據(jù)實現(xiàn)情況刪減了其中的一些功能,如自動換行,設(shè)置字體,打印等功能。
在設(shè)計類的時候,考慮到簡單明了,就用了兩個類,一個主類和一個默認屬性類作為程序的整體框架,所有的對象和方法都是在默認屬性類中創(chuàng)建和實現(xiàn)的,以及為各組件注冊事件監(jiān)聽程序也是在默認屬性類中實現(xiàn)的。主類完成對象的實例化及顯示。這們設(shè)計的優(yōu)點是:條理清晰,容易理解,容易修改。這樣設(shè)計的缺點是:不利于共享類中的方法。
二、程序整體設(shè)計說明
2.1、程序框架圖
2.2、程序中所用類說明
(1)用戶自定義類
類名:EditInstantiation
作用:實例化對象
繼承的父類:WindowAdapter
主要成員變量:
Frame myFrm // 定義主窗體
TextArea myText // 定義文本編輯區(qū)
Dialog myDlgFind,myDlgFindont //查找及設(shè)置字體對話框
TextField TFfind, TFreplace, TffontSize
//查找對話框和字體窗體中的文本行
Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定義和創(chuàng)建各按鈕
Label Lf, Lr, Ls //定義和創(chuàng)建各標簽
MenuBar Mbbar //定義和創(chuàng)建主菜單
Menu Mfile,Medit,Mformation,Mhelp //定義和創(chuàng)建主菜單中的選項
Toolkit toolKit
Clipboard myCB //剪切板對象
FileDialog myFDlg //定義文件對話框
Choice ChfontName //定義和創(chuàng)建字體選擇框
private int VIindex = 1; //構(gòu)成文件名后綴變量
private String VSsubFixStr=".java"; //構(gòu)成文件名擴展名變量
private String VSmyFileName = "Document1",VSmyBFileName;
//文件名及備份文件名變量
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
//文件名變量
private int VIsearchPosition=0; //查找位置指針
private Timer VTtime; //實例化一個Time類
private int VImin=1; // schedule方法中的一個時間參數(shù)
private int VItype=JOptionPane.INFORMATION_MESSAGE;
//提示對話框類型
private String VStitle; //提示對話框標題
private String VSmessage; //提示對話框信息
private boolean VBchanged = true; //改變字體的一個標識
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //設(shè)置字體大小及步長
主要成員方法:
public void init() //初始化各部件菜單的定義和事件的監(jiān)聽
public void displayEdit ()//顯示窗體及調(diào)用Time中的schedule方法
public void windowClosing () //關(guān)閉窗體
public void save //保存文件方法
a.內(nèi)部類類名:KeyEvents
作用:實現(xiàn)菜單的事件的響應(yīng)功能
繼承的父類:KeyAdapter
主要成員變量:無
成員方法:actionPerformed()、keyPressed()
b.內(nèi)部類類名:FindKeyEvent
作用:實現(xiàn)查找中各部件事件的響應(yīng)功能
繼承的父類:無
主要成員變量:無
成員方法:actionPerformed ()
c.內(nèi)部類類名:fontEvent
作用:實現(xiàn)字體中各部件事件的響應(yīng)功能
繼承的父類:無
主要成員變量:無
成員方法:ItemListener(),ActionListener()
(2)用戶自定義類與Java類的繼承關(guān)系圖如下:
自定義類 Java 類
線程使用說明
2.3、實現(xiàn)接口方法
本程序用到的方法有:schedule其方法描述如下:
schedule(事件,啟動時間,間隔時間);
2.4、線程應(yīng)用
本程序為文本編輯器,為實現(xiàn)自動更新,應(yīng)用到了線程,每隔1分鐘對文件進行自動更新
2.5、異常處理說明
(1)打開文件時的異常處理
需要處理的異常:IOException
處理方法:捕獲異常后,顯示捕獲的異常
(2)保存文件時的異常處理
需要處理的異常:IOException
處理方法:捕獲異常后,顯示捕獲的異常
2.6、程序運行效果及存在的問題
(1)程序運行主要界面如下:
a、主界面
b、打開文件對話框
c、保存文件對話框
d、另存為文件對話框
e、查找/替換對話框
f.字體對話框
2.7.程序尚還存在的問題
我花費了近一個多星期的時間,查閱了許多相關(guān)的資料,終于把這個Java編輯器,程序基本實現(xiàn)了該課程設(shè)計的基本要求。但由于自己水平有限,使得程序還有不是很完善,首先,最重要的一點是該設(shè)計的最重要的功能自動改變java關(guān)鍵字的顏色沒有實現(xiàn)。
三、程序部分源代碼及注釋
//****************************************************
// class name :Edit
// implements :none
// extends :none
// attribute :public
// founction :entrance of the class
//*****************************************************
public class Edit{ //主類
public static void main(String args[]){
EditInstantiation myEdit= new EditInstantiation();
myEdit.init(); //初始化
myEdit.displayEdit(); //顯示窗體
}
//****************************************************
// class name :EditInstantiation
// implements :none
// extends :WindowAdapter
// attribute :default
// founction :EditInstantiation of the main class
//*****************************************************
class EditInstantiation extends WindowAdapter{ //默認屬性類
//define sources 定義各部件
Frame myFrm=new Frame("我的編輯器"); //定義窗體
TextArea myText=new TextArea(); //定義窗體
Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定義查找對話框
Dialog myDlgFindont=new Dialog(myFrm,"字體",true); //定義字體對話框
TextField TFfind=new TextField(30);//定義查找對話中的查找輸入框
TextField TFreplace=new TextField(30); //定義查找對話中的替換輸入框
TextField TFfontSize,TFfontDemo;//定義字體大小文本框和示例框
Choice CHfontName;//定義字體大小選擇框
List LTfontSize; //定義字體大小標簽
Button BfontOK,BfontCancel; //定義字體大小對話中的確定及取消按鈕
Button Bfind=new Button("查找");//定義查找對話中的查找按鈕
Button Breplace=new Button("替換");//定義查找對話中的替換及取消按鈕
Button Bnext=new Button("下一個");//定義查找對話中的下一個及取消按鈕
Button Bcancel=new Button("取消");//定義查找對話中的確定及取消按鈕
Label Lf=new Label("查找內(nèi)容:");
Label Lr=new Label("替換為: ");
Label Ls=new Label("字體大?。?);
FileDialog myFDlg;
Clipboard myCB=Toolkit.getDefaultToolkit().getSystemClipboard(); //剪切板對象
Menu Mfile,Medit,Mformation,Mhelp;
MenuBar MBbar;
//define varities //定義各變量
private int VIindex = 1;
private String VSsubFixStr=".java";
private String VSmyFileName = "Document1",VSmyBFileName;
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
private int VIsearchPosition=0;
private Timer VTtime;
private int VImin=1; // parameter in time schedul
private int VItype=JOptionPane.INFORMATION_MESSAGE;
private String VStitle;
private String VSmessage;
// flag of the changeing
private boolean VBchanged = true;
// the scope of the font
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;
//************************************************
//founction name:init()
//parameter :none
//attribute :public
//founction :initia all compont
//************************************************
public void init(){ //初始化各部件
//------------------ set menu ------------------
MBbar=new MenuBar();
myFrm.setMenuBar(MBbar);
Mfile=new Menu("文件");
Medit=new Menu("編輯");
Mformation=new Menu("格式");
Mhelp=new Menu("幫助");
MBbar.add(Mfile);
MBbar.add(Medit);
MBbar.add(Mformation);
MBbar.add(Mhelp);
//文件菜單 add File menu
Mfile.add(new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N)));
Mfile.add(new MenuItem("打開",new MenuShortcut(KeyEvent.VK_O)));
Mfile.add(new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S)));
Mfile.add(new MenuItem("另存為"));
Mfile.addSeparator();//分隔線
Mfile.add(new MenuItem("退出",new MenuShortcut(KeyEvent.VK_E)));
//編輯菜單 add Edit menu
Medit.add(new MenuItem("剪切"));//,new MenuShortcut(KeyEvent.VK_X)));
Medit.add(new MenuItem("復制"));//new MenuShortcut(KeyEvent.VK_C)));
Medit.add(new MenuItem("粘貼"));//new MenuShortcut(KeyEvent.VK_V)));
Medit.add(new MenuItem("刪除"));//new MenuShortcut(KeyEvent.VK_D)));
Medit.addSeparator();//分隔線
Medit.add(new MenuItem("查找/替換",new MenuShortcut(KeyEvent.VK_F)));
Medit.addSeparator();//分隔線
Medit.add(new MenuItem("全選",new MenuShortcut(KeyEvent.VK_A)));
//格式菜單 add Formation menu
Mformation.add(new MenuItem("字體",new MenuShortcut(KeyEvent.VK_U)));
//幫助菜單 add Formation menu
Mhelp.add(new MenuItem("關(guān)于作者"));
//----------------- menu add end -------------------------
//add Menu Action Listener
Mfile.addActionListener(new KeyEvents());
Medit.addActionListener(new KeyEvents());
Mformation.addActionListener(new KeyEvents());
Mhelp.addActionListener(new FindKeyEvent());
//--------------------------- Find dialog-----------------
myDlgFind.setSize(350,115);
myDlgFind.setLocation(250,150);
myDlgFind.setLayout(new FlowLayout(FlowLayout.CENTER));
myDlgFind.setBackground(Color.LIGHT_GRAY);
Bfind.setEnabled(false);
Breplace.setEnabled(false);
Bnext.setEnabled(false);
myDlgFind.add(Lf);
myDlgFind.add(TFfind);
myDlgFind.add(Lr);
myDlgFind.add(TFreplace);
myDlgFind.add(Bfind);
myDlgFind.add(Breplace);
myDlgFind.add(Bnext);
myDlgFind.add(Bcancel);
myDlgFind.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
myDlgFind.setVisible(false);
}});//為查找對話框窗體注冊事件監(jiān)聽
TFfind.addKeyListener(new KeyEvents());//注冊事件監(jiān)聽
Bfind.addActionListener(new FindKeyEvent());
Breplace.addActionListener(new FindKeyEvent());
Bcancel.addActionListener(new FindKeyEvent());
Bnext.addActionListener(new FindKeyEvent());
//--------------- end add action listener ------------
//================set font dialog ==============
//font size text field
TFfontSize = new TextField("8",14);
TFfontSize.selectAll();
//font size list field
LTfontSize = new java.awt.List(5, false);
LTfontSize.addItemListener(new fontEvent());
for(int i = VIfontSizeMin; i = VIfontSizeMax; i = i + VIfontSizeChangedStep)
LTfontSize.add(i + "");//添加字體大小
LTfontSize.select(0);
//two Button Ok Cancel
BfontOK = new Button("確定");
BfontOK.addActionListener(new fontEvent());
BfontCancel = new Button("取消");
BfontCancel.addActionListener(new fontEvent());
//a TextField for demo the font
TFfontDemo = new TextField("Java awt",37);
TFfontDemo.setEditable(false);
// my font dialog設(shè)置字體對話框
myDlgFindont.setLayout(new FlowLayout(FlowLayout.LEFT));
myDlgFindont.setBackground(Color.LIGHT_GRAY);
myDlgFindont.add(Ls);
myDlgFindont.add(TFfontSize);
myDlgFindont.add(BfontOK);
myDlgFindont.add(BfontCancel);
myDlgFindont.add(LTfontSize);
myDlgFindont.add(TFfontDemo);
myDlgFindont.setSize(300,200);
myDlgFindont.setLocation(300,200);
myDlgFindont.setResizable(false);
myDlgFindont.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myDlgFindont.show(false);
}
}); //為字體對話框窗體注冊事件監(jiān)聽
//=============end set font dialog
// =======set Edit frame設(shè)置編輯器窗休
myFrm.add(myText,BorderLayout.CENTER);
myFrm.setSize(500,400);
myFrm.setBackground(Color.lightGray);
myFrm.addWindowListener(this);
myFrm.setSize(500,400);
myFrm.setLocation(200,100);
myFrm.setTitle("Java編輯器");
}
//************************************************
//founction name:displayEdit()
//parameter :none
//attribute :public
//founction :initial and display the frame
//************************************************
public void displayEdit(){ //顯示窗體
myFrm.setVisible(true);
//---------------------- auto save ---------------------
VTtime = new Timer(true);
VTtime.schedule(new java.util.TimerTask(){
public void run(){
if(VSmyFileName!=null){
save(VSmyFileName+".java");
VSmyBFileName=VSmyFileName+".bak";
} //添加自動保存功能
save(VSmyBFileName);
}
}, VImin*60*1000,VImin*60*1000);
//parament 1 the task
//parament 2 when to start the task
//parament 3 set the interval time }
//****************************************************
// class name :KeyEvents
// implements :ActionListener
// extends :KeyAdapter
// attribute :default
// founction :implement the mouse and key action
//*****************************************************
class KeyEvents extends KeyAdapter implements ActionListener{
//********************************************************
//founction name:actionPerformed()
//parameter :none
//attribute :public
//return :void
//founction :realize the key action in the menu
//*********************************************************
public void actionPerformed(ActionEvent e){
//完成菜單事件的功能
// File Menu
if (e.getActionCommand()=="新建"){
//remind you
JFrame aFrame=new JFrame();
aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane optionPane=new JOptionPane();
String choices[]={"是","否","取消"};
int n=optionPane.showOptionDialog(aFrame,"文件正文已更改,是否保存更改","文本編輯器",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,null,choices,choices[0]);
//保存文件后新建
if(n==0){//若文件存在,保存在原文件中,再新建文件
try{
if(VFmyFile.exists()){
save(VSmyFileName); // call the save founction
myText.setText("");
VIindex++;
}
else{//若文件不存在,則保存后再新建
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
myText.setText("");
VIindex++;
}
}
catch(Exception ne){}
}
//不保存文件新建
if(n==1){
myText.setText("");
VIindex++;
}
//取消新建
if(n==0){return;}
}
//打開菜單 Open Menu
if (e.getActionCommand()=="打開") {
myFDlg=new FileDialog(myFrm,"打開",FileDialog.LOAD);
myFDlg.show();
if (myFDlg.getFile()!="") {
VFmyFile=new File(myFDlg.getDirectory()+myFDlg.getFile());
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
if( VFmyFile.exists()){
try{
FileReader fr=new FileReader(VFmyFile);
BufferedReader br=new BufferedReader(fr);
String text;
myText.setText("");
while ((text=br.readLine())!=null)
myText.append(text+"\r\n");
br.close();
fr.close();
}
catch(IOException ioe){
VStitle="提示";
VSmessage="打開文件出錯";
JOptionPane.showMessageDialog(myFrm,VSmessage,VStitle,VItype);
}
}
}
}
//保存菜單 Save Menu
if (e.getActionCommand()=="保存"){
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//另存為菜單 SaveAs Menu
if (e.getActionCommand()=="另存為"){
myFDlg=new FileDialog(myFrm,"文件另存為",1);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//退出菜單 exit Menu
if (e.getActionCommand()=="退出")
System.exit(0);
//編輯 Edit Menu
if (e.getActionCommand()=="剪切"){
//Cut
String text =myText.getSelectedText();
StringSelection selection = new StringSelection(text);
myCB.setContents(selection, null);
myText.replaceRange("",myText.getSelectionStart(),myText.getSelectionEnd());
}
if (e.getActionCommand()=="復制"){
//copy
String text=myText.getSelectedText();
if(text!=null){
StringSelection selection=new StringSelect
跪求JAVA課程設(shè)計?。?!
平時不燒香,到尾來拜佛。有用嗎?努力點,干我們這行的并不是吃軟飯。
急求 日歷記事本課程設(shè)計報告 java編寫
日歷記事本課程設(shè)計報告
java編寫
/*
說明:主程序
*/
import
java.util.Calendar;
import
javax.swing.*;
import
java.awt.*;
import
java.awt.event.*;
import
java.io.*;
import
java.util.Hashtable;
public
class
CalendarPad
extends
JFrame
implements
MouseListener
{
int
year,month,day;
Hashtable
hashtable;
File
file;
JTextField
showDay[];
JLabel
title[];
Calendar
日歷;
int
星期幾;
NotePad
notepad=null;
Month
負責改變月;
Year
負責改變年;
String
星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
JPanel
leftPanel,rightPanel;
public
CalendarPad(int
year,int
month,int
day)
{
leftPanel=new
JPanel();
//左邊日歷...........
JPanel
leftCenter=new
JPanel();
JPanel
leftNorth=new
JPanel();
leftCenter.setLayout(new
GridLayout(7,7));
rightPanel=new
JPanel();
this.year=year;
this.month=month;
this.day=day;
負責改變年=new
Year(this);
負責改變年.setYear(year);
負責改變月=new
Month(this);
負責改變月.setMonth(month);
title=new
JLabel[7];
showDay=new
JTextField[42];
for(int
j=0;j7;j++)
{
title[j]=new
JLabel();
title[j].setText(星期[j]);
title[j].setBorder(BorderFactory.createRaisedBevelBorder());
leftCenter.add(title[j]);
}
........
看下是不是收到了啊
額外人提問
急!Java 題庫維護系統(tǒng)課程報告
import?java.io.BufferedReader;
import?java.io.BufferedWriter;
import?java.io.File;
import?java.io.FileReader;
import?java.io.FileWriter;
import?java.io.IOException;
import?java.text.SimpleDateFormat;
import?java.util.ArrayList;
import?java.util.Date;
import?java.util.List;
import?java.util.Scanner;
public?class?Main?{
public?static?final?String?DATE_FORMAT?=?"MM月dd日";
private?static?final?Scanner?scanner?=?new?Scanner(System.in);
public?static?ListItem?itemList?=?null;
private?static?final?String?itemPath?=?"d:/item.txt";
public?static?int?total;
private?static?int?current=1;
public?static?void?main(String[]?args)?{
try?{
process();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
private?static?void?init()?throws?IOException?{
itemList?=?ItemReaderWriter.readItemsFromFile(itemPath);
total?=?itemList.size();
}
private?static?void?process()?throws?IOException?{
show();
String?c?=?getInput();
while?(!c.equals("a")??!c.equals("i")??!c.equals("d")??!c.equals("l"))?{
System.err.println("輸入錯誤!請輸入a/i/d/l");
process();
}
if?("a".equals(c))?{
aOperation();
}
else?if?("i".equals(c))?{
iOperation();
}
else?if?("d".equals(c))?{
dOperation();
}
else?if?("l".equals(c))?{
lOperation();
}
}
private?static?void?print(String...?msg)?{
if?(msg?!=?null??msg.length??0)?{
System.out.println(msg[0]);
}
else?{
System.out.println();
}
}
private?static?String?getDateNow()?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat(DATE_FORMAT);
return?sdf.format(new?Date());
}
private?static?void?show()?{
print("/********************************************************/");
String?dateStr?=?getDateNow();
print("題庫維護系統(tǒng)???今天"+dateStr+"..........");
print("請選擇相關(guān)操作:");
print("1.添加題目??按鍵盤字符(a)");
print("2.導入題目??按鍵盤字符(i)");
print("3.刪除題目??按鍵盤字符(d)");
print("4.顯示題目??按鍵盤字符(l)");
print("/********************************************************/");
}
private?static?void?aOperation()?throws?IOException?{
init();
print("***********************************************************");
print("添加題目,題庫已有試題"+total+"條,當前錄入第"+current+"條");
print("***********************************************************");
print("請輸入題目:");
String?title?=?(total+1)?+?"."?+?getInput();
print("請輸入選項A:");
String?a?=?"A."?+?getInput();
print("請輸入選項B:");
String?b?=?"B."?+?getInput();
print("請輸入選項C:");
String?c?=?"C."?+?getInput();
print("請輸入選項D:");
String?d?=?"D."?+?getInput();
Item?item?=?new?Item(title,a,b,c,d);
System.out.println(item);
ItemReaderWriter.writeToFile(item,?itemPath);
total?+=?1;
current?+=?1;
print("輸入成功,否繼續(xù)輸入?(y/n)");
String?s?=?getInput();
if?("y".equals(s))?{
aOperation();
}
else?{
process();
}
}
private?static?void?iOperation()?throws?IOException{
init();
print("請輸入需要導入題庫文件路徑:");
String?path?=?getInput();
File?f?=?new?File(path);
if?(!f.exists())?{
throw?new?IOException("不是一個有效的路徑!");
}
else?{
try?{
ItemReaderWriter.importToFile(itemPath,path,?total);
print("題庫導入成功!");
}?catch?(Exception?e)?{
System.err.println("題庫導入失敗!"?+?e.getMessage());
e.printStackTrace();
}
}
process();
}
private?static?void?dOperation()?throws?IOException?{
init();
print("***********************************************************");
print("刪除題目");
print("***********************************************************");
print("請輸入所需刪除題號:");
String?numStr?=?getInput();
int?num?=?0;
try?{
num?=?Integer.valueOf(numStr);
ItemReaderWriter.deleteByNum(itemPath,num);
print("刪除試題成功!");
}?catch?(NumberFormatException?e)?{
System.err.println("輸入的不是有效的題號!");
e.printStackTrace();
}?catch?(IOException?ee)?{
System.out.println("刪除題目失?。??+?ee);
ee.printStackTrace();
}
process();
}
private?static?void?lOperation()?throws?IOException?{
init();
print("***********************************************************");
if?(itemList?==?null?||?itemList.size()?==?0)?{
print("目前題庫中沒有題目!");
return;
}
print("目前題庫中共有"?+?itemList.size()?+?"道試題!");
for?(int?i=0;iitemList.size();i++)?{
Item?item?=?itemList.get(i);
print(item.getTitle());
print(item.getA());
print(item.getB());
print(item.getC());
print(item.getD());
print();
}
print("***********************************************************");
process();
}
private?static?String?getInput()?{
String?cstr?=?scanner.next();
while?(cstr?==?null?||?cstr.trim().length()?==?0)?{
print("請輸入內(nèi)容!");
cstr?=?scanner.next();
}
return?cstr;
}
}
final?class?ItemReaderWriter?{
//?假定題目的格式如下:
//?題目表述:
//?選項A:
//?選項B:
//?選項C:
//?選項D:
//?1道題有5行組成
public?static?ListItem?readItemsFromFile(String?filePath)?throws?IOException?{
File?f?=?new?File(filePath);
if?(!f.exists())?{
f.createNewFile();
}
ListItem?itemList?=?new?ArrayListItem();
BufferedReader?br?=?new?BufferedReader(new?FileReader(filePath));
String?line?=?null;
while?((line?=?br.readLine())?!=?null)?{
//?標題
String?title?=?line;
//?選項A
String?a?=?line?=?br.readLine();
//?選項B
String?b?=?line?=?br.readLine();
//?選項C
String?c?=?line?=?br.readLine();
//?選項D
String?d?=?line?=?br.readLine();
Item?item?=?new?Item(title,a,b,c,d);
itemList.add(item);
//?空行,每題之間空一行
line?=?br.readLine();
}
return?itemList;
}
public?static?synchronized?void?writeToFile(Item?item,String?filePath)?throws?IOException?{
FileWriter?fw?=?new?FileWriter(filePath,true);
if?(Main.itemList?!=?null??Main.itemList.size()?=?0)?{
//?空行,題目之間空一行
fw.write("\n\n");
}
//?標題
fw.write(item.getTitle());
fw.write("\n");
//?選項A
fw.write(item.getA());
fw.write("\n");
//?選項B
fw.write(item.getB());
fw.write("\n");
//?選項C
fw.write(item.getC());
fw.write("\n");
//?選項D
fw.write(item.getD());
fw.close();
}
public?static?void?importToFile(String?itemPath,String?filePath,int?total)?throws?IOException?{
BufferedReader?br?=?new?BufferedReader(new?FileReader(new?File(filePath)));
String?line?=?null;
while?((line?=?br.readLine())?!=?null)?{
//?標題
String?title?=?line;
if?(title.matches("^\\d+.*$"))?{
title?=?title.replaceFirst("\\d+",?"");
title?=?(++total)?+?title;
}
//?選項A
String?a?=?line?=?br.readLine();
//?選項B
String?b?=?line?=?br.readLine();
//?選項C
String?c?=?line?=?br.readLine();
//?選項D
String?d?=?line?=?br.readLine();
Item?item?=?new?Item(title,a,b,c,d);
writeToFile(item,?itemPath);
//?讀取下一個空行
line?=?br.readLine();
}
br.close();
}
public?static?synchronized?void?deleteByNum(String?filePath,int?num)?throws?IOException?{
ListItem?itemList?=?readItemsFromFile(filePath);
boolean?find?=?false;
if?(itemList?!=?null??itemList.size()??0)?{
for?(Item?item?:?itemList)?{
if?(item.getTitle().startsWith(Integer.toString(num)))?{
find?=?true;
itemList.remove(item);
break;
}
}
}
else?{
System.out.println("題庫中沒有試題");
}
if?(find)?{
BufferedWriter?bw?=?new?BufferedWriter(new?FileWriter(new?File(filePath)));
for?(int?i=0;iitemList.size();i++)?{
Item?item?=?itemList.get(i);
//?標題
String?title?=?item.getTitle();
title?=?title.replaceFirst("\\d+",?"");
title?=?(i+1)?+?title;
bw.write(title);
bw.write("\n");
//?選項A
bw.write(item.getA());
bw.write("\n");
//?選項B
bw.write(item.getB());
bw.write("\n");
//?選項C
bw.write(item.getC());
bw.write("\n");
//?選項D
bw.write(item.getD());
if?(i?!=?itemList.size()?-?1)?{
bw.write("\n\n");
}
}
bw.close();
}
}
}
class?Item?{
private?String?title;
private?String?a;
private?String?b;
private?String?c;
private?String?d;
public?Item()?{
}
public?Item(String?title,String?a,String?b,String?c,String?d)?{
this.title?=?title;
this.a?=?a;
this.b?=?b;
this.c?=?c;
this.d?=?d;
}
public?String?getTitle()?{
return?title;
}
public?void?setTitle(String?title)?{
this.title?=?title;
}
public?String?getA()?{
return?a;
}
public?void?setA(String?a)?{
this.a?=?a;
}
public?String?getB()?{
return?b;
}
public?void?setB(String?b)?{
this.b?=?b;
}
public?String?getC()?{
return?c;
}
public?void?setC(String?c)?{
this.c?=?c;
}
public?String?getD()?{
return?d;
}
public?void?setD(String?d)?{
this.d?=?d;
}
@Override
public?String?toString()?{
return?"Item?[title="?+?title?+?",?a="?+?a?+?",?b="?+?b?+?",?c="?+?c
+?",?d="?+?d?+?"]";
}
}
Java課程設(shè)計報告模板及范文的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于Java課程設(shè)計實驗報告模板、Java課程設(shè)計報告模板及范文的信息別忘了在本站進行查找喔。
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。