Java课程设计选题.docx
《Java课程设计选题.docx》由会员分享,可在线阅读,更多相关《Java课程设计选题.docx(18页珍藏版)》请在冰豆网上搜索。
Java课程设计选题
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;Ilist1.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个用户所需的类型的题目,以红色的“√”或“╳”
符号显示对用户计算结果的评判结果,以及所给出的题目的正确答案。
题目编写一个记事本程序
设计要求
1、用图形用户界面实现。
2、能实现编辑、保存、另存为、查找替换等功能。
3、提示:
使用文件输入输出流。
题目电子英汉词典
设计要求
1.用图形用户界面实现。
2.能够编辑词典库中的信息
3.能够实现英译汉,汉译英。
(要考虑一词多义)
题目加密与解密
设计要求
1.采用图形用户界面
2.给定任意一个文本文件,进行加密,生成另一个文件。
3.对加密后的文件还原。
题目:
标准化考试系统
内容:
本系统可以进行任何标准化考试,具有选择试题,查看得分、考试计时等功能。
设计要求:
1.用户可以选择一套标准化考试试题。
2.每套试题的考试用时由试题文件(.txt)给出。
3.开始读取试题后,计时器开始计时,用户提交答案后,可以读取下一道题目。
4.一个提示栏显示所剩余的考试时间,当规定时间用尽后,用户将不能再读取任何题目。
5.为了增加模拟考试练习的灵活性,用户也可以选择暂停计时。
6.用户答完一个题目后,可以查看该题目的正确答案和目前的分数。
运行效果图:
题目:
Hannoi塔
设计内容
设计GUI界面的Hannoi塔,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。
设计要求
1.有三个表示塔的对象,分别命名为A、B和C。
A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。
用户可以用鼠标拖动盘子,把A塔上的盘子全部移动到另外两个塔中的任何一个塔上。
要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。
2.用户也可以选择让程序自动演示。
选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。
运行效果图
题目学籍管理系统
设计内容
设计基于文件结构的学籍管理系统。
设计要求
1录入学生基本信息的功能
2修改学生基本信息的功能
3查询学生基本信息的功能
4删除学生基本信息的功能
运行结果图
题目绘图板
功能要求:
实现简单绘图功能,具体要求:
画直线,画空心或实心椭圆、画空心或实心矩形、画多边形(图形的位置和大小也可在界面中设定)。
界面要求:
图形界面实现。
可参考图1、图2和图3。
图1初始界面图2使用菜单绘图
图3使用按钮绘图
题目图书信息管理系统
设计要求:
1.使用图形用户界面
2.用数据库建立1或2个图书信息表。
(不限使用哪种数据库)
3.能连接数据库并实现查询、增、删、改等功能。
题目ATM柜员机模拟系统
设计要求:
使用图形用户界面。
需求:
当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
1、查询余额:
初始余额为10000元
2、ATM取款:
每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
3、ATM存款:
不能出现负存款。
4、修改密码:
新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
题目一个简单的万年历
功能要求:
1.能够显示实现1800-2100年的日期,包括公历、农历、星期、二十四节气。
2.能够按照月份格式显示,或按照星期格式显示。
3.能够显示系统时间。
4.能够设置闹钟。
5.能够查询若干国际大城市(分布在不同时区)的时间。
题目学生成绩管理信息系统
数据库要求:
1.建立的数据库中包含如下信息:
学生学号、姓名、班级,语文、数学、英语成绩。
2.至少要有5个班级,每个班级要有10名以上学生。
3.使用.txt格式文本表示各种表。
功能需求:
1.能够实现根据以下关键字查询:
学生姓名、学号、班级、课程名称。
2.能够实现按照单科成绩、总成绩、平均成绩、学号排序。
3.能够实现学生信息的插入、删除和修改。
4.能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。
5.能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进行排序。
题目聊天小程序
设计要求
1.使用图形用户界面。
2.能实现一个聊天室中多人聊天。
3.可以两人私聊。
4.提示:
使用socket通信
题目:
记忆测试系统
设计内容:
记忆测试系统通过回忆法测试记忆,分为初级、中级、高级三个级别,并通过记忆榜存储每个级别的成绩。
设计要求:
1.单击“记忆测试”菜单可以选择初级/中级/高级,也可以查看初级记忆榜/中级记忆榜或高级记忆榜。
2.选择级别后,将显示相应级别的测试区域。
测试区域由若干个方块组成,每个方块都有一个图标,但该图标默认情况下不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。
对于初级级别,用户必须用鼠标连续单击出6个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<6)个图标相同的方块,单击另一个房块时,如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。
3.连续单击出该级别所要求的若干个图彪相同的方块后,将显示保存成绩对话框,成绩按所用时间排序。
用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
运行效果图:
题目超市收银系统
设计要求:
使用图形用户界面。
需求:
由收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等。
从数据库中取出有关价格信息,再把这些信息返回给收银台。
同时把该收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库存储以供查询。
另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息。
如果一个未持卡顾客一次购物满200元,可为其发放一张会员卡,以后在该商场购物可向9折优惠。
题目网络聊天程序
功能要求:
1.实现类似与飞鸽的功能,自动侦测局域网内部启动该软件的用户,并显示在用户列表中。
2.可以进行两个人之间的私聊。
3.可以群聊。
4.可以发送文件。