1. Trang chủ
  2. » Công Nghệ Thông Tin

thực hiện phân tích, thiết kế và lập trình theo hướng đối tượng để quản lí đối tượng và các thao tác của Xây dựng chương trình mô phỏng chương trình soạn thảo Notepa

41 264 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 1,88 MB

Nội dung

PHÂN CÔNG CÔNG VIỆC Nguyễn Thành An Làm chức năng about Lê Minh Ngọc Làm chức năng ở menu edit Nguyễn Thị Hà Li Làm chức năng ở menu format Lê Đức Trung Làm giao diện chính , làm chức nă

Trang 1

VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN

THẢO NOTEPAD

Giảng viên hướng dẫn ` : Trịnh Thị Xuân

Sinh viên thực hiên ` : Nguyễn Thành An - 16A2

Hà Nội – <2018>

Trang 3

PHÂN CÔNG CÔNG VIỆC

Nguyễn Thành An Làm chức năng about

Lê Minh Ngọc Làm chức năng ở menu edit

Nguyễn Thị Hà Li Làm chức năng ở menu format

Lê Đức Trung Làm giao diện chính , làm chức

năng ở menu file , viết báo cáo

Trang 5

1.Phát biểu vấn đề

- Phân tích đề bài : “ Thực hiện phân tích – thiết kế và lập trình hướng đối tượng đểquản lý các đối tượng và các thao tác của “ xây dựng chương trình mô phỏngchương trình soạn thảo Notepad “

- Đây là một chương trình soạn thảo văn bản đơn giản và dễ dùng , nó là một ứngdụng cần thiết trong đời sống của con người dùng để lưu trữ dữ liệu dạng văn bản ,Giao diện thân thiện với người dùng , và có những tính năng như thay đổi kiểu chữ

cỡ chữ và phông chữ , tìm kiếm và thay thế ,

- Hiện thông tin nhóm lập trình

II Xác Định Sơ Đồ Lớp Của Bài Toán

Trang 6

1 Giao diện phần mền

- Danh sách menu chương trình

Trang 7

- Giao diện change font

Trang 8

Giao diện tìm kiếm

- Giao diện replace

- Giao diện about ( thông tin nhóm )

Trang 9

2 Phân tích lớp

 Lớp File

- Thuộc tính : Tên file

- Phương thức : Tạo file mới , mở file , lưu file , lưu đè file

 Lớp Text

- Thuộc tính : Nôi dung text , phông chữ , kiểu chữ , cỡ chữ

- Phương thức : sao chép nội dung ( copy ) , cắt nội dung ( cut ) , dánnội dung ( paste ) , trở lại ( undo ) , redo , tìm nội dung ( find ) , thay thế nội dung( replace ) , thay đổi phông chữ , kiểu chữ , cỡ chữ

Trang 10

3 Sơ đồ quan hệ các lớp

FileTên File

File()Newfile()Openfile()SaveFile()Saveasfile()

AboutThông tin nhóm lập trình

TextNội dungPhông chữKiểu chữ

Cỡ chữ

Text()Copy()Cut()Paste()Redo()Undo()Replace()Find()Format()

Trang 11

III MÔ TẢ THUẬT TOÁN – THAO TÁC

Trang 12

 Format

- Thay đổi phông chữ , cỡ chữ , kiểu chữ

 About

- Hiện thông tin nhóm lập trình

2 Mô Tả Chi Tiết Các Thao Tác Thực Hiện Chức Năng

 Nhập dữ liệu ( nhập dữ liệu vào , ví dụ như bên dưới )

2.1 File

 Tạo mới file : Dùng để tạo một file mới

- cách dùng : vào file rồi chọn new , hoặc nhấn tổ hợp ctrl + N

Trang 13

- Nếu có dữ liệu đang soạn thảo thì ứng dụng sẽ thông báo có lưu file hay không( ấn save thì sẽ lưu file đó lại , don’t save thì sẽ tạo mới không lưu file đó lại )

- Mở File : mở file txt trên máy tính của bạn

- Cách dùng : nhấn file rồi chọn open , hoăc ctrl + o

- khi mở file nếu có dữ liệu thì nó tương tự như tạo mới file , nếu có dữ liệu nó sẽhỏi có lưu file này không , rồi sau đó giao diện chọn file xuất hiện

Trang 14

- Save và save : lưu file vừa tạo vào máy tính của bạn

- Cách dung : tương tự ta vào file rồi chọn save ( để lưu file đó lại , hoặc sava as đểlưu đè file đó )

Trang 15

- Thoát chương trình ( có 2 cách để thoát , một là file -> exit , 2 là ấn x trên ứngdụng )

Trang 16

2.2 Edit

 Select all : bôi đen toàn bộ văn bản

- Cách dùng nhấn ctrl + A hoặc như hình vẽ

 Cut : dùng để cut đoạn văn bản đã bôi đen

- Cách dung : bôi đen văn bản rồi ân ctrl x hoặc như hình

 Copy : sao chép văn bản đã bôi đen

Trang 17

- Cách dùng : ấn ctrl + c hoặc như hình vẽ

 Paste : dán văn bản khi đã cut hoặc copy

