程序语言综合课程设计实验报告

上传人:磨石 文档编号:54915745 上传时间:2022-02-16 格式:DOC 页数:45 大小:1.10MB
返回 下载 相关 举报
程序语言综合课程设计实验报告_第1页
第1页 / 共45页
程序语言综合课程设计实验报告_第2页
第2页 / 共45页
程序语言综合课程设计实验报告_第3页
第3页 / 共45页
点击查看更多>>
资源描述
程序语言综合课程设计设计报告 学院:信息工程学院专业班级:计算机112班学号:姓名:指导老师:完成时间:201376 42 / 45文档可自由编辑打印目 录题目一计算器11题目简介12设计的内容、要求和目标13总体设计14详细设计及实现24.1操作界面设计34.2类成员变量及方法设计44.3源代码分析75系统运行及使用说明13题目二学生信息管理系统151题目简介152设计的内容、要求和目标153总体设计16 3.1 功能模块划分15 3.2 功能模块层次及划分16 3.3 相关类文件164 数据库设计18 4.1 数据库表设计18 4.2 数据库表间的关系19 4.3 数据库的MySQL(SQL)实现195详细设计及实现205.1操作界面设计205.2 类成员变量及方法设计205.4源代码分析216系统运行及使用说明22 6.1 系统运行22 6.2 使用说明26总 结27附录28 A.1 题目一关键源码28 A.2 题目二关键源码38题目一计算器1 题目简介本程序采用高级程序语言JAVA编写,采用eclipse工具完成的一个简单的计算器。2 设计的内容、要求和目标设计内容:设计一个GUI简易计算器,用户可以通过鼠标依次输入参加计算的数值,进行加减乘除,cos、sin等混合运算,设计帮助文档。设计要求:要求所设计GUI界面计算器是一个使用方便的程序,能实现基本的加减乘除功能,同时实现退格、清零、sin、cos等复杂运算并且设计菜单栏和帮助文档。设计目标:添加运算和帮助主题,同时实现树形结构表示帮助主题。3 总体设计1、 利用布局管理器设计计算器整体布局,整个系统采用borderlayout布局,其中使用了6个面板,各面板分别放置。2、利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。3、利用文本框显示操作数字和运算结果。4、利用树的结构设计帮助文档。 JTree树: JTree组件以树结构显示数据项,从中可选择一个或多个数据项。JTree中数据项通常称为节点。使用JTree组件需要多个接口和类的配合,除了JTree类之外,还需要Javax.swing.tree子包中的树模型类、树节点类,以及Javax.swing.event子包中的选择时间接口和类等。DefaultMutableTreeNode默认可变树节点类 Javax.swing.tree.DefaultMutableTreeNode默认可变树节点类声明如下: DefaultMutableTreeNode root = new DefaultMutableTreeNode(帮助); DefaultMutableTreeNode t1=new DefaultMutableTreeNode(帮助信息”); DefaultMutableTreeNode t1_1 = new DefaultMutableTreeNode(说明);DefaultMutableTreeNode t2 = new DefaultMutableTreeNode(简介);5、功能模块图见图1.1计算器主界面数值功能框菜单帮助栏数字显示栏计算过程显示栏图1.1 功能模块图4 详细设计及实现4.1 操作界面设计1、首先是设计一个大小为(100,50,528,258)的窗口,界面布局应用了borderlayout布局。将六个面板组合好添加到窗体里面。其中将文本框放置在窗体的上部,显示按钮的值。窗体的西部放置了计算器的功能按钮,将数字键安置在窗体的中间,而东部则是放置了显示运算过程面板和功能按钮。,并设置saveButton=new JButton(保存); copyButton=new JButton(复制);clearButton=new JButton(清除);三个按钮。主界面:2、帮助文档树的设计: (1)、采用JFrame类设计图形用户界面,框架左边使用一个自定义组件MutableJTree以树结果显示帮助文档;MutableJTree组件响应选择事件,当选择树中一个接点时,将该节点的所有孩子节点的对象值显示在右边的Jlist组件中。(2)、各个节点为DefaultMutableTreeNode默认可变树节点类。图1.2 树的结构4.2 类成员变量及方法设计计算器主类声明主要是声明各个组件。菜单项包括帮助主题和关于计算器。功能键定义区设置好sin,cos,tan,exp等按键的布局。数字键定义区设置好数字键的布局。计算方法区主要是定义按钮操作事件,实现计算功能。1、首先声明一个主类CalculatorWindow,在主类中定义各个组件包括:功能键定义区设置好sin、cos、tan、exp等按键的布局、数字键定义区设置好数字键的布局、计算方法区主要是定义按钮操作事件,实现计算功能、菜单项包括帮助和查看。2、主类中通过调用HandleSin、HandleCos、HandleDigit、HandleExp等方法实现Sin、cos、数字键、exp等功能。3、各个类名:HandleDigit handleDigit; /负责处理ActionEvent事件HandleOperation handleOperation ; 实现加、减、乘、除运算HandleBack handleBack; 实现退格事件HandleClear handleClear; 实现清零事件HandleEquality handleEquality; 实现等号事件HandleDot handleDot; 实现小数点事件HandlePOrN handlePOrN; 实现正负号事件HandleSin handleSin; 实现sin按钮事件HandleCon handleCos; 实现cos按钮事件HandleTan handleTan; 实现Tan按钮事件HandleLog handleLog 实现log按钮事件;HandleExp handleExp; 实现exp操作 HandleOff handleOff; 关闭系统流程图开始按钮键清零、退格、菜单操作加减乘除运算Sin、cos、tan、exp、log运算显示运算过程和结果结束图1.3系统流程图4.3 源代码分析1、主要功能实现涉及的类及方法:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;import java.io.*;import java.lang.Object;public class CalculatorWindow extends JFrame implements ActionListener NumberButton numberButton; OperationButton operationButton; JButton 小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,cos,tan,log,exp,off; JMenuBar bar; JMenu help,view; JMenuItem about,exit,information; JTextField resultShow; /显示计算结果 JTextField showComputerProcess; /显示当前计算过程 JTextArea saveComputerProcess; /显示计算步骤 JButton saveButton,copyButton,clearButton; LinkedList list; /链表用来存放第一个运算数、运算符号和第二个运算数 HandleDigit handleDigit; /负责处理ActionEvent事件 HandleOperation handleOperation ; HandleBack handleBack; HandleClear handleClear; HandleEquality handleEquality; HandleDot handleDot; HandlePOrN handlePOrN; HandleSin handleSin; HandleCos handleCos; HandleTan handleTan; HandleLog handleLog; HandleExp handleExp; HandleOff handleOff; public CalculatorWindow()在主类中定义各个组件、方法。主类中通过调用各个方法进行运算:2、HandleCos方法:实现cos键运算功能:import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleCos implements ActionListener LinkedList list; JTextField resultShow,showComputerProcess; JTextArea saveComputerProcess; HandleCos(LinkedList list,JTextField t1,JTextField t2, JTextArea t3) this.list=list; resultShow=t1; showComputerProcess=t2; saveComputerProcess=t3; public void actionPerformed(ActionEvent e) if(list.size()=1|list.size()=2) String numOne=list.getFirst(); try double x=Double.parseDouble(numOne); double result=Math.cos(x); String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); String proccess=sin(+numOne+)=+result; showComputerProcess.setText(proccess); saveComputerProcess.append( +proccess+n); if(list.size()=2) list.removeLast(); /移掉运算符号 catch(Exception ee) else if(list.size()=3) String numTwo=list.getLast(); try double x=Double.parseDouble(numTwo); double result=Math.cos(x); String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); String proccess=cos(+numTwo+)=+result; showComputerProcess.setText(proccess); saveComputerProcess.append( +proccess+n); list.removeLast(); /移掉第2个运算数 list.removeLast(); /移掉运算符号 catch(Exception ee) 3、help类:实现帮助文档:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*;import java.io.*;public class Help implements TreeSelectionListenerJEditorPane editorPane;public Help() JFrame help = new JFrame(计算器);Container contentPane = help.getContentPane();DefaultMutableTreeNode root = new DefaultMutableTreeNode(帮助);DefaultMutableTreeNode t1 = new DefaultMutableTreeNode(帮助信息 );DefaultMutableTreeNode t1_1 = new DefaultMutableTreeNode(说明);DefaultMutableTreeNode t2 = new DefaultMutableTreeNode(简介);root.add(t1);root.add(t2);t1.add(t1_1);JTree tree = new JTree(root);tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);tree.addTreeSelectionListener(this);JScrollPane scrollPane1 = new JScrollPane(tree);editorPane = new JEditorPane();JScrollPane scrollPane2 = new JScrollPane(editorPane);JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true, scrollPane1, scrollPane2);contentPane.add(splitPane);help.pack();help.setBounds(100,50,600,400);help.setVisible(true);public void valueChanged(TreeSelectionEvent e) JTree tree = (JTree) e.getSource();DefaultMutableTreeNode selectionNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();String nodeName = selectionNode.toString();if (selectionNode.isLeaf() String = file: + System.getProperty(user.dir)+ System.getProperty() + nodeName+.txt;try editorPane.setPage(); catch (IOException ex) System.out.println(找不到此文件);else editorPane.setText(null);4、HandleDot类:实现小数点事件:import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleDot implements ActionListener LinkedList list; JTextField resultShow,showComputerProcess; HandleDot(LinkedList list,JTextField t1,JTextField t2) this.list=list; resultShow=t1; showComputerProcess=t2; public void actionPerformed(ActionEvent e) String dot=e.getActionCommand(); if(list.size()=1) String num=list.getFirst(); String s=null; if(num.indexOf(dot)=-1) s=num.concat(dot); list.set(0,s); else s=num; list.set(0,s); resultShow.setText(s); showComputerProcess.setText(+list.get(0); else if(list.size()=3) String num=list.getLast(); String s=null; if(num.indexOf(dot)=-1) s=num.concat(dot); list.set(2,s); else s=num; resultShow.setText(s); showComputerProcess.setText(+list.get(0)+list.get(1)+ +list.get(2); 5 系统运行及使用说明1、系统运行结果采用eclipse工具对程序进行编译运行;运行结果:图1.4 主界面图1.5 查看退出使用说明文档:图1.6 帮助文档2、使用说明:您可以使用计算器进行如加、减、乘、除这样简单的运算。计算器还提供了编程计算器、科学型计算器和统计信息计算器的高级功能。可以单击计算器按钮来执行计算,或者使用键盘键入进行计算。通过按 Num Lock,您还可以使用数字键盘键入数字和运算符。题目二学生管理系统1 题目简介本系统是应用java语言,在eclipse环境下,调用SQL数据库设计的一个简易学生管理系统,系统中包含学号,姓名,性别,专业,年级,出生,学生六个基本信息。学生管理系统,是为老师和学生提供一个学生管理的平台。长期以来,学校基本都是使用传统人工的方式管理学生信息,效率低、保密性差,随着计算机和网络技术的发展,使用计算机来管理学生信息已经成为发展趋势。因此,基于java的学生管理系统已成为作为学校管理者不可缺少的部分,应为使用者提供充足的信息和快捷的查询、删除、插入、修改手段。2 设计的内容、要求和目标设计内容:建立学生信息数据库,学生管理系统调用数据库进行登录判断和四个基本信息进行查询,添加,修改,删除等操作。将查询出来的信息应用表格显示出来,在添加信息面板中,设置该信息的各个组件,要求用户填入数据实现添加功能。修改删除面板中创建该信息的各个组件,从数据库中将该信息显示在组件中,再手动修改数据,实现修改删除功能。设计要求:1. 用SQL或者mysql设置数据库。2. 要能够链接上数据库。3 .在主界面中利用菜单项进行操作。4.能够重置学生的信息5.设置欢迎界面。设计目标: 通过对数据库的操作,则进入管理系统的主界面,可以通过主界面提供的菜单,可以实现对学生管理系统的基本添加、查询、删除,修改等操作。3 总体设计3.1功能模块划分 1、学生管理系统需要实现查询、修改、删除、插入学生的个人信息功能。 2、在主界面上进行操作。功能模块图如下: 图2.1 功能模块划分图3.2 功能模块层次及调用关系1、功能模块层次图2.2 功能模块层次及调用关系2、调用关系从图2.2知,菜单选项通过调用四个功能函数来实现对数据库的管理。3.3 相关类文件首先声明一主类Managerwindow,在主类中定义各个组件;还包括:对各个类的调用以及对Frame类的调用。Inquest类:主要实现查询功能模块;Delete类:主要实现删除功能模块;ModifySituation类:主要实现修改功能模块;InputStudent类:主要实现插入功能模块;通常包括功能模块划分、功能模块层次及调用关系、相关类文件,可分小节介绍。4 数据库设计主要阐述数据库的各表、视图、触发器等的结构(表名、各字段名、类型、宽度、精度、是否允许空、是否主键、外键、缺省值)。如果设计题目未涉及数据库则本节省略。4.1 数据库表设计1、使用Microsoft Office Access 新建一数据库student,设计6个字段Sno、Sname、Ssex、Sspec、Sgrade、Sborn。2、在字段下面添加数据:4.2 数据表之间关系主体内容Sno学生学号Sname学生姓名Ssex性别Sspec专业Sgrade学生年级Sborn学生出生4.3 数据库的MySQL(SQL)实现1、这里用的是SQL2000 数据库,数据库名称为:stu2、连接数据库:创建数据源:5 详细设计及实现5.1 操作界面设计程序首先运行时弹出登陆界面,在登陆界面中提供菜单选项在菜单选项中添加基本信息录入;基本信息修改;基本信息查询;基本信息删除;欢迎界面。点击分别弹出录入、修改、查询、删除功能框。登录界面大小为(600*580),定义一个面板p将背景图片。 阐述软件的运行及用户操作的界面方案,包括窗口大小、控件布局、文字颜色、字体及操作逻辑等。5.2 类成员及方法设计1、ManagerWindow.JavaManagerWindow 类继承了Frame类之间组合关系成员变量:1.JTextField mz 单行文本对象,用于输入学号和显示文本信息。 2.JMenu 单按钮对象,用于设置菜单按钮。 3JMenuItem 录入,修改,查询,删除,欢迎界面子菜单按钮。 4、(JPanel) contentPane 容器 5、( JMenuBar) jMenuBar1用于添加下拉菜单方法:1.ManagerWindow()类的构造方法,为所有组件设置布局,添加组件。 2.actionPerformed(ActionEvent e)处理用户判定事件方法。2、Inquest类、Inputstudent类、ModifySituation类、delete类。 分别实现对学生管理系统进行查询、插入、修改、删除的功能、 详细阐述各个类的成员变量及方法的实现细节,详细阐述算法逻辑。主要程序应绘制N-S流程图。5.3 源代码分析1、主类ManagerWindow:public void actionPerformed(ActionEvent e) if(e.getSource()=录入) card.show(pCenter,录入界面); else if(e.getSource()=修改) 基本信息修改.clearMess(); card.show(pCenter,修改界面); else if(e.getSource()=查询) 基本信息查询.clearMess(); 基本信息查询.setLocation(getBounds().x+getBounds().width,getBounds().y); 基本信息查询.setVisible(true); else if(e.getSource()=删除) card.show(pCenter,删除界面); else if(e.getSource()=欢迎界面) card.show(pCenter,欢迎界面); public static void main(String args) new ManagerWindow(); 实现对各个功能函数的调用6系统运行及使用说明6.1系统运行:1.主界面2、查询功能:3、插入功能:4、修改功能:5、删除功能:6.2 使用说明本系统是应用java语言,在eclipse环境下,调用SQL数据库设计的一个简易学生管理系统。点击运行程序,进入主界面,点击菜单选项进入功能选项:选择你要进行的功能,查询、修改、插入、删除等学生信息。对复杂软件系统,说明其安装、运行环境配置要求。写出简要使用说明书。 总结对几个星期来的课程设计进行全面总结。为期四周的java课程设计马上就要结束,在这四个星期的设计中我学会了许多,刚开始我对java课程设计是茫然的,虽然在上个学期学过java,但是我还从来没有花精力去编写java程序。刚开始我对老师给的题目无从下手,对上学期学习的java知识忘得差不多了,后来我慢慢看课本,渐渐拾起了对java的记忆,并参照着网上计算器的例子终于能够独立的编写出来了。第二个程序是学生管理系统,这个程序对于我来说是一个比较大的程序这就要求对类与类之间的关系有一个很好的掌握,通过这个程序的编写,让我更加深入的了解了java的结构。 附录A.1 题目一关键源码(1) 类的CalculatorWindow方法import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;import java.io.*;import java.lang.Object;public class CalculatorWindow extends JFrame implements ActionListener NumberButton numberButton; OperationButton operationButton; JButton 小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,cos,tan,log,exp,off; JMenuBar bar; JMenu help,view; JMenuItem about,exit,information; JTextField resultShow; /显示计算结果 JTextField showComputerProcess; /显示当前计算过程 JTextArea saveComputerProcess; /显示计算步骤 JButton saveButton,copyButton,clearButton; LinkedList list; /链表用来存放第一个运算数、运算符号和第二个运算数 HandleDigit handleDigit; /负责处理ActionEvent事件 HandleOperation handleOperation ; HandleBack handleBack; HandleClear handleClear; HandleEquality handleEquality; HandleDot handleDot; HandlePOrN handlePOrN; HandleSin handleSin; HandleCos handleCos; HandleTan handleTan; HandleLog handleLog; HandleExp handleExp; HandleOff handleOff; public CalculatorWindow() setTitle(计算器); JPanel panelLeft,panelRight; list=new LinkedList(); resultShow=new JTextField(10); resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); resultShow.setFont(new Font(TimesRoman,Font.BOLD,16); resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); resultShow.setEditable(false); resultShow.setBackground(Color.white); showComputerProcess=new JTextField(); showComputerProcess.setHorizontalAlignment(JTextField.CENTER); showComputerProcess.setFont(new Font(Arial,Font.BOLD,16); showComputerProcess.setBackground(Color.cyan); showComputerProcess.setEditable(false); saveComputerProcess=new JTextArea(); saveComputerProcess.setEditable(false); saveComputerProcess.setFont(new Font(宋体,Font.PLAIN,16); numberButton=new NumberButton10; handleDigit=new HandleDigit(list,resultShow,showComputerProcess); for(int i=0;i=9;i+) numberButtoni=new NumberButton(i); numberButtoni.setFont(new Font(Arial,Font.BOLD,20); numberButtoni.addActionListener(handleDigit); operationButton=new OperationButton4; handleOperation=new HandleOperation(list,resultShow, showComputerProcess,saveComputerProcess); String 运算符号=+,-,*,/; for(int i=0;i4;i+) operationButtoni=new OperationButton(运算符号i); operationButtoni.setFont(new Font(Arial,Font.BOLD,20); operationButtoni.addActionListener(handleOperation); bar=new JMenuBar(); help=new JMenu(帮助); view=new JMenu(查看); about=new JMenuItem(关于); exit=new JMenuItem(退出); help.add(about); view.add(exit); bar.add(help); bar.add(view); setJMenuBar(bar); exit.addActionListener(this); about.addActionListener(this); 小数点操作=new JButton(.); handleDot=new HandleDot(list,resultShow,showComputerProcess); 小数点操作.addActionListener(handleDot); 正负号操作=new JButton(+/-); handlePOrN=new HandlePOrN(list,resultShow,showComputerProcess); 正负号操作.addActionListener(handlePOrN); 等号操作=new JButton(=); handleEquality=new HandleEquality(list,resultShow, showComputerProcess,saveComputerProcess); 等号操作.addActionListener(handleEquality); sin=new JButton(sin); handleSin=new HandleSin(list,resultShow, showComputerProcess,saveComputerProcess); sin.addActionListener(handleSin); cos=new JButton(cos); handleCos=new HandleCos(list,resultShow, showComputerProcess,saveComputerProcess); cos.addActionListener(handleCos); tan=new JButton(tan); handleTan=new HandleTan(list,resultShow, showComputerProcess,saveComputerProcess); tan.addActionListener(handleTan); log=new JButton(log); handleLog=new HandleLog(list,resultShow, showComputerProcess,saveComputerProcess); log.addActionListener(handleLog); off=new JButton(off); handleOff=new HandleOff(list,resultShow,showComputerProcess); off.addActionListener(handleOff); exp=new JButton(exp); handleExp=new HandleExp(list,resultShow, showComputerProcess,saveComputerProcess); exp.addActionListener(handleExp); 退格操作=new JButton(退格); handleBack=new HandleBack(list,resultShow,showComputerProcess); 退格操作.addActionListener(handleBack); 清零操作=new JButton(C); handleClear=new HandleClear(list,resultShow,showComputerProcess); 清零操作.addActionListener(handleClear); 清零操作.setForeground(Color.red); 退格操作.setForeground(Color.red); 等号操作.setForeground(Color.red); sin.setForeground(Color.blue); cos.setForeground(Color.blue); tan.setForeground(Color.blue); log.setForeground(Color.blue); exp.setForeground(Color.blue); 正负号操作.setForeground(Color.blue); 小数点操作.setForeground(Color.blue); panelLeft=new JPanel(); panelRight=new JPanel(); panelLeft.setLayout(new BorderLayout(); JPanel centerInLeft=new JPanel(); panelLeft.add(resultShow,BorderLayout.NORTH); panelLeft.add(centerInLeft,BorderLayout.CENTER); centerInLeft.setLayout(new GridLayout(5,5); centerInLeft.add(numberButton1); centerInLeft.add(numberButton2); centerInLeft.add(numberButton3); centerInLeft.add(operationButton0); centerInLeft.add(off); centerInLeft.add(numberButton4); centerInLeft.add(numberButton5); centerInLeft.add(numberButton6); centerInLeft.add(operationButton1); centerInLeft.add(退格操作); centerInLeft.add(numberButton7); centerInLeft.add(numberButton8); centerInLeft.add(numberButton9); centerInLeft.add(operationButton2); centerInLeft.add(清零操作); centerInLeft.add(numberButton0); centerInLeft.add(小数点操作); centerInLeft.add(正负号操作); centerInLeft.add(operationButton3); centerInLeft.add(等号操作); centerInLeft.add(sin); centerInLeft.add(cos); centerInLeft.add(tan); centerInLeft.add(log); centerInLeft.add(exp); panelRight.setLayout(new BorderLayout(); panelRight.add(showComputerProcess,BorderLayout.NO
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!