《程序语言综合课程设计》实验报告.docx
《《程序语言综合课程设计》实验报告.docx》由会员分享,可在线阅读,更多相关《《程序语言综合课程设计》实验报告.docx(47页珍藏版)》请在冰点文库上搜索。
《程序语言综合课程设计》实验报告
《程序语言综合课程设计》
设计报告
学 院:
信息工程学院
专业班级:
计算机112班
学 号:
姓 名:
指导老师:
完成时间:
2013.7.6
题目一 计算器……………………1
1 题目简介1
2 设计的内容、要求和目标1
3 总体设计1
4 详细设计及实现2
4.1 操作界面设计3
4.2 类成员变量及方法设计4
4.3 源代码分析7
5 系统运行及使用说明13
题目二 学生信息管理系统15
1 题目简介15
2 设计的内容、要求和目标15
3 总体设计16
3.1功能模块划分15
3.2功能模块层次及划分16
3.3相关类文件16
4数据库设计18
4.1数据库表设计18
4.2数据库表间的关系19
4.3数据库的MySQL(SQL)实现19
5 详细设计及实现20
5.1 操作界面设计20
5.2类成员变量及方法设计20
5.4 源代码分析21
6 系统运行及使用说明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默认可变树节点类声明如下:
DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("帮助");
DefaultMutableTreeNodet1=newDefaultMutableTreeNode("帮助信息”);
DefaultMutableTreeNodet1_1=newDefaultMutableTreeNode("说明");
DefaultMutableTreeNodet2=newDefaultMutableTreeNode("简介");
5、功能模块图见图1.1
图1.1功能模块图
4详细设计及实现
4.1操作界面设计
1、首先是设计一个大小为(100,50,528,258)的窗口,界面布局应用了borderlayout布局。
将六个面板组合好添加到窗体里面。
其中将文本框放置在窗体的上部,显示按钮的值。
窗体的西部放置了计算器的功能按钮,将数字键安置在窗体的中间,而东部则是放置了显示运算过程面板和功能按钮。
并设置saveButton=newJButton("保存");
copyButton=newJButton("复制");
clearButton=newJButton("清除");三个按钮。
主界面:
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、各个类名:
HandleDigithandleDigit;//负责处理ActionEvent事件
HandleOperationhandleOperation;实现加、减、乘、除运算
HandleBackhandleBack;实现退格事件
HandleClearhandleClear;实现清零事件
HandleEqualityhandleEquality;实现等号事件
HandleDothandleDot;实现小数点事件
HandlePOrNhandlePOrN;实现正负号事件
HandleSinhandleSin;实现sin按钮事件
HandleConhandleCos;实现cos按钮事件
HandleTanhandleTan;实现Tan按钮事件
HandleLoghandleLog实现log按钮事件
;
HandleExphandleExp;实现exp操作
HandleOffhandleOff;关闭
系统流程图
图1.3系统流程图
4.3源代码分析
1、主要功能实现涉及的类及方法:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.*;
importjava.util.LinkedList;
importjava.io.*;
importjava.lang.Object;
publicclassCalculatorWindowextendsJFrameimplementsActionListener{
NumberButtonnumberButton[];
OperationButtonoperationButton[];
JButton小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,cos,tan,log,exp,off;
JMenuBarbar;
JMenuhelp,view;
JMenuItemabout,exit,information;
JTextFieldresultShow;//显示计算结果
JTextFieldshowComputerProcess;//显示当前计算过程
JTextAreasaveComputerProcess;//显示计算步骤
JButtonsaveButton,copyButton,clearButton;
LinkedListlist;//链表用来存放第一个运算数、运算符号和第二个运算数
HandleDigithandleDigit;//负责处理ActionEvent事件
HandleOperationhandleOperation;
HandleBackhandleBack;
HandleClearhandleClear;
HandleEqualityhandleEquality;
HandleDothandleDot;
HandlePOrNhandlePOrN;
HandleSinhandleSin;
HandleCoshandleCos;
HandleTanhandleTan;
HandleLoghandleLog;
HandleExphandleExp;
HandleOffhandleOff;
publicCalculatorWindow(){
在主类中定义各个组件、方法。
主类中通过调用各个方法进行运算:
2、HandleCos方法:
实现cos键运算功能:
importjava.util.LinkedList;
importjavax.swing.*;
importjava.awt.event.*;
publicclassHandleCosimplementsActionListener{
LinkedListlist;
JTextFieldresultShow,showComputerProcess;
JTextAreasaveComputerProcess;
HandleCos(LinkedListlist,JTextFieldt1,JTextFieldt2,
JTextAreat3){
this.list=list;
resultShow=t1;
showComputerProcess=t2;
saveComputerProcess=t3;
}
publicvoidactionPerformed(ActionEvente){
if(list.size()==1||list.size()==2){
StringnumOne=list.getFirst();
try{doublex=Double.parseDouble(numOne);
doubleresult=Math.cos(x);
Stringstr=String.valueOf(result);
list.set(0,str);
resultShow.setText(str);
Stringproccess="sin("+numOne+")="+result;
showComputerProcess.setText(proccess);
saveComputerProcess.append(""+proccess+"\n");
if(list.size()==2)
list.removeLast();//移掉运算符号
}
catch(Exceptionee){}
}
elseif(list.size()==3){
StringnumTwo=list.getLast();
try{doublex=Double.parseDouble(numTwo);
doubleresult=Math.cos(x);
Stringstr=String.valueOf(result);
list.set(0,str);
resultShow.setText(str);
Stringproccess="cos("+numTwo+")="+result;
showComputerProcess.setText(proccess);
saveComputerProcess.append(""+proccess+"\n");
list.removeLast();//移掉第2个运算数
list.removeLast();//移掉运算符号
}
catch(Exceptionee){}
}
}
}
3、help类:
实现帮助文档:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjavax.swing.tree.*;
importjava.io.*;
publicclassHelpimplementsTreeSelectionListener{
JEditorPaneeditorPane;
publicHelp(){
JFramehelp=newJFrame("计算器");
ContainercontentPane=help.getContentPane();
DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("帮助");
DefaultMutableTreeNodet1=newDefaultMutableTreeNode("帮助信息");
DefaultMutableTreeNodet1_1=newDefaultMutableTreeNode("说明");
DefaultMutableTreeNodet2=newDefaultMutableTreeNode("简介");
root.add(t1);
root.add(t2);
t1.add(t1_1);
JTreetree=newJTree(root);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addTreeSelectionListener(this);
JScrollPanescrollPane1=newJScrollPane(tree);
editorPane=newJEditorPane();
JScrollPanescrollPane2=newJScrollPane(editorPane);
JSplitPanesplitPane=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,scrollPane1,scrollPane2);
contentPane.add(splitPane);
help.pack();
help.setBounds(100,50,600,400);
help.setVisible(true);
}
publicvoidvalueChanged(TreeSelectionEvente){
JTreetree=(JTree)e.getSource();
DefaultMutableTreeNodeselectionNode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
StringnodeName=selectionNode.toString();
if(selectionNode.isLeaf()){
Stringfilepath="file:
"+System.getProperty("user.dir")+System.getProperty("file.separator")+nodeName+".txt";
try{
editorPane.setPage(filepath);
}catch(IOExceptionex){
System.out.println("找不到此文件");
}
}
elseeditorPane.setText(null);
}
}
4、HandleDot类:
实现小数点事件:
importjava.util.LinkedList;
importjavax.swing.*;
importjava.awt.event.*;
publicclassHandleDotimplementsActionListener{
LinkedListlist;
JTextFieldresultShow,showComputerProcess;
HandleDot(LinkedListlist,JTextFieldt1,JTextFieldt2){
this.list=list;
resultShow=t1;
showComputerProcess=t2;
}
publicvoidactionPerformed(ActionEvente){
Stringdot=e.getActionCommand();
if(list.size()==1){
Stringnum=list.getFirst();
Strings=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));
}
elseif(list.size()==3){
Stringnum=list.getLast();
Strings=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、使用说明:
您可以使用计算器进行如加、减、乘、除这样简单的运算。
计算器还提供了编程计算器、科学型计算器和统计信息计算器的高级功能。
可以单击计算器按钮来执行计算,或者使用键盘键入进行计算。
通过按NumLock,您还可以使用数字键盘键入数字和运算符。
题目二 学生管理系统
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、使用MicrosoftOfficeAccess新建一数据库student,设计6个字段Sno、Sname、Ssex、Sspec、Sgrade、Sborn。
2、在字段下面添加数据:
4.2数据表之间关系
主体
内容
Sno
学生学号
Sname
学生姓名
Ssex
性别
Sspec
专业
Sgrade
学生年级
Sborn
学生出生
4.3数据库的MySQL(SQL)实现
1、这里用的是SQL2000数据库,数据库名称为:
stu
2、连接数据库:
创建数据源:
5详细设计及实现
5.1操作界面设计
程序首先运行时弹出登陆界面,在登陆界面中提供菜单选项
在菜单选项中添加基本信息录入;基本信息修改;基本信息查询;基本信息删除;欢迎界面。
点击分别弹出录入、修改、查询、删除功能框。
登录界面大小为(600*580),定义一个面板p将背景图片。
阐述软件的运行及用户操作的界面方案,包括窗口大小、控件布局、文字颜色、字体及操作逻辑等。
。
。
。
。
。
5.2类成员及方法设计
1、ManagerWindow.Java
ManagerWindow类继承了Frame类之间组合关系
成员变量:
1.JTextFieldmz单行文本对象,用于输入学