




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE辽宁工业大学课程设计说明书(论文)辽宁工业大学JAVA程序设计课程设计(论文)题目:院(系):软件学院专业班级:学号:学生姓名:指导教师:教师职称:起止时间:程序设计专题(报告)任务及评语院(系):软件学院教研室:软件教研窒学号学生姓名专业班级程序设计(报告)题目程序设计(报告)任务程序设计专题的任务与要求:(1)掌握Java编程、面向对象的基础知识。(2)较熟练地编写Java应用程序Application。(3)了解Java的常用标准类库、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩:指导教师签字:2008年1月5日辽宁工业大学课程设计说明书(论文)PAGE17目录1456第1章课程设计的目的与要求 1297601.1课程设计目的 1124561.2课程设计的实验环境 151451.3课程设计的预备知识 1197051.4课程设计要求 112591第2章课程设计内容 2283482.1课程设计主要内容 2295632.2概要设计 2310372.2.1自定义说明 218952.3详细设计 3113382.4测试分析 1316462.4.1程序运行情况 13145382.4.2程序异常处理 14199173章课程设计总结 1632562参考资料 17
第1章课程设计的目的与要求1.1课程设计目的《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2课程设计的实验环境硬件要求能运行Windows9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。1.3课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。1.4课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章课程设计内容2.1课程设计主要内容Java是一种跨平台、面向对象、基于网络及支持多媒体的编程语言。自1995年5月发布以来,Java和快成为开发因特网应用程序的极具魅力的语言。Java程序可以插入HTML页,有Web浏览器下载,为Web客户带来动画和交互式的享受。Java的强大功能不仅仅限于Web应用程序。它还是一种面向对象的通用编程语言,其编程功能完备,可以开发单独的应用程序。基于上述的有点可以看出,现如今Java的应用之广泛,所以我们的课程设计也选用了此编程工具,对生活中常用的时钟程序进行编写,由于我们是刚刚开始接触Java,编程水平有限无法实现特别复杂的编程项目,所以本次所编写的程序是一个简单的,没有接触到连接数据库与错误异常的知识,这也是刚刚起步,不过我们会在今后的学习中不断地深入研究与学习,争取在下一个编程项目中做出更多更复杂的程序来。2.2概要设计2.2.1自定义说明本次课程设计是利用本学期所学习的Java编程工具制作出一个可以显示多国时间及日期的Java时钟程序软件。利用Java制作的原因是因为用Java实现的HotJava浏览器显示了Java的魅力:跨平台、动感的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。,一方面Java技术也不断更新。本文围绕Java编程语言在编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行概要设计、详细设计,最后使用Java编程实现的全过程。在编程我们使用的java语言,是目前比较流行的编程语言。启动Java时钟程序并运行,可以看到时钟界面。最上面一行的下拉菜单是城市选择下拉菜单,在这里可以选择所要查看的城市的时间,共有六个城市的时间可供查询,它们是(“北京”,“伦敦”,“悉尼”,“夏威夷”,“莫斯科”,“纽约”)囊或了世界最大的几座城市的时间。界面的中心则是表盘与表针,以模拟方式显示当前所选城市的时间,它有三个指针,时针、分针和秒针,这与我们日常生活中所使用的时钟是一样的。最下面的两行分别显示的现在所选择的城市名称与当前时间的电子模式。这些项目构成了整个Java时钟程序的整个界面,此程序占用资源少,相应时间短,精确度与灵敏度高。2.3详细设计(以下为程序源代码及注释)本时钟程序共分为三个部分,其中第一部分是时钟程序的定义阶段,此阶段定义了时钟程序的界面,绘制出圆形表盘、表针(时针、分针和秒针)以及时钟的窗口。然后是获取计算机BIOS中的时间及日期。以下则为此程序:packagetimezoneclock;importjava.awt.*;importjavax.swing.JPanel;importjava.util.*;publicclassClockPanelextendsJPanelimplementsTimerInterface{BorderLayoutborderLayout1=newBorderLayout();privateCalendarcalendar;//定义一个Calendar变量privateStringyear,month,day,hour,minute,second;privateintseconds;//定义整形变量,用于计算当前时间privateStringcity;//表示城市名称privateTimeZonetz;//表示城市所在的时区publicClockPanel(Strings,Stringtz1){try{city=s;tz=tz.getTimeZone(tz1);calendar=Calendar.getInstance(tz);//获得当前的时间jbInit();}catch(Exceptionex){ex.printStackTrace();}}voidjbInit()throwsException{this.setLayout(borderLayout1);Timert=newTimer(1000,this);//定义一个Timer线程t.start();//启动线程,运行run()}//定义changeTZ方法,动态地改变时间publicvoidchangeTZ(Strings,Stringtz2){city=s;tz=tz.getTimeZone(tz2);calendar=Calendar.getInstance(tz);}protectedvoidpaintComponent(Graphicsg){/**@todoOverridethisjavax.swing.JComponentmethod*/super.paintComponent(g);g.drawOval(10,10,210,210);//绘制圆形g.drawString("12",105,30);g.drawString("3",200,115);g.drawString("6",115,210);g.drawString("9",20,120);for(inti=0;i<360;){g.drawLine(115+(int)(100*Math.cos(2*Math.PI*i/360-Math.PI/2)),115+(int)(100*Math.sin(2*Math.PI*i/360-Math.PI/2)),115+(int)(95*Math.cos(2*Math.PI*i/360-Math.PI/2)),115+(int)(95*Math.sin(2*Math.PI*i/360-Math.PI/2)));i=i+30;}doublehourAngle=2*Math.PI*seconds/(12*60*60);//计算时针与12点方向的角度doubleminuteAngle=2*Math.PI*seconds/3600;//计算分针与12点方向的角度doublesecondAngle=2*Math.PI*seconds/60;//计算秒针与12点方向的角度g.drawLine(110,110,110+(int)(60*Math.cos(hourAngle-Math.PI/2)),110+(int)(60*Math.sin(hourAngle-Math.PI/2)));//绘制时针g.drawLine(110,110,110+(int)(80*Math.cos(minuteAngle-Math.PI/2)),110+(int)(80*Math.sin(minuteAngle-Math.PI/2)));//绘制分针g.drawLine(110,110,110+(int)(90*Math.cos(secondAngle-Math.PI/2)),110+(int)(90*Math.sin(secondAngle-Math.PI/2)));//绘制秒钟Fontf=newFont("NewRoman",Font.BOLD,12);//设置字体g.setFont(f);g.drawString(city+"时间是:",20,240);//在窗口绘制时间字符串g.drawString(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒",25,260);}publicvoidtimeSpare(Timert){/**@todoImplementthisgraphicalclock.TimerInterfaceabstractmethod*/calendar.setTime(newDate());//得到当前时间year=String.valueOf(calendar.get(Calendar.YEAR));//将整形的时间变量转换为字符串//在java中0表示一月,故应在所得的月份数字前加1month=String.valueOf(calendar.get(Calendar.MONTH)+1);day=String.valueOf(calendar.get(Calendar.DATE));hour=String.valueOf(calendar.get(Calendar.HOUR));minute=String.valueOf(calendar.get(Calendar.MINUTE));second=String.valueOf(calendar.get(Calendar.SECOND));seconds=calendar.get(Calendar.HOUR)*60*60+calendar.get(Calendar.MINUTE)*60+calendar.get(Calendar.SECOND);//用于计算当前时间的秒数repaint();//窗口重绘}}程序制作并运行:图1程序运行时钟程序界面:图2时钟程序界面以上为时钟界面的定义及获取时间,第二部分为定义时间及日期的刷新时间,这部分用以控制时钟程序按照多长时间进行刷新,因为介于时钟的特殊性,它的精确度要求的特别高,所以这部分程序也是整个程序中最为重要的部分之一。以下为刷新时间定义程序模块:packagetimezoneclock;publicclassTimerextendsThread{privateintspare;//窗口刷新的时间间隔,单位为毫秒privateTimerInterfaceti;//定义一个TimerInterface接口变量publicTimer(inti,TimerInterfacet){spare=i;ti=t;setDaemon(true);}publicvoidrun(){try{while(!interrupted()){sleep(spare);//线程休息spare时间ti.timeSpare(this);//调用函数将窗口的内容重绘}}catch(InterruptedExceptione){}}}以上两部分制作完成之后,就要对时钟程序加入全球化概念,用下面的程序分别加入世界各大主要城市的时间日期,其中包括(“北京、夏威夷、纽约、伦敦、莫斯科和悉尼”)。以下为世界各大城市时间:packagetimezoneclock;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTimezoneClockextendsJFrame{JPanelcontentPane;BorderLayoutborderLayout1=newBorderLayout();JPaneljPanel1=newJPanel();Choicechoice1=newChoice();ClockPaneltzPanel=newClockPanel("北京","GMT+8");//ConstructtheframepublicTimezoneClock(){enableEvents(AWTEvent.WINDOW_EVENT_MASK);try{jbInit();}catch(Exceptione){e.printStackTrace();}}//ComponentinitializationprivatevoidjbInit()throwsException{contentPane=(JPanel)this.getContentPane();contentPane.setLayout(borderLayout1);this.setSize(newDimension(231,333));this.setTitle("各种不同时区的时钟");choice1.addItemListener(newTimezoneClock_choice1_itemAdapter(this));contentPane.add(tzPanel,BorderLayout.CENTER);contentPane.add(jPanel1,BorderLayout.NORTH);jPanel1.add(choice1,null);//在面板中添加一个下拉选择框choice1.addItem("北京");choice1.addItem("莫斯科");choice1.addItem("夏威夷");choice1.addItem("纽约");choice1.addItem("伦敦");choice1.addItem("悉尼");}//OverriddensowecanexitwhenwindowisclosedprotectedvoidprocessWindowEvent(WindowEvente){cessWindowEvent(e);if(e.getID()==WindowEvent.WINDOW_CLOSING){System.exit(0);}}voidchoice1_itemStateChanged(ItemEvente){switch(choice1.getSelectedIndex()){case0:{tzPanel.changeTZ("北京","GMT+8");}//将窗口的时间改为北京时间时间为北京时间:图3时间为北京break;case1:{tzPanel.changeTZ("莫斯科","GMT+3");}//将窗口的时间改为莫斯科时间时间为莫斯科时间:图4时间为莫斯科break;case2:{tzPanel.changeTZ("夏威夷","GMT-10");}//将窗口的时间改为夏威夷时间时间为夏威夷时间:图5时间为夏威夷break;case3:{tzPanel.changeTZ("纽约","GMT-5");}//将窗口的时间改为纽约时间break;case4:{tzPanel.changeTZ("伦敦","GMT");}//将窗口的时间改为伦敦时间时间为伦敦时间:图6时间为伦敦break;case5:{tzPanel.changeTZ("悉尼","GMT+10");}break;}}}classTimezoneClock_choice1_itemAdapterimplementsjava.awt.event.ItemListener{TimezoneClockadaptee;TimezoneClock_choice1_itemAdapter(TimezoneClockadaptee){this.adaptee=adaptee;}publicvoiditemStateChanged(ItemEvente){adaptee.choice1_itemStateChanged(e);}}2.4测试分析2.4.1程序运行情况在开发大型软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无暇,因此,在软件生命周期的每个阶段都不可避免地会产生差错。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错;但是,经验表明审查并不能发现所有差错,此外在编码过程中还不可避免地会引入新的错误。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。软件测试的目的是寻找错误,并且是最大可能的找出最多的错误。软件测试的目的是要证明程序中有故障存在,并力求设计出最能暴露错误的测试方案,测试不是为了显示程序是好的,而是应该从软件中包含有缺陷和故障这个假定出发去测试程序,从中发现尽可能多的软件故障。这时的关键是如何合理的设计测试用例。在选择测试用例进,着重考虑那些易于发现程序错误的数据。测试以发现故障为目的,是为了发现故障而执行程序的过程。软件测试在软件生命周期中横跨两个阶段。通常在编写出每个模块之后就对它做必要的测试,编码和单元测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段。在详细设计阶段结束后,开始进入软件测试阶段。首先应该对每一个窗体都进行测试使其能够完成预期目的,对于有些功能做了相应的修改,根据每个窗体的要求来严格的筛选数据反复的测试。然后进行功能模块测试,由于每个模块的功能不同,因此采用了大量不同的数据进行系统的完整性测试,现以管理员登录功能为例进行说明测试过程。2.4.2程序异常处理程序在运行过程中可能会出现错误而且中断正常的控制流,这就是异常处理现在。不提供处理异常代码的程序可能会在不期望终止的时候终止,甚至可能引发严重问题。Java的异常处理子系统可以为程序员提供处理运行是错误即异常处理的能力,而且比其他语言提供的异常处理能在形式上更简洁、更灵活,使用Java的异常处理子系统,程序员可以开发出比较健壮的程序。要想成为一名出色的Java程序员,就必须能够完全驾驭Java的异常处理子系统。不过本程序比较小,内容也并不是很多所以在异常方面并有没代码产生。不过对于异常命令我们这里还是给出一种,如何抛出并捕捉异常的方法,供今后的编程中参考和借鉴。1.声明异常(throws)声明异常是当方法执行时,声明方法中可能出现的错误。因为任何代码都可能出现系统错误和运行是错误,所以Java不需要在方法中显示声明Error和RuntimeException,但是如果方法抛出其它异常,则必须在方法中显示声明它们。可以使用方声明中的关键字throws声明方法中的异常。PublicvoidmyMethod()throwsIOException2.抛出异常(throw)在生命异常的方法中,如果出现异常,可以抛出异常对象。声明异常是一个说明性的子句,只是表明方法可能会抛出异常,而真正抛出异常的动作是有抛出异常语句来完成的。抛出遗产的语法如下:ThrownewTheException();也可以使用以下语法:TheExceptione=newTheException();Throwe;3.使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出国劳务合同样本样本
- 内部股东股权转让合同样本
- 军训服合同样本
- 公司在盖房合同样本
- 交易所网签合同样本
- 五金合作合同标准文本
- 年度工作计划的调整与反馈
- 200字雇佣合同样本
- 出售合同样本写
- 第14讲 人体生命活动的调节与人类活动对生物圈的影响 2025年会考生物学专题练习(含答案)
- JJF 1271-2010公路运输模拟试验台校准规范
- GB/T 22795-2008混凝土用膨胀型锚栓型式与尺寸
- GB/T 19851.15-2007中小学体育器材和场地第15部分:足球门
- GB/T 10095.1-2001渐开线圆柱齿轮精度第1部分:轮齿同侧齿面偏差的定义和允许值
- 全国戒毒医疗机构名单
- ICU 呼吸机相关性肺炎预防措施执行核查表
- 汽车吊检测保养记录
- 市政工程安全台账表
- 航天模型的设计、制作与比赛课件
- 公路工程施工现场安全检查手册
- 高考倒计时60天课件
评论
0/150
提交评论