Java课程设计选题.docx

上传人:b****6 文档编号:3600648 上传时间:2022-11-24 格式:DOCX 页数:17 大小:27.86KB
下载 相关 举报
Java课程设计选题.docx_第1页
第1页 / 共17页
Java课程设计选题.docx_第2页
第2页 / 共17页
Java课程设计选题.docx_第3页
第3页 / 共17页
Java课程设计选题.docx_第4页
第4页 / 共17页
Java课程设计选题.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Java课程设计选题.docx

《Java课程设计选题.docx》由会员分享,可在线阅读,更多相关《Java课程设计选题.docx(17页珍藏版)》请在冰豆网上搜索。

Java课程设计选题.docx

Java课程设计选题

封面

作者:

PanHongliang

仅供个人学习

Java课程设计选题

Java课程设计说明

本次课程设计的目的是通过课程设计的各个工程的综合训练,培养学生实际分析问题、编程和动手能力,提高学生的综合素质。

本课程设计尝试使用一些较生动的设计工程,激发学生的学习兴趣,引导学生主动学习,正确理解和接受需要重点掌握的知识点。

【课程设计步骤】1、分析工程要求

每个课程设计工程都有其相关的设计要求,其中对工程实现的功能做了详细定义。

如果某些知识面掌握的不是很好,可以再返回去重新熟悉与掌握。

2、自学新知识每个课程设计工程都涉及一些新的知识面(老师没有在课堂上讲解的内容),在开始设计前,首先要查阅相关资料,学习和掌握工程中涉及的新知识,提高自学能力。

3、界面设计本次课程设计都是图形界面程序,所以在实现程序功能前,可以先完成图形界面设计(建议采用swing组件或第三方swt组件)。

在部分工程运行效果示例中,抓取了运行结果界面。

工程图形界面所涉及了容器、组件、布局知识,在设计图形界面前,可以再回顾下以上知识(建议采用较智能的开发工具如:

eclipse、Jbuilder等)。

4、工程功能实现每种功能其实就是相应控件的响应事件,所以要根据课程设计要求把各种功能转换成相应组件的响应事件。

如动作事件(ActionEvent)、键盘事件(KeyEvent)、鼠标事件(MouseEvent)、焦点事件(FocusEvent)。

对于比较复杂的功能,先要设计该功能实现的算法和程序流程图,然后再用程序语句去实现。

5、工程测试与扩展工程程序设计完以后,运行该工程,一一测试所有工程功能,如有不合要求的话,重新修改程序以达到工程要求。

如有时间的话,可以在工程要求的基础上扩展创新一些功能,根据其创新情况可以给予适当的加分。

【课程设计要求】

1)选题要求:

本次课程设计所提供的课设题目,每人选择一个题目。

选题分三种类型:

普通题、提高题和挑战题,每种题型的起步分分别为:

中、良和优,如在该题型中选题完成良好的可以相应提高分数等级。

如课设能达优的同学必须在课设上机安排时间内参加答辩。

2)界面要求:

尽量使用swing包实现图形界面,要符合日常软件使用规范来设计菜单和界面。

如果无法实现图形界面,则在命令行方式下也需要提供菜单,方便用户操作。

3)代码要求:

标识符命名遵循java命名规范。

能够考虑各种异常处理,注重提高程序运行效率。

4)提交内容:

全部源代码。

课程设计报告注:

课程设计报告严格按照老师给的《java课程设计报告书模版》要求撰写,课设报告要求15~20页(不包含代码)。

普通题

题目计算器

设计内容设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、

设计要求设计的计算器应用程序可以完成家法、减法、乘法、除法和取余运算。

且有小数点、正负号、求倒数、退格和清零功能。

学习要点本程序主要练习使用布局管理器设计一个计算器的界面,并练习使用事件监听器处理数据的输入,并完成相关的计算。

设计思路本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panelp加入到”Center”区域。

包含各种按钮的面板Panelp采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。

同时注册按钮事件监听器。

如:

Buttonb=newButton()。

b.addActionListener(事件监听器);

事件监听器中的事件处理方法voidactionPerformed(ActionEventevt)完成主要的按钮事件的处理。

事件处理分以下几种情况:

数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。

在事件处理。

触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。

计算器完成的是一个数学表达式,如:

3+2,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,+,2分别存储在链表中,最后运算时,可以一一取出来进行运算。

本应用程序中的数字按钮和运算符按钮可以分别定义以下两个类的对象组件

数字按钮NumberButton类如下:

importjava.awt.*。

importjava.awt.event.*。

importjavax.swing.*。

publicclassNumberButtonextendsButton

{

intnumber。

publicNumberButton(intnumber)

{

super(""+number)。

this.number=number。

setForeground(Color.blue)。

}

publicintgetNumber()

{

returnnumber。

}

}