- Cách dung : nhấn ctrl +v hoặc như hình vẽ

 Undo & Redo : quay lại và trở lại

- Cách dùng nhấn undo ( ctrl + Z ) hoặc như hình vẽ

Trang 18

 Find : tìm kiếm theo từ khoá

- Cách dùng : nhấn ctrl + F hoặc như hình sau đó nhập vào từ khoá mình cần tìm rồi

ấn find

- Nó sẽ tạo một layout mới để mình nhập từ khoá cần tìm :

Trang 19

 Replace : thay thế từ khoá này bằng từ khoá khác

- nhấn như hình vẽ

- nó sẽ tạo ra thêm một layout mới để mình nhập từ khoá cần thay thế

Trang 20

- Cách dùng findwhat : nhâp từ khoá cần thay

rồi ấn find , xong rồi nhập từ khoá thay rồi ấn replace

Trang 21

2.3 Format

- Nó dùng để thay đổi font chữ kiểu chữ vào cỡ chữ , có xem trước

- Cách dùng nhấn vào format rồi chọn theo ý mình

2.4 About

- Nó là thông tin của nhóm lập trình

Trang 22

3 Thuật toán và code

3.1 new file ( tạo file mới )

Bắt Đầu

Trang 23

Đúng

Sai

public void newFile() {

String text = taText.getText();

String[] selection = {"Save", "Don't Save", "Cancel"};

if (!text.trim().equals("") && !isSaved) {

nội dungFile rỗng

Lưu file

Kết ThúcTạo mới file

Trang 24

int select = JOptionPane.showOptionDialog(null, "Do you want to save change?", "My Text Editor (MTE)", JOptionPane.DEFAULT_OPTION,

JOptionPane.WARNING_MESSAGE, null, selection, selection[2]);

Trang 25

Đúng

Sai

public void openFile() {

String text = taText.getText();

String[] selection = {"Save", "Don't Save", "Cancel"};

if (!text.trim().equals("") && !isSaved) {

nội dung File

Kết Thúc

Mở file

Trang 26

int select = JOptionPane.showOptionDialog(null, "Do you want to savechange?",

"My Text Editor (MTE)", JOptionPane.DEFAULT_OPTION,

JOptionPane.WARNING_MESSAGE, null, selection, selection[2]); switch (select) {

3.3Save & Save As

public void saveAs() {

if (taText.getText().trim().equals("")) {

Trang 27

return;

}

JFileChooser fileChooser = new JFileChooser();

fileChooser.setDialogTitle("Save as ");

fileChooser.setFileFilter(new FileNameExtensionFilter("Text file", "txt"));

int openDialog = fileChooser.showOpenDialog(null);

if (openDialog == JFileChooser.APPROVE_OPTION) {

String path = fileChooser.getSelectedFile().toString();

File temp = new File(path);

if (temp.exists()) {

String[] yesNo = {"Yes", "No"};

int question = JOptionPane.showOptionDialog(fileChooser,

"File already existed, do you want to replace?",

"Warning!", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null, yesNo, yesNo[1]);

} catch (FileNotFoundException ex) {

Logger.getLogger(J2LP0006.class.getName()).log(Level.SEVERE, null, ex); }

Trang 28

} catch (FileNotFoundException ex) {

Logger.getLogger(J2LP0006.class.getName()).log(Level.SEVERE, null, ex); }

Trang 29

sai

đúng

public void exit() {

String text = taText.getText();

String[] selection = {"Save", "Don't Save", "Cancel"};

if (!text.trim().equals("") && !isSaved) {

int select = JOptionPane.showOptionDialog(null, "Do you want to save change?",

Thoát chương trình

Kết Thúc

Trang 30

"My Text Editor (MTE)", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, selection, selection[2]); switch (select) {

UndoManager undoManager = new UndoManager();

public void redo() {

try {

Trang 31

public void copy() {

String selectedText = taText.getSelectedText();

StringSelection stringSelection = new StringSelection(selectedText);

clipboard.setContents(stringSelection, null);

}

public void cut() {

String selectedText = taText.getSelectedText();

StringSelection stringSelection = new StringSelection(selectedText);

Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, null);

taText.replaceSelection("");

}

public void paste() {

Transferable content = clipboard.getContents(this);

try {

String dstData = (String)content.getTransferData(DataFlavor.stringFlavor);

int position = taText.getCaretPosition();

taText.replaceRange(dstData, position, position);

} catch (UnsupportedFlavorException | IOException ex) {

Logger.getLogger(J2LP0006.class.getName()).log(Level.SEVERE, null,ex);

}

Trang 32

}

public void find() {

String find = Find.tfFind.getText();

String text = J2LP0006.taText.getText();

int caretPosition = J2LP0006.taText.getCaretPosition();

}

} else {

// textPart1 = text.substring(0, caretPosition - find.length() + 1);

textPart1 = text.substring(0, caretPosition);

if (textPart1.lastIndexOf(find) >= 0) {

J2LP0006.taText.select(textPart1.lastIndexOf(find),textPart1.lastIndexOf(find) + find.length());

}

}

}

public void findOnReplace() {

String find = Replace.tfFind.getText();

String text = J2LP0006.taText.getText();

if (text.contains(find)) {

J2LP0006.taText.select(text.indexOf(find), text.indexOf(find) +find.length());

Replace.bReplace.setVisible(true);

}

Trang 33

}

public void replace() {

String replace = Replace.tfReplace.getText();

if (!Replace.cbAll.isSelected()) {

J2LP0006.taText.replaceSelection(replace);

} else {

String text = J2LP0006.taText.getText();

text = text.replace(Replace.tfFind.getText(), Replace.tfReplace.getText()); System.out.println(text);

public void init() {

java.awt.Font fontDefault = J2LP0006.taText.getFont();

Trang 34

DefaultListModel<String> fontList = new DefaultListModel<>();

String fonts[] =GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

for (int i = 0; i < fonts.length; i++) {

DefaultListModel<String> fontSize = new DefaultListModel<>();

for (int i = 3; i <= 48; i++) {

* This method is called from within the constructor to initialize the form

* WARNING: Do NOT modify this code The content of this method is always

* regenerated by the Form Editor

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jLabel1 = new javax.swing.JLabel();

Trang 35

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jScrollPane1 = new javax.swing.JScrollPane();

listFont = new javax.swing.JList<>();

jScrollPane2 = new javax.swing.JScrollPane();

listStyle = new javax.swing.JList<>();

jScrollPane3 = new javax.swing.JScrollPane();

listSize = new javax.swing.JList<>();

jPanel1 = new javax.swing.JPanel();

lSample = new javax.swing.JLabel();

jButton1 = new javax.swing.JButton();

jTextField1 = new javax.swing.JTextField();

jTextField2 = new javax.swing.JTextField();

jTextField3 = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

listFont.addListSelectionListener(newjavax.swing.event.ListSelectionListener() {

public void valueChanged(javax.swing.event.ListSelectionEvent evt) { listFontValueChanged(evt);

}

});

jScrollPane1.setViewportView(listFont);

listStyle.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);

Trang 36

listStyle.addListSelectionListener(newjavax.swing.event.ListSelectionListener() {

public void valueChanged(javax.swing.event.ListSelectionEvent evt) { listStyleValueChanged(evt);

}

});

jScrollPane2.setViewportView(listStyle);

listSize.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);

listSize.addListSelectionListener(newjavax.swing.event.ListSelectionListener() {

public void valueChanged(javax.swing.event.ListSelectionEvent evt) { listSizeValueChanged(evt);

javax.swing.GroupLayout jPanel1Layout = newjavax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(lSample, javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

Trang 37

addGroup(layout.createSequentialGroup()

addContainerGap()

addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()

addGap(0, 0, Short.MAX_VALUE)

addComponent(jButton1))

addGroup(layout.createSequentialGroup()

addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

addComponent(jTextField1,javax.swing.GroupLayout.Alignment.LEADING)

addComponent(jScrollPane1,javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE, 163, Short.MAX_VALUE)

addComponent(jLabel1,javax.swing.GroupLayout.Alignment.LEADING))

Trang 38

addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

addGroup(layout.createSequentialGroup()

addComponent(jLabel2)

addGap(0, 67, Short.MAX_VALUE))

addComponent(jScrollPane2,javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)

addComponent(jTextField2))

addGap(18, 18, 18)

addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

addComponent(jLabel3,javax.swing.GroupLayout.DEFAULT_SIZE, 61, Short.MAX_VALUE)

addComponent(jScrollPane3,javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)

addGroup(layout.createSequentialGroup()

addContainerGap()

addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

addComponent(jLabel1)

addComponent(jLabel2)

addComponent(jLabel3))

addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

addComponent(jTextField1,javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

Trang 39

addComponent(jTextField2,javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

addComponent(jTextField3,javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)

addComponent(jScrollPane2,javax.swing.GroupLayout.PREFERRED_SIZE, 147,javax.swing.GroupLayout.PREFERRED_SIZE)

addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE, 147,javax.swing.GroupLayout.PREFERRED_SIZE)

addComponent(jScrollPane3,javax.swing.GroupLayout.PREFERRED_SIZE, 147,javax.swing.GroupLayout.PREFERRED_SIZE))

addGap(18, 18, 18)

addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

Trang 40

int style = listStyle.getSelectedIndex();

try {

int size = Integer.parseInt(listSize.getSelectedValue());

lSample.setFont(new java.awt.Font(name, style, size));

int size = Integer.parseInt(listSize.getSelectedValue());

lSample.setFont(new java.awt.Font(name, style, size));

int size = Integer.parseInt(listSize.getSelectedValue());

lSample.setFont(new java.awt.Font(name, style, size));

} catch (Exception e) {

}

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

String name = listFont.getSelectedValue();

int style = listStyle.getSelectedIndex();

try {

int size = Integer.parseInt(listSize.getSelectedValue());

J2LP0006.taText.setFont(new java.awt.Font(name, style, size));

setVisible(false);

} catch (Exception e) {

}

Ngày đăng: 16/01/2019, 13:15

TỪ KHÓA LIÊN QUAN

w