湖南工业大学Java程序设计课程设计 doc.docx
《湖南工业大学Java程序设计课程设计 doc.docx》由会员分享,可在线阅读,更多相关《湖南工业大学Java程序设计课程设计 doc.docx(18页珍藏版)》请在冰豆网上搜索。
![湖南工业大学Java程序设计课程设计 doc.docx](https://file1.bdocx.com/fileroot1/2022-11/27/e5c1d597-8239-482a-bf1d-11564028df1c/e5c1d597-8239-482a-bf1d-11564028df1c1.gif)
湖南工业大学Java程序设计课程设计doc
Java程序设计课程设计
设计说明书
科学计算器
起止日期:
2013年06月24日至2013年06月30日
学生姓名
XX
班级
计本XX
学号
XX
成绩
指导教师(签字)
计算机与通信学院
2013年6月30日
一.课程设计目的----------------------------------1
二.设计任务及要求-------------------------------2
三.设计内容-------------------------------------2
一)设计思路-----------------------------------
二)可行性分析----------------------------------
三)需求分析---------------------------------4
四)概要模型---------------------------------6
五)详细设计----------------------------------8
四、测试与评价------------------------------------14
五、结论-----------------------------------------20
六、致谢-----------------------------------------20
前言
人类已进入21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领域产生越来越深刻的影响,也正在改变人们的工作,生活学习,交流方式.信息的获取,处理,交流和应用能力,已经成为人们最重要的能力之一.
在不久的将来知识经济将占世界经济发展的主导地位,国家综合国力和国际竞争能力越来越取决于教育发展,科学技术和知识创新的水平,教育在经济和社会发展过程中将呈现出越来越突出的重要作用.学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段.但是一直以来人们使用传统人工的方式管理学生成绩,填写各种表格,这种管理方式存在着许多缺点,如:
效率低,保密性差,另外所用其时间长,产生大量的文件和数据,这对于查找,更新和维护都带来了不少的困难.
(一)课程设计的目的
随着计算机技术的飞速发展,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需求,目的旨在帮助用户快速准确的得到计算结果,因此掌握java语言编程的基础知识并能熟练的运用,熟悉类声明与对象的使用,了解java语言的图形用户界面的设计知识,运用Myeclipse编写简单的计算器程序并实现其功能。
(二)课设任务及要求
设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零等功能。
用鼠标单击相应的数字键和运算符号键,然后单击=按钮,窗口上方的文本框将会显示计算出来的结果,要将文本编辑框清零,可单击清零按钮
(三)设计内容
一)设计思路
本应用程序继承自框架类(Frame),此程序不使用布局管理器,将单行输入显示文本框、各个按钮功能、计算过程显示区加入到同一个面板内,直接添加数字按钮和运算按钮以及控制按钮,同时注册按钮事件监听器。
二)可行性分析
所谓可行性分析就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
这步工作的主要是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以比较抽象的方式进行系统分析和设计的过程。
可行性研究的最根本任务是对以后的行动方针提出建议,以避免时间、资源、人力和金钱的浪费,推荐一个较好的解决方案,并且为工程制定一个初步的计划。
1技术可行性分析
本系统采用GUI,界面设计中有用到swing组件的TextField和Button,用awt中的BorderLayout和GridLayout布局管理方式,窗体名称Calculotor继承JFrameActionListener接口并实现publicvoidactionPerformed(ActionEvente2){}的方法。
定义变量StringBufferlin-str来显示字符串,同时定义doublelin-x和lin-y变量表示运算数。
使用的灵活、良好的可扩展性、以及广泛实际应用,充分说明本系统在技术方面的可行性。
就目前的开发技术及辅助工具来说,系统需要的功能能够快速地实现。
而且目前校内建有局域网,这为系统实现校内使用提供了硬件支持。
就目前使用的开发技术来说规划系统的功能目标应该能够达到;利用JSP,HTML超文本标记语言和MYSQL数据库管理系统,在规定的时间内开发工作基本能够实现需求分析中系统所要求的功能。
这是个超小型的管理系统,从投入的人力,财力与物力来讲是非常之小的,只要一台电脑,这个系统就可以了。
从节省人力方面,可以让管理人员从繁与复杂的工作中解脱出来,做更多的工作,可以给教学管理提高一个层次。
本系统设计清晰,有良好的用户接口,操作简洁,符合教务管理的工作需要,并达到操作过程中的直观、方便、实用、安全等要求,因此操作方面具有可行性。
2经济可行性分析
经济可行性分析中最重要的内容之一是成本--效益分析。
对于一个基于计算机系统的研制项目要在经济方面评价其是否合理,成本--效益分析要估计研制开发的花费并与收益(包括有形的可以用货币计数的及无形的利益)衡量比较。
如果计算机和服务器在已有的情况之下,系统方案成本小,不需要投入太多的资金,其运行跟维护所费资金又少,投入使用后可以节省大量人力、物力、时间等资源,可以提高企事业单位的工作效益。
反之,购置计算机、服务器等硬件设备的费用是相当贵的,在中国,劳动力的成本相对来说较低,从经济上考虑,这时用人力代替电脑工作就节约了成本。
所以要从现有设备来考虑运用哪种方案,经济上是可行的。
3社会上可行性分析
该项目为用户自行开发,在法律方面不会存在侵犯专利权、侵犯版权等问题,完全按照合同规定的责任履行。
4工具可行性
软件方面:
信息时代对于软件的应用已不是人们的难题,人们在日常办公中用的计算机操作的系统等都属于软件部分。
硬件方面:
计算机普及到今天,人们对于它的拥有已不少见,它的硬件设备完全能够满足人们的需求,而价格也能被人们所接受
三)需求分析
设计一个图形界面的计算器应用程序,完成简单的算术过程,设计的计算器应用程序除了普通的加,减,乘,除外,还设计有算术平方根,求倒数,正切,正弦,余弦,立方等功能,程序主要是设计一个计算器的界面,并练习使用监听器处理数据的输入,并完成相关计算,用户可以利用鼠标点击或操作符键来完成计算的输入,计算的过程将被显示在窗口右边的文本框中
四)概念模型
:
:
五)详细设计
一import语句,使用import语句引入java.awt.,java.awt.event.,javax.swing.,
Javax.swing.border包中所有的类。
Java.awt.event.*引入系统事件类包
importjavax.swing.*;
二,定义一个Calculotor类来继承Frame类
publicclassCalculotorextendsFrame{
//声明三个面板的布局
GridLayoutlin_1,lin_2,lin_3;
Panellin_p0,lin_p1,lin_p2,lin_p3;
JTextFieldlin_Jtf1;
//TextFieldlin_tf2;
Buttonlin_b0,lin_b2,lin_b3,lin_b4,lin_b5,lin_b6,lin_b7,lin_b8,lin_b9,lin_b10,lin_b11,lin_b12,lin_b13,lin_b14,
lin_b15,lin_b16,lin_b17,lin_b18,lin_b19,lin_b20,lin_b21,lin_b22,lin_b23,lin_b24,lin_b25,lin_b26;
StringBufferlin_str;//显示屏所显示的字符串
doublelin_x,lin_y;//x和y都是运算数
intlin_z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"
staticdoublelin_m;//记忆的数字
publicCalculotor(){
setTitle("科学计算器");
lin_1=newGridLayout(1,4,10,0);//实例化三个面板的布局
lin_2=newGridLayout(4,1,0,15);
lin_3=newGridLayout(4,5,10,15);
lin_Jtf1=newJTextField(27);
lin_Jtf1.setHorizontalAlignment(JTextField.RIGHT);
lin_Jtf1.setEnabled(false);
lin_Jtf1.setText("欢迎使用");
lin_b0=newButton("Backspace");
lin_b0.setForeground(Color.red);
lin_b0.addActionListener(newBt());
lin_b2=newButton("C");
lin_b2.setForeground(Color.red);
lin_b2.addActionListener(newBt());
lin_b3=newButton("tan");
lin_b3.setForeground(Color.red);
lin_b3.addActionListener(newBt());
lin_b4=newButton("x*3");
lin_b4.setForeground(Color.red);
lin_b4.addActionListener(newBt());
lin_b5=newButton("cos");
lin_b5.setForeground(Color.red);
lin_b5.addActionListener(newBt());
lin_b6=newButton("sin");//m+=sin
lin_b6.setForeground(Color.red);
lin_b6.addActionListener(newBt());
lin_b7=newButton("7");
lin_b7.setForeground(Color.blue);
lin_b7.addActionListener(newBt());
lin_b8=newButton("8");
lin_b8.setForeground(Color.blue);
lin_b8.addActionListener(newBt());
lin_b9=newButton("9");
lin_b9.setForeground(Color.blue);
lin_b9.addActionListener(newBt());
lin_b10=newButton("/");
lin_b10.setForeground(Color.red);
lin_b10.addActionListener(newBt());
lin_b11=newButton("sqrt");
lin_b11.setForeground(Color.blue);
lin_b11.addActionListener(newBt());
lin_b12=newButton("4");
lin_b12.setForeground(Color.blue);
lin_b12.addActionListener(newBt());
lin_b13=newButton("5");
lin_b13.setForeground(Color.blue);
lin_b13.addActionListener(newBt());
lin_b14=newButton("6");
lin_b14.setForeground(Color.blue);
lin_b14.addActionListener(newBt());
lin_b15=newButton("*");
lin_b15.setForeground(Color.red);
lin_b15.addActionListener(newBt());
lin_b16=newButton("%");
lin_b16.setForeground(Color.blue);
lin_b16.addActionListener(newBt());
lin_b17=newButton("1");
lin_b17.setForeground(Color.blue);
lin_b17.addActionListener(newBt());
lin_b18=newButton("2");
lin_b18.setForeground(Color.blue);
lin_b18.addActionListener(newBt());
lin_b19=newButton("3");
lin_b19.setForeground(Color.blue);
lin_b19.addActionListener(newBt());
lin_b20=newButton("-");
lin_b20.setForeground(Color.red);
lin_b20.addActionListener(newBt());
lin_b21=newButton("1/X");
lin_b21.setForeground(Color.blue);
lin_b21.addActionListener(newBt());
lin_b22=newButton("0");
lin_b22.setForeground(Color.blue);
lin_b22.addActionListener(newBt());
lin_b23=newButton("+/-");
lin_b23.setForeground(Color.blue);
lin_b23.addActionListener(newBt());
lin_b24=newButton(".");
lin_b24.setForeground(Color.blue);
lin_b24.addActionListener(newBt());
lin_b25=newButton("+");
lin_b25.setForeground(Color.red);
lin_b25.addActionListener(newBt());
lin_b26=newButton("=");
lin_b26.setForeground(Color.red);
lin_b26.addActionListener(newBt());
//实例化四个面板
lin_p0=newPanel();
lin_p1=newPanel();
lin_p2=newPanel();
lin_p3=newPanel();
//创建一个空字符串缓冲区
lin_str=newStringBuffer();
面板lin_p0中包括显示操作结果的文本区,lin_p1中包括退格按钮"Backspace",本次清除按钮"C"。
lin_p2中包括数字按钮"0","1","2","3","4","5","6","7","8","9"小数点按钮".",除号按钮("/"),求根按钮
"sqrt",乘号按钮"*",求余按钮"%",减号按钮""-",求倒数按钮"1/x",正负号按钮"+/-"),加号按钮"+",等号按钮"=".lin_p4中包含求tan,x*3,cos,sin的运算符。
//添加面板p0中的组件和设置其在框架中的位置和大小
lin_p0.add(lin_Jtf1);
lin_p0.setBounds(10,25,300,40);
//添加面板p1中的组件和设置其在框架中的位置和大小
lin_p1.setLayout(lin_1);
lin_p1.add(lin_b0);;
lin_p1.add(lin_b2);
lin_p1.setBounds(10,65,300,25);
//添加面板p2中的组件并设置其的框架中的位置和大小
lin_p2.setLayout(lin_2);
lin_p2.add(lin_b3);
lin_p2.add(lin_b4);
lin_p2.add(lin_b5);
lin_p2.add(lin_b6);
lin_p2.setBounds(10,110,40,150);
//添加面板p3中的组件并设置其在框架中的位置和大小
lin_p3.setLayout(lin_3);//设置p3的布局
lin_p3.add(lin_b7);
lin_p3.add(lin_b8);
lin_p3.add(lin_b9);
lin_p3.add(lin_b10);
lin_p3.add(lin_b11);
lin_p3.add(lin_b12);
lin_p3.add(lin_b13);
lin_p3.add(lin_b14);
lin_p3.add(lin_b15);
lin_p3.add(lin_b16);
lin_p3.add(lin_b17);
lin_p3.add(lin_b18);
lin_p3.add(lin_b19);
lin_p3.add(lin_b20);
lin_p3.add(lin_b21);
lin_p3.add(lin_b22);
lin_p3.add(lin_b23);
lin_p3.add(lin_b24);
lin_p3.add(lin_b25);
lin_p3.add(lin_b26);
lin_p3.setBounds(60,110,250,150);
//设置框架中的布局为空布局并添加4个面板
setLayout(null);
add(lin_p0);
add(lin_p1);
add(lin_p2);
add(lin_p3);
setResizable(false);//禁止调整框架的大小
//匿名类关闭窗口
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente1){
System.exit(0);
}
});
setBackground(Color.yellow);
setBounds(100,100,320,280);
setVisible(true);
}
四处理按钮事件
//构造监听器
classBtimplementsActionListener{
publicvoidactionPerformed(ActionEvente2){
doubled=0;
try{
if(e2.getSource()==lin_b2){//选择"C"清零
lin_Jtf1.setText("0");//把显示屏清零
lin_str.setLength(0);
}
elseif(e2.getSource()==lin_b23){//单击"+/-"选择输入的运算数是正数还是负数
lin_x=Double.parseDouble(lin_Jtf1.getText().trim());
lin_Jtf1.setText(""+(-lin_x));
}
elseif(e2.getSource()==lin_b25){//单击加号按钮获得x的值和z的值并清空y的值
lin_x=Double.parseDouble(lin_Jtf1.getText().trim());
lin_str.setLength(0);//清空缓冲区以便接收新的另一个运算数
lin_y=0d;
lin_z=0;
}
elseif(e2.getSource()==lin_b20){//单击减号按钮获得x的值和z的值并清空y的值
lin_x=Double.parseDouble(lin_Jtf1.getText().trim());
lin_str.setLength(0);
lin_y=0d;
lin_z=1;
}
elseif(e2.getSource()==lin_b15){//单击乘号按钮获得x的值和z的值并清空y的值
lin_x=Double.parseDouble(lin_Jtf1.getText().trim());
lin_str.setLength(0);
lin_y=0d;
lin_z=2;
}
elseif(e2.getSource()==lin_b10){//单击除号按钮获得x的值和z的值并空y的值
lin_x=Double.parseDouble(lin_Jtf1.getText().trim());
lin_str.setLength(0);
lin_y=0d;
lin_z=3;
}