文档库 最新最全的文档下载
当前位置:文档库 › JAVA程序设计 课程设计

JAVA程序设计 课程设计

JA V A程序设计课程设计(论文)

题目: QQ个人资料

院(系):软件学院

专业班级:计算机信息管理051班

学号:

学生姓名:

指导教师:

教师职称:

起止时间:2007.5.28至2007.6.10

程序设计专题(报告)任务及评语

院(系):软件学院教研室:软件教研窒

学号0 学生姓名专业班级计算机信息管理051班

程序设计(报告)题目QQ个人资料

程序设计(报告)任务

程序设计专题的任务与要求:

(1)掌握Java编程、面向对象的基础知识。

(2)较熟练地编写Java应用程序Application。

(3)了解Java的常用标准类库、编程技巧、异常处理。

(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。

(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。

(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。

课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。

指导教师评语及成绩

成绩:指导教师签字:

2007 年6 月13 日

目录

第1章课程设计的目的与要求 1

1.1 课程设计目的 1

1.2 课程设计的实验环境 1

1.3 课程设计的预备知识 1

1.4 课程设计要求 1

第2章课程设计内容 2

2.1课程设计题目 2

2.2课程设计整体设计说明 2

2.2.1课程设计内容 2

2.2.2程序中所用类说明 3

2.2.3程序中使用方法的说明 3

2.2.4异常处理说明 4

2.2.5程序运行效果及存在的问题 4

2.3程序部分源代码及注释 5

第3章课程设计总结12

第1章课程设计的目的与要求

1.1 课程设计目的

《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是电子商务专业学生学习完《JA V A程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2 课程设计的实验环境

硬件要求能运行Windows 9.X操作系统的微机系统。JA V A程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

1.3 课程设计的预备知识

熟悉JA V A语言及ECLIPSE开发工具。

1.4 课程设计要求

按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和

判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

第2章课程设计内容

2.1课程设计题目

QQ个人资料

2.2课程设计整体设计说明

这次课程设计是制作一个QQ个人资料窗体,

这次我使用的编程语言是JA V A语言。我采用的编译环境是Windows XP中文版+J2SDK1.6.0中文版+Eclipse3.2.1+ Eclipse3.2.1中文语言包+SWT designer5.1.0

使用JA V A语言及SWT进行可视编辑完成该功能。

2.2.1课程设计内容

(一)安装编译环境

(1)安装jdk1.6.0 运行j2sdk1.6.0.exe程序

(2)安装Eclipse 将下载的Eclipse压缩包eclipse-SDK-3.2.1-win32.zip解压到指定目录下(3)将下载的汉化压缩包NLpack1-eclipse-SDK-3.2-win32.zip按原路径解压即可,也就是直接覆盖eclipse文件下的features、plugins两个文件夹。

(4)安装SWT designer,将下载的压缩包按原路径解压即可,也就是直接覆盖eclipse文件夹下的features、plugins两个文件夹。

(二)进入Eclipse平台新建JA V A项目、新建包、新建类

(三)打开eclipse,首先选择工作空间,点击“浏览”选择路径。

(四)在Eclipse 内,选择菜单项文件> 新建> 项目... Designer>SWT/JFace Java Project以新建SWT项目。

项目名称:“Kechengsheji”。

(五)选择菜单项文件> 新建>包,包的名称为xuliu,按“确定”按钮,新建包。(六)在“包资源管理器”视图中,选择xuliu 项目。单击文件>新建>类

(七)新建并设计主窗体类QQ

(八)调试选择菜单项运行>调试>调试方式>SWT应用程序

找出错误并改正,直到调试成功。

(九)运行菜单项运行>运行>运行方式>SWT应用程序

运行程序看结果。

2.2.2程序中所用类说明

MainFrame 主窗体类:

设计显示年份月份选择按钮及查看按钮,显示月历。

Clock 当前时间类:

从系统中提取当前时间并以yyyy年MM月dd日hh:mm:ss显示。

2.2.3程序中使用方法的说明

MainFrame类中方法:

MainFrame():MainFrame类的构造函数

Init()显示月历方法

use():取查询月份第一天星期的方法

Resetday():运算是否闰年及各个月天数的方法

main():主方法程序在此开始执行

Clock 类中方法:

Clock():Clock类的构造函数

run():每秒取一次系统时间

paint():在主窗体上显示当前时间的方法

getTime():提取系统时间的方法

2.2.4异常处理说明

异常是异常事件的简称,它定义为在执行程序过程中出现了不正常的事件,破坏了正常的指令流。Java语言如果出现异常就要进行异常处理。

Clock类中有段代码含有异常处理。

try{

t.sleep(1000);//休眠1秒钟

}catch(InterruptedException e){

System.out.println("异常");

}

很多Java? 语言方法,如Thread.sleep()可以抛出InterruptedException异常。

程序需要暂停一段时间,于是调用t.sleep(1000)休眠一秒。(t.sleep(1000)是Thread.sleep()的一个实例。)所以我在使用这个方法时先try捕获异常,然后catch处理异常(显示提示信息:异常)。

2.2.5程序运行效果及存在的问题

在ECLIPSE下编译运行的效果如图。可以选择年月查看每月日历。并且能显示当前系统时间和某天是星期几。可以点击年份后的▼选择年,月份后的▼选择月,点查看按钮查看该月的日历。

存在的问题就是不能显示出农历效果,当然农历的算法比较复杂,就连Microsoft Windows系统的时间/日期功能也没有提供农历的效果。

2.3程序部分源代码及注释

QQ.java 源代码

package xuliu;

import org.eclipse.jface.dialogs.MessageDialog;

import org.eclipse.swt.SWT;

import org.eclipse.swt.custom.*;

import org.eclipse.swt.events.MouseAdapter;

import org.eclipse.swt.events.MouseEvent;

import org.eclipse.swt.events.MouseListener;

import org.eclipse.swt.events.SelectionAdapter;

import org.eclipse.swt.events.SelectionEvent;

import https://www.wendangku.net/doc/504454795.html,yout.GridData;

import https://www.wendangku.net/doc/504454795.html,yout.GridLayout;

import https://www.wendangku.net/doc/504454795.html,yout.RowLayout;

import org.eclipse.swt.widgets.*;

public class QQ {

/* 为了自定义类MyMouseListener中的代码能访问到以下对象,故将这些对象定义成类的实例变量*/

private StackLayout stackLayout = new StackLayout();

private Composite yourDataComp;

private Composite otherComp;

private List selectList;

private Composite rightComp;

/* 由于自定义方法程序较长,这次的主程序框架选择了Eclispe“新建”向导的第二种"public open() mothd" */

public static void main(String[] args) {

try {

QQ window = new QQ();

window.open();

} catch (Exception e) {

e.printStackTrace();

}

}

public void open() {

Display display = Display.getDefault();

Shell shell = new Shell();

shell.setSize(550, 350);

shell.setText("个人设置");

shell.setLayout(new GridLayout());

{

// 分割窗口

SashForm sashForm = new SashForm(shell, SWT.BORDER);

sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));

{

// 分割窗左边的列表框

selectList = new List(sashForm, SWT.BORDER);

// 作为演示只加了两项

selectList.setItems(new String[] { "个人资料", "联系方式" });

// 加一个鼠标

selectList.addMouseListener((MouseListener) new MyMouseListener());

}

{

// 右边的堆栈式面板

rightComp = new Composite(sashForm, SWT.NONE);

rightComp.setLayout(stackLayout);

// 共两项,将生成此面板的代码提出成一个方法,保证代码结构的清晰

yourDataComp = createYourDataComp(rightComp);// 个人资料的面板

otherComp = createOtherComp(rightComp);// 联系方式的面板

// 在堆栈面板上先显示"个人资料"界面

stackLayout.topControl = yourDataComp;

}

// 分割窗口的左右空间比例

sashForm.setWeights(new int[] { 1, 4 });

}

{

// 界面的按钮的面板

Composite buttonComp = new Composite(shell, SWT.BORDER);

// 使用GridData设置buttonsComp在它你容器shell中的布局方式

GridData gridData = new GridData();

gridData.horizontalAlignment = GridData.END;// 让buttonComp向右靠

buttonComp.setLayoutData(gridData);

// 设置buttonsComp的布局为RowLayout,用来设定buttonComp内组件的布局方式

RowLayout rowLayout = new RowLayout();

rowLayout.spacing = 15;// 按钮之间间隔15个元素

buttonComp.setLayout(rowLayout);

// 在buttonComp下建立三个按钮

Button btn1 = new Button(buttonComp, SWT.NONE);

btn1.setText("确定");

btn1.addSelectionListener(new SelectionAdapter() {

public void widgetSelected(SelectionEvent e) {

MessageDialog.openInformation(null, "提示", "你单击了'确定'按钮");

System.exit(0);

}

});

Button btn2 = new Button(buttonComp, SWT.NONE);

btn2.setText("取消");

btn2.addSelectionListener(new SelectionAdapter() {

public void widgetSelected(SelectionEvent e) {

MessageDialog.openInformation(null, "提示", "你单击了'取消'按钮");

System.exit(0);

}

});

Button btn3 = new Button(buttonComp, SWT.NONE);

btn3.setText("应用");

btn3.addSelectionListener(new SelectionAdapter() {

public void widgetSelected(SelectionEvent e) {

MessageDialog.openInformation(null, "提示", "你单击了'应用'按钮");

}

});

}

https://www.wendangku.net/doc/504454795.html,yout();

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch())

display.sleep();

}

}

