java课程设计.docx
《java课程设计.docx》由会员分享,可在线阅读,更多相关《java课程设计.docx(43页珍藏版)》请在冰豆网上搜索。
java课程设计
目录
一、概要设计2
二、程序整体设计说明2
2.1数据库概念结构设计2
2.2数据库逻辑结构设计4
2.3数据库结构的实现5
2.4程序中所用类说明8
2.5异常处理说明10
2.6程序尚还存在的问题10
三、程序部分代码及注释11
3.1Application1.java11
3.2AppFrame.java12
3.3LogFrame.java23
四、测试结果26
五、设计心得27
六、致谢28
七、参考文献28
【摘要】该程序是一个数据库应用系统的个人事务管理系统,个人的部分信息已保存在了数据库中。
数据库部分设计到了MySQL的应用,界面部分采用了awt包。
程序中实现了个人重要事务的查询、提醒,重要人际关系的存储、查询,本月的收入、支出情况,现今的资金的持有情况等等。
【关键字】个人事务管理系统
一、概要设计
个人事务管理系统是:
MySQL数据库、图形界面等技术的综合应用。
MySQL数据库部分的实现:
首先要搭建JDBC开发环境(该程序用的是MySQL),以下为简要操作步骤:
(1)要利用JDBC访问数据库,必须首先在机器上安装一个数据库系统,并将数据库的JDBC驱动程序添加到JavaEE应用服务器的Java编译路径之中。
(2)安装MySQL客户端:
NavicatforMySQL或MySQL-Front。
(3)安装MySQL的JDBC驱动程序:
。
(4)在Eclipse中建立类路径。
图形界面的实现:
考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在Java事件中,多次用到了鼠标事件和菜单事件。
在设计类的时候,考虑到了简单明了,就用了三个类,一个实现与菜单相关的信息的类,另一个则是与登录界面相关的类,该类继承了第一个类,此外,还有一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,而在其他两个类中实现了为各个组件注册事件监听的程序。
主类完成了对对象的实例化及显示。
这样的设计优点是:
条理清晰,容易理解,容易修改。
这样设计的缺点是:
不利于共享类中的方法。
二、程序整体设计说明
2.1数据库概念结构设计
该系统采用了E-R图的方法来进行数据库的设计。
相关的E-R图描述如下。
图1为日程安排实体E-R图,图2为个人关系对象的E-R图,图3为实体之间关系的E-R图,图4为资金收入实体E-R图。
图1日程事务对象实体E-R图
图2个人关系对象实体E-R图
图3实体之间关系E-R图
图4资金收入实体E-R图
2.2数据库逻辑结构设计
该系统采用是的MySQL数据库管理系统完成的,我采用的是将实体转化为关系表。
相关的表格如下图所示。
表1为日常事务基本信息表schedule。
表1日常事务基本信息表schedule
列名
数据类型
字长
可否为空
说明
T_NO
char
6
NOTNULL
序号(主键)
T_NAME
varchar
50
NOTNULL
日程标题
T_DATA
date
4
NOTNULL
日期
T_TIME
varchar
10
NOTNULL
日程时间
T_LB
varchar
50
NOTNULL
类别
T_WHERE
varchar
50
NOTNULL
日程地点
T_NR
varchar
800
NOTNULL
具体内容
T_BZ
varchar
50
NOTNULL
备注
T_NR
bit
1
NOTNULL
是否取消
表2为个人关系基本信息表customer。
表2个人关系基本信息表
列名
数据类型
字长
可否为空
说明
C_NAME
varchar
50
NOTNULL
姓名(主键)
C_LB
varchar
50
NOTNULL
类别
C_BIRTHDAY
varchar
50
NULL
生日
C_EMAIL
varchar
50
NULL
电子邮箱
C_HOME
varchar
50
NULL
家庭住址
C_CITY
varchar
50
NULL
城市
C_PROVINCE
varchar
50
NULL
省份
C_ZIP
varchar
6
NULL
邮政编码
C_NATION
varchar
50
NULL
国家或地区
C_HTEL
varchar
50
NULL
家庭电话
C_CTEL
varchar
50
NULL
公司电话
C_CALL
varchar
50
NULL
呼机号码
C_MOBILE
varchar
50
NULL
手机号码
C_FILE
varchar
300
NOTNULL
个人资料
C_BZ
varchar
50
NULL
备注
表3为个人收入表salary。
表3个人收入表salary
列名
数据类型
字长
可否为空
说明
I_XUHAO
char
6
NOTNULL
序号(主键)
I_DATE
date
4
NOTNULL
日期
I_COUNT
int
8
NOTNULL
金额
I_SHUOMING
varchar
100
NOTNULL
收入说明
I_BZ
varchar
50
NULL
备注
表4为个人支出表output。
表4个人支出表output
列名
数据类型
字长
可否为空
说明
O_XUHAO
char
6
NOTNULL
序号(主键)
O_DATE
date
4
NOTNULL
日期
O_COUNT
int
8
NOTNULL
金额
O_SHUOMING
varchar
100
NOTNULL
支出说明
O_BZ
varchar
50
NULL
备注
表5为个人资金持有表possess。
表5个人资金持有表possess
列名
数据类型
字长
可否为空
说明
P
int
8
NOTNULL
现有资金量
表6为个人资金月结表pmonth。
表6个人资金月结表pmonth
列名
数据类型
字长
可否为空
说明
M_LAST
int
8
NOTNULL
上月结存
M_OUT
int
8
NOTNULL
本月支出
M_IN
int
8
NOTNULL
本月收入
M_NOW
int
8
NOTNULL
本月结存
M_MONTH
date
4
NOTNULL
结存月份(主键)
M-BZ
varchar
50
NULL
备注
表7为系统权限维护表sys_safe。
表7系统权限维护表sys_safe
列名
数据类型
字长
可否为空
说明
NAME
varchar
10
NOTNULL
用户名(主键)
PASSWORD
varchar
10
NOTNULL
密码
SHUOMING
varchar
50
NULL
说明
2.3数据库结构的实现
1.创建日常事务基本信息表schedule
下面是创建日常事务基本信息表schedule的程序代码。
createtableschedule(
T_NOchar(6)NOTNULL,
T_NAMEvarchar(50)NOTNULL,
T-DATAdateNOTNULL,
T_TIMEvarchar(10)NOTNULL,
T_LBvarchar(50)NOTNULL,
T_WHEREvarchar(50)NOTNULL,
T_NRvarchar(800)NOTNULL,
T_BZvarchar(50)NOTNULL,
T_ORbitNOTNULLNOTNULL,
primarykey(T_NO));
建好后的日常事务基本信息表schedule,如下图
2.创建个人关系基本信息表customer
下面是创建个人关系基本信息表customer的程序代码。
createtablecustomer(
C_NAMEvarchar(50)NOTNULL,
C_LBvarchar(50)NOTNULL,
C_BIRTHDAYvarchar(50)NOTNULL,
C_EMAILvarchar(50)NOTNULL,
C_HOMEvarchar(50)NOTNULL,
C_CITYvarchar(50)NOTNULL,
C_PROVIENCEvarchar(50)NOTNULL,
C_ZIPvarchar(6)NOTNULL,
C_NATIONvarchar(50)NOTNULL,
C_HTELvarchar(50)NOTNULL,
C_CTELvarchar(50)NOTNULL,
C_CALLvarchar(50)NOTNULL,
C_MOBILEvarchar(50)NOTNULL,
C_FILEvarchar(300)NOTNULL,
C_BZvarchar(50)NOTNULL,
primarykey(C_NAME));
建好后的个人关系基本信息表customer,如下图
3.创建个人收入表salary
下面是创建个人收入表salary的程序代码。
createtablesalary(
I_XUHAOchar(6)NOTNULL,
I_DATEdateNOTNULL,
I_COUNTintNOTNULL,
I_SHUOMINGvarchar(100)NOTNULL,
I_BZvarchar(50)NOTNULL,
primarykey(I_XUHAO));
建好后的个人收入表salary,如下图
4.创建个人支出表output
下面是创建个人支出表output的程序代码。
createtableoutput(
O_XUHAOchar(6)NOTNULL,
O_DATEdateNOTNULL,
O_COUNTintNOTNULL,
O_SHUOMINGvarchar(100)NOTNULL,
O_BZvarchar(50)NOTNULL,
primarykey(O_XUHAO));
建好后的个人支出表output,如下图
5.创建个人资金持有表possess
下面是创建个人资金持有表possess的程序代码。
createtablepossess(
PintNOTNULL
);
建好后的个人资金持有表possess,如下图
6.创建个人资金月结表pmonth
下面是创建个人资金月结表pmonth的程序代码。
createtablepmonth(
M_LASTintNOTNULL,
M_OUTintNOTNULL,
M_INintNOTNULL,
M_NOWintNOTNULL,
M_MONTHdateNOTNULL,
M_BZvarchar(50)NOTNULL,
primarykey(M_MONTH));
建好后的个人资金月结表pmonth,如下图
7.创建系统权限维护表sys_safe
下面是创建系统权限维护表sys_safe的程序代码。
createtablesys_safe(
NAMEvarchar(10)NOTNULL,
PASSWORDvarchar(10)NOTNULL,
SHUOMINGvarchar(50)NOTNULL,
primarykey(NAME));
建好后的系统权限维护表sys_safe,如下图
2.4程序中所用类说明
用户自定义类
(1)类名:
AppFrame
作用:
生成菜单
继承:
JFrame
主要成员变量:
privateJPanelcontentPane;
privateJMenuBarjMenuBar1=newJMenuBar();
privateJMenujMenu1=newJMenu();
privateJMenujMenu2=newJMenu();
privateJMenuItemjMenuItem1=newJMenuItem();
privateJMenujMenu3=newJMenu();
privateJMenujMenu4=newJMenu();
privateJMenujMenu5=newJMenu();
privateJMenujMenu6=newJMenu();
privateJMenujMenu7=newJMenu();
privateJMenuItemjMenuItem2=newJMenuItem();
privateJMenuItemjMenuItem3=newJMenuItem();
privateJMenuItemjMenuItem4=newJMenuItem();
privateJMenuItemjMenuItem5=newJMenuItem();
privateJMenuItemjMenuItem6=newJMenuItem();
privateJMenuItemjMenuItem7=newJMenuItem();
privateJMenuItemjMenuItem8=newJMenuItem();
privateJMenuItemjMenuItem9=newJMenuItem();
privateJMenuItemjMenuItem10=newJMenuItem();
privateJMenuItemjMenuItem11=newJMenuItem();
privateJMenuItemjMenuItem12=newJMenuItem();
privateJMenuItemjMenuItem13=newJMenuItem();
privateJMenuItemjMenuItem14=newJMenuItem();
privateJMenuItemjMenuItem15=newJMenuItem();
主要成员方法:
publicAppFrame(){}
privatevoidjbInit()throwsException{}
protectedvoidprocessWindowEvent(WindowEvente){}
voidjMenuItem6_actionPerformed(ActionEvente){}//鼠标事件,监听
voidjMenuItem1_actionPerformed(ActionEvente){}
voidjMenuItem7_actionPerformed(ActionEvente){}
voidjMenuItem8_actionPerformed(ActionEvente){}
voidjMenuItem9_actionPerformed(ActionEvente){}
voidjMenuItem10_actionPerformed(ActionEvente){}
voidjMenuItem3_actionPerformed(ActionEvente){}
voidjMenuItem4_actionPerformed(ActionEvente){}
voidjMenuItem5_actionPerformed(ActionEvente){}
voidjMenuItem11_actionPerformed(ActionEvente){}
voidjMenuItem12_actionPerformed(ActionEvente){}
voidjMenuItem2_actionPerformed(ActionEvente){}
voidjMenuItem15_actionPerformed(ActionEvente){}
(2)类名:
LogFrame
作用:
生成登录界面
继承:
JFrame
主要成员变量:
privatestaticfinallongserialVersionUID=1L;
privateJLabeljLabel_name=newJLabel();
privateJLabeljLabel_password=newJLabel();
privateJTextFieldjTextField_name=newJTextField();
privateJLabeljLabel1=newJLabel();
privateJTextFieldjPasswordField=newJTextField();
privateJButtonjButton1=newJButton();
privateJButtonjButton2=newJButton();
protectedStringuser,password,password_from;
AppFrameframe;
privateJPanelmainPanel=newJPanel();
privateJPanelpanel=newJPanel();
主要成员方法:
publicLogFrame(AppFrameframe1){}
privatevoidjbInit()throwsException{}
voidjButton2_actionPerformed(ActionEvente){}
voidjTextField_name_focusLost(FocusEvente){}
voidjPasswordField_focusLost(FocusEvente){}
voidjButton1_actionPerformed(ActionEvente){}
(3)类名:
Application1
作用:
实例化对象
主要成员变量:
privatebooleanpackFrame1=false;
privatebooleanpackFrame=false;
主要成员方法:
publicApplication1(){}//实例化
2.5异常处理说明
数据库连接的异常
需要处理的异常:
Exception
处理方法:
捕获异常后,显示捕获的异常
2.6程序尚还存在的问题
我花费了近两个星期的时间,查阅了许多相关的资料,终于把这个个人事务管理系统做好了,程序基本实现了该课程设计的基本要求。
但由于自己水平有限,使得程序还有不是很完善,我会继续接着进行的。
三、程序部分代码及注释
3.1Application1.java
建立一个名为Application1的Application,并在该Application中添加一个类AppFrame,其父类为Jframe(在Application1.java文件中)。
实现代码如下:
packageapp;
importjavax.swing.UIManager;
importjava.awt.*;
/**
*Title:
个人事务管理系统
*Description:
用于个人管理
*@authorMengyaPeng
*/
publicclassApplication1{
privatebooleanpackFrame1=false;
privatebooleanpackFrame=false;
//构建啊application
publicApplication1(){
AppFrameframe=newAppFrame();
LogFrameframe1=newLogFrame(frame);
frame1.setSize(400,300);
if(packFrame1){
frame1.pack();
}
else{
frame1.validate();
}
DimensionscreenSize1=Toolkit.getDefaultToolkit().getScreenSize();
DimensionframeSize1=frame1.getSize();
if(frameSize1.height>screenSize1.height){
frameSize1.height=screenSize1.height;
}
if(frameSize1.width>screenSize1.width){
frameSize1.width=screenSize1.width;
}
frame1.setLocation((screenSize1.width-frameSize1.width)/2,(screenSize1.height-frameSize1.height)/2);
frame1.setVisible(true);
//Validateframesthathavepresetsizes
//Packframesthathaveusefulpreferredsizeinfo,e.g.fromtheirlayout
if(packFrame){
frame.pack();
}
else{
frame.validate();
}
//将主window置在中心
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
DimensionframeSize=frame.getSize();
if(frameSize.height>screenSize.height){
frameSize.height=screenSize.height;