ImageVerifierCode 换一换
格式:PPT , 页数:91 ,大小:2.64MB ,
资源ID:10251450      下载积分:18 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10251450.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(Java程序设计实训教程课件全套教程.ppt)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Java程序设计实训教程课件全套教程.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,实训一,扫雷游戏,1.1,系统设计,需求分析,随机,布雷,实现扫雷,功能,标记小,方块,选择游戏的,难度,显示剩余雷,数,显示,已使用时间,最好成绩,记录,重新,开始,加快扫雷,进程,加入声音,1.1,系统设计,类的设计,MineFrame,Min

2、ePanel,Block,BlockType,BlockState,Record,Grade,Timer,对话框类,监听器类,1.2,创建主窗口,创建,Java,项目,Saolei,创建子文件夹,image,,将需要的图标复制到该文件夹,创建,MineFrame,类,public class MineFrame extends JFrame,JMenuBar menuBar;,JMenu menu;,JMenuItem menuItems;,String menuItemNames=,初级,中级,高级,自定义,排行榜,退出,;,JTextField minesRemained;/,显示剩余雷数

3、的文本框,JButton reStart;/,重新开始按钮,JTextField timeUsed;/,显示游戏使用时间的文本框,Icon face;/,按钮上的图标,JPanel upPanel;/,计时区域,创建,主程序类,Saolei,1.3,MinePanel,类和,Block,类,BlockType,类,public class BlockType,static final int ZERO=0;/,周围的雷数,static final int ONE=1;,static final int TWO=2;,static final int THREE=3;,static final

4、int FOUR=4;,static final int FIVE=5;,static final int SIX=6;,static final int SEVEN=7;,static final int EIHHT=8;,static final int MINE=9;/,是雷,1.3,MinePanel,类和,Block,类,BlockState,类,public class BlockState,static final int ORIGINAL=0;/,初始状态,static final int OPEN=1;/,翻开状态,static final int MINE_FLAG=2;/

5、标记为雷,static final int QUESTION_FLAG=3;/,标记为问号,static final int EXPLODED=4;/,爆炸状态,Grade,类,public class Grade,public static final int,LOWER,=1;/,初级,public static final int,MEDIAL,=2;/,中级,public static final int,HIGHER,=3;/,高级,public static final int,SELF_DEFINE,=4;/,自定义,1.3,MinePanel,类和,Block,类,Block

6、类,属性,private MinePanel minePanel;,private int row;/,在雷区的行号,private int col;/,在雷区的列号,public final int WIDTH=19;/,方块的宽度,public final int HEIGHT=19;/,方块的高度,private int type;/0,1,2,3,4,5,6,7,8,(,9,雷),private int state;/0,原始状态,,1,翻开,,2,标记为雷,,3,标记为问号,public static Toolkit tk;,public static final Image nu

7、mberImage;/08,public static final Image flagImage;/0,标记为雷、,1,标记为问号,public static final Image bombImage;/0,未爆炸、,1,已爆炸,public static final Image backImage;/,未翻开时的背面,1.3,MinePanel,类和,Block,类,Block,类,方法,public boolean open()/,翻开,遇雷失败,public void draw(Graphics g)/,画出不同类型、不同状态的方块,构造方法、,get,、,set,方法,1.3,Mi

8、nePanel,类和,Block,类,MinePanel,类,属性,public final int GRID_WIDTH=20;/,方格的宽度,public final int GRID_HEIGHT=20;/,方格的高度,private MineFrame mf;,private int cols;/,雷区的列数,private int rows;/,雷区的行数,private int mines;/,雷区的雷数,private int remainedMines;/,未标记的雷数,private int openedBlocks;/,已经翻开的方块数,private Block bloc

9、ks;/,方块数组,1.3,MinePanel,类和,Block,类,MinePanel,类,方法,public void initMinePanel(int rows,int cols,int mines)/,初始化参数,private void createBlocks()/,创建小方块,private void layMines()/,随机布雷,private void countMines(int row,int col)/,计算指定方块周围的雷数,public void paint(Graphics g)/,画出雷区,public Dimension getPreferredSize