// 个人资料面板的生成

private Composite createYourDataComp(Composite rightComp) {

Composite composite = new Composite(rightComp, SWT.NONE);

composite.setLayout(new GridLayout(6, false));// 个人资料面板分成6列

// 用户号码的标签及文本框

new Label(composite, SWT.NONE).setText("用户号码");

// 只读型的文本框

Text text = new Text(composite, SWT.READ_ONL Y | SWT.BORDER);

// 水平抢占式充满,并占用三列的空间createGridData是自定义方法

text.setLayoutData(createGridData(GridData.FILL_HORIZONTAL, 3));

// 图片部分,我们再用一个面板嵌套来管理

Composite photoComp = new Composite(composite, SWT.BORDER);

// 水平垂直对齐式充满,横占两列,竖占4行

photoComp.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL, 2, 4));

photoComp.setLayout(new GridLayout(2, false));// 分2列

{

// 图片Image类的使用暂还没讲到,我们先用一个Composite来代替图片

Composite tempComp = new Composite(photoComp, SWT.BORDER);

tempComp.setLayoutData(new GridData(50, 50));// 设定大小;宽50,高50

// 选择图片的箭头型按钮,并设置它向下靠

Button selPhotoButton = new Button(photoComp, SWT.ARROW | SWT.DOWN); selPhotoButton.setLayoutData(new GridData(

GridData.VERTICAL_ALIGN_END));

// 升级成为会员的按钮,横占photoComp的两列,并横向对齐充满

Button updateButton = new Button(photoComp, SWT.NONE);

updateButton.setLayoutData(createGridData(

GridData.HORIZONTAL_ALIGN_FILL, 2));

updateButton.setText("升级成为会员");

}

