java语言课程设计报告_第1页
java语言课程设计报告_第2页
java语言课程设计报告_第3页
java语言课程设计报告_第4页
java语言课程设计报告_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、. Java 语言课程设计报告 专 业: 计算机 班 级: 061 目 录题目一: 计算器4一设计内容4二设计要求4三设计思想43.1 利用JAVA GUI的基本思想设计整个程序。43.2 利用链表实现每一次运算的操作数和操作运算符存储。43.3.将所有类打包成jar文件发布5四总体设计实现54.1 类之间的关系图54.2 运行界面的布局图54.3 运行效果图6五详细设计说明65.1 链表LinkedList的作用65.2 各类实现的功能65.3 程序打包发布过程7六程序测试7七. 总结与说明7八附原代码(见附录一)8题目二: 学生管理系统9一 设计内容9二 设计要求9三设计思想93.1 利用

2、数据库实现系统的数据存储。93.2 利用JAVA GUI的基本思想设计系统布局。93.3 利用对话框实现用户数据更改的提示。93.4 将所有类打包成jar文件发布。9四总体设计实现1041 类之间的关系图104.2 运行界面的布局图104.3 数据库的设计和数据源的建立124.4 运行效果图12五详细设计说明155.1 数据库表的字段及属性155.2 ODBC的建立。165.3 数据库的连接和sql 语句175.4 提示对话框的实现175.5 各类实现的功能175.6 程序打包发布过程18六 程序测试18七总结与说明18八附原代码(见附录二)18附录一、“计算器”源代码19ComputerPa

3、d.java19NumberButton.java26OperationButton.java27附录二:“学生管理系统”源代码28StudentManager.java28StudentSituation.java30Inquest.java33ModifySituation.java37Delete.java44Student.java48 题目一: 计算器一 设计内容设计一个GUI简易计算器,用户可以通过鼠标一次输入参加计算的数值,进行加减乘除等混合运算。二 设计要求要求所设计GUI界面计算器是一个使用方便的程序,能实现基本的加减乘除功能,以及sin,cos,tan,log等算术运算;同

4、时实现退格、清零等运算。三设计思想3.1 利用JAVA GUI的基本思想设计整个程序。(1) 利用布局管理器设计计算器整体布局,整个系统采用_ BorderLayout布局,其中使用 _1_个面板,各面板分别放置 numberButton,operationButton,小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清空按钮,sin,cos,tan,log._。(2)利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。(3)利用文本框显示操作数和运算结果。3.2 利用链表实现每一次运算的操作数和操作运算符存储。链表的作用主要是用来存储操作数字和操作运算符的。运

5、用数据结构的一些思想,把链表的存储等方法运用到该程序中。编写计算器这个程序要用链表来存储选中的数字,从而达到计算的功能。当输入一个数字时,链表接受使之成为第一个节点,若再输入一个数字,则将它与第一个节点中的数字相连,组成一个数字放在第一个节点中,若开始链表中没有节点,当输入一个运算符时,链表将不会将它存储,若前已有一个数字节点,则将运算符接受存储在第二个节点中,当在输入一运算符,则当前的代替原先的运算符,存储在第二个节点中 ,依次类推。3.3.将所有类打包成jar文件发布 首先,用文本编辑器编写一个清单文件(Manifestfiles):Manifest-Version: 1.0Main-Cl

6、ass: ComputerPadCreated-By: 1.4(Sun Microsystems Inc.)例如:清单文件命名为moon.mf.保存到G:chap2。然后,如下生成JAR文件:G:chap2jar cfm Jisuanqi.jar moon.mf ComputerPad.class这样就实现了将所有类打包成jar文件发布。四总体设计实现4.1 类之间的关系图ComputerPad(主类)NumberButtonOperationButtonBorderLayout布局 North4.2 运行界面的布局图 (resultshow) 1 2 3 + CBorderLayout布局

