学习啦>实用范文>办公文秘>文秘写作>

java毕业论文范文5篇(3)

时间: 玉凤635 分享

  java毕业论文范文篇四:

  摘要

  本文围绕Java编程语言在网络编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。

  java语言,是目前比较流行的编程语言。经过10多年的发展,java已经渗透到全球每个角落。在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。Java语言最令人瞩目的特点是具有跨平台性,使其不受平台不同的影响,并得到了广泛的应用。

  设计内容:设计GUI界面的计算器。用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。

  设计要求:

  1.系统界面的上面是数字输入对话框,用来显示所输入的数字和运行的结果。

  2.系统界面下面的左侧是记忆 + - * /。

  3. 系统界面下面的中部是数字输入按钮,用来输入数字。

  4.系统界面下面的右侧是运算符号按钮,用来实现具体的运算。

  关键字:java面向对象 计算器 网络编程

  第一章 概述

  1.1 设计目的

  计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的功能。本论文采用java编程语言实现计算器功能。该计算器大大的降低了数字计算的难度并且提高了计算的准确度和精确度。使用简单,适合广大工作人员和中小学生使用。

  1.2 计算器系统概述

  标准计算器的界面采用“图形界面程序设计(GUI)”。GUI为用户和应用程序之间的交互提供了直观、方便的交流方式。用户使用鼠标、键盘操作图形界面上的按钮、菜单等元素湘计算机系统发送命令,系统运行的结果以图形的方式显示给用户。

  编写java计算器主要使用了Swing组件和AWT布局类。Swing组件主要包括按钮、标签、文本输入类、等组件,AWT主要运用了其中的布局管理器。

  1.2.1 Swing组件

  Swing组件的按钮用JButton类表示,计算器的界面主要由JButton按钮组成,以响应用户的操作;

  Swing中的标签用JLabel类表示,标签上可以显示图标和文本;

  Swing的文本输入类包括文本框JTextField、文本区JTextArea和密码框JPasswordField。

  本计算器中仅仅使用了文本框JTextField,用于文本数字的显示。

  1.2.2 AWT组件

  布局管理器管理组件如何放置在容器中,AWT中最常用的四种布局类:FlowLayout、BorderLayout、GridLayout、CardLayout。本项目主要采用了GridLayout布局。

  1.3功能模块设计

  ★标准计算器。

  以下是标准计算器的各项功能:

  (1)加法:

  两个及两个以上数据进行加法操作,可以为小数形式。

  (2)减法:

  两个及两个以上数据进行减法操作,可以为负数形式。

  (3)乘法:

  两个及两个以上数据进行乘法操作。

  (4)除法:

  两个及两个以上数据进行除法操作。

  (5)开平方:

  对任意数开平方,可以为小数(不能为负数)。

  (6)求倒数:

  对任意数求倒数,0除外。

  (7)求百分数:

  对任意一个数进行百分号操作。

  1.4 系统功能图。

  标准计算器

  求倒数

  开平方

  求百分号

  加法

  减法

  乘法

  除法

  图1.1 计算器系统功能图

  第二章 项目设计说明

  2.1标准计算器设计界面

  图2.1 计算器设计界面

  2.2标准计算器设计主要代码

  标准计算器主要由一个菜单栏、一个文本框、27个按钮组成。

  2.2.1整体框架代码

  JFrame f = new JFrame("标准计算器");

  f.setLocation(400, 300);

  Container contentPane = f.getContentPane();

  2.2.2 菜单栏代码

  图2.2 菜单栏

  JMenuBar mBar = new JMenuBar();

  mBar.setOpaque(true);

  mEdit = new JMenu("编辑(E)");

  mEdit.setMnemonic(KeyEvent.VK_E);

  mCopy = new JMenuItem("复制(C)");

  mEdit.add(mCopy);

  mPaste = new JMenuItem("粘贴(P)");

  mEdit.add(mPaste);

  mView = new JMenu("查看(V)");

  mView.setMnemonic(KeyEvent.VK_V);

  mView.add(new JMenuItem("标准型"));

  mView.add(new JMenuItem("科学型"));

  mView.addSeparator();

  mView.add(new JMenuItem("查看分组"));

  mHelp = new JMenu("帮助(H)");

  mHelp.setMnemonic(KeyEvent.VK_H);

  mHelp.add(new JMenuItem("帮助主题"));

  mHelp.addSeparator();

  mHelp.add(new JMenuItem("关于计算器"));

  mBar.add(mEdit);

  mBar.add(mView);

  mBar.add(mHelp);

  f.setJMenuBar(mBar);

  contentPane.setLayout(new BorderLayout());

  2.2.3 文本框代码

  图2.3 文本框

  JPanel pTop = new JPanel();

  tResult = new JTextField("0.",26);

  tResult.setHorizontalAlignment(JTextField.RIGHT);

  tResult.setEditable(false);

  pTop.add(tResult);

  contentPane.add(pTop,BorderLayout.NORTH);

  2.2.4 计算器各功能键代码

  图2.4 各功能键图

  bOther = new JButton("MC");

  bOther.addActionListener(this);

  bOther.setForeground(Color.red); //字体颜色

  bOther.setMargin(new Insets(3,2,3,2));//按钮边框和标签之间的空白

  pLeft.add(bOther);

  bOther = new JButton("MR");

  bOther.addActionListener(this);

  bOther.setForeground(Color.red);

  bOther.setMargin(new Insets(3,2,3,2));

  pLeft.add(bOther);

  bOther = new JButton("MS");

  bOther.addActionListener(this);

  bOther.setForeground(Color.red);

  bOther.setMargin(new Insets(3,2,3,2));

  pLeft.add(bOther);

  bOther = new JButton("M+");

  bOther.addActionListener(this);

  bOther.setForeground(Color.red);

  bOther.setMargin(new Insets(3,2,3,2));

  pLeft.add(bOther);

  pBottom.add(pLeft,BorderLayout.WEST);

  JPanel pRight = new JPanel();

  pRight.setLayout(new BorderLayout());

  JPanel pUp = new JPanel();

  pUp.setLayout(new GridLayout(1,3,3,0));

  bOther = new JButton("BackSpace");

  bOther.addActionListener(this);

  bOther.setForeground(Color.red);

  bOther.setMargin(new Insets(3,0,3,5));

  pUp.add(bOther);

  bOther = new JButton("CE");

  bOther.addActionListener(this);

  bOther.setForeground(Color.red);

  pUp.add(bOther);

  bOther = new JButton("C");

  bOther.addActionListener(this);

  bOther.setForeground(Color.red);

  pUp.add(bOther);

  2.2.5 数字键及运算符号代码

  图2.5 数字键图

  JPanel pDown = new JPanel();

  pDown.setLayout(new GridLayout(4,5,3,2));

  bNumber = new JButton("7");

  bNumber.setForeground(Color.blue);

  bNumber.addActionListener(this);

  bNumber.setMargin(new Insets(3,3,3,3));

  pDown.add(bNumber);

  (注:其他数字键、运算符号键与“7”定义相同。)

  第三章 程序运行效果

  3.1加法运算

  本计算器可以实现多个运算数相加,例如:1+2+3+4

  计算结果为10,所有数据均为double类型。

  3.2减法运算

  本计算器可以实现多个运算数相减(正负数),例如:6-5-3-1

  计算结果为-3,数据类型为double类型。

  3.3乘法运算

  本计算器可以实现多个运算数相乘,例如2*3*4*5

  运算结果为120,数据类型为double类型。

  3.4除法运算

  本计算器可以实现多个运算数相除(除数不为0)例如:15/3/5/2

  运算结果为0.5,数据类型为double类型

  当除数为0时,计算器自动报错,例如:15/0

  3.5开方运算

  当被开方数为非负数时,计算器自动开方,例如:25开方

  运算结果为5.

  3.6求倒数运算

  当按下求倒数键时,计算器自动为运算数求其倒数。例如:5的倒数

  运算结果为0.2.

  第四章 项目重难点分析

  4.1重难点分析

  Java计算器中整体框架的建立,按钮的设置,整体布局在操作过程中都是很顺畅的。计算器的关键步骤也是重点是实现计算器的计算方法。

  实现两个数的加减乘除等运算是比较简单的,但是一个计算器需要做到的是实现多个运算数的运算。此时就用到了我在项目一开始定义的两个数据

  每执行一次运算操作就把运算结果赋值给操作数1 “op1”,并判断下一步操作是“=”或者“其他运算符”,决定下一步计算器的操作。

  4.2程序中存在的问题

  (1)菜单栏中虽然设置了编辑、查看、帮助等选项,但是项目中并没有实际的功能。

  (2)程序中设置了内存的有关操作但是并没有达到其预期的功能。

  (3)百分号的实际功能并没有实现。

  (4)当被开方数是负数时,计算器并不能给出错误提示。

  [参考文献]

  《Java编程实用技术与案例 》 译作者:杨绍方

  《软件工程Java语言实现SoftwareEngineeringwithJava》StephenR.Schach译者:袁兆山等

  程序员天堂( 英文网站 大量的程序, 库, 包) http://www.programmersheavean.com

  java毕业论文范文篇五:

  一、引言

  加深对《Java2面向对象程序设计》课程所学知识的理解,进一步巩固 Java语言的语法规则。分析系统的可行性,让系统有一个明确的方向,使开发更具合理性,并能分析出系统的具体流程,为后面的开发做好铺垫。明确本次课程设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JAVA的应用系统综合实例,来掌握Java语言编程技巧。并学会编制结构清晰、风格良好的、数据结构适当的Java语言程序,从而具备解决综合性实际问题的能力

  二、课题内容

  用Java设计一个职工信息管理系统,并实现相关功能。

  三、系统程序要求

  1、设计一个职工信息管理系统

  2、要求包括职工信息包括职工号、姓名、性别、年龄、学历、工资、

  住 址、电话(职工号不重复)

  3、本系统功能描述:

  职工信息录入功能(职工信息用文本保存);

  职工信息浏览功能;

  查询功能(至少一种查询方式):

  按工资查询, 按学历查询

  4、职工信息删除、修改功能(这两个功能任选)。

  四、程序设计思想

  该课题要求是输入职工信息,对职工信息进行一系列的处理。既要输入工号又要能查找到与之对应的职工,还要对实现建立,显示,查找,删除,信息的保存。

  因为考虑到信息管理信息的实用性,我额外添加了一个“读文件”功能,使利用void read()方法来实现的。这个“读文件模块"!是我用来扩充信息管理系统功能的!可以使系统在用户不用输入信息就能读取先前已存在的职工信息文件。

  根据课题要求,我是这样设计的:首先对要实现的功能类型分为三大类——Public类、方法类、信息类;然后细分为六个方法——void caidan()、void creat()、void output()、void search()、void delete()、void read ()。这些类和方法构成了能够实现不同功能的模块,很好地体现了面向对象的Java语言的编程模块块的思想。

  我通过调用各功能模块的几个方法,随后在各个method中具体实现相关的功能。当然要利用throws IOException进行一些异常处理,包括输入异常和数据的异常。在数据的录入与输出的过程中涉及到文件的相关操作(包括打开与关闭等)最后是系统的安全退出。大部分功能都是在具体的模块中加以实现的。

  如search方法实现查询职工信息功能;caidan方法实现系统选择菜单界面的输出等相关功能;delete方法用于职工信息删除;output方法用于职工信息的输出及浏览等系列功能。

  五、程序源代码及其解析

  package staff;//包

  import java.io.*;

  public class StaffInfomation {

  public static void main(final String[] args) throws IOException

  //throws IOException用来抛出io的错误,文件读写错误, 主要涉及到java的安全机制

  {

  staffInfo staffOne[]=new staffInfo[100]; //定义100个类数组

  for(int j=0;j<100;j++) staffOne[j] = new staffInfo();

  //建立这100个类的对象

  final ways staffTwo=new ways(); //建立这个方法类的对象

  staffTwo.caidan(staffOne);

  staffTwo.creat(staffOne);

  staffTwo.output(staffOne);

  staffTwo.search(staffOne);

  staffTwo.delete(staffOne);

  //以上几个方法分别对应着:caidan菜单选择、增加(建立)职工信息、输出(预览)、查询、删除这些功能,以数组类为参数

  }

  }

  class staffInfo

  //职工信息类换句话说就相当与c语言里面的结构体,存放职工的信息

  {

  public String name;

  public String num;

  public String sex;

  public String age;

  public String record;

  public String position;

  public String wanges;

  public String tel;

  public String addr;

  //把name、num、sex、age、record等声明为全局变量,因为它们贯穿于整个程序中,方便其它方法、类调用它们

  }

  class ways //方法类,主要实现职工信息的建立,显示,查找,删除,信息的保存与读取;这个类是整个程序的操作类。

  {

  public String recordkey;

  public int i=0;//i用来存放职工的人数

  public String filename="Infomation.txt";

  BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

  //此处是JAVA语言中输入数据的基本格式,功能有如C中的scanf函数

  void caidan(staffInfo staffOne[]) throws IOException

  {

  final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

  // 参看书34页,产生Buf对象;buf是BufferedReader类的变量,此处将读入字符串至buf

  int choice;

  do{

  System.out.println("☆★☆★☆★☆★电子信息系40706班★贺 雪 设计★☆★☆★☆\n\n");

  System.out.println("┏━━━━━━━━━━━━━━━━━━┓");

  System.out.println("┃★ 职工管理系统主菜单界面 ★┃");

  System.out.println("┣━━━━━━━━━━━━━━━━━━┫");

  System.out.println("┃ ★ ①.输入职工信息 ★ ┃");

  System.out.println("┃ ★ ②.预览职工信息 ★ ┃");

  System.out.println("┃ ★ ③.查找职工信息 ★   ┃");

  System.out.println("┃ ★ ④.删除职工信息 ★    ┃");

  System.out.println("┃ ★ ⑤.安全退出系统 ★ ┃");

  System.out.println("┃ ★ ⑥.读取数据 ★ ┃");

  System.out.println("┗━━━━━━━━━━━━━━━━━━┛");

  System.out.print(" 请输入您的选择(0--6):");

  choice=Integer.parseInt(buf.readLine());

  switch(choice)

  {

  case 1:creat(staffOne);break;

  case 2:output(staffOne);break;

  case 3:search(staffOne);break;

  case 4:delete(staffOne);break;

  case 5:save(staffOne);break;

  case 6:read(staffOne);break;

  }

  }while(choice!=0);

  }

  void creat(staffInfo staffOne[]) throws IOException

  //这个方法是实现“增加(建立)职工信息”;是建立信息模块

  {

  final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

  System.out.print("\n请输入职工信息(以0结束)\n");

  System.out.print("姓名:\n\n");

  staffOne[i].name=buf.readLine();

  while(staffOne[i].name.compareTo("0")!=0)

  //用数组staffOne[i]来暂存职工的序 号,并用compareTo方 法确定判定是否应该写入新信息

  {

  System.out.print("工号:\n\n");

  staffOne[i].num=buf.readLine();

  System.out.print("性别:\n\n");

  staffOne[i].sex=buf.readLine();

  System.out.print("年龄:\n\n");

  staffOne[i].age=buf.readLine();

  System.out.print("学历:\n\n");

  staffOne[i].record=buf.readLine();

  System.out.print("职位:\n\n");

  staffOne[i].position=buf.readLine();

  System.out.print("工资:\n\n");

  staffOne[i].wanges=buf.readLine();

  System.out.print("电话:\n\n");

  staffOne[i].tel=buf.readLine();

  System.out.print("住址:\n\n");

  staffOne[i].addr=buf.readLine();

  i++;

  System.out.println("请输入下一个职工信息:\n\n");

  staffOne[i].name=buf.readLine();

  }

  }

  void output(staffInfo staffOne[]) throws IOException

  //这里是实现“输出(预览)职工信息”output的模块

  {

  System.out.println("--------------------------------------");

  System.out.println(" *员工信息表* );

  System.out.println("------------------------------------");

  System.out.println("姓名 工号 性别 年龄 学历 职位 工资 电话号码 住址");

  System.out.println("---------------------------------");

  if(i!=0)

  {

  for(int j=0;j<i;j++)

  {

  System.out.print(staffOne[j].name+" "+staffOne[j].num+" "+staffOne[j].sex+" ");

  System.out.print(staffOne[j].age+" "+staffOne[j].record+" "+staffOne[j].position+" ");

  System.out.print(staffOne[j].wanges+" "+staffOne[j].tel+" "+staffOne[j].addr+"\n");

  }

  System.out.println("------------------------------");

  }

  else System.out.println("没有员工信息!");

  }

  void search(staffInfo staffOne[]) throws IOException

  //这里是实现职工信息的查询功能的模块

  {

  final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

  System.out.println("\n请输入您要查找的职工学历:");

  recordkey=buf.readLine();

  boolean flg=true;

  System.out.println("------------------------------------");

  System.out.println(" *员工信息表* );

  System.out.println("-----------------------------------");

  System.out.println("姓名 工号 性别 年龄 学历 职位 工资 电话号码 住址");

  System.out.println("---------------------------------------");

  for(int j=0;j<i;j++)

  {

  if(recordkey.equals(staffOne[j].record))

  //equals是字符串比较函数相等返回true

  {

  System.out.print(staffOne[j].name+" "+staffOne[j].num+" "+staffOne[j].sex+" ");

  System.out.print(staffOne[j].age+" "+staffOne[j].record+" "+staffOne[j].position+" ");

  System.out.print(staffOne[j].wanges+" "+staffOne[j].tel+" "+staffOne[j].addr+"\n");

  flg=false;

  }

  }

  if(flg)

  System.out.println("对不起,查无此人!");

  }

  void delete(staffInfo staffOne[]) throws IOException

  {

  final BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

  System.out.println("\n请输入您要删除的职工姓名:");

  recordkey=buf.readLine();

  boolean flg=true;

  for(int j=0;j<i;j++)

  {

  //System.out.println("staffOne[j].name="+staffOne[j].name);

  //System.out.println("recordkey="+recordkey);

  //System.out.println("recordkey.equals(staffOne[j].name)="+recordkey.equals(staffOne[j].name));

  if(recordkey.equals(staffOne[j].name))

  {

  for(int k=j;k<=i-1;k++)

  //利用顺序表的删除算法,删除值之后,再把后面的值往前移位,从而实现删除

  {

  staffOne[k].name=staffOne[k+1].name ;

  staffOne[k].num=staffOne[k+1].num ;

  staffOne[k].sex=staffOne[k+1].sex ;

  staffOne[k].age=staffOne[k+1].age ;

  staffOne[k].record=staffOne[k+1].record ;

  staffOne[k].position=staffOne[k+1].position ;

  staffOne[k].wanges=staffOne[k+1].wanges ;

  staffOne[k].tel=staffOne[k+1].tel ;

  staffOne[k].addr=staffOne[k+1].addr ;

  }

  i--;//职工人数要减一

  flg=false;

  }

  }

  if(flg)

  System.out.println("对不起,查无此人!。");

  else System.out.println("已经删除!。");

  }

  void save(staffInfo staffOne[]) throws IOException

  //数据的保存模块, 把输入的职工信息保存到相应的文件里。

  {

  int k;

  final FileWriter fw=new FileWriter(filename);

  //调用构造函数FileWriter()创建FileWriter类的对象。

  //文件的读取(书216页13-2-2)

  fw.write( i+"\n");//把职工的人数保存到文件中以便下次读取是使用

  for( k=0;k<i;k++)//每个职工有9个信息字段,下面就是这9个信息段。

  {

  fw.write( staffOne[k].name+"\n");

  fw.write( staffOne[k].num+"\n");

  fw.write( staffOne[k].sex+"\n" );

  fw.write( staffOne[k].age+"\n");

  fw.write( staffOne[k].record+"\n");

  fw.write( staffOne[k].position+"\n") ;

  fw.write( staffOne[k].wanges+"\n");

  fw.write( staffOne[k].tel+"\n");

  fw.write( staffOne[k].addr+"\n");

  }

  fw.close();

  System.out.println("\n 系统已经安全退出!感谢您的使用!");

  System.exit(0);

  }

  void read(staffInfo staffOne[]) throws IOException

  //这是程序的“读文件模块"!是我自己添加进去扩充系统功能的!可以使系统不用输入信息就能读取先前已存在的职工信息文件。

  {

  final FileReader fr=new FileReader(filename);

  final BufferedReader bfr=new BufferedReader(fr);

  //关于文件的读取不会的看看书216页13-2-2

  if((recordkey=bfr.readLine())!=null)

  i=Integer.parseInt(recordkey);

  for(int j=0;j<i;j++)

  {

  staffOne[j].name=bfr.readLine(); 这是程序的“读文件模块",

  是我自己添加进去扩充系统功

  staffOne[j].num=bfr.readLine(); 能的!可以使系统不用输入信息

  就能读取先前已存在的职工信息

  staffOne[j].sex=bfr.readLine(); 文件,从中读取数据。利用了书

  本P216页13-2-2的文件相关知识

  staffOne[j].age=bfr.readLine();

  staffOne[j].record=bfr.readLine();

  staffOne[j].position=bfr.readLine() ;

  staffOne[j].wanges=bfr.readLine();

  staffOne[j].tel=bfr.readLine();

  staffOne[j].addr=bfr.readLine();

  }

  fr.close();

  System.out.println("\n 数据已经成功读取!");

  }

  }

  六、心得体会

  我自己感觉此次课程设计做得挺成功的,通过这一次,我学到了不少实际编程的知识。

  在这次设计开始的第一天开始,我就开始着手修改一个用“职工信息管理系统”的JAVA程序。这一过程太不顺利,调试的时候都没有成功。后来我请教一个学长,在他的指导下我不断的发现错误,并改正它们,功夫不负有心人人,我的程序最后运行成功了。

  这其中了不少的东西,磨砺了我的意志;同时还巩固了以前所学的知识,学到了不少书本上没有的知识;学到了很多java编程知识,并学会了简单的使用eclipse来开发java程序的一些使用技巧这次课程设计是对我本学期所学的知识的检验,由此我发现了不少的问题。可以说它给了我一次自我评估的机会。通过设计让我知道了那些方面我还是有欠缺的,促使我花时间弥补。

  临近考试,时间太紧迫,致使程序实现的功能在方法上也许不是很完美,但我以后会多向老师请教,自己也要加强对Java 的学习。努力进一步提高自己的编程水平。

  参考资料

  1、《程序天下》

  2、洪维恩、何嘉《java2面向对象程序设计》

  3、Java天下-java、jsp编程论坛[黑咖啡屋]

  4、黄旭等《java课程设计指导》

  5、C编程设计(第三版) 谭浩强(著)

看了java毕业论文范文的人还看了:

1.大学计算机论文精选范文

2.计算机系毕业论文范文

3.大学计算机专业毕业论文范文

4.java毕业实习报告范文

5.与计算机有关的毕业论文

524340