10、),1.3,MinePanel,类和,Block,类,将雷区加入到,MineFrame,中,在,MineFrame,类中添加属性,MinePanel minePanel;,private int rows;,private int cols;,private int mines;,添加,initParameter,方法,private void initParameter(int rows,int cols,int mines),this.rows=rows;,this.cols=cols;,this.mines=mines;,1.3,MinePanel,类和,Block,类,将雷区加入到,

11、MineFrame,中,修改构造方法,public,MineFrame(),createMenu();,createUpPanel();,initParameter(10,10,10);,minePanel=new MinePanel(this,rows,cols,mines);,Container c=,this,.getContentPane();,c.add(upPanel,BorderLayout.,NORTH,);,c.add(minePanel,BorderLayout.,CENTER,);,this,.setDefaultCloseOperation(,EXIT_ON_CLOSE

12、);,this.pack();,this,.setLocationRelativeTo(,null,);,this,.setResizable(,false,);,this,.setVisible(,true,);,1.4,实现扫雷功能,翻开小方块,在,MineFrame,类中添加属性,private boolean gamming;/,正在扫雷?,private boolean stoped;/,游戏已停止?,在,MineFrame,类中添加,set,、,get,方法,修改,MineFrame,类的,initParameter(),方法,MinePanel,类添加鼠标监听器类,MinePa

13、nel,类添加,Open(),方法,注册,鼠标,监听器,1.4,实现扫雷功能,处理输赢以及搜索方法,wins,(),方法,lose(),方法,search(),方法,在,open,(),方法,中,调用,wins(),方法,、,lose(),方法,、,search(),方法,1.4,实现扫雷功能,加快扫雷进程,右键单击已经翻开的方块,如果该方块临近的雷已经全部标识出来,则翻开尚未翻开的相邻方块。,1.4,实现扫雷功能,重新开始游戏,在“开始”按钮监听器中填写处理代码。,1.5,选择游戏难度级别,MineFrame,添加,grade,属性,添加,grade,属性,添加,get,和,set,方法,自

14、定义难度,对话框,完善菜单监听器,类,在选择难度级别的菜单处理分支添加相应的代码。,1.6,实现计时功能,UpdateTimeTask,类,创建,UpdateTimeTask,类,添加,UpdateTimeTask,类型的,属性,(,MinePanel,类中),启动计时与终止,计时,启动,计时,:鼠标监听器中,翻开第一个小方块开始计时。,终止,计时,:,wins(),方法,、,lose,(),方法的开始,处,、重新开始按钮监听器中、选择难度级别菜单后。,1.7,扫雷排行榜,Record,类,RecordDao,类,用于输入游戏者名字的对话框,类,显示排行榜的对话框,类,实现排行榜功能,读入排行

15、榜,数据,记录排行榜,数据,显示排行榜数据,1.8,加入声音,在,MinePanel,类中添加播放音频的,sound(),方法,准备音频,文件,播放,音频,文件,扫雷成功时,扫雷失败时,一,次翻开对个方块时,实训二,网络五子棋,界面程序,网络编程,多线程,输入输出,客户端,服务器,涉及知识(,java,),异常处理,输入输出(文件),多线程,数据库,界面,网络程序,2.1,单机版五子棋游戏,黑子先下,两人轮流下一个棋子。先连成五个的一方胜利。,连成五个子的方向可以是水平,垂直,以及两个斜线方向。,2.1,单机版五子棋游戏,1.,创建窗口及工具栏,Five,类,Five,Extends,JFra

16、me,private,JToolBar,toolbar;,private,JButton,startButton,;,private,JButton,backButton,;,private,JButton,exitButton,;,2.,创建棋盘类,ChessBoard,类,public static final,int,MARGIN=15;/,边距,public static final,int,GRID_SPAN=20;/,网格间距,public static final,int,ROWS=18;/,棋盘行数,public static final,int,COLS=18;/,棋盘列,数

17、Image,img,;,在,Five,类加入:,private,ChessBoard,b,oardPanel,;,准备图片,Boad.jpg,Toolkit,getDefaultToolkit(),getImage(),paintComponent(),getPreferredSize():,(,Jfram,在,pack,时,要知道,board,的大小)。,3.,创建棋子类(,1,),Chess,类,private int col;/,棋子在棋盘中的列索引,private int row;/,棋子在棋盘中的行索引,private Color color;/,颜色,public static

18、final int,DIAMETER=GRID_SPAN-2;,ChessBoard cb;/,棋子是要画在棋盘中,需要一个棋盘的引用,public void draw(Graphics g),在,ChessBoard,类加入:,Chess c=,new Chess(this,2,3,Color.,BLACK);,c.draw(g);,Chess c1=,new Chess(this,5,2,Color.,WHITE);,c1.draw(g);,测试棋子画出的效果。,int xPos=col*cb.,GRID_SPAN+cb.MARGIN,;,int yPos=,row,*cb.,GRID_S

19、PAN+cb.MARGIN,;,将棋盘行列转换为像素坐标:,Ellipse2D.Float,是,Ellipse2D,的内部类,Ellipse2D e=new Ellipse2D.Float(,xPos-,DIAMETER/2,yPos-DIAMETER/2,DIAMETER,DIAMETER),;,RadialGradientPaint,paint=,new RadialGradientPaint(,x,y,15,f,c );,int x=xPos+,DIAMETER/4;,int y=yPos-,DIAMETER/4;,float f=0f,1f;,Color c=Color.,WHITE,

20、Color.BLACK;,白色点的位置,3.,创建棋子类,(2),4.,实现单击鼠标下子,ChessBoard,类,Chess,chessList,;/,记录棋子的数组,int,chessCount,;/,当前棋盘棋子的个数,boolean,isBlack,=true,;/,默认开始是黑棋先,private,boolean,hasChess,(,int,col,int,row)/(,col,row,),处是否已经有棋子,内部类:,class,MouseMonitor,extends,MouseAdapter,mousePressed,(,MouseEvent,e,),方法中,在鼠标按下的位置创

21、建一个棋子并添加到,chessList,中。,将鼠标点的像素坐标转换成棋盘的行列,int col=(,e.getX()-,MARGIN+GRID_SPAN/2)/GRID_SPAN;,int,row=(,e.getY,()-,MARGIN+GRID_SPAN/2)/GRID_SPAN;,在,paintComponent,方法中将,chessList,中棋子全部画出来。,5.,添加判断胜利的功能,ChessBoard,类,boolean,isGamming,=true;/,游戏是否结束,private,boolean,isWin,(,isWin,(,int,col,int,row,),priva

22、te Chess,getChess,(,int,col,int,row,Color color),在,mousePressed,方法中,调用,isWin,(,int,col,int,row),,进行游戏结束,处理,每下一个棋子,都需要在四个方向上判断是否形成了,5,个子连成一线,如果发现已经有,5,子连成一线了,则输出赢棋信息,并将,isGamming,设置为,false,。,在,mousePressed,方法开始加入,if(!,isGamming,)return;,6.,实现工具栏上的功能,ChessBoard,类,public void,restartGame,(),public void

23、goback,(),Five,类,内部类,class,ActionMonitor,implements,ActionListener,重新开始,悔棋,退出,7.,改变鼠标指针的形状,ChessBoard,类,内部类:,class,MouseMotionMonitor,extends,MouseMotionAdapter,可以下棋的地方显示,不可以下棋的地方显示,2.2,服务器端界面制作,FiveServer,类,2.3,客户端界面,背景图片,board.jpg,PanelBoard,类,FiveClient,类,1.,创建主窗口和棋盘,图标,:black.jpg,white.jpg,Pane

24、lTiming,类,PanelUserList,类,PanelMessage,类,修改,FiveClient,类,2.3,客户端界面,2.,创建客户端界面右侧的三个类,PanelControl,类,修改,FiveClient,类,2.3,客户端界面,3.,创建控制面板类,2.4,实现“连接主机”按钮的功能,add A,Client A,Client B,Server,connect,Client C,add A,tellName,add B,add C,clients,add,1.,连接服务器获取用户名,服务器端(,FiveServer,),内部,类,Client,增加属性,添加两个方法,st

25、artServer,(),tellName,(),客户端,(FiveClient),内部监听器类,ActionMonitor,注册监听,设置按钮的状态,服务器端,:,ServerSocket,构造方法的参数:端口号,客户端,:,Socket,构造方法的参数:服务器,ip,,端口号,本机,ip,:,127.0.0.1,2.,将已经连接的客户端添加到用户列表中,创建,Command,类,修改程序中的命令,服务器类添加方法,addAllUserToMe(),addMeToAllUser(),修改,startServer(),方法,创建,Communication,类,客户端类添加,connect()

26、方法,Communication,添加内部线程类,ReceaveThread,2.5,实现“加入游戏”按钮的功能,(3),refuse,:,A,(2)Join,:,A,Client A,Client B,Server,(1)Join,:,C,Client C,(4)refuse,拒绝的情况,(3)agree,:,A,(2)Join,:,A,(5)Change,:,A,:,playing,Change,:,C,:,playing,Client A,Client B,Server,(1)Join,:,C,Client C,(5),guessColor,(4),猜先,(5),guessColor,

27、2.5,实现“加入游戏”按钮的功能,同意的情况,1.,客户端申请加入后对方选择同意或拒绝,2.5,实现“加入游戏”按钮的功能,Command,类中增加以命令常量,在客户端加入“加入游戏”按钮处理,“加入游戏”按钮监听器,FiveClient,类中添加方法,join(),Communication,类中,添加,join(),方法,服务器接收,jion,命令并发送给对手,,,ClientThread,类,对手接到命令将选择结果发送给服务器,创建计时对话框类,TimeDialog,修改,Communication,类,2.,完成猜棋并准备好下棋,2.5,实现“加入游戏”按钮的功能,服务器收到拒绝或同

28、意的处理,拒绝处理:将拒绝信息发给客户端,同意处理,:猜先,将结果发给客户端,客户端收到拒绝,的处理,-,显示信息框,客户端收到同意的处理,PanelBoard,类加入属性,idGoing,Communication,类处理同意,情况,修改,PanelBoard,类的内部类,MouseMonitor,2.6,实现,下棋功能,1.,客户端向服务器发送下棋消息,2.6,实现,下棋功能,在,Command,类中添加命令,在,Communication,类中添加方法,go(),wins(),在,PanelBoard,类中调用上面两个方法,PanelBoard,添加,FiveClient,类的引用,在,

29、PanelBoard,类中调用,go(),方法和,wins(),方法,2.,服务器接收消息并处理,2.6,实现,下棋功能,Communication,类接收消息,PanelBoard,类添加方法,addOpponentChess(),winsGame(),lossesGame(),resetGame(),3.,客户端接收消息并处理,2.7,实现,“放弃游戏”的,功能,1.Command,类添加常量,2.,添加“放弃游戏”的,监听,代码,3.,在,Communication,类中天 添加,geveup(),方法,4.,服务器接收,giveup,命令并处理,2.7,实现,“放弃游戏”的,功能,1.

30、设计计时线程类,2.,猜先后启动倒计时线程,2.8,加入,计时,功能,2.9,完善,“关闭程序”按钮的,功能,1.,在,Command,类中添加命令,2.,客户端向服务器发送命令,修改“关闭程序”按钮的响应代码,Communication,类添加方法,disConnect(),3.,服务器处理,quit,命令,4.,客户端处理,delete,命令,2.9,完善,“关闭程序”按钮的,功能,1,目前的程序每方总的用时是在程序中指定的,如果用户希望在申请对局时自己指定用时时间,程序中应如何处理?,2,在我们的程序中,对于异常处理只是调用,printStackTrace(),方法输出异常信息,并没有

31、进行实质上的处理,这显然是不够的。比如在服务器还没有启动时,当客户端程序启动后,单击“连接服务器”按钮,就会产生异常,客户端程序应该显示未连接成功的提示信息,这时不能进行已连接成功的相关处理。应该如何改进程序,较好的处理这个异常问题?,作业,1.,用户,A,向另用户,B,申请后,,B,答复之前,又有用户,C,向用户,A,发出申请。如何处理?,2.,用户注册,登录,记录用户的成绩,级别等。,3.,记录棋谱。,4.,棋谱回放。,其他问题,实训三,棋谱的保存与回放,注册,登录,保存棋谱,棋谱回放,3.1,创建数据库,设计数据库,fiveChess,设计,User,表,字段名,类型,长度,允许空,备注

32、userid,INT,否,主键,自动增长,name,VARCHAR,10,否,用户名,password,VARCHAR,10,否,密码,email,VARCHAR,30,否,邮箱,level,INT,否,级别,regdate,Date,否,注册日期,3.1,创建数据库,3.,设计,game,表,字段名,类型,长度,允许空,备注,gameid,INT,否,主键,自动增长,gameDate,Date,否,下棋日期,playerBlack,VARCHAR,10,否,黑方,playerWhite,VARCHAR,10,否,白方,winner,VARCHAR,10,否,赢棋方,manualFileNa

33、me,VARCHAR,100,否,记录棋谱的文件名,3.1,创建数据库,4.,配置,mysql-connector-java,5.,类,CreateDatabase,3.2,用户管理,创建,DBConnection,类,User,类,创建,UserDao,类,创建临时的,Test,类(后面删除),3.3,用户注册和登录,1.,准备工作(,1,),Command,类添加命令常量(,2,)“,connectButton”,改为“,loginButton”,(,3,),FiveClient,类中添加,getC(),方法,用户登录(,1,),Communication,类添加登录方法(,2,)创建登录

34、对话框类,DialogLogin,(,3,)显示登录对话框,(,fiveClient,中修改登录按钮的监听程序段),(,4,)服务器处理,login,命令(,修改,startServer(),方法,),(,5,)删除静态成员,clientNameNum,3.,用户注册,3.,用户注册,(,1,)创建注册对话框类,DialogRegister,(,2,)修改登录对话框中的注册按钮坚挺,if,(,注册,.equals(str),DialogRegister,rd,=,new,DialogRegister(,this,ip);,(,3,)服务器处理注册命令,(,修改,startServer(),方法

35、3.4,记录棋局和棋谱,Client,Server,数据文件,win,数据库,Save chessmanual,Save chessgame,棋谱文件名的格式:,黑棋用户名,白棋用户名,结束时间(日期时分),棋谱文件的格式:,直接写一个,Object,黑棋用户名,白棋用户名,结束时间(日期时分),步数,赢棋方,1.,记录棋局,(,1,)棋局管理,设计,Game,类,,GameDao,类(,game,包),Test,类:用于测试,Game,类和,GameDao,类,1.,记录棋局,(,2,),记录棋局到数据库,修改,FiveServer,的内部类,Client,,增加属性,修改猜先程序段,

36、给属性,chessColor,赋值,修改,go,程序段,记录每一步棋的坐标,ClientThread,类中添加保存棋局的方法,修改,win,程序段,调用保存棋局的方法,2.,记录棋普,(,1,)棋谱管理,创建,Manual,类,创建,ManualDao,类,(,2,)记录棋谱到文件,在,ClientThread,类中添加记录棋谱的方法,recordManual(),修改,win,程序段,调用,recordManual(),保存棋谱,3.5,查询棋局和棋谱欣赏,Client,Servert,数据文件,game:userName,数据库,getManual,getGame,Game list,ga

37、me:Game list,manual:fileName,manual,manual:manual,注:目前只查询自己下过的棋局,1.,查询棋局,(,1,),PanelControl,类:添加“棋谱欣赏”按钮,(,2,),FiveClient,类:添加“棋谱欣赏”按钮的监听,(,3,),Communication,类:添加,getGemes,方法,(,4,),FiveServer,类:添加消息处理(,game,命令),(,5,)客户端接收棋局并显示,DialogGames,类,FiveClient,类添加,showGames,方法,Communication,类接收并处理,game,消息,2.

38、棋谱欣赏,2.,棋谱欣赏,(,1,)向服务器发送,manual,命令,Communication,类中添加,getManual(),方法,修改,DialogGames,的按钮注册监听器,(,2,)服务器接收,manual,命令并处理,添加处理,manual,命令的程序分支,2.,棋谱欣赏,(,3,)客户端接收棋谱并显示,在棋盘类中添加方法,getChessCount(),setChessCount,棋谱回放对话框,DialogPlayback(),FiveClient,类添加,playBakc,方法,Communication,类处理,manual,命令,实现,GamePlayback,类中

39、两个按钮的监听,完善遗留的问题,对话框在父窗口居中,作业,1,如果将登录对话框,注册对话框在其父窗口中居中显示,应该如何处理?,2,目前的程序,用户,A,登录后,再启动一个客户端,用户,A,还可以登录,即同一个用户可以同时多次登录。如果禁止一个用户同时多次登录,应如何处理。,3,异常处理,在,ManualDao,类的,getManual(),方法中,如果参数指定的棋谱文件不存在,会产生一个异常,目前程序没有很好地处理这一异常,请改进程序,处理好这个异常,能够提示用户棋谱文件不存在的信息。,4,异常处理,下棋结束后,在保存谱时,如果指定的文件夹“,D:fivegame”,不存在,则产生异常,且不

40、能创建棋谱文件。修改程序,如果指定的文件夹不存在,程序能够自动创建该文件夹。,实训四,成绩管理系统,4.1,系统设计,需求分析,班级管理,学生管理,课程管理,成绩录入,成绩修改,成绩查询,4.1,系统设计,数据库设计,班级表,class,学生表,student,字段名,类型(长度),可否为空,是否主键,含义,id,CHAR(3),不可以,是,班级号,name,VARCHAR(30),不可以,不是,班级名,字段名,类型(长度),可否为空,是否主键,含义,id,CHAR(6),不可以,是,学号,name,CHAR(10),不可以,不是,姓名,gender,CHAR(2),不可以,不是,性别,tel

41、CHAR(11),不可以,不是,电话,birthday,DATE,不可以,不是,出生日期,class,CHAR(3),不可以,不是,班级号,4.1,系统设计,数据库设计,课程表,course,成绩表,score,字段名,类型(长度),可否为空,是否主键,含义,id,CHAR(3),不可以,是,课程号,name,VARCHAR(30),不可以,不是,课程名,schoolHour,INT,不可以,不是,学时,credit,INT,不可以,不是,学分,字段名,类型(长度),可否为空,是否主键,含义,class_id,CHAR(3),不可以,不是,班级号,stu_id,CHAR(6),不可以,与co

42、urse_id联合主键,学号,course_id,CHAR(3),不可以,与stu_id联合主键,课程号,score,INT,不可以,不是,成绩,4.1,系统设计,类的设计,实体类,:,ClassEntity,、,Student,、,Course,、,Score,数据访问类,:,ClassDao,、,StudentDao,、,CourseDao,、,ScoreDao,对话框类,:,ClassManage,、,StudentManage,、,CourseManage,、,ScoreDialog,、,ScoreQueryByCourse,、,ScoreQueryByStudent,工具类,:,DB

43、Connection,、,CreateDatabase,主窗口类,:,MainFrame,4.2,工具类,创建,Java,项目,Score,建立配置文件,database.properties,配置数据库驱动程序,util,包,创建,DBConnection,类,创建,CreateDatabase,类,4.3,实体,类,建立,entity,包,ClassEntity,Student,Course,Score,4.4,数据访问类,dao,包,ClassDao,StudentDao,CourseDao,ScoreDao,4.5,主窗口类,包结构,4.5,主窗口类,MainFrame,ScoreSy

44、stem,public class ScoreSystem,public static void main(String args),new MainFrame();,缺省包,4.6,班级管理,MyTableModel,(,dialog.table,子包,):,实现单元格不可编辑,public,boolean,isCellEditable,(,int,row,int,column),return false;,ClassManage,(dialog,包,),4.7,学生,管理,StudentManage(dialog,包,),4.8,成绩,管理,1.,准备,工作,(dialog.,scoreT

45、able,包,),ScoreTable,:,单击单元格,立即进入编辑状态。,单元格失去焦点结束编辑,保存数据,ScoreTableModel,控制单元格能否编辑,设置每列的数据类型,CreateTableModel,创建,ScoreTableModel,对象,4.8,成绩,管理,2.,成绩录入与修改,(dialog,包,),ScoreDialog,成绩录入与修改的对话框,ScoreInputMonitor,成绩录入监听器,ScoreEditMonitor,成绩修改监听器,4.8,成绩,管理,3.,成绩查询,(dialog,包,),ScoreQueryByCourse,查询课程成绩,ScoreQueryByStudent,查询学生成绩,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服