项目管理数据库课程设计
目 录
1 绪论 . ............................................................. 1
1.1课题背景 . ............................................................................................................................ 1 1.2数据库连接技术介绍 . ........................................................................................................ 1
2 系统分析 . ......................................................... 2
2.1 用户操作流程 . ................................................................................................................... 2 2.2 用户需求 . ........................................................................................................................... 2
3 系统设计 . ......................................................... 3
3.1 设计思路 . ........................................................................................................................... 3 3.2 系统功能模块图 . ............................................................................................................... 3 3.3 模块功能设计 . ................................................................................................................... 4
4 系统数据库设计 . ................................................... 5
4.1 系统数据库的建立 . ........................................................................................................... 5 4.2 系统E-R 图 ....................................................................................................................... 5 4.3 数据表的创建 . ................................................................................................................... 6 4.4 触发器设计 . ....................................................................................................................... 7
5系统实现 .......................................................... 9
5.1 系统实现工具与支持平台 . ............................................................................................... 9 5.2 系统界面 . ........................................................................................................................... 9 5.3 系统主要功能实现 . ......................................................................................................... 11
5.3.1 前台 . ...................................................................................................................... 11 5.3.2 后台 . ...................................................................................................................... 12 5.4 系统核心代码 . ................................................................................................................. 12
5.4.1 主程序 . .................................................................................................................. 12
6总结 ............................................................. 21
6.1 收获与体会 . ..................................................................................................................... 21
参考文献 . .......................................................... 23 致 谢 . ............................................................ 24 课程设计检查表 . .................................... 错误!未定义书签。
1 绪论
1.1 课题背景
目前,信息系统在我国各高校中的地位越来越重要,越来越突出,随着IT 技术的进步和高等院校规模的逐步扩大,项目管理工作日益复杂,项目信息数据库也日益庞大,早期的人工管理方式已经不能适应高校发展的要求,于是项目管理系统应允而生,该系统旨在综合管理项目的信息,对软件项目的档案,成绩,专业,课程,以及开发人等基本情况综合管理,以达到高效,快速,迅捷,准确的掌握全方面信息,大大降低了人工管理的复杂度,其简单的操作界面和强大的数据库操作功能带给管理者和使用者很大的经济效益。本系统主要包含以下几个模块:用户登录模块、原始数据录入、基本档案模块、选修课程情况、成绩管理模块等。从而,实现对项目、使用者、课程信息等实现全面、动态、及时的管理和操作。
1.2 数据库连接技术介绍
本系统采用的是Visual Basic 6.0开发工具做为开发系统程序,使用ActiveX 数据对象(ADO)作为接口访问数据库,本系统的数据库的连接采用了广泛使用的ODBC 技术,实现和数据库的底层通信。ODBC 关键技术:第一,数据源的连接;第二,数据库表的连接;第三,数据库记录集操作;第四,数据库的关闭。一个完整的ODBC 由下列几个部件组成。
(1) 应用程序。执行处理并调用ODBC 函数,以提交PL/SQL语句并检索结果;
(2) ODBC 管理器。该程序位于Windows 控制面板的 32位ODBC 内,其主要任务是管理ODBC 驱动程序很数据源;
(3) 驱动程序管理器。是ODBC 中最重要的部件,加载并卸载驱动程序,实现ODBC 函数调用,或者把他们传送到驱动程序。驱动程序管理器包含在ODBC32.DLL 中,对用户是透明的; (4) ODBC API;
(5) ODBC 驱动程序。它是一些DLL ,提供了ODBC 和数据库之间的接口。它的任务是实现ODBC 函数调用后,向指定的数据源提交一个SQL 请求,并把结果返回给应用程序;
2 系统分析
2.1 用户操作流程
用户必须通过已经注册的帐号和密码才能进行对该系统的管理,否则在登录系统前要进行注册;超级管理员通过输入密码和帐号可以对数据库的数据进行各种操作,而普通用户仅仅可以进行一部分的操作;用户根据自己的实际情况选择相应的功能来提取自己所需信息。
2.2 用户需求
(1) 安全性: 用户必须通过帐号和密码才能进行对该系统的管理。 (2) 权限分配: 超级管理员通过输入密码和帐号可以对数据库的数据进行各
种操作,而普通用户仅仅可以进行一部分的操作。
(3) 易操作性: 可以快速进行查询操作,进行数据的汇总。
3 系统设计
3.1 设计思路
(1) 系统分成前台和后台相对独立的模块,前台用来构架系统的开发界面并完成功能设计,后台数据库服务器来完成数据库的管理工作;
(2) 采用模块化程序设计思想,整个系统采用模块化结构设计,作为应用程序有较强的可操作性和扩展性。
(3) 合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。
3.2 系统功能模块图
系统结构模块图如下所示:
图3.1 系统功能模块图
3.3 模块功能设计
本系统共包括10大模块,分别是用户登录模块,项目档案管理模块,项目组信息管理模块,项目进展管理模块,项目信息添加模块,个人统计模块模块,全局模块统计模块,单科情况统计模块。每个模块的功能如下:
① 用户登录模块:分为超级管理员和普通用户两种,默认为普通用户,在进入了主界面后,可以在菜单栏中输入管理员密码和帐号,从而切换至管理员身份。普通用户权限受限,可以进行部分操作(查询,统计),管理员可以对该系统进行任何操作。
② 项目信息管理:可以对项目档案(包括:项目号,姓名,性别,系别,政治面貌)进行查询,删除,修改操作。
③ 项目组信息管理:可以对项目组信息(包括:项目号,姓名,性别,家庭住址,身份证)进行查询,修改,删除操作。
④ 功能模块信息管理:可以对功能模块信息(包括:项目号,姓名,系别,课程号,课程名,教导人)进行查询,删除,修改操作。
⑤ 项目信息添加:可以对项目的整体情况进行添加操作(包括:项目号,姓名,性别,系别,政治面貌,课程号,身份证,家庭住址),当然这个操作是对于管理员来说的,普通用户无权进行该项操作。
⑥ 项目进展管理:可以对项目进展(包括:项目号,课程名,任课教师)进行查询,修改,添加,删除操作,其中修改,添加,删除操作必须是管理员身份,而查询操作任何人均可。
⑦ 项目文档管理:可以对项目文档(包括:项目号,姓名,系别,课程号,课程名,成绩)进行查询,修改,删除,更新,个人统计,全局统计,排序等操作。
⑧ 项目报错模块:可以对项目报错情况(包括:项目号,姓名,系别,课程号,课程名,成绩)进行统计,算平均成绩,最高成绩,不及格情况,及格情况,排序操作。
⑨ 项目总结统计:可以对项目总结情况(包括:项目号,姓名,系别,课程号,课程名,成绩)进行统计,按学号排序,最高成绩,最低成绩,不及格情况,及格情况,单科情况统计操作。
⑩ 单科情况统计:可以对全部项目某部分的情况进行统计算平均进度,最高完成数,及格人数不及格情况以及人数,最低完成数,排序操作。
4 系统数据库设计
4.1 系统数据库的建立
数据库的设计尽量的实现与应用程序做到最低等级的耦合,按照三层模式两级联系的方式设计数据库,把数据库设计成层次清晰的,高效的,实用数据库。
鉴于系统开发数据的信息量大,容易造成冗余和数据不一致性,因此采用了触发器来帮助完成工作,从而也很好的减少了代码编辑量,达到了程序与后台执行的分离,从而提高了工作效率,大大节省了时间。
4.2 系统E-R 图
项目管理系统数据库E-R 模型,如下图所示:
图4.1项目管理系统E-R 模型图
4.3 数据表的创建
由数据模型利用Oracle10g 进行数据库的详细设计,其基本表的设计如
下:
4.4 触发器设计
创建的触发器如下:
CREATE TRIGGER delete_proj //删除项目表时,实现数据一致性 AFTER DELETE ON proj FOR EACH ROW DECLARE sno CHAR(10) BEGIN
DELETE FROM sc WHERE sc.sno=:OLD.sno END delete_proj
CREATE TRIGGER update_proj //更新项目表时,实现数据一致性 AFTER UPDATE ON student FOR EACH ROW DECLARE sno CHAR(10) BEGIN UPDATE sc
SET sc.sname=:NEW.sname ,
sc.sdept=:NEW.sdept WHERE sc.sno=sno END update_student
CREATE TRIGGER insert_student //插入项目表时,实现数据一致性 AFTER INSERT ON student_all FOR EACH ROW DECLARE sno CHAR(10) BEGIN
INSERT INTO proj VALUES(:NEW.sno ,:NEW.sname,:NEW.sdept); INSERT INTO mianmao VALUES(:NEW.sno,:NEW.mianmao); END insert_proj
CREATE TRIGGER insert_ //插入选课信息时,实现数据一致性 AFTER INSERT ON xuanke FOR EACH ROW DECLARE sno CHAR(10) BEGIN
INSERT INTO sc VALUES(:NEW.sno ,:NEW.cno,:NEW.greade); END insert_xuanke
5 系统实现
5.1 系统实现工具与支持平台
(1)用户界面:
本系统采用Visual Basic 6.0设计,用户交互界面采用的是基于的窗口界
面。
(2)硬件接口:
运行本系统的硬件基本要求如下: CPU : Intel P3及以上; 内存:512MB 及以上; 硬盘:40GB 及以上。 (3)软件接口:
Visual Basic 6.0开发工具 数据库服务器:Oracle10g 。
5.2 系统界面
下面为运行后的界面图:
图5.1 系统登录界面
图5.2 项目管理信息界面
图5.3 工作记录管理界面
图5.4综合信息查询界面
5.3 系统主要功能实现
5.3.1 前台
① 用户登录模块:分为超级管理员和普通用户两种,默认为普通用户,在
进入了主界面后,可以在菜单栏中输入管理员密码和帐号,从而切换至管理员身
份。普通用户权限受限,可以进行部分操作(查询,统计),管理员可以对该系
统进行任何操作。
② 项目档案管理:可以对项目档案(包括:项目号,姓名,性别,系别, 政治面貌)进行查询,删除,修改操作。
③ 项目组信息管理:可以对项目组信息(包括:项目号,姓名,性别,家
庭住址,身份证)进行查询,修改,删除操作。
④ 功能模块信息管理:可以对功能模块信息(包括:项目号,姓名,系别,
课程号,课程名,指导人)进行查询,删除,修改操作。
⑤ 项目信息添加:可以对项目的整体情况进行添加操作(包括:项目号,
姓名,性别,系别,政治面貌,课程号,身份证,家庭住址),当然这个操作是
对于管理员来说的,普通用户无权进行该项操作。
⑥ 选课信息管理:可以对项目进展(包括:项目号,课程名,任课教师) 进行查询,修改,添加,删除操作,其中修改,添加,删除操作必须是管理员身份,而查询操作任何人均可。
⑦ 项目文档管理:可以对项目文档(包括:项目号,姓名,系别,课程号,课程名,成绩)进行查询,修改,删除,更新,个人统计,全局统计,排序等操作。
⑧ 项目报错模块:可以对项目报错情况(包括:项目号,姓名,系别,课程号,课程名,成绩)进行统计,算平均成绩,最高成绩,不及格情 况,及格情况,排序操作。
⑨ 项目总结统计:可以对项目总结情况(包括:项目号,姓名,系别,课程号,课程名,成绩)进行统计,按学号排序,最高成绩,最低成绩, 不及格情况,及格情况,单科情况统计操作。
⑩ 单科情况统计:可以对全体学生某科目的情况进行统计算平均进度,最高完成数,及格人数不及格情况以及人数,最低完成数,排序操作。
5.3.2 后台
充分利用数据库的大容量、高效率等特点,为用户提供强大的功能支持, 当用户进行插入,删除,修改操作时候,数据库触发器帮助完成功能,大大减少代码的编写量。
5.4 系统核心代码
5.4.1 主程序
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg::IDD, pParent)
{
}
BOOL CMyDlg::OnInitDialog()
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); j=1; k=1;
CDialog::OnInitDialog();
m_menu.LoadMenu(IDR_MENU2);
SetMenu(&m_menu);
b=1;
CLogDlg dlg;
b=dlg.b;
dlg.DoModal();
if(b==0)
{
CDialog::OnOK();
}
if(k==1)
{
m_bnMod.EnableWindow(false);
m_bnDel.EnableWindow(false);
m_bnStudent.EnableWindow(false);
}
m_imagelist.Create(16,16,TRUE,2,2);
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_listCtrl.SetImageList(&m_imagelist,LVSIL_SMALL);
m_font.CreateFont(16, 0,0,0,FW_NORMAL, 0,0,0,
DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial"); m_listCtrl.SetFont(&m_font);
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT
LVS_EX_GRIDLINES);
m_listCtrl.SetBkColor(RGB(247,247,255));
m_listCtrl.SetTextColor(RGB(0,0,255));
m_listCtrl.SetTextBkColor(RGB(247,247,255));
Initlist();
DisplayData();
return TRUE;
}
|
void CMyDlg::OnPaint()
{if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
dc.FillSolidRect(rect,RGB(229,232,244)); //229,232,244
CDialog::OnPaint();
}
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{pDC->SetBkColor(RGB(229,232,244));
pDC->SetTextColor(RGB(252,63,152));}
}
void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point. x, point.y));
CDialog::OnLButtonDown(nFlags, point);
}
void CMyDlg::Initlist()
{
DWORD
dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_UNDERLINEHOT;
m_listCtrl.SetExtendedStyle(dwExStyle);
m_listCtrl.InsertColumn(0,"学号",LVCFMT_CENTER,70);
m_listCtrl.InsertColumn(1,"姓名",LVCFMT_CENTER,70);
m_listCtrl.InsertColumn(2,"性别",LVCFMT_CENTER,80);
m_listCtrl.InsertColumn(3,"系别",LVCFMT_CENTER,60);
static int b=1;
}
void CMyDlg::OnAboutme()
{ CAboutDlg dlg;
dlg.DoModal();
}
HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC)
{pDC->SetBkColor(RGB(229,232,244));
pDC->SetTextColor(RGB(252,63,152));}
return hbr;
}
void CAboutDlg::OnPaint()
{CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);
dc.FillSolidRect(rect,RGB(229,232,244));}
void CMyDlg::OnButtonJiguan()
{ CJiguanDlg dlg;
dlg.DoModal();
}
void CMyDlg::OnButtonDangan()
{ CDanganDlg dlg;
dlg.DoModal();
}
void CMyDlg::DisplayData()
{if(!m_db.IsOpen())
{if(!m_db.Open(_T("MySQL;UID=sa;PWD=yushuai")))
{MessageBox("Cannot access the database!","新书登记");
return;
}
CStudentRecordset *m_pset=new CStudentRecordset(&m_db);
CString strSQL;
strSQL.Format("select * from student");
TRY{
m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
}
CATCH(CDBException,ex)
{ AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{ TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
if(m_pset->GetRecordCount()==0)
{ MessageBox("没有任何学生信息!"," 学生登记");m_db.Close(); return;
}
m_listCtrl.DeleteAllItems();m_pset->MoveFirst();
char buf[50];CDBVariant varValue;int i=0;
CString sno,sname,sdept,cno,cname,cteacher;
while(!m_pset->IsEOF())
{ m_listCtrl.InsertItem(i,buf);
m_pset->GetFieldValue((short)0,sno);
m_listCtrl.SetItemText(i,0,sno);
m_pset->GetFieldValue(1,sname);
m_listCtrl.SetItemText(i,1,sname);
m_pset->GetFieldValue(2,sdept);
m_listCtrl.SetItemText(i,2,sdept);
m_pset->GetFieldValue(3,cno);
m_listCtrl.SetItemText(i,3,cno); i++;
m_pset->MoveNext();
UpdateData(FALSE); }
m_pset->Close();
m_db.Close();
}
void CMyDlg::OnButtonStuFind()
{
CStudentFindDlg dlg;
dlg.DoModal();
}
void CMyDlg::OnButtonStuMod()
{
CStudentModDlg dlg;
POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
int m_nIndex = m_listCtrl.GetNextSelectedItem(pos); // 得到项目索引 if(m_nIndex==-1)
{MessageBox("请选择一项在修改!"," 提示",MB_ICONINFORMATION); return;
}
dlg.m_strSno=m_listCtrl.GetItemText(m_nIndex,0);
dlg.m_strSname=m_listCtrl.GetItemText(m_nIndex,1);
dlg.m_strSex=m_listCtrl.GetItemText(m_nIndex,2);
dlg.m_strSdept=m_listCtrl.GetItemText(m_nIndex,3);
if(dlg.DoModal()==IDOK){
m_listCtrl.SetItemText(m_nIndex,0,dlg.m_strSno);
m_listCtrl.SetItemText(m_nIndex,1,dlg.m_strSname);
m_listCtrl.SetItemText(m_nIndex,2,dlg.m_strSex);
m_listCtrl.SetItemText(m_nIndex,3,dlg.m_strSdept);
m_db.Open(_T("MySQL;UID=sa;PWD=yushuai")); CString sql;
sql.Format("insertintostudentvalues('%s','%s','%s','%s')",dlg.m_strSno,dlg.m_strSname,dlg.m_strSex,dlg.m_strSdept);
m_db.ExecuteSQL(sql);
m_db.Close();
}}
void CMyDlg::OnButtonStuDel()
{ POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
int m_nIndex = m_listCtrl.GetNextSelectedItem(pos); // 得到项 if(m_nIndex==-1)
{ MessageBox("请选择一项在删除!"," 提示",MB_ICONINFORMATION); return;
}
CString sno;
sno=m_listCtrl.GetItemText(m_nIndex,0);
m_listCtrl.DeleteItem(m_nIndex);
m_db.Open(_T("MySQL;UID=sa;PWD=yushuai")); CString sql;
sql.Format("delete from student where sno='%s'",sno );
m_db.ExecuteSQL(sql);
sql.Format("delete from mianmao where sno='%s'",sno);
m_db.ExecuteSQL(sql);
sql.Format("delete from jiguan where sno='%s'",sno);
m_db.ExecuteSQL(sql);
sql.Format("delete from sc where sno='%s'",sno);
m_db.ExecuteSQL(sql); m_db.Close();
}
void CMyDlg::OnButtonRefresh()
{ if(!m_db.IsOpen())
{if(!m_db.Open(_T("MySQL;UID=sa;PWD=yushuai")))
{
MessageBox("Cannot access the database!" );
return; }
}
CStudentRecordset *m_pset=new CStudentRecordset(&m_db); CString strSQL;
strSQL.Format("select * from student");
TRY{
m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); }
CATCH(CDBException,ex)
{ AfxMessageBox (ex->m_strError);
AfxMessageBox (ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{ TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox (szError);
}
END_CATCH
if(m_pset->GetRecordCount()==0)
{ MessageBox("没有任何学生信息!" );
m_db.Close();
return;
}
m_listCtrl.DeleteAllItems();
m_pset->MoveFirst(); char buf[50];
CDBVariant varValue;int i=0;CString sno,sname,ssex,sdept; while(!m_pset->IsEOF())
{ m_listCtrl.InsertItem(i,buf);
m_pset->GetFieldValue((short)0,sno);
m_listCtrl.SetItemText(i,0,sno);
m_pset->GetFieldValue(1,sname);
m_listCtrl.SetItemText(i,1,sname);
m_pset->GetFieldValue(2,ssex);
m_listCtrl.SetItemText(i,2,ssex);
m_pset->GetFieldValue(3,sdept);
m_listCtrl.SetItemText(i,3,sdept);
i++;
m_pset->MoveNext();
UpdateData(FALSE);
}
m_pset->Close(); m_db.Close();
void CMyDlg::OnButtonStudent()
{ CStudentAllDlg dlg;
if(dlg.DoModal()==IDOK||dlg.m_strSno!=""&&dlg.m_strSname!=""&&dlg.m_strSsex!=""&&dlg.m_strSdept!=""&&dlg.m_strSiden!=""&&dlg.m_strMianmao!=""&&dlg.m_strCno!=""&&dlg.m_strSadd!=""){
int m_nIndex=m_listCtrl.GetItemCount();
m_listCtrl.InsertItem(m_nIndex,dlg.m_strSno);
m_listCtrl.SetItemText(m_nIndex,1,dlg.m_strSname);
m_listCtrl.SetItemText(m_nIndex,2,dlg.m_strSsex);
m_listCtrl.SetItemText(m_nIndex,3,dlg.m_strSdept);
m_db.Open(_T("MySQL;UID=sa;PWD=yushuai")); CString sql;
sql.Format("insert
dept);m_db.ExecuteSQL(sql);
sql.Format("inserintomianmao values('%s','%s')",dlg.m_strSno,dlg.m_strMianmao); m_db.ExecuteSQL(sql);
sql.Format("insertintojiguanvalues'%s','%s','%s')",dlg.m_strSno,dlg.m_strSadd,dlg.m_strSiden);m_db.ExecuteSQL(sql);
sql.Format("insert into sc values ('%s','%s','%s')",dlg.m_strSno,dlg.m_strcno1,"没有");//dlg.m_strCno,
m_db.ExecuteSQL(sql);
m_db.Close();}}
void CMyDlg::OnButtonXuanxiuxinxi()
{ CXuanxiuxinxiDlg dlg;
dlg.DoModal();
} into student values('%s','%s','%s','%s')",dlg.m_strSno,dlg.m_strSname,dlg.m_strSsex,dlg.m_strSUpdateData(FALSE);
void CMyDlg::OnMenuPutong()
{
CDialog::OnOK();
}
void CMyDlg::OnButtonChengji()
{
CChengjiguanliDlg dlg;dlg.DoModal();}
}
6 总结
6.1 收获与体会
通过该数据库课程设计从中学习到了许多课本中没有的知识,更重要的是从该课程设计中对自己的动手能力和动脑能力有了更大层次的提高,切实提高了自己的综合能力,使得将所学的知识同实际的运用相结合,并对数据库知识的了解和运用,尤其是数据库中常用的检索操作和更新操作,以及权限的分配和安全性保护等等,有了更深层次的理解;对ORACLE 数据库的触发器和存储过程的运用有了很大的了解和认识,能够根据实际的情况来编写适当的触发器和存储过程,并显示正确的处理结果;同时,通过该设计也充分的将所学的面向对象语言和数据库知识有效的结合,创新性的开发出一个具备比较合理的功能的可视化图形界面的数据库软件,为今后的实际工作的开发项目有了很大程度的帮助。
参考文献
[ 1 ] 郑阿奇. Oracle实用教程[M]. 北京: 电子工业出版社, 2003.10
[ 2 ] 李晓黎. Oracle 10g数据库管理与应用系统开发. 人民邮电出版社. 2007.7
[ 3 ] Oracle数据库开发案例导航[M]. 北京:清华大学出版社, 2003
[ 4 ] 李晓黎.Visual Basic+SQL Server数据库应用系统开发与实例.2004.9
[ 5 ] JSP+Oracle组建动态网站实例精讲. 人民邮电出版社.2005.4
致 谢
本系统的设计和实现过程中,受益非浅,经过一个星期的努力,终于完成了学生管理系统的全部设计过程。在设计中,自己把理论和实际很好的融合,把软件设计的基本思想有机结合,从而提高了自己的理解能力和理论水平,更加加深了对软件体系结构的理解,也对大型数据库的设计有了进一步的了解。
这次课程设计中,自己学到了诸多诸多,而感触最深的还是编程思想的提高,以及对系统的体系构架方面的理解,掌握了如何来实现服务器后台和前台协调工作,减少代码编写,提高工作效率。
在课程设计过程中,老师的指导和帮助,使得自己对ORACLE 数据库开发有了很大的了解,在此表示衷心的感谢!