7、Center sin 4 5 6 _退格 cos 7 8 9 *1/x按钮布局GridLayout(6,4) tan 0 +/- . /= log图1-1 计算器布局图 4.3 运行效果图 图1-2 计算器运行界面五详细设计说明5.1 链表LinkedList的作用链表主要是实现元素的动态分配,而且插入,删除等操作非常方便,不需要移动大量元素,但也失去了顺序表随机访问的优点. LinkedList实现链表结构,用变量getfirst,getlast来实现表头和表尾。存储当前结点的指针时有一定的技巧。类List还定义了一些方法来实现对链表的基本操作,通过运用这些基点,并使其成为本操作我们可以对链

8、表进行各种操作。例如reset()方法使第一个结点成为当前结点。insert( Object d )方法在当前结点前插入一个结当前结点。remove()方法删除当前结点同时返回其内容,并使其后继结点成为当前结点,如果删除的是最后一个结点,则第一个结点变为当前结点。 5.2 各类实现的功能(1)ComputerPad该java文件生成的类负责创建计算器的“主窗口”。该类含有main方法,整个程序从该类开始执行 (2) NumberButton 该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字。 (3)OperationButton 该文件生成的类负

9、责为主类创建运算符按钮对象,使用鼠标单击运算符号按钮可选择所需要的运算。5.3 程序打包发布过程首先,用文本编辑器编写一个清单文件(Manifestfiles):Manifest-Version: 1.0Main-Class: ComputerPadCreated-By: 1.4(Sun Microsystems Inc.)例如:清单文件命名为moon.mf.保存到G:chap2。然后,如下生成JAR文件:G:chap2jar cfm Jisuanqi.jar moon.mf ComputerPad.class这样就实现了将所有类打包成jar文件发布。然后用鼠标双击文件运行的java应用程序六

10、程序测试 运行出程序后在输入框输入“2”,然后点击“+”,再点击“1”,接着点击“=”, 最后输入框显示结果是3.0, 点击“C” 就能清空上面的3.0。 减乘除的方法也是如此点击。在上面输入30,点击“sin”,结果输出是0.49999999999999994,输入90,点击“sin”,结果是1.0。输入60,点击“cos”,输出0.5000000000000001。输入90,点击“cos”,输出6.123233995736766E-17,也就是0。输入90,点击“tan”,输出1.633123935319537E16,也就相当于无穷大。因为“log”运算是以自然底数e=2.71828182

11、8459045为底,所以输入2.718281828459045,点击“log”则输出1.0。点击“退格” 可以实现退格。 七. 总结与说明本实验是设计一个计算器,总布局是BorderLayout布局,按钮用了GridLayout布局,用了LinkedList存数据,让我们掌握了链表用于java中。主要任务是添加sin、cos、tan、log四个按钮并让其实现功能,首先是用Button创建对象并分配内存,然后将其添加进面板,做完后运行结果,虽然运行界面有多了四个按钮,但是功能并没实现,接着添加监视器和四个按钮的算法,最后再允许程序就能达到目的了。此实验相对来说还是比较简单的,另外自己添加了“编辑

12、”下拉菜单的“复制”“粘贴”按钮,但是功能并没有实现。还有电脑本身自带的计算器输入数字时还可以从键盘上输入,而上面这个程序却不能。希望自己以后能逐渐将此序的功能更加完美。八附原代码(见附录一)题目二: 学生管理系统一 设计内容设计一个基于GUI界面的单机版学生管理系统,实现学生基本信息的录入、查询、修改和删除。二 设计要求要求学生信息保存在数据库中,利用JDBC-ODBC桥接器,实现系统对数据库中信息的添加、查询、修改和删除。学号为唯一不可重复项。三设计思想3.1 利用数据库实现系统的数据存储。 系统采用access 数据库,利用JDBC-ODBC桥接器实现数据库连接,分别实现学生信息的添加、