new Label(composite, SWT.NONE).setText("用户昵称");

Text nicknameText = new Text(composite, SWT.BORDER);

nicknameText.setLayoutData(createGridData(

GridData.HORIZONTAL_ALIGN_FILL, 3));

new Label(composite, SWT.NONE).setText("个性签名");

Text attachNameText = new Text(composite, SWT.BORDER);

attachNameText.setLayoutData(createGridData(

GridData.HORIZONTAL_ALIGN_FILL, 3));

new Label(composite, SWT.NONE).setText("等级");

{

// Image类的使用暂还没有讲到,我们先用一个Composite来代替图片

Composite tempComp = new Composite(composite, SWT.BORDER);

GridData gridData = new GridData(GridData.FILL_HORIZONTAL

| GridData.VERTICAL_ALIGN_BEGINNING);

gridData.horizontalSpan = 3;

// Composite默认的高度太高,故手工设定高度为20像素

gridData.heightHint = 20;

tempComp.setLayoutData(gridData);

}

new Label(composite, SWT.NONE).setText("姓名");

Text nameText = new Text(composite, SWT.BORDER);

nameText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

new Label(composite, SWT.NONE).setText("性别");

Combo setCombo = new Combo(composite, SWT.NONE);

new Label(composite, SWT.NONE).setText("年龄");

