Java技术项目训练.docx
- 文档编号:5013573
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:16
- 大小:28.28KB
Java技术项目训练.docx
《Java技术项目训练.docx》由会员分享,可在线阅读,更多相关《Java技术项目训练.docx(16页珍藏版)》请在冰豆网上搜索。
Java技术项目训练
大连东软信息学院
Java技术项目训练
实习报告
系别:
专业班级:
学号:
学生姓名:
指导教师:
2012年9月11日
目录
目录II
第一部分Java图形化程序开发1
1.1系统知识准备:
图形用户界面1
1.2系统知识准备:
多线程4
1.3系统开发:
贪食蛇游戏开发8
1.4实习情况检查记录单10
第二部分Java数据库程序开发11
2.1系统知识准备:
结构化查询语言SQL11
2.2后台数据库准备:
触发器17
2.3系统开发:
中超足球联赛管理系统19
2.4实习情况检查记录单19
实习总结21
第一部分Java图形化程序开发
1.1系统知识准备:
图形用户界面
1.填空题:
(1)GUI界面由GUI组件构成,Java中有两套GUI组件类,分别是位于
java.awt包下的AWT组件和位于javax.swing包下的Swing组件。
(2)Java的Swing包中定义框架的类是JFrame。
(3)显示框架的方法名是setVisible(booleanb)。
(4)设置框架的标题的方法名是setTitle(Stringtitle)。
(5)设置框架大小的方法名是setSize(intwidth,intheight)。
(6)设置框架缺省关闭操作的方法名是setDefaultOpration(intoperation)。
(7)获取框架内容窗格的方法名是getContentPane()。
(8)为容器设置布局管理器的方法名是setLayout(LayoutManagermgr)。
(9)JFrame中内容窗格的缺省布局管理器BorderLayout。
(10)JPanel缺省的布局管理器是FlowLayout。
(11)Java的Swing包中定义按钮的类是JButton。
设置按钮上文本内容的方法名是setText(Stringtext)。
获取按钮上文本内容的方法名是getText()。
(12)文本框是用于输入、输出或编辑单行文本的控制组件,Java的Swing包中定义文本框的类是JTextField。
将指定的字符串写入文本框中的方法名是setText(Stringtext)。
获取文本框中文本的方法名是getText()。
设置文本框的可编辑属性的方法名是setEditable(booleanb),并且参数为true是可编辑,参数为false是不可编辑。
(13)Java的Swing包中定义单选按钮的类是JRadioButton。
实现单选按钮之间的互斥需将单选按钮放到一个按钮组中,定义按钮组的类名是ButtonGroup。
获取单选按钮选择状态的方法名是isSelected()。
(14)基本的事件类都定义在java.util包中。
(15)所有的事件名都是以Event结尾,所有的监听接口名都是以
Listener结尾。
2.简答题:
(1)请说出三种常用的布局管理器及各自的特点。
FlowLayout是最简单的布局管理器。
它按添加组件的顺序由左到右将组件排列在容器中,一行排满后再排新的一行。
BorderLayout将容器分成五部分:
东区、南区、西区、北区、中央。
GridLayout根据构造方法定义的行数和列数以网格(矩阵)的形式排列组件,组件按添加的顺序从左到右排列,一行排满另起一行。
(2)简述创建菜单的几个步骤。
创建一个菜单栏(JMenuBar),并建立它与框架的关联、
创建菜单(JMenu),并添加到菜单栏中
创建菜单项并添加到菜单中。
(3)什么是事件?
什么是事件源?
事件:
可以定义为程序发生了某些事情的信号。
如点击鼠标、点击键盘、移动鼠标等。
事件源:
在其上发生事件的GUI组件被称为事件的源对象。
例如,按钮是点击按钮事件的源对象。
(4)简述事件处理的过程。
每一种事件类都有对应的监听接口,想监听某一事件先给该事件注册事件监听器,当该事件发生时会被该事件的事件监听器监听到,从而执行监听器中的业务逻辑。
1.2系统知识准备:
多线程
1.简答题
(1)什么是多线程?
线程和进程有什么区别?
多线程是为了使得多个线程并行的工作以完成多项任务
通常,我们把操作系统的多个任务称为进程(Process),而程序中的多任务则称为线程。
(2)在Java语言中创建线程有几种途径,说明创建方式有何区别,每一种都是怎么实现的,写出主要步骤。
第一种方法就是继承线程类java.lang.Thread
1.Thread子类无法再从其它类继承(java语言单继承)。
2.编写简单,run()方法的当前对象就是线程对象,可直接操作。
classsubThreadextendsThread
{
publicsubThread(Stringstr)
{
super(str);
}
publicvoidrun()
{
System.out.println(""+getName());
try
{
sleep((int)(Math.random()*1000));
}
catch(InterruptedExceptione){}
System.out.println("Finished!
"+getName());
}
第二种方法:
使用Runnable接口
1.可以将CPU,代码和数据分开,形成清晰的模型
2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法
3.有利于保持程序的设计风格一致
classMulThreadimplementsRunnable
{
Strings;
publicMulThread(Stringstr)
{
s=str;
}
publicvoidrun()
{
System.out.println(s);
try
{
Thread.sleep((int)(Math.random()*1000));
}
catch(InterruptedExceptione){}
System.out.println("Finished!
"+s);
}
}
2.实践题
编写一个线程类,类名为SubThread。
该线程能够在命令行显示线程的名称,然后随机休眠小于1秒的时间,最后显示线程结束信息:
“finished”+线程名。
编写Application,在其中创建SubThread类的三个对象t1、t2、t3,它们的名称分别为"First"、"Second"、"Third",并启动这三个线程。
分别用两种方法实现线程的创建。
方法一:
publicclassApplication
{
publicstaticvoidmain(String[]args)
{
Threadt1=newsubThread("First");
Threadt2=newsubThread("Second");
Threadt3=newsubThread("Third");
t1.start();
t2.start();
t3.start();
}
}
classsubThreadextendsThread
{
publicsubThread(Stringstr)
{
super(str);
}
publicvoidrun()
{
System.out.println(""+getName());
try
{
sleep((int)(Math.random()*1000));
}
catch(InterruptedExceptione){}
System.out.println("Finished!
"+getName());
}
}
方法二:
publicclassApplication
{
publicstaticvoidmain(String[]args)
{
Runnabler1=newMulThread("First");
Runnabler2=newMulThread("Second");
Runnabler3=newMulThread("Third");
Threadt1=newThread(r1);
Threadt2=newThread(r2);
Threadt3=newThread(r3);
t1.start();
t2.start();
t3.start();
}
}
classMulThreadimplementsRunnable
{
Strings;
publicMulThread(Stringstr)
{
s=str;
}
publicvoidrun()
{
System.out.println(s);
try
{
Thread.sleep((int)(Math.random()*1000));
}
catch(InterruptedExceptione){}
System.out.println("Finished!
"+s);
}
}
1.3系统开发:
贪食蛇游戏开发
1.实践题
(1)给出实现该游戏程序需要的主要类名,以及每个类的类结构(类中的属性和方法),并描述该类的作用。
类名
方法名
作用
Snake
publicSnake()
程序入口,启动程序,显示窗体
publicstaticvoidmain(Stringargs[])
MainFrame
publicMainFrame()
创建游戏窗体界面对象
SnakeThread
publicvoidrun()
监控游戏运行状态,完成游戏的蛇身的移动效果,判断游戏是否结束等
MainFrameKeyListener
publicvoidkeyPressed(KeyEvente)
键盘监听,实现方向键控制蛇的移动方向
MainFrameActionListener
PublicvoidactionPerformed(ActionEvente)
按钮监听,实现开始、暂停、结束等功能
PlayPanel
publicvoidcreateSnake()
封装了游戏面板的创建,蛇身的创建,食物的创建,蛇身的移动,游戏是否结束等功能的具体实现
publicvoidmoveSnake()
publicvoidclear()
publicbooleanisLost()
publicvoidsetSnakeDirection(intdirection)
publicintgetScore()
publicPlayPanel()
publicvoidcreateFood()
ChartPanel
publicChartPanel(JFramechart)
创建排行榜界面
Charts
publicCharts()
实现排行榜功能的业务逻辑,从文件中查询排行榜,将新的排行榜存入到文件中
publicStringgetSnakeCharts()
publicvoidsetSnakeCharts(intgrade)
MusicPlayer
publicMusicPlayer()
实现背景音乐的播放功能(暂停、上一首、下一首)
publicvoidplay()
publicvoidlastMusic()
publicvoidnextMusic()
publicvoidendPlay()
publicvoidrun()
(2)描述在编程中遇到的问题及解决方法。
a.如何实现排行榜中成绩的永久保存
将成绩保存到一个文件中,查看、保存时进行文件的读写操作
b.如何实现背景音乐的开启、暂停功能
将该类写成线程类,通过线程的开启和暂停功能实现音乐的开启暂停功能
1.4实习情况检查记录单
实习阶段
第一阶段Java图形化程序开发
记录时间
2012-08-24
完成工作
规定模块完成情况:
[以下填写“完成”或“未完成”,及完成时间]
1.主体界面:
完成
完成时间
2012-08-24
2.蛇身移动和控制:
完成
完成时间
2012-08-24
3.游戏控制:
完成
完成时间
2012-08-24
选作模块以及创新功能完成情况:
4.得分统计:
完成
完成时间
2012-08-24
5.级别设置:
完成
完成时间
2012-08-24
6.积分排行榜
完成
完成时间
2012-08-24
7.背景音乐
完成
完成时间
2012-08-24
工作量统计:
完成代码____829______行
未完成
原因
[解释未完成规定模块功能的原因,如都完成则不必填写]
第二部分Java数据库程序开发
2.1系统知识准备:
结构化查询语言SQL
1.填空题:
1)请请项目需求,采用标准SQL语句将球队表(Team)、球员表(Member)、比赛进程表(Course)、进球表(Goal)、积分榜(Score)和射手榜(GoalScore)6张表创建出来,并填写到下面的空格中。
1CREATETABLETEAM(NAMEVARCHAR(20)PRIMARYKEY,MASTERPLACEVARCHAR(30),COACHVARCHAR(20))
2CREATETABLEMEMBER(NAMEVARCHAR(20)NOTNULL,
TEAMNAMEVARCHAR(20)NOTNULLFOREIGNKEYREFERENCESTEAM(NAME),NUMBERINTNOTNULL,POSITIONVARCHAR(6)NOTNULL,HEIGHTINT,WEIGHTINT,BIRTHDATEDATETIME,PRIMARYKEY(TEAMNAME,NUMBER))
3CREATETABLEcourse(homevarchar(20)notnullreferencesteam(name),awayvarchar(20)notnullreferencesteam(name),turnintnotnull,matchdatedatetimenotnull,homescoreintnotnull,awayscoreintnotnull,primarykey(home,away))
4CREATETABLEgoal(teamnamevarchar(20)notnull,numberintnotnull,turnintnotnull,goaltimedatetimenotnull,foreignkey(teamname,number)referencesmember(teamname,number),primarykey(teamname,number,turn,goaltime))
5CREATETABLEscore(placeintnotnulldefault0,namevarchar(20)primarykey,turnintnotnull,wonintnotnull,evenintnotnull,beatenintnotnull,goalintnotnull,lostintnotnull,netintnotnull,pointintnotnull)
6CREATETABLEgoalscore(placeintnotnulldefault0,namevarchar(20)notnull,teamnamevarchar(20),numberintnotnull,goalsintnotnull,foreignkey(teamname,number)referencesmember(teamname,number),primarykey(teamname,number))
2)利用足球联赛管理系统的6张表,完成下述要求的SQL语句。
(1)向球队表中插入一个球队信息(北京现代队,北京体育场)。
insertintoTeam(NAME,MASTERPLACE)
values(‘北京现代队’,‘北京体育场’)
(2)同
(1)题,向球队表中插入一个球队信息(北京现代队,北京体育场)。
insertintoTeam__values_(‘北京现代队’,null,‘北京体育场’)
(3)向球员表中插入记录(张海峰,辽宁,8,前卫,177,1979-9-16)。
insertintomembervalues(‘张海峰’,’辽宁’,8,’前卫’,null,177,1979-9-16)
(4)将积分榜表中所有球队的积分都设置为0。
updateScoresetPOINT=0
(5)将深圳健力宝球队的教练的值设为空值。
updateTeamSETcoach=nullwhere
NAME=’深圳健力宝’
(6)将球员表中场上位置为空的球员的场上位置改为后卫。
UPDATEMemberSETPOSITION=’后卫’WHEREPOSITIONISNULL
(7)将球队主场在上海的球队的所有球员的出生日期改为1980-1-1、场上位置改为空值。
Updatemembersetbirthday=’1980-1-1’jointeamonmember.teamname=team.namewhereteam.masterplaceisnull
(8)删除比赛进程表Course中的所有记录。
DeletefromCourse
(9)删除球队表中教练为空的球队信息。
DeleteFROMTeamwhereCOACHISNULL
(10)删除积分榜中有关大连万达队的所有积分信息。
Deletefromscorewherename=’大连万达’
2.实践题:
利用教材中的中超足球联赛管理系统的4张表,在SQL查询分析器中实现满足如下要求的SQL语句,并将成功运行的SQL语句写到题后空白处。
(1)查询所有球员信息。
Select*frommember
(2)查询所有球员的姓名、所在球队、球衣号码和出生日期。
Selectname,teamname,number,birthdayfrommember
(3)查询所有球员的姓名、所在球队、球衣号码和年龄。
Selectname,teamname,number,YEAR(GETDATE())-YEAR(birthdate)fromMEMBER
(4)查询球员表中所有球员的出生年份,相同的年份只显示一次。
Selectdistinctbirthdayfrommember
(5)查询球队表中的球队信息,并返回前5行记录。
selecttop5*fromTEAM;
(6)查询球队表中的球队信息,并返回查询结果的前20%的记录。
selecttop20percent*fromTEAM;
(7)查询球队主场在上海的各球队的名称。
Selectnamefromteamwheremasterplace=’上海’
(8)查询球员表中身高超过180cm的球员的姓名和场上位置。
Selectname,positionfrommemberwhereheight>180
(9)查询体重在[75,90]之间的所有球员的姓名和所在球队。
Selectname,teamnamefrommemberwhereweightbetween75and90
(10)查询在1978年~1984年之间出生的所有球员的姓名、所在球队、出生日期。
Selectname,teamname,birthdatefrommemberwhereyear(birthdate)between1978and1984;
(11)查询大连实德、山东鲁能、北京现代和上海申花4个球队的所有球员的信息。
Select*frommemberwhereteamnamein(‘大连实德’,’山东鲁能’,’北京现代’,’上海申花’)
(12)查询球员表中不姓“张”的所有球员的信息。
Select*frommemberwherenamenotlike'张%';
(13)查询球员表中身背号码的最后一位不是3、4、7的球员的姓名、所在球队和身背号码。
Selectname,teamname,numberfrommemberwherenumbernotlike'%3'andnumbernotlike'%4'andnumbernotlike'%7';
(14)查询球队表中教练不为空值的球队名称和教练姓名。
Selectname,coachfromteamwherecoachisnotnull
(15)查询球员表中出生日期为空值的球员姓名。
Selectnamefrommemberwherebirthdateisnull
(16)查询大连实德队中在1980年以后出生且身高超过185cm的球员姓名。
Selectnamefrommemberwhereteamname='大连实德'andyear(birthdate)>=1980andheight>185;
(17)查询各球队信息,结果按球队教练的姓氏升序排列。
Select*fromteamorderbycoachASC;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 技术 项目 训练
![提示](https://static.bdocx.com/images/bang_tan.gif)