13、查询、修改和删除。 3.2 利用JAVA GUI的基本思想设计系统布局。(1)利用布局管理器设计系统整体布局,系统主界面采用CardLayout布局,系统利用菜单项进行选择。(2) 菜单项对应的面板采用BoxLayout布局,一共设计了4个菜单项,分别对应_1_面板。3.3 利用对话框实现用户数据更改的提示。 学生信息存储到数据库之前给出提示信息,让用户确定信息的正确性。3.4 将所有类打包成jar文件发布。首先,用文本编辑器编写一个清单文件(Manifestfiles):Manifest-Version: 1.0Main-Class: StudentManagerCreated-By: 1.

14、4(Sun Microsystems Inc.)例如:清单文件命名为moon.mf.保存到G:chap9。然后,如下生成JAR文件:G:chap9jar cfm StudentManager.jar moon.mf *.class这样就实现了将所有类打包成jar文件发布。四总体设计实现41 类之间的关系图StudentManagerStudentStituationInquestDeleteModifySitiuationStudent4.2 运行界面的布局图 BorderLayout.Center 学号: 姓名: 性别:男 女 专业: 年级: 出生: 录入 重置BoxLayout布局Bord

15、erLayout.South 图2-1 录入信息布局图BorderLayout.Center BoxLayout布局 输入要修改信息的学号: 开始修改 (新)姓名: (新)性别:男 女 (新)专业: (新)年级: (新)出生: 录入修改 重置 BorderLayout.South 图2-2 修改信息布局图BoxLayout布局BorderLayout.Center 输入要查询的学号: 查询 姓名: 性别:男 女专业:年级:出生: 图2-3 查询信息布局图BorderLayout.Center 输入要删除的学号: 删除 姓名: 性别:男 女 专业: 年级: 出生: BoxLayout布局 图2-

16、4 删除信息布局图4.3 数据库的设计和数据源的建立 (1) 在access 中建立数据库,数据库名:db1.mdb , 数据库中建立学生信息表,表名为:表一, 共包含_7_ 个字段。 (2)在ODBC中建立数据源,数据源名:yzc,用户名xxx, 密码:xxxx 4.4 运行效果图 图2-5 学生管理系统运行界面 图2-6 录入学生基本信息界面 图2-7 修改学生基本信息界面 图2-8 查询学生基本信息界面 图2-9 删除学生基本信息界面五详细设计说明5.1 数据库表的字段及属性 图2-10 创建数据库表5.2 ODBC的建立。 图2-11 数据库管理器中添加数据源 图2-12 创建数据源名

17、并选择路径5.3 数据库的连接和sql 语句 con=DriverManager.getConnection("jdbc:odbc:sun","gxy","ookk"); sql l=con.createStatement(); sql.executeUpdate(temp);trycon=DriverManager.getConnection("jdbc:odbc:sun","gxy","ookk"); sql=con.createStatement(); rs=sql.e

18、xecuteQuery("SELECT*FROM jisuan"); 5.4 提示对话框的实现String m="基本信息将被录入!" int ok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION, String warning="必须要输入学号!" JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);5.5

19、 各类实现的功能(1)StudentManager 该java责创建学籍管理系统的主窗口,该类含有main序从该类开始执行。(2) StudentSituation该文件的类负责创建学籍管理系统的学生信息录入界面。(3) ModifySituation 该文件的类负责创建学籍管理系统的学生信息修改界面。 (4)Inquest 该文件的类负责创建学籍管理系统的学生信息查询界面。 (5)Delete 该文件的类负责创建学籍管理系统的学生信息删除界面。 (6)Student 负责创建存放学生信息的对象。5.6 程序打包发布过程首先,用文本编辑器编写一个清单文件(Manifestfiles):Mani

20、fest-Version: 1.0Main-Class: StudentManagerCreated-By: 1.4(Sun Microsystems Inc.)例如:清单文件命名为moon.mf.保存到G:chap9。然后,如下生成JAR文件:G:chap9jar cfm StudentManager.jar moon.mf *.class现在就将StudentManager.jar拷贝到任何一个安装了java运行环境的计算机上,只要用鼠标双击该文件即可。六 程序测试运行界面出现后,点击“录入学生基本信息”,出现一个可以输入学生学号”“姓名”“专业”“年级”“出生”的界面,一次输入信息,点击

