1、QQ个人资料java课程设计辽 宁 工 业 大 学 JAVA程序设计 课程设计(论文)题 目: QQ个人资料 院(系): 软 件 学 院 专业班级: 计算机信息管理051班 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 程序设计专题(报告)任务及评语院(系):软件学院 教研室:软件教研窒学 号学生姓名专业班级程序设计(报告)题目QQ个人资料程序设计(报告)任务程序设计专题的任务与要求:(1)掌握Java编程、面向对象的基础知识。(2)较熟练地编写Java应用程序Application。(3)了解Java的常用标准类库、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强
2、独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2007 年 6 月 13 日目 录第1章 课程设计的目的与要求 11.1 课程设计目的 11.2 课程设计的实验环境 11.3 课程设计的预备知识 11.4 课程设计要求 1第2章 课程设计内容 22.1课程设计题目 22.
3、2课程设计整体设计说明 22.2.1课程设计内容 22.2.2程序中所用类说明 32.2.3程序中使用方法的说明 32.2.4异常处理说明 42.2.5程序运行效果及存在的问题 42.3程序部分源代码及注释 5第3章 课程设计总结 12第1章 课程设计的目的与要求1.1 课程设计目的JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是电子商务专业学生学习完JAVA程序设计课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广
4、泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和
5、判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。第2章 课程设计内容2.1课程设计题目QQ个人资料2.2课程设计整体设计说明 这次课程设计是制作一个QQ个人资料窗体, 这次我使用的编程语言是JAVA语言。我采用的编译环境是Windows XP中文版+J2SDK1.6.0中文版+Eclipse3.2.1+ Eclipse3.2.1中文语言包+SWT designer5.1.0 使用JAVA语言及S
6、WT进行可视编辑完成该功能。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两个文件夹。(二)
7、进入Eclipse平台新建JAVA项目、新建包、新建类(三)打开eclipse,首先选择工作空间,点击“浏览”选择路径。(四)在 Eclipse 内,选择菜单项文件 新建 项目. DesignerSWT/JFace Java Project以新建SWT项目。项目名称:“Kechengsheji”。(五)选择菜单项 文件 新建 包,包的名称为xuliu,按“确定”按钮,新建包。 (六)在“包资源管理器”视图中,选择 xuliu 项目。单击文件新建类(七)新建并设计主窗体类QQ(八)调试 选择菜单项 运行调试调试方式SWT应用程序 找出错误并改正,直到调试成功。 (九)运行 菜单项 运行运行运行方
8、式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():在主窗
9、体上显示当前时间的方法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.sle
10、ep(1000)是Thread.sleep()的一个实例。)所以我在使用这个方法时先try捕获异常,然后catch处理异常(显示提示信息:异常)。2.2.5程序运行效果及存在的问题 在ECLIPSE下编译运行的效果如图。可以选择年月查看每月日历。并且能显示当前系统时间和某天是星期几。可以点击年份后的选择年,月份后的选择月,点查看按钮查看该月的日历。 存在的问题就是不能显示出农历效果,当然农历的算法比较复杂,就连Microsoft Windows系统的时间/日期功能也没有提供农历的效果。2.3程序部分源代码及注释QQ.java 源代码package xuliu;import org.eclips
11、e.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.Select
12、ionEvent;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.layout.RowLayout;import org.eclipse.swt.widgets.*;public class QQ /* 为了自定义监听器类MyMouseListener中的代码能访问到以下对象,故将这些对象定义成类的实例变量 */ private StackLayout stackLayout = new StackLayout(); private Co
13、mposite 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 voi
14、d 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 = ne
15、w List(sashForm, SWT.BORDER); / 作为演示只加了两项 selectList.setItems(new String 个人资料, 联系方式 ); / 加一个鼠标监听器 selectList.addMouseListener(MouseListener) new MyMouseListener(); / 右边的堆栈式面板 rightComp = new Composite(sashForm, SWT.NONE); rightComp.setLayout(stackLayout); / 共两项,将生成此面板的代码提出成一个方法,保证代码结构的清晰 yourDataCom
16、p = createYourDataComp(rightComp);/ 个人资料的面板 otherComp = createOtherComp(rightComp);/ 联系方式的面板 / 在堆栈面板上先显示个人资料界面 stackLayout.topControl = yourDataComp; / 分割窗口的左右空间比例 sashForm.setWeights(new int 1, 4 ); / 界面的按钮的面板 Composite buttonComp = new Composite(shell, SWT.BORDER); / 使用GridData设置buttonsComp在它你容器sh
17、ell中的布局方式 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(rowLayou
18、t); / 在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
19、); 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()
20、public void widgetSelected(SelectionEvent e) MessageDialog.openInformation(null, 提示, 你单击了应用按钮); ); shell.layout(); shell.open(); while (!shell.isDisposed() if (!display.readAndDispatch() display.sleep(); / 个人资料面板的生成 private Composite createYourDataComp(Composite rightComp) Composite composite = new
21、Composite(rightComp, SWT.NONE); composite.setLayout(new GridLayout(6, false);/ 个人资料面板分成6列 / 用户号码的标签及文本框 new Label(composite, SWT.NONE).setText(用户号码); / 只读型的文本框 Text text = new Text(composite, SWT.READ_ONLY | SWT.BORDER); / 水平抢占式充满,并占用三列的空间 createGridData是自定义方法 text.setLayoutData(createGridData(GridD
22、ata.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类的
23、使用暂还没讲到,我们先用一个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_A
24、LIGN_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.
25、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)
26、.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; tempC
27、omp.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(compos
28、ite, 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_A
29、LIGN_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(cr
30、eateGridData(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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1