自拍偷在线精品自拍偷|国产无码一区二区久久|最新版天堂资源中文官网|国产精品第一页爽爽影院|国产精品一区二区av不卡|久久久波多野av一区无码|国产欧美日本亚洲精品一4区|亚洲精品天堂在线观看2020

當前位置:首頁 > 網(wǎng)站建設(shè) > 正文內(nèi)容

Java課程設(shè)計報告模板及范文(Java課程設(shè)計實驗報告模板)

網(wǎng)站建設(shè)2年前 (2023-01-24)1078

今天給各位分享Java課程設(shè)計報告模板及范文的知識,其中也會對Java課程設(shè)計實驗報告模板進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

本文目錄一覽:

《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)載請注明出處。

本文鏈接:http://www.thonggone.com/post/5382.html

“Java課程設(shè)計報告模板及范文(Java課程設(shè)計實驗報告模板)” 的相關(guān)文章

廣州網(wǎng)站整站優(yōu)化(廣州優(yōu)化網(wǎng)站關(guān)鍵詞)

廣州網(wǎng)站整站優(yōu)化(廣州優(yōu)化網(wǎng)站關(guān)鍵詞)

本篇文章給大家談?wù)剰V州網(wǎng)站整站優(yōu)化,以及廣州優(yōu)化網(wǎng)站關(guān)鍵詞對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、整站優(yōu)化seo排名營銷推廣公司哪家靠譜? 2、廣州網(wǎng)站優(yōu)化必須考慮的問題是什么 3、廣州網(wǎng)站SEO優(yōu)化推廣要做些什么? 4、廣州網(wǎng)站優(yōu)化哪間公司最好 推薦...

雙減下的作業(yè)設(shè)計思路(雙減下的作業(yè)設(shè)計思路二年級語文)

雙減下的作業(yè)設(shè)計思路(雙減下的作業(yè)設(shè)計思路二年級語文)

今天給各位分享雙減下的作業(yè)設(shè)計思路的知識,其中也會對雙減下的作業(yè)設(shè)計思路二年級語文進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、雙減分層布置作業(yè)策略是什么? 2、談?wù)勲p減背景下如何設(shè)計作業(yè) 3、雙減政策下如何有效布置作業(yè) 4、雙減政策下如何有效...

民族團結(jié)ppt模板免費下載素材(民族團結(jié)ppt課件免費下載)

民族團結(jié)ppt模板免費下載素材(民族團結(jié)ppt課件免費下載)

本篇文章給大家談?wù)劽褡鍒F結(jié)ppt模板免費下載素材,以及民族團結(jié)ppt課件免費下載對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、如何做好民族團結(jié)工作ppt課件 2、簡單又好看的民族團結(jié)黑板報手繪素材 3、簡單的民族團結(jié)手抄報內(nèi)容素材 如何做好民族團結(jié)工作ppt課...

入職簡歷電子版填寫模板(入職簡歷填寫樣本)

入職簡歷電子版填寫模板(入職簡歷填寫樣本)

今天給各位分享入職簡歷電子版填寫模板的知識,其中也會對入職簡歷填寫樣本進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、入職個人簡歷怎么寫? 2、入職個人簡歷模板格式5篇 3、電子檔個人簡歷怎么寫 入職個人簡歷怎么寫? 個人簡歷寫法:一、要善于寫出那...

在網(wǎng)頁HTML源代碼中,()標簽是必不可少的的簡單介紹

在網(wǎng)頁HTML源代碼中,()標簽是必不可少的的簡單介紹

今天給各位分享在網(wǎng)頁HTML源代碼中,()標簽是必不可少的的知識,其中也會對進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、如何在網(wǎng)頁上顯示html代碼 2、HTML標簽在代碼中是什么意思 3、在HTML中,標記的作用是__________ 4、...

簡歷制作模板百度網(wǎng)盤(簡歷電子版模板百度網(wǎng)盤)

簡歷制作模板百度網(wǎng)盤(簡歷電子版模板百度網(wǎng)盤)

今天給各位分享簡歷制作模板百度網(wǎng)盤的知識,其中也會對簡歷電子版模板百度網(wǎng)盤進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、如何制作個人簡歷模板 2、各路大神:求個人簡歷ppt模板,各種演講PPT模板網(wǎng)盤。 3、個人簡歷模板如何制作 4、個人簡歷模...