运算符按钮OperationButton类如下

importjava.awt.*。

importjava.awt.event.*。

importjavax.swing.*。

publicclassOperationButtonextendsButton

{

String运算符号。

publicOperationButton(Strings)

{

super(s)。

运算符号=s。

setForeground(Color.red)。

}

publicStringget运算符号()

{

return运算符号。

}

}

相关学习资料

LinkedList类:

LinkedList类在Java标准类库的java.util包定义,它提供域数组类似的服务,包括可以插入或删除元素。

与数组不同的是,LinkList对象可以根据需要,动态地改变大小。

LinkList对象中存储的是对Object类的一系列引用,对任何类型对象的引用都可以被添加倒LinkList对象中。

LinkedList类中有以下方法

publicLinkedList()//构造方法

publicObjectgetFirst()//返回链表中的第一个元素

publicObjectgetLast()//返回链表中的最后一个元素

publicObjectremoveFirst()删除并返回第一个链表元素

publicObjectremoveLast()删除并返回最后一个链表元素

publicvoidaddFirst(Objecto)//插入一个元素在为链表的第一个元素

publicvoidaddLast(Objecto)//插入一个元素为链表的最后一个元素

publicbooleancontains(Objecto)//是否存在该元素

publicintsize()//返回链表元素个数

publicbooleanadd(Objecto)//添加元素o

publicbooleanremove(Objecto)//删除元素o

publicbooleanaddAll(Collectionc)//添加一个对象集c

publicvoidclear()//清除列表中的所有元素

publicObjectget(intindex)//返回指定位置(index)的链表元素

publicObjectset(intindex,Objectelement)//设定指定位置(index)的链表元素为元素element

publicvoidadd(intindex,Objectelement)//在链表特定位置(index)上插入链表元素

publicObjectremove(intindex)//删除指定位置(index)上的链表元素

下面举例应用LinkedList类

importjava.awt.*。

importjava.awt.event.*。

importjava.util.LinkedList。

publicclassUseLinkedListextendsFrame

{

Publicstaticvoidmain(Stringargs[])

{

Stringopertation1[]={“+”,”-“,”*”,”/”,”%”}。

Stringipe0,ope1,ope2,ope3,ope4。

Intn。

LinkedListlist1。

For(intI=0。

I

I++)

list1.add(opertation[i])。

ope0=(String)list1.getFirst()。

ope1=(String)list1.get

(1)。

ope4=(String)list1.getLast()。

list1.set(2,”&”)。

ope2=(String)list1.get

(2)。

list1.remove(“/”)。

list1.removeLast()。

n=list1.size()。

System.out.println(“链表中一共有”+n+”元素”)。

System.out.println(“ope0-ope4分别为”+ope0+ope1+ope2+ope3+ope4)。

}

}

运算结果为:

3

+-&

运行效果示例:

题目简单投票管理系统

设计要求

设计一个如图1所示的投票管理系统界面,要求输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字。

点击取消按钮候选人输入框为空,重新输入候选人名单。

选中候选人的选择框时,表示给该候选人投一票。

点击确定按钮时表示产生一张选票。

点击刷新按钮回到程序的初始界面重新设置候选人。

根据选择框的状态变化统计出候选人的最后得票数,并可按票选取多少点击排序按钮对候选人进行排序。

