java面向对象课程设计—学生管理系统—附源码+word文档

面向对象程序设计

——课程设计报告

班级:_______________

姓名:_______________

学号:_______________

日期:_______________

辽宁工程技术大学软件学院

目  录

1. 设计内容 1

2. 概要设计 1

3. 自定义类及接口说明 1

4. 程序源码 2

5. 程序运行与调试 6

6. 总结 7

7. 参考文献 7

标题:(样式选择标题1,段前端后10磅,三号字体,1.5倍行距)

正文:(小四字体,1.5倍行距)

参考文献(5号字体,1.5倍行距)

设计内容

参照实验题目

概要设计

对设计题目进行分析,说明程序各个功能该如何实现的,使用了哪些类。

Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。

线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。

文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。

由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。

在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法

自定义类及接口说明

对类和接口说明格式参照如下:

类名:EditInstantiation

父类:WindowAdapter

作用:实例化对象

主要成员变量:(代码及说明字体五号,单倍行距)

Frame myFrm // 定义主窗体

TextArea myText // 定义文本编辑区

Dialog myDlgFind,myDlgFindont //查找及设置字体对话框

TextField TFfind, TFreplace, TffontSize

//查找对话框和字体窗体中的文本行

Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮

Label Lf, Lr, Ls //定义和创建各标签

MenuBar Mbbar //定义和创建主菜单

Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项

Toolkit toolKit

Clipboard myCB //剪切板对象

FileDialog myFDlg //定义文件对话框

Choice ChfontName //定义和创建字体选择框

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; //实例化一个Time类

private int VImin=1; // schedule方法中的一个时间参数

private int VItype=JOptionPane.INFORMATION_MESSAGE;

//提示对话框类型

private String VStitle; //提示对话框标题

private String VSmessage; //提示对话框信息

private boolean VBchanged = true; //改变字体的一个标识

主要成员方法:(代码及说明字体五号,单倍行距)

public void init() //初始化各部件菜单的定义和事件的监听

public void displayEdit ()//显示窗体及调用Time中的schedule方法

public void windowClosing () //关闭窗体

public void save //保存文件方法

程序源码

代码排版格式要求(整齐,层次清晰,字体一致,单倍行距,字体5号)

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(“查找内容:”);

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;

private int VItype=JOptionPane.INFORMATION_MESSAGE;

private String VStitle;

private String VSmessage;

private boolean VBchanged = true;

private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;

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(“关于作者”));

//—————– 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); }});

TFfind.addKeyListener(new KeyEvents());//注册事件监听

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设置字体对话框

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);}});

//=============end set font dialog

// =======set Edit frame设置编辑器窗休

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编辑器”);

}

//显示窗体

public void displayEdit(){

myFrm.setVisible(true);

//———————- auto save ———————

VTtime = new Timer(true);

//parament 1 the task

//parament 2 when to start the task

//parament 3 set the interval time

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);

}

…………

}

程序运行与调试

  1. 运行界面(如果实现的对话框有多个,选择其中的一个截图

主界面:图

对话框:图

  1. 错误调试(至少写出10个错误

  • 在XX类XX方法中出现XXX错误

原因:在引用用户变量与定义时的不一致,第二个字母大写了。

如何解决:将Breplace 改为Breplace

  • 在XX类XX方法中出现XXX错误

原因:在语句中丢失参数

如何解决:补全参数

  • 在XX类XX方法中出现XXX错误

原因:没有实现接口ActionListener

如何解决:在类名后加上implements ActionListener

总结

总结未实现的功能(如果存在则需要加以说明,并给出实现不了的原因)。

总结本次设计的难点。

总结学习收获(通过本次设计在理论学习部分哪些知识得到了加深)。

使用面向对象语言编写程序的心得体会。

其他

参考文献

[1]《Thinking in Java》2e中文版 侯捷 / 王建兴 合译

[2]《java 2程序设计教程》 作者:Harvey M.Deitel 和 Paul J.Deitel 机械工业出版社

资源下载: