《Java程序设计大作业.docx》由会员分享,可在线阅读,更多相关《Java程序设计大作业.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java程序设计大作业报告题目: JAVA综合应用 物联网工程 学院 电子信息工程 专业学 号 0703110206 学生姓名 姜吉宁 指导教师 张景莉 评定成绩 二一四年十二月Java课程设计第1章 设计要求1.1 设计内容创建一个 GUI 界面,运用一个包含 2 个选项卡的选项卡面板,实现以下功能:(1) “自我介绍”选项卡:显示设计者的个人信息,包括学号、姓名、本人的两张不同的照片(至少一张为单人照)和英文自我简介(不得少于 50 个单词),然后在一个弹出的信息窗口中显示自我简介的字数。(2) “文件测试”选项卡:对用户输入的一个名称进行判断,名称由文本框输入。如果是一个文件名,则输出该
2、文件相关属性(文件名、绝对路径和文件的长度等)。如果是一个目录,则输出该目录下的对象个数。如该名称不存在,则以此名称为名在当前目录下创建一个文件,内容自定。1.2 开发环境如图1、图2所示,设计程序所使用的集成环境是:JCreator,JAVA开发环境JDK的版本号为1.6.0_45。图1-1. JCreator图1-2. JDK的版本号18第2章 设计思路2.1 界面设计为了实现设计所需达到的效果,我们需要考虑界面布局与界面上的组件的分布。为了能够在界面上容纳下所有的组件、清晰显示所有的文字,把界面的整体框架设置为1200*700.设计要求有两个选项卡,一个“自我介绍”选项卡,一个“文件测试
3、”选项卡。因而考虑在容器中添加一个选项卡界面JTabbedPane控件,选项卡界面上加入两个面板JPanel1和JPanel2。自我介绍通过一个文件introduction.txt读入,利用StringTokenizer类提供的countTokens方法进行字符数的统计。“自我介绍”面板JPanel1上,总体采用BorderLayout布局管理器进行布局管理,在面板JPanel1的北部放置一个面板JPanel1_1,面板上放置两个标签,两个单行文本框,分别用来显示“姓名”和“学号”,采用默认的FlowLayout布局管理器;在面板JPanel1的北部放置另外一个面板JPanel1_2,面板上放
4、置两个按钮,分别叫“Show”和“Analyse”,采用默认的FlowLayout布局管理器进行布局管理;面板JPanel1的东西部各放置一个标签,用来显示照片;面板JPanel1的中部放置一个多行文本域,用来显示自我介绍的内容。“文件测试”面板JPanel2上,总体采用BorderLayout布局管理器进行管理。面板JPanel2的北部放置一个新的面板JPanel2_1,面板上放置一个标签和一个单行文本框,用来接受用户输入的待测试的内容,采用默认的FlowLayout管理器;面板JPanel2的南部放置一个新的面板JPanel2_2,在其上放置“test”、“write”、“empty”三个
5、按钮。为使三个按钮能够占整行,采用GridLayout布局管理器进行布局管理;面板JPanel2的中部设置一个多行文本域,用来显示文件测试结果。2.2 显示设计程序默认的字体偏小,不方便用户阅读,故在文件一开始就将程序所有用到的几种字体定义好,方便后续设计所用。为了使界面看起来不过于单调,给界面上的按钮添加小图标,使界面更友好。2.3 逻辑设计2.3.1 程序初始化设计初始状态下,按照要求进行相应的界面布局,初始化各个组件对应的监听器,设置组件的初始状态,等待用户触发相关控件事件。2.3.2 “自我介绍”面板的逻辑设计初始状态下,“Analyse”按钮设为不可用,“姓名”、“学号”以及自我介绍
6、的实际内容不显示。将鼠标放在两个按钮上则会显示提示信息。单击“Show”按钮后,程序将文件1.jpg、2.jpg加载到对应的照片显示标签中,从introduction.txt之中读取文本,在位于界面中的多行文本域中显示。同时,“Analyse”按钮改为可用。单击“Analyse”命令按钮后,统计简历字数并且向用户弹窗提示。2.3.3 “文件测试”面板的逻辑设计初始状态下,为了防止用户“Write”按钮不可用。将鼠标放在按钮对应位置上,会显示对应的提示信息。当用户在对应的单行文本框之中输入一个待测试的文件的文件或者目录名时,单击“Test”按钮时,检测对应的文件是否存在。当文件存在时,输出该文件
7、的相关属性并且显示。若检测到对象是一个目录,则输出目录下的对象个数。若检测到对应文件或者目录不存在,显示对应信息后,“Write”按钮变为可以。单击按钮后,弹窗提示用户输入存到对应文档的信息。用户输入一行文字后按Enter键即为确认输入,创建对应文件。当用户单击“Empty”按钮时候,显示框清空且“Write”按钮变为不可用。第3章 实现过程和代码1,23.1 字体设置3chinesefont1=new Font(黑体,Font.BOLD,18);/中文字体1chinesefont2=new Font(楷体,Font.BOLD,20);/中文字体2chinesefont3=new Font(宋
8、体,Font.BOLD+Font.ITALIC,16);/中文字体3englishfont1=new Font(Times New Roman,Font.BOLD,20);/英文字体1englishfont2=new Font(Arial,Font.BOLD,18);/英文字体23.2 布局设置4,53.2.1 “自我介绍”面板JPanel panel1=new JPanel();JPanel panel2=new JPanel();JPanel panel1_1=new JPanel();JPanel panel1_2=new JPanel();tabbedPane.addTab(自我介绍,
9、null,panel1,The panel is a brief introduction about me!);label1_1=new JLabel(姓名:);label1_1.setFont(chinesefont2);label1_2=new JLabel(学号:);label1_2.setFont(chinesefont2);textfield1=new JTextField(10);textfield1.setEditable(false);textfield1.setFont(chinesefont2);textfield2=new JTextField(10);textfiel
10、d2.setFont(chinesefont2);textfield2.setEditable(false);panel1_1.setLayout(new FlowLayout();panel1_1.add(label1_1);panel1_1.add(textfield1);panel1_1.add(label1_2);panel1_1.add(textfield2);label1_3=new JLabel(Photo1);label1_3.setFont(chinesefont3);label1_3.setHorizontalTextPosition(SwingConstants.CENT
11、ER);label1_3.setVerticalTextPosition(SwingConstants.BOTTOM);label1_4=new JLabel(Photo2);label1_4.setFont(chinesefont3);label1_4.setHorizontalTextPosition(SwingConstants.CENTER);label1_4.setVerticalTextPosition(SwingConstants.BOTTOM);textarea= new JTextArea();textarea.setFont(englishfont2);textarea.s
12、etEditable(false);panel1.setLayout(new BorderLayout();/“自我介绍”窗口总体布局panel1.add(panel1_1,BorderLayout.NORTH);/set panel in the northpanel1.add(label1_4,BorderLayout.EAST);/add photo to panel in the eastpanel1.add(textarea,BorderLayout.CENTER);/add introduction in the centerpanel1.add(label1_3,BorderLa
13、yout.WEST);/add photo to panel in the westpanel1.add(panel1_2,BorderLayout.SOUTH);/set panel in the south3.2.2 “文件测试”面板5label2_1=new JLabel(请输入名称:);label2_1.setFont(chinesefont1);textfield2_1=new JTextField(20);/textfield2_1存放测试的文件名Icon pict3=new ImageIcon(ico1.jpg);Icon pict4=new ImageIcon(ico2.jpg
14、);Icon pict5=new ImageIcon(ico3.jpg);button2_1=new JButton(Test,pict3);button2_1.setFont(englishfont1);button2_1.setToolTipText(Press to test if the file or directory exists!);button2_2=new JButton(Write,pict4);button2_2.setFont(englishfont1);button2_2.setToolTipText(Press to create a new file named
15、 what you entered!);button2_2.setEnabled(false);button2_3=new JButton(Empty,pict5);button2_3.setFont(englishfont1);button2_3.setToolTipText(Press to clear the text area!);JPanel panel2_1=new JPanel();/panel2_1panel2_1.add(label2_1);/add label to panel2_1panel2_1.add(textfield2_1);/add textfield to p
16、anel2_1JPanel panel2_2=new JPanel();panel2_2.setLayout(new GridLayout();panel2_2.add(button2_1);/add button testpanel2_2.add(button2_2);/add button writepanel2_2.add(button2_3); /add button emptyarea= new JTextArea();area.setFont(chinesefont2);panel2.setLayout(new BorderLayout();/设置“文件测试”界面总体布局panel
17、2.add(panel2_1,BorderLayout.NORTH);panel2.add(area,BorderLayout.CENTER);panel2.add(panel2_2,BorderLayout.SOUTH);3.3 相关功能设计3.3.1 主函数public static void main(String args)Design design=new Design();design.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);3.3.2 组件监听器ActionEventHandler handler=new ActionEven
18、tHandler();/为各个按钮添加组件监听器button1_1.addActionListener(handler);button1_2.addActionListener(handler);button2_1.addActionListener(handler);button2_2.addActionListener(handler);button2_3.addActionListener(handler);3.3.3 读文件introduction.txt的内容tryFileInputStream f=new FileInputStream(introduction.txt);Inpu
19、tStreamReader d=new InputStreamReader(f);BufferedReader reader=new BufferedReader(d);while(s=reader.readLine()!=null)word+=s;word+=n;d.close();catch(IOException e)System.out.println(e);3.3.4 “Show”按钮功能if(event.getSource()=button1_1)Icon photo1=new ImageIcon(1.jpg);Icon photo2=new ImageIcon(2.jpg);la
20、bel1_3.setIcon(photo1);label1_4.setIcon(photo2);button1_2.setEnabled(true);textfield1.setText(姜吉宁);textfield2.setText(0703110206);textarea.setText(word);3.3.5 “Analyse”按钮功能1if(event.getSource()=button1_2)StringTokenizer count=new StringTokenizer(word);JOptionPane.showMessageDialog(null,textfield1.ge
21、tText()+,您的简历字数为:+count.countTokens(),统计,JOptionPane.INFORMATION_MESSAGE);3.3.6 “Test”按钮if(event.getSource()=button2_1)button2_2.setEnabled(false);if(f1.isDirectory()info=这是一个目录,目录下有+f1.list().length+个对象;else if(f1.exists()info=这是一个文件,其相关属性为:n+File Name: +f1.getName()+nAbsolute path: +f1.getAbsolute
22、Path()+nLength: +f1.length()+B;elseinfo=该对象不存在,请按write键来创建该文件!;area.setText(info);button2_2.setEnabled(true);3.3.7 “Write”按钮if(event.getSource()=button2_2)tryString text=;text+=JOptionPane.showInputDialog(null,Please input text:,Input,JOptionPane.INFORMATION_MESSAGE);f1.createNewFile();FileWriter fw
23、=new FileWriter(f1.getAbsoluteFile();BufferedWriter bw=new BufferedWriter(fw);bw.write(text);bw.close();info=文件建立成功!;catch(IOException a)info=文件建立失败!;3.3.8 “Empty”按钮if(event.getSource()=button2_3)info=;button2_2.setEnabled(false);第4章 运行结果4.1 初始化过程初始化后的界面如图4-1。图4-1 初始化后的界面4.2 “自我介绍”界面效果当用户点击“Show”按钮后
24、,界面变成如图4-2所示情形。单击“Analyse”按钮后,界面弹出提示框,显示分析结果。图4-2 单击“Show”按钮显示信息图4-3 单击“Analyse”按钮进行简历分析4.3 “文件测试”界面效果4.3.1 测试目录图4-4 测试目录4.3.2 测试文件(1) 测试已存在的文件(以1.jpg为例)。图4-5 测试已有的文件(2) 测试不存在的文件(以abc.txt为例)图4-6 测试不存在的文件图4-7 输入文本建立指定文件名的文件图4-8 文件建立成功后的界面(3) 测试特殊情况(以?为文件名建文件)图4-9 测试不存在的文件?图4-10 文件建立失败4.3.3 点击“Empty”清
25、空图4-11 点击“Empty”后的界面第5章 在开发过程中所遇到的问题以及解决的办法5.1 运行后,单击按钮没有反应,界面始终是初始化后的界面。解决办法:这个问题困扰了我很久,也是本次程序设计过程中,最困扰我的问题。多次检查加之回想自己编程过程,我发现自己错误地将文件最初定义的各个变量在构造方法之中又重新定义了。举例如下:private JButton JButton1;public class DesignJButton JButton1=new JButton(“Show”);分析:猜测可能是全局变量与局部变量的作用域的问题。将Design类中的语句改成:JButton1=new JBu
26、tton(“Show”);之后,按钮的功能可以正常使用。5.2 可以成功测试文件,却无法正确测试目录。解决办法:仔细分析了ActionEventHandler类的逻辑结构,用if-else语句改写了原来的单纯用if语句来编程,程序可以实现测试目录的功能。5.3 三个按钮占据一整排的效果没有实现。解决方法:参考课本有关内容,选择了GridLayout布局管理器,成功地实现了功能。第6章 小结本次课程设计是我们这学期所学的有关JAVA知识的综合运用,涉及了类与对象、JAVA实用包、GUI组件与用户界面设计、文件操作、异常处理等知识点。总结本次实验,我有如下体会:(1) 工欲善其事,必先利其器。编程
27、前我们需要充分了解所需实现的功能与效果。初期我思路还不够清楚时候,就急于写代码。多次出错之后,我有点气馁。仔细研读了参考书上提供的实例之后,再编写程序,效率提升很多!(2) 编程需要耐心与细心。我们要充分利用编译器的反馈,具体问题具体分析。(3) 界面设计如同搭积木,可以很有趣。我们需要分清楚层次、熟知各层所有的东西。(4) 官方提供的API文档是最可靠的,我们需要擅于使用它。通过一段时间的努力,我最终实现了所需要的功能,并且在此基础之上加了一些改进,学习到更多知识的同时,我也充分体验到编程带来的乐趣。最后,衷心感谢老师为我们付出的辛勤劳动!参考文献1 张桂珠,张平,陈爱国.Java面向对象程序设计(JDK1.6)(第3版)M.北京:北京邮电大学出版社,2010.2 张桂珠. Java面向对象程序设计习题解答与实验M.北京:北京邮电大学出版社,2010.3 张化祥,陆晶.Java程序设计M.北京:清华大学出版社,2010.4 明日科技.Java编程全能词典M.北京:电子工业出版社,2010.5 Java JDK API1.6.
限制150内