21、“录入”,信息就被保存了。然后可以点击“修改学生基本信息”,输入刚才输入的学号,点击“开始修改”,就可以修改了。点击“查询学生基本信息”,就会弹出一个窗口,输入要查询的学号,只要录入了的信息,就回显示出来。最后一项“删除学生基本信息”,点击后只要输入学号,点击删除,就会彻底删除信息了。七总结与说明 本实验主要是让我们了解关于程序与数据库的建立并与它连接,打开Microsoft Access创建数据库的表格,接着打开数据源管理器添加刚刚创建的数据库表格,点击确定以后,在程序中就需要添加连接数据库的语句。从中让我对数据库的连接和建立更加了解。八附原代码(见附录二)附录一、“计算器”源代码Compu

22、terPad.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;import java.text.NumberFormat;public class ComputerPad extends Frame implements ActionListener NumberButton numberButton; OperationButton oprationButton; Button 小数点按钮,正负号

23、按钮,退格按钮, 求倒数按钮,等号按钮,清零按钮,sin,cos,tan,log; Panel panel; JTextField resultShow; String 运算符号="+","-","*","/" LinkedList 链表; boolean 是否按下等号=false; public ComputerPad() super("计算器"); 链表=new LinkedList(); numberButton=new NumberButton10; for(int i=0;i<=

24、9;i+) numberButtoni=new NumberButton(i); numberButtoni.addActionListener(this); oprationButton=new OperationButton4; for(int i=0;i<4;i+) oprationButtoni=new OperationButton(运算符号i); oprationButtoni.addActionListener(this); 小数点按钮=new Button("."); 正负号按钮 =new Button("+/-"); 等号按钮=n

25、ew Button("="); 求倒数按钮=new Button("1/x"); 退格按钮=new Button("退格"); 清零按钮=new Button("C"); sin=new Button("sin"); cos=new Button("cos"); tan=new Button("tan"); log=new Button("log"); 清零按钮.setForeground(Color.red); 退格按钮.setFor

26、eground(Color.red); 等号按钮.setForeground(Color.red); 求倒数按钮.setForeground(Color.blue); 正负号按钮.setForeground(Color.blue); 小数点按钮.setForeground(Color.blue); sin.setForeground(Color.blue); cos.setForeground(Color.blue); tan.setForeground(Color.blue); log.setForeground(Color.blue); 退格按钮.addActionListener(thi

27、s); 清零按钮.addActionListener(this); 等号按钮.addActionListener(this); 小数点按钮.addActionListener(this); 正负号按钮.addActionListener(this); 求倒数按钮.addActionListener(this); sin.addActionListener(this); cos.addActionListener(this); tan.addActionListener(this); log.addActionListener(this); resultShow=new JTextField(1

28、0); resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); resultShow.setFont(new Font("TimesRoman",Font.PLAIN,14); resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); resultShow.setBackground(Color.white); resultShow.setEditable(false); panel

29、=new Panel(); panel.setLayout(new GridLayout(4,5); panel.add(numberButton1); panel.add(numberButton2); panel.add(numberButton3); panel.add(oprationButton0); panel.add(清零按钮); panel.add(sin); panel.add(numberButton4); panel.add(numberButton5); panel.add(numberButton6); panel.add(oprationButton1); pane

30、l.add(退格按钮); panel.add(cos); panel.add(numberButton7); panel.add(numberButton8); panel.add(numberButton9); panel.add(oprationButton2); panel.add(求倒数按钮); panel.add(tan); panel.add(numberButton0); panel.add(正负号按钮); panel.add(小数点按钮); panel.add(oprationButton3); panel.add(等号按钮); panel.add(log); add(pane

31、l,BorderLayout.CENTER); add(resultShow,BorderLayout.NORTH); MenuBar menubar=new MenuBar(); Menu menu=new Menu("编辑"); MenuItem item1=new MenuItem("复制(C)Ctrl+C"); MenuItem item2=new MenuItem("粘贴(P)Ctrl+V"); menu.add(item1); menu.add(item2); menubar.add(menu); setMenuBar(m

32、enubar); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0);); setVisible(true); setBounds(100,50,240,180); setResizable(true); validate(); public void actionPerformed(ActionEvent e) if(e.getSource() instanceof NumberButton) NumberButton b=(NumberButton)e.g