(其中,最多从候选人中选取3人,如果一张选票选取多于3人,该票就作废票处理。

如果一个也没投票,就作弃权处理。

程序能显示一共统计了多少选票,并能统计出废票和弃权票的票数。

学习要点

本程序主要学习窗口的布局以及按钮事件的触发。

设计思路

定义几个类变量来记录投票相关记录如:

Checkboxcheckbox[]//选择框数组,代表候选人

TextFieldpersonVote[]//文本条数组,显示每个人的得票情况

intcount[]//记录每个人的得票数

inttotalVote=0,//总票数

intpeopleNumber=0。

//候选人个数

int有效人数=3,废票数=0,弃权票数=0。

在输入候选人名单时是输入一串名字,所以要从这一串名字中单个的提取出来并统计出候选人个数,在完成这项功能时要用到StringTokenizer类。

点击确认按钮后,根据候选人个数添加单选按钮,并以候选人名字作为单选按钮的标签名。

然后通过确定按钮事件分别给以上定义的各变量赋值。

把结果显示出来,同时可以根据peopleNumber的值对各候选人文本框排序,即调整候选人文本框中的内容。

相关学习资料

StringTokenizer类

有时我们需要分析字符串并将字符串分解成可被独立使用的单词,这些单词叫做语言符号。

例如,对于字符串WeareStudents,如果我们把空格作为该字符串的分隔符,那么该字符串有3个单词(语言符号)。

而对于字符串WE,are,Student,如果我们把逗号作为了该字符串的分隔符,那么该字符串有3个单词(语音符号)。

当我们分析一个字符串并将字符串分解成可别独立使用的单词时,可以使用java.util包中的StringTokenizer类,改类有两个常用的构造方法:

StringTokenizer(Strings)为字符串s构造一个分析器。

使用默认的分隔符集合,即空格符(若干个空格被看作一个空格)、换行符、回车符、Tab符、进纸符。

StringTokenizer(StringsStringdelim)为字符串s构造一个分析器。

参数delim中的字符被作为分隔符。

例如:

StringTokenlizerfenxi=newStringTokenizer(“Wearestudent”)。

StringTokenlizerfenxi=newStringTokenizer(“We,are。

student”,”,”)。

我们把一个StringTokenzier对象作一个字符串分析器。

一个分析器可以使用nextToken()方法逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将在字符串中活得下一个语言符号。

通常用while循环来逐个获取语言符号,为了控制循环,我们可以使用

StringTokenizer类中的hasMoreTokens()方法,只要字符串中还有语言符号,该方法就返回true,否则返回false。

另外我们还可以调用countTokens()方法得到字符串一共有多少个语言符号。

运行效果示例

图1

题目:

小学生数学练习题目自动生成系统

【设计要求】

编写一个能够自动生成小学生数学练习题目的程序。

设计一个程序,能够根据用户的选择生成“10以内加法”、“10以内减法”、“20以内加法”、“20以内减法”、“100以内加法”、“100以内减法”、“100以内乘法”、“100以内除法”8种类型的题目,要求每个题目能够随机生成,并符合以下要求:

1)10以内加法的得数在不大于10的范围内;

2)20以内加法的得数在不大于20的范围内;

3)100以内加法的得数在不大于100的范围内;

4)10以内减法的两个运算数在不大于10的范围内并且差为非负数;

5)20以内减法的两个运算数在不大于20的范围内并且差为非负数;

6)100以内减法的两个运算数在不大于100的范围内并且差为非负数;

7)100以内乘法的得数在不大于100的范围内;

8)100以内除法的两个运算数在不大于100的范围内并且被除数应该是除数的整数倍;

要求程序具备以下功能:

根据用户对“题目类型”的选择,在按下“出题”按钮之后,每次显示20个相应类型的题目,用户可以在界面上填写计算结果;答题完成之后,当用户按下“评卷”按钮时,根据用户的答题结果,在界面上可以显示红色的“√”或“╳”符号,以作为对用户的答题结果的评判。

当用户按下“答案”按钮时,在界面上显示正确的运算结果。

【输入/输出要求】

输入要求:

用户能够在界面上输入题目的计算结果;

输出要求:

程序可以在界面上显示20个用户所需的类型的题目,以红色的“√”或“╳”

符号显示对用户计算结果的评判结果,以及所给出的题目的正确答案。

题目:

华容道-一个传统的智利游戏

【设计要求】

编写一个按钮的子类,使用该子类创建的对象代表华容道中的人物。

通过焦点事件控制人物颜色,当人物获得焦点时颜色为蓝色,当失去焦点时颜色为灰色。

通过键盘事件和鼠标事件来实现曹操、关羽等人物的移动。

当人物上发生鼠标事件或键盘事件时,如果鼠标指针的位置是在人物的下方(也就是组件的下半部分)或按下键盘的“↓“键,该人物向下移动。

向左、向右和向上的移动原理类似。

学习要点本程序主要练习使用布局管理器设计一个华容道游戏界面,并练习使用事件监听器(鼠标事件、键盘事件和焦点事件)实现按钮的移动。

设计思路首先是界面设计,该界面主要包括十个人物按钮(马、曹操、关羽等)以及旁边的四个边框按钮和重新开始按钮。

对于人物按钮,我们可以创建Button按钮的子类,在该类中定义按钮的一些新的属性和焦点事件监听器,如:

按钮的标签名、按钮的颜色、按钮的排号(如这里有十个人物按钮,从1排到十,在程序中可以依靠这个属性区分人物按钮)、按钮颜色、按钮获得或失去焦点事件。

同时在设计该界面时要考虑到各个按钮的位置、大小等情况。

在这给出了各按钮的位置和大小参数:

(其中Person为继承Button按钮的人物按钮类)

Stringname[]={"曹操","关羽","张","刘","马","许","兵","兵","兵","兵"}。

for(inti=0。

i

i++)

{

person[i]=newPerson(i,name[i])。

person[i].addKeyListener(this)。

person[i].addMouseListener(this)。

//person[i].addFocusListener(newPerson)

add(person[i])。

}

person[0].setBounds(104,54,100,100)。