Text okText = new Text(composite, SWT.BORDER);

okText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

new Label(composite, SWT.NONE).setText("毕业院校");

Text schoolText = new Text(composite, SWT.BORDER);

schoolText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL,

3));

new Label(composite, SWT.NONE).setText("生肖");

Combo animalCombo = new Combo(composite, SWT.NONE);

animalCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); new Label(composite, SWT.NONE).setText("职业");

Text jobText = new Text(composite, SWT.BORDER);

jobText

.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));

new Label(composite, SWT.NONE).setText("星座");

Text starText = new Text(composite, SWT.BORDER);

Label introLabel = new Label(composite, SWT.NONE);

// 默认是居中,改为顶端对齐

introLabel

.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));

introLabel.setText("个人说明");

Text introlText = new Text(composite, SWT.BORDER | SWT.WRAP);// WRAP自动换行 introlText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL, 5));

// 返回个人资料面板composite

return composite;

}

// 生成一个简单的联系方式的面板

private Composite createOtherComp(Composite rightComp) {

Composite composite = new Composite(rightComp, SWT.NONE);

composite.setLayout(new GridLayout(4, false));

new Label(composite, SWT.NONE).setText("国家/地区");

Combo contryCombo = new Combo(composite, SWT.NONE);

contryCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

new Label(composite, SWT.NONE).setText("省份");

Combo stateCombo = new Combo(composite, SWT.NONE);

stateCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

new Label(composite, SWT.NONE).setText("姓名");

Text nameText = new Text(composite, SWT.BORDER);

nameText

.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));

new Label(composite, SWT.NONE).setText("工号");

Text wnText = new Text(composite, SWT.BORDER);

wnText.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));

new Label(composite, SWT.NONE).setText("密码");

Text pswText = new Text(composite, SWT.PASSWORD|SWT.BORDER);

pswText

.setLayoutData(createGridData(GridData.HORIZONTAL_ALIGN_FILL, 3));

return composite;

}

/*

* 生成GridData对象的重复代码太多,写成一个方式可以减少程序的行数,用起来也方便,而且还要注意一个GridData只能被一个组件使用,不能两个组件使用一个GridData,则

*

* 有一个组件将不会显示出来

*/

private GridData createGridData(int style, int horizontalSpan) {

GridData gridData = new GridData(style);

gridData.horizontalSpan = horizontalSpan;

return gridData;

}

private GridData createGridData(int style, int horizontalSpan,

int verticalSpan) {

GridData gridData = new GridData(style);

gridData.horizontalSpan = horizontalSpan;

gridData.verticalSpan = verticalSpan;

return gridData;

}

// 鼠标,采用事件的命名内部类的写法

private class MyMouseListener extends MouseAdapter {

public void mouseDown(MouseEvent e) {

// 得到列表的当前选择项的序号(即单击的那项)

int selectIndex = selectList.getSelectionIndex();

// 如果单击第一项"个人资料",则让相对的面板移至居上面

if (selectIndex == 0)

stackLayout.topControl = yourDataComp;

else

stackLayout.topControl = otherComp;

https://www.wendangku.net/doc/504454795.html,yout();// 刷新堆栈式布局的项容器

}

}

}