33、etSource(); if(链表.size()=0) int number=b.getNumber(); 链表.add(""+number); resultShow.setText(""+number); 是否按下等号=false; else if(链表.size()=1&&是否按下等号=false) int number=b.getNumber(); String num=(String)链表.getFirst(); String s=num.concat(""+number); 链表.set(0,s); resu

34、ltShow.setText(s); else if(链表.size()=1&&是否按下等号=true) int number=b.getNumber(); 链表.removeFirst(); 链表.add(""+number); 是否按下等号=false; resultShow.setText(""+number); else if(链表.size()=2) int number=b.getNumber(); 链表.add(""+number); resultShow.setText(""+num

35、ber); else if(链表.size()=3) int number=b.getNumber(); String num=(String)链表.getLast(); String s=num.concat(""+number); 链表.set(2,s); resultShow.setText(s); else if(e.getSource() instanceof OperationButton) OperationButton b=(OperationButton)e.getSource(); if(链表.size()=1) String fuhao=b.get运算

36、符号(); 链表.add(fuhao); else if(链表.size()=2) String fuhao=b.get运算符号(); 链表.set(1,fuhao); else if(链表.size()=3) String fuhao=b.get运算符号(); String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1); try double n1=Double.parseDouble(number1); double n2=Double.pa

37、rseDouble(number2); double n=0; if(运算符号.equals("+") n=n1+n2; else if(运算符号.equals("-") n=n1-n2; else if(运算符号.equals("*") n=n1*n2; else if(运算符号.equals("/") n=n1/n2; 链表.clear(); 链表.add(""+n); 链表.add(fuhao); resultShow.setText(""+n); catch(Exce

38、ption ee) else if(e.getSource()=等号按钮) 是否按下等号=true; if(链表.size()=1|链表.size()=2) String num=(String)链表.getFirst(); resultShow.setText(""+num); else if(链表.size()=3) String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1); try double n1=Double.p

39、arseDouble(number1); double n2=Double.parseDouble(number2); double n=0; if(运算符号.equals("+") n=n1+n2; else if(运算符号.equals("-") n=n1-n2; else if(运算符号.equals("*") n=n1*n2; else if(运算符号.equals("/") n=n1/n2; resultShow.setText(""+n); 链表.set(0,""

40、+n); 链表.removeLast(); 链表.removeLast(); catch(Exception ee) else if(e.getSource()=小数点按钮) if(链表.size()=0) 是否按下等号=false; else if(链表.size()=1) String dot=小数点按钮.getLabel(); String num=(String)链表.getFirst(); String s=null; if(num.indexOf(dot)=-1) s=num.concat(dot); 链表.set(0,s); else s=num; 链表.set(0,s); re

41、sultShow.setText(s); else if(链表.size()=3) String dot=小数点按钮.getLabel(); String num=(String)链表.getLast(); String s=null; if(num.indexOf(dot)=-1) s=num.concat(dot); 链表.set(2,s); else s=num; resultShow.setText(s); else if(e.getSource()=退格按钮) if(链表.size()=1) String num=(String)链表.getFirst(); if(num.lengt

42、h()>=1) num=num.substring(0,num.length()-1); 链表.set(0,num); resultShow.setText(num); else 链表.removeLast(); resultShow.setText("0"); else if(链表.size()=3) String num=(String)链表.getLast(); if(num.length()>=1) num=num.substring(0,num.length()-1); 链表.set(2,num); resultShow.setText(num); else 链表.removeLast(); resultShow.setText("0"); else if(e.getSource()=sin) String number2=(String)链表.getLast(); try double d=Double.parseDouble(number2); double m=(d*Math.PI)/180; d=Math.sin(m); String str=String.valueOf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论