数据库原理及应用12.docx
- 文档编号:10665765
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:38
- 大小:580.97KB
数据库原理及应用12.docx
《数据库原理及应用12.docx》由会员分享,可在线阅读,更多相关《数据库原理及应用12.docx(38页珍藏版)》请在冰豆网上搜索。
数据库原理及应用12
《数据库原理及应用》课程设计报告
题目家庭记账管理系统
学生姓名
学号
专业班级网络
设计日期2014年6月25日
指导老师评阅意见:
评阅成绩:
签名:
一、课题任务
课题目的:
家庭记账也是一门科学,必须按照科学的方式来进行,才能有效果。
家庭记账的原理与企业记账类似,有两个基本要素,一是分账户,要有账户的概念,分账户可以是按成员、按银行、按现金等,不能把所有收支统计在一起,要分账户来记。
二是分类目,收支必须分类,分类必须科学合理,精确简洁,类目相当于会计中的科目。
由此可见,家庭记账也需要系统性的管理。
家庭记账数据库管理系统是为了让用户更简便的进行日常及记账。
课题意义:
1、在进行前台设计时,我们运用的是本学期所学的Java语言,Java语言是一门很灵活也很方便的语言,尽管老师平时在课堂上传授了很多Java语言的基础知识,但,要掌握一门语言,课堂上的输入远远不够,因此,通过此次课程设计,可以加深对java的运用能力。
2、数据库是一门很有学问的计算机基础学科,他对于我们以后在计算机方面的发展有着承前启后的作用,我们都知道,大学的学习更多的是实际操作。
虽然数据库是门理论性很强的学科。
但,只有将所学的东西运用于实践,用自己所学的知识制作出用户有用的产品才是最能激励自己的。
也只有在事件中才能补充自己知识的缺陷,此次课程设计就是让我们更熟悉设计数据库的过程并更灵活的运用起来。
3、家庭记账是每个用户都要做的是,一个方便的高效可靠的记账系统可以让用户们的记账更简便。
课题要求:
本系统要求对家庭的收入情况,教育支出情况,非教育支出情况进行系统的分析设计,并形成系统的说明书同时用Eclipse来实现该系统。
目的是通过系统分析,使各个家庭对自己的家庭财务有一个全面的了解和分析,以便能做到节约开支,细水长流,同时进行必要的投资。
4、可行性分析:
可行性研究的目的是用最小的代价在尽可能短的时间内解决问题。
经济可行性:
计算机的价格已经非常低廉,性能却有了长足的进步。
二本系统的开发,为家庭的工作效率带来了一个本质的飞跃为此主要表现在以下几个方面:
第一,本系统的运行可以代替人工进行许多繁杂的劳动;第二,本系统的运行可以节省许多资源;第三,本系统的运行可以大大提高家庭的工作效率,等等。
所以本系统在经济上是可行的。
技术可行性和运行可行性:
为了有助于更好的系统的开发,我自己对社会普通家庭的收入情况有了初步的了解。
现在普通家庭的固定收入在几千元左右,每月在各个方面至少要1000元左右的开销,加上固定的各项费用,方方面面很复杂,很难清楚明了的记录下来,一般是手工记账,这样很麻烦也算不清楚,每个月都要花大量的时间在算钱上,而由于一些比较缺乏电脑方面的知识,所以,电脑对他们来说只是一个摆设但只要安装家庭理财系统,他们将只要点击鼠标就可以对家庭的收支情况进行系统和计算。
本系统开发利用SQLServer2005作为本系统的数据库,他是一个支持多用户的新型数据库,适用于各种大中小规模的数据需求。
使用Eclipse作为被系统开发环境,Eclipse拥有一个可视化的集成开发环境,采用面向对象的编程语言Java的开发结构框架。
Eclipse提供了500多个可使用构件,利用这些部件,开发人员可以快速的构造出应用系统。
开发人员也可以根据自己需要修改部件或用本身编写的部件。
他作为一种现代化的编程语言,提供完善的指令控制语句、类与对象的支持及丰富数据类型给开发高兴能提供了保障。
综上所述,本系统的设计与开发在技术和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
本系统为一个小型的家庭理财系统,所耗费的资源非常小,学校的电脑无论是在硬件和软件都能满足条件,因此,本系统在运行上是可行的。
子课题任务名称:
Java语言支持的界面设计,数据库的建立,数据库与Java的连接。
二、需求分析(含业务流程图,数据流程图,E-R图等)
业务流程图
E-R图
收入支出总查询
教育支出
非教育支出
数据流图
三、概要设计(模块划分等)
系统功能模块
本系统分为五大功能模块:
收入登记,非教育支出登记,教育支出登记,支出总查询,退出系统
收入登记功能:
点击收入登记可进入收入登记界面,再根据需要点击添加记录或删除记录功能键进行添加或删除。
最后点击刷新,即可看到操作之后的界面。
最后点击退出,即完成了收入登记操作。
非教育支出登记功能:
点击非教育支出登记可进入非教育支出登记界面,再根据需要点击添加记录或删除记录点击添加或删除。
最后点击刷新,即可看到操作后的界面。
最后点击退出,即完成了非教育登记操作。
教育登记操作:
点击教育支出登记可进入教育支出登记界面,再根据需要点击添加记录或删除记录点击添加或删除。
最后点击刷新,即可看到操作后的界面。
最后点击退出,即完成了教育登记操作。
支出总查询:
点击支出总查询,则可看到支出总查询界面,从上面可看到近期的支出情况,在右下角会有一个余额的显示。
如果需要删除则可点击删除界面。
操作完毕点击退出。
退出系统:
上述操作都完成则可点击退出系统键退出系统。
四、详细设计
1、数据库的设计
底层数据表的结构如图一:
图一.数据表的结构
数据表的截图如图二:
图二.数据表
数据库与java连接的代码如下:
packagecom.wenlixueyuan;
importjava.sql.*;
publicclassDatabase{
Connectionconn=null;
ResultSetrs=null;
Statementstmt=null;
PreparedStatementpstmt=null;
publicRecordItem[]AccessData()throwsException{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:
odbc:
FA";
conn=DriverManager.getConnection(url,"root","admin");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
StringSQL="select*frompf";
rs=stmt.executeQuery(SQL);
RecordItem[]item=newRecordItem[100];
for(intj=0;j<100;j++)
item[j]=newRecordItem();
inti=0;
while(rs.next()&&(i<100)){
item[i].SetEmployeeID(rs.getString("经手人"));
item[i].SetEmployeeName(rs.getString("日期"));
item[i].SetOnWorkTime(rs.getString("收入"));
item[i].SetOffWorkTime(rs.getString("非教育支出"));
item[i].SetLeaveWorkTime(rs.getString("教育支出"));
item[i].SetDescribe(rs.getString("备注"));
i++;
}
RecordItem[]result=newRecordItem[i];
for(intj=0;j
result[j]=newRecordItem();
result[j]=item[j];
}
rs.close();
stmt.close();
conn.close();
returnresult;
}
publicvoidStoreData(RecordItemitem)throwsException{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:
odbc:
FA";
conn=DriverManager.getConnection(url,"root","admin");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
StringSQL1="select*frompfwhere经手人='"+
item.GetEmployeeID()+"'";
rs=stmt.executeQuery(SQL1);//查找是否存在该员工的记录
System.out.println(rs.next());
pstmt=conn.prepareStatement("insertintopfvalues(?
?
?
?
?
?
)");
pstmt.setString(1,item.GetEmployeeID());
pstmt.setString(2,item.GetEmployeeName());
pstmt.setString(3,item.GetOnWorkTime());
pstmt.setString(4,item.GetOffWorkTime());
pstmt.setString(5,item.GetLeaveWorkTime());
pstmt.setString(6,item.GetDescribe());
pstmt.execute();
}
rs.close();
stmt.close();
pstmt.close();
conn.close();
}//删除相应工号的员工记录
publicvoidDeleteData(StringstrEmployeeID)throwsException{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:
odbc:
FA";
conn=DriverManager.getConnection(url,"root","admin");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
StringSQL="deletefrompfwhere经手人='"+strEmployeeID+"'";
stmt.execute(SQL);//查找是否存在该员工的记录
}
}
3.前台的设计
关于前台的设计我们采用的是java语言当中的application小窗口图形界面的一个输入和输出,具体的设计见调试分析。
五.调试分析
1.主页面
图三.主页面
主页面的设计代码如下:
packagecom.wenlixueyuan;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.WindowConstants;
importjavax.swing.SwingUtilities;
publicclassNewJFrameextendsjavax.swing.JFrame{
privatestaticfinallongserialVersionUID=1L;
privateJButtonjOnWorkButton;
privateJButtonjExitButton;
privateJButtonjStaticButton;
privateJButtonjLeaveWorkButton;
privateJButtonjOffWorkButton;
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(newRunnable(){
publicvoidrun(){
NewJFrameinst=newNewJFrame();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
publicNewJFrame(){
super();
initGUI();
}
privatevoidinitGUI(){
try{
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
{
jOnWorkButton=newJButton("收入登记");
getContentPane().add(jOnWorkButton);
jOnWorkButton.setBounds(75,28,262,24);
jOnWorkButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jOnWorkButtonActionPerformed(evt);
}
});
}
{
jOffWorkButton=newJButton("非教育支出登记");
getContentPane().add(jOffWorkButton);
jOffWorkButton.setBounds(75,71,262,24);
jOffWorkButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jOffWorkButtonActionPerformed(evt);
}
});
}
{
jLeaveWorkButton=newJButton("教育支出登记");
getContentPane().add(jLeaveWorkButton);
jLeaveWorkButton.setBounds(75,111,262,24);
jLeaveWorkButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jLeaveWorkButtonActionPerformed(evt);
}
});
}
{
jStaticButton=newJButton();
getContentPane().add(jStaticButton);
jStaticButton.setText("\u7edf\u8ba1\u60c5\u51b5");
//jOffWorkButton.setText("");
jStaticButton.setBounds(75,153,262,24);
jStaticButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jStaticButtonActionPerformed(evt);
}
});
}
{
jExitButton=newJButton();
getContentPane().add(jExitButton);
jExitButton.setText("\u9000\u51fa\u7cfb\u7edf");
jExitButton.setBounds(75,195,262,24);
jExitButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jExitButtonActionPerformed(evt);
}
});
}
pack();
setSize(400,300);
}catch(Exceptione){
e.printStackTrace();
}
}
privatevoidjStaticButtonActionPerformed(ActionEventevt){
System.out.println("jStaticButton.actionPerformed,event="+evt);
StaticPanelstatistics=newStaticPanel();
statistics.setVisible(true);
}
privatevoidjOnWorkButtonActionPerformed(ActionEventevt){
System.out.println("jOnWorkButton.actionPerformed,event="+evt);
OnWorkPanelonwork=newOnWorkPanel();
onwork.setVisible(true);
}
privatevoidjOffWorkButtonActionPerformed(ActionEventevt){
System.out.println("jOffWorkButton.actionPerformed,event="+evt);
OffWorkPaneloffwork=newOffWorkPanel();
offwork.setVisible(true);
}
privatevoidjLeaveWorkButtonActionPerformed(ActionEventevt){
System.out.println("jLeaveWorkButton.actionPerformed,event="+evt);
LeaveWorkPanelleavework=newLeaveWorkPanel();
leavework.setVisible(true);
}
privatevoidjExitButtonActionPerformed(ActionEventevt){
System.out.println("jExitButton.actionPerformed,event="+evt);
System.exit(0);
}
}
4.教育支出登记页面
图六.教育支出登记页面
教育支出的部分设计代码如下:
packagecom.wenlixueyuan;
importjavax.swing.*;
importjavax.swing.table.*;
publicclassLeaveWorkPanelextendsTablePanel{
privatestaticfinallongserialVersionUID=1L;
String[]arrField={"经手人","日期","教育支出","备注"};
publicLeaveWorkPanel(){
tableModel=newDefaultTableModel(arrData,arrField);
jRecordTable=newJTable(tableModel);
jTableScrollPane.getViewport().add(jRecordTable,null);
UpdateRecord();//更新表格
this.setTitle("教育支出登记页面");
}
publicvoidAddRecord(){
LeaveWorkRecordPanerecordPane=newLeaveWorkRecordPane();
recordPane.setSize(630,300);
recordPane.setLocation(230,100);
recordPane.setVisible(true);
recordPane.setResizable(false);
recordPane.validate();
UpdateRecord();//更新表格
}
publicvoidDelRecord(){
jTableScrollPane.getViewport().add(jRecordTable,null);
intRow=jRecordTable.getSelectedRow();
if(intRow==-1)
return;
try{
database.DeleteData(tableModel.getValueAt(intRow,0).toString());
}catch(Exceptione){
e.printStackTrace();
}
UpdateRecord();//更新表格
}
publicvoidUpdateRecord(){
Object[][]arrT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 12