度条对话框,源文件内容如下:

package com.awt.sample;

import https://www.wendangku.net/doc/504454795.html,ng.reflect.InvocationTargetException;

import org.eclipse.core.runtime.IProgressMonitor;

import org.eclipse.jface.dialogs.ProgressMonitorDialog;

import org.eclipse.jface.operation.IRunnableWithProgress;

import org.eclipse.swt.SWT;

import org.eclipse.swt.events.SelectionAdapter;

import org.eclipse.swt.events.SelectionEvent;

import https://www.wendangku.net/doc/504454795.html,yout.RowLayout;

import org.eclipse.swt.widgets.Button;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

public class ProgressDialog {

public static void main(String[] args) {

// TODO 自动生成方法存根

new ProgressDialog().monitor();

}

public void monitor() {

Display display = Display.getDefault();

final Shell shell = new Shell();

shell.setSize(550, 350);

shell.setLocation(450, 200);

shell.setText("进度条对话框测试");

shell.setLayout(new RowLayout());

Button button = new Button(shell, SWT.BORDER | SWT.CENTER);

button.setText(" GO ");

button.addSelectionListener(new SelectionAdapter() {

public void widgetSelected(SelectionEvent e) {

// 第一步:创建一个进度条对话框对象

System.out.println("开始2");

ProgressMonitorDialog pmd = new ProgressMonitorDialog(shell);//ProgressMonitorDialog是SWT的类

第3章课程设计总结

通过这次课程设计,我对JA V A这门程序设计语言进行了一次完整的学习与实践。对JA VA 的常量、变量、运算、类、流程、SWT、窗体和Applet进行了复习与实践,系统的进行了一次软件工程开发,完成了课程设计的任务。

为了能够较好地完成本次课程设计,我进行了阅读教材,网上搜索,到图书馆查找相关资料等准备工作,在做课程设计的过程中,我在利用所学知识的同时,又学到了很多实例化的理论知识和软件工程的一些实践。总结了一些经验和方法。强化了我的实际动手能力。同时也找到自己的不足。我一定会继续学习增加自己的编程能力,在今后的学习中我会更加的努力,增加自己的知识储备。

在掌握JA V A语言程序设计的理论知识的基础上,我能够结合实际,设计编程,调试运行JA V A 语言程序,完成课程设计论文。

这次课程设计,使我对本门课程有了更深一步的理解,《JA V A程序设计》并不是简单的计算机语言,它能够延伸到更宽更广的领域。学好这些知识也能为自己在以后学习动态网页制作打下坚实的基础。

最后感谢老师给予的耐心指导与帮助。

参考文献

[1] 耿祥义.《JA V A大学实用教程》. 北京:电子工业出版社. 2005年3月

[2] 耿祥义.《JA V A大学实用教程实验指导》.北京:电子工业出版社. 2005年3月

[3] [美]Cay S.Horstmann,程峰.《JA V A2核心技术》. 北京: 机械工业出版社. 2003年6月

[4] 张浩军.《Eclipse应用与实践》. 北京:高等教育出版社. 2006年9月

[5] 魏永继.《JA V A应用程序开发》. 北京:机械工业出版社. 2007年2月

[6] 胡祖荣,王雪轻.《JA V A入门与提高》. 北京:人民邮电出版社. 2004年2月

[7] 王永先.《J2SDK开发应用》. 武汉:华中科技大学出版社. 2005年9月

[8] 赵如艳.《JA V A软件工程》. 沈阳:东北大学出版社. 2007年2月

[9] 王新强,吴广智.《JA V A程序设计》. 北京:清华大学出版社. 2004年8月

[10] 李宇.《从零开始JA V A语言培训教程》. 北京:人民邮电出版社. 2005年6月

相关文档
相关文档 最新文档