person[1].setBounds(104,154,100,50)。

person[2].setBounds(54,154,50,100)。

person[3].setBounds(204,154,50,100)。

person[4].setBounds(54,54,50,100)。

person[5].setBounds(204,54,50,100)。

person[6].setBounds(54,254,50,50)。

person[7].setBounds(204,254,50,50)。

person[8].setBounds(104,204,50,50)。

person[9].setBounds(154,204,50,50)。

四个边框按钮的位置和大小参数为:

left.setBounds(49,49,5,260)。

right.setBounds(254,49,5,260)。

above.setBounds(49,49,210,5)。

below.setBounds(49,304,210,5)。

其次我们是对界面上的各人物按钮添加相应的相应事件(鼠标事件、键盘事件),通过这两种事件去完成界面上各人物按钮的移动。

对重新开始按钮定义动作事件(ActionEvent)完成界面初始化功能(也就是各人物按钮重新归位)。

相关学习资料

该程序主要涉及到鼠标事件和键盘事件及焦点事件三个方面的新知识。

1、触发焦点事件

组件可以触发焦点事件。

组件可以使用

publicvoidaddFocusListener(FocusListenerListener)

增加焦点事件监视器如:

button1.addFocusListener(事件监听器)

当组件具有焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点到无输入焦点都会触发FocusEvent事件。

创建监视器的类必须要实现FocusListener接口,该接口有两个方法:

publicvoidfocusGained(FocusEvente)//获得焦点触发

publicvoidfocusLost(FocusEvente)//失去焦点触发

当组件从无输入焦点变成有输入焦点并触发FocusEvent事件时,监视器调用类实现的接口方法focusGained(FocusEvente)。

当组件从有输入焦点变成无输入焦点并触发FocusEvent事件时,监视器调用类实现方法focusLost(FocusEvente)。

方法publicBooleanrequestFocusInwindow()方法可以获得输入焦点:

如Button1.requestFocusInwindow()

2、鼠标事件

组件是可以触发鼠标事件的事件源。

如:

鼠标指针进入组件,退出、停留组件上方单击鼠标、拖动鼠标、按下、释放、移动。

鼠标事件的类型是MouseEvent,即组件触发鼠标时,MouseEvent类自动创建一个事件对象。

Java分别使用MouseListener接口与MouseMotionListener接口来处理鼠标事件。

MouseListener接口可以处理5种鼠标事件:

单击、按下、释放、进入和退出。

MouseMotionListener接口可以处理2种鼠标事件:

拖动、移动。

3、键盘事件

当按下、释放或敲击键盘上一个键时就发生了键盘事件,如:

当一个组件处于激活状态时(获得焦点),敲击键盘上一个键就导致了这个组件发生了键盘事件。

事件源使用addKeyListener方法获得监视器。

KeyEvent为键盘事件的类型,KeyListener是事件监视器实现的接口,其中有三种相应事件:

按键、释放键、按下和释放的组合事件。

PublicvoidKeyPressed(KeyEvente)

PublicvoidKeyTyped(KeyEvente)

PublicvoidKeyReleased(KeyEvente)

用KeyEvent类的publicintgetKeycode()方法和publicchargetKeychar()判断哪个键被按下、敲击或释放。

如:

publicvoidkeyPressed(KeyEvente)

{

Personman=(Person)e.getSource()。

//返回事件源

if(e.getKeyCode()==KeyEvent.VK_DOWN)//判断是否按下了向下箭头

{

goDown(man)。

}

if(e.getKeyCode()==KeyEvent.VK_UP)//判断是否按下了向下箭头

{

goUp(man)。

}

if(e.getKeyCode()==KeyEvent.VK_LEFT)//判断是否按下了向下箭头

{

goLeft(man)。

}

if(e.getKeyCode()==KeyEvent.VK_RIGHT)//判断是否按下了向下箭头

{

goRight(man)。

}

}

运行效果示例

题目:

用图形界面实现P208页,过桥问题

设计要求:

1.用多线程技术实现多人过独木桥;

    2.模拟不同速度过桥;

    3.用面向对象方法设计程序。

题目编写一个记事本程序

设计要求

1、用图形用户界面实现。

2、能实现编辑、保存、另存为、查找替换等功能。

3、提示:

使用文件输入输出流。

题目电子英汉词典

设计要求

1.用图形用户界面实现。

2.能够编辑词典库中的信息

3.能够实现英译汉,汉译英。

(要考虑一词多义)

题目加密与解密

设计要求

1.采用图形用户界面

2.给定任意一个文本文件,进行加密,生成另一个文件。

3.对加密后的文件还原。

提高题

题目:

标准化考试系统

内容:

本系统可以进行任何标准化考试,具有选择试卷,查看得分、考试计时等功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1