昆明理工大学报告封面.doc
课 程 设 计课 程 设 计 任 务 书 信息工程与自动化 学院 物联网工程 专业 2013 年级学生姓名: 邹华建 课程设计题目: JAVA程序设计 课程设计主要内容:把指定目录中的学生照片文件(处理文件可以自选)名更改为学号命名,并将更名后的文件复制到新的目录中。一、课程设计的目的Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了一周的Java程序设计课程设计。通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。二、Java课程短学期设计报告要求任务1:用java编写程序实现对文件的操作,实现对文件的读写操作:(1)对文本中的句子进行分词并将分词结果输出到excel文件或txt中;(2)把指定目录中的学生照片文件(处理文件可以自选)名更改为学号命名,并将更名后的文件复制到新的目录中。任务2:将输出的数字进行排序通过使用java实现;任务3:设计一个具有简单功能的计算器;三、课程设计的基本要求1、明确题目要求,进行需求分析;2、进行功能设计,编写设计说明;3、进行程序设计与调试;4、对设计过程进行系统的总结;5、界面美观大方;6、完成设计报告,课程设计报告应包含以下八个内容: 课程设计题目; 功能描述:对系统要实现的功能进行简明扼要的描述。 方案论证:概要设计:根据功能描述,建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关系,并简要说明各模块的功能。详细设计:详细说明各功能模块的实现过程,所用到的算法、技巧等。 程序说明; 效果及存在问题:说明系统的运行效果(附上运行界面图片)、存在哪些不足以及预期解决办法; 结果分析及心得体会:谈谈自己在课程设计过程中的心得体会; 附录:附上各功能模块的主要代码; 参考文献:按参考文献规范列出各种参考文献,包括参考书目,论文和网址等。7、 认真努力完成作业。要求独立完成,不抄袭、不雷同(雷同抄袭者,均为0分)。按时交作业。8、 课程设计建议在Editplus +JDK,Eclipse +JDK平台上开发、调试。9、 Java源程序应加上详尽的注释语句,对所设计的类、属性、方法说明其用途,对方法的调用说明其用意和使用参数的原因。特别是有深刻理解、有独特见解的地方,用注释语句加以说明。10、课程设计作业包括全部软件工程文件和课程设计说明书文件。课程设计说明书打印到规定的课程设计说明书用纸上,并装订好。说明书格式参考附件。四、课程设计的主要内容利用学到的编程知识和编程技巧,通过具体项目的分析、设计和开发,掌握开发Java大型软件项目过程中所需要的软件技术并熟悉软件。可以以小组为单位,每组1至3名学生,在教师的指导下,每组完成一至二个题目。题目可由下面提供的选题中选择或学生自选经教师审核后方可。该组每个同学承担题目的不同部分,每位同学的课程设计报告必需独立完成。题目类型大致分配如下: 1、网络通讯类,编制网络聊天(Chat)程序,以下简称“网络”类。2、图形界面Application类,编制类似计算器、MP3播放器、围棋打谱,斗地主、潜艇大战、挖地雷、迷宫等功能单一的程序,以下简称“图形 ”类。3、Applet动画类,编制功能较复杂、效果较好的applet动画程序,以下简称“动画”类。4、数据处理类,编制考试系统、出题系统、查询系统、学生学籍、课程成绩、图书编目、仓库货物等数据录入查询程序,以下简称“数据”类。5、其它类型,自选题目,须经老师同意。五、主要技术关键的分析、解决、方案比较以下是可以参考的课程设计可能包含的相关知识:1、Java核心编程J2EE:面向对象技术 Java程序运行机制 开发环境的安装和配置 Java语言基础和重点API Java程序异常的处理 I/O、控制台程序开发 Struts程序开发2、数据库技术:关系型数据库原理 SQL数据查询语言 MS SQL Server使用方法 数据库中对象的建立与使用Java数据库编程(JDBC)六、课程设计考核方式指导教师依课程设计作业情况及整个课程设计中学生的表现,综合给出成绩。成绩分为优、良、中、及格、不及格五级。七、主要参考资料1、Java语言与面向对象程序设计,朱福喜、尹为民、余振坤编著,武汉大学出版社2、Java语言与面向对象程序设计,印旻编著,清华大学出版社3、Java程序设计实用教程,朱站立、沈伟编著,电子工业出版社八、心得体会任务1:任务2:源程序package Kmust.testd;import java.util.Arrays;import java.io.File;import java.util.Scanner;import java.io.PrintWriter;public class Dtest private static final String SPACE = " "public static void main(String args) throws ExceptionString str;File file1 = new File("e:a.txt");Scanner input=new Scanner(file1);str=input.nextLine();str = sortStringNumber(str);System.out.println(str);File file = new File("e:b.txt");PrintWriter output=new PrintWriter(file);output.write(str);output.close();public static String sortStringNumber(String str) /1,将字符串中的数值通过指定的规则进行切割获取字符串数组。String str_nums = toStringArray(str);/2,将字符串数组转成int数组。 int nums = toIntArray(str_nums);/3,对int数组排序;sortIntArray(nums);/4,将int数组变成字符串。 return arrayToString(nums);private static String arrayToString(int nums) /1,创建字符串缓冲区。StringBuilder sb = new StringBuilder();for (int i = 0; i < nums.length; i+) if(i!=nums.length-1)sb.append(numsi+SPACE);elsesb.append(numsi);return sb.toString();private static void sortIntArray(int nums) Arrays.sort(nums);private static int toIntArray(String str_nums) /1,先定义一个int数组。 int arr = new intstr_nums.length;/2,对字符串数组进行遍历。for (int i = 0; i < str_nums.length; i+) /将数组格式的字符串转成整数。存储到arr数组中。 arri = Integer.parseInt(str_numsi);return arr;private static String toStringArray(String str) return str.split(SPACE);先建一个txt文件,输入无序的几个数字,如下;程序的运行结果如下;得到的txt文件b的显示结果如下;任务3:源程序;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class CalculatorDemo String lastOption;/保存运算符号 double a,result, b,c;/保存计算结果 boolean start;/是否开始输入数字 int fh; JTextField text1;/显示文本框 /构成计算器的按钮用按钮数组来实现 JButton btn; JButton btn1; public void go() start=true; lastOption="=" JFrame myWindow=new JFrame("计算器"); JPanel p1=new JPanel(); JPanel p2=new JPanel(); text1=new JTextField(28); btn=new JButton12; btn1=new JButton7; Container cp=myWindow.getContentPane(); /设置面板的布局方式GridLayout p1.setLayout(new GridLayout(4,3,8,8); p2.setLayout(new GridLayout(3,3,8,8); cp.add(text1,BorderLayout.NORTH); /构成面板 for(int i=0;i<7;i+) btn1i=new JButton(i+""); /构建符号并加入到按钮中 btn16=new JButton("/"); btn15=new JButton("AC"); btn14=new JButton("*"); btn13=new JButton("C"); btn12=new JButton("-"); btn11=new JButton("+/-"); btn10=new JButton("+"); /采用for循环添加组件 cp.add(p1,"West"); /放置中间容器p1 cp.add(p2,"East"); /放置中间容器p2 for(int i=0;i<7;i+) p2.add(btn1i); for(int i=1;i<10;i+) btni=new JButton(i+""); p1.add(btni); btn10=new JButton("0"); p1.add(btn10); btn11=new JButton("."); p1.add(btn11); btn10=new JButton("="); p1.add(btn10);/采用for 循环为组件注册事件监听器 for(int i=1;i<10;i+) btni.addActionListener(new NumHandle(); btn10.addActionListener(new OPtionHandle(); btn11.addActionListener(new OPtionHandle(); for(int j=0;j<7;j+) btn1j.addActionListener(new OPtionHandle(); myWindow.pack(); myWindow.setVisible(start); myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /创建内部类NumHandle监听数字键动作 class NumHandle implements ActionListener public void actionPerformed(ActionEvent e) String num=e.getActionCommand();/得到数字键上的数字 if(num.equals("0") /输出0 text1.setText(text1.getText()+"0"); if(num.equals("1") /输出1 if(text1.getText().equals("0") /判断文本域中显示的数字是否为0 text1.setText("1"); else text1.setText(text1.getText()+"1"); if(num.equals("2") /输出2 if(text1.getText().equals("0") text1.setText("2"); else text1.setText(text1.getText()+"2"); if(num.equals("3") /输出3 if(text1.getText().equals("0") text1.setText("3"); else text1.setText(text1.getText()+"3"); if(num.equals("4") /输出4 if(text1.getText().equals("0") text1.setText("4"); else text1.setText(text1.getText()+"4"); if(num.equals("5") /输出5 if(text1.getText().equals("0") text1.setText("5"); else text1.setText(text1.getText()+"5"); if(num.equals("6") /输出6 if(text1.getText().equals("0") text1.setText("6"); else text1.setText(text1.getText()+"6"); if(num.equals("7") /输出7 if(text1.getText().equals("0") text1.setText("7"); else text1.setText(text1.getText()+"7"); if(num.equals("8") /输出8 if(text1.getText().equals("0") text1.setText("8"); else text1.setText(text1.getText()+"8"); if(num.equals("9") /输出9 if(text1.getText().equals("0") text1.setText("9"); else text1.setText(text1.getText()+"9"); /内部类OPtionHandle监听符号键的动作 class OPtionHandle implements ActionListener public void actionPerformed(ActionEvent e) String option=e.getActionCommand(); if(option.equals(".") text1.setText(text1.getText()+"."); /*if(option.equals("sin") a=Double.parseDouble(text1.getText();/将文本域上的字符串转换为double型 double b=Math.sin(a/180*Math.PI); /现将a转换为弧度制,再进行运算 text1.setText(String.valueOf(b); /输出运算结果 if(option.equals("cos") a=Double.parseDouble(text1.getText(); double b=Math.cos(a/180*Math.PI); text1.setText(String.valueOf(b); if(option.equals("tan") a=Double.parseDouble(text1.getText(); double b=Math.tan(a/180*Math.PI); text1.setText(String.valueOf(b); if(option.equals("log") a=Double.parseDouble(text1.getText(); double b=Math.log(a)/Math.log(10.0); text1.setText(String.valueOf(b); if(option.equals("sqrt") a=Double.parseDouble(text1.getText(); double b=Math.sqrt(a); text1.setText(String.valueOf(b); if(option.equals("pow") /该运算含有两个操作数 a=Double.parseDouble(text1.getText(); fh=4; / text1.setText(""); /将文本域的内容清空 if(option.equals("exp") a=Double.parseDouble(text1.getText(); b=a; double b=Math.exp(a); text1.setText(String.valueOf(b); if(option.equals("求倒") a=Double.parseDouble(text1.getText(); text1.setText(String.valueOf(1/a); if(option.equals("+/-") if(!"0".equals(text1.getText() /判断文本域的数字是否为0 a=Double.parseDouble(text1.getText(); a=-a; /求相反数运算 text1.setText(String.valueOf(a); if(option.equals("C") int i=text1.getText().length(); text1.setText(text1.getText().substring(0,i-1); if(option.equals("AC") text1.setText(""); /清空文本域中的内容 if(option.equals("+") a=Double.parseDouble(text1.getText(); fh=0; text1.setText(""); if(option.equals("-") a=Double.parseDouble(text1.getText(); fh=1; text1.setText(""); if(option.equals("*") a=Double.parseDouble(text1.getText(); fh=2; text1.setText(""); if(option.equals("/") a=Double.parseDouble(text1.getText(); fh=3; text1.setText(""); /有两个操作的运算 if(option.equals("=") double c=Double.parseDouble(text1.getText(); switch(fh) case 0: /执行加法运算 result=a+c; break; case 1: /执行减法运算 result=a-c; break; case 2: /执行乘法运算 result=a*c; break; case 3: /执行除法运算 result=a/c; break; case 4: /执行a的b次幂运算 result=Math.pow(a, c); break; text1.setText(String.valueOf(result);/将运算结果转换为字符串形式输出 public static void main(String args) CalculatorDemo window=new CalculatorDemo(); window.go(); / TODO code application logic here程序运行结果如下: