1、(2) 权限分配: 超级管理员通过输入密码和帐号可以对数据库的数据进行各种操作,而普通用户仅仅可以进行一部分的操作。(3) 易操作性: 可以快速进行查询操作,进行数据的汇总。 3 系统设计3.1 设计思路(1) 系统分成前台和后台相对独立的模块,前台用来构架系统的开发界面并完成功能设计,后台数据库服务器来完成数据库的管理工作;(2) 采用模块化程序设计思想,整个系统采用模块化结构设计,作为应用程序有较强的可操作性和扩展性。(3) 合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。3.2 系统功能模块图系统结构模块图如下所
2、示:图3.1 系统功能模块图3.3 模块功能设计本系统共包括10大模块,分别是用户登录模块,项目档案管理模块,项目组信息管理模块,项目进展管理模块,项目信息添加模块,个人统计模块模块,全局模块统计模块,单科情况统计模块。每个模块的功能如下:1用户登录模块:分为超级管理员和普通用户两种,默认为普通用户,在进入了主界面后,可以在菜单栏中输入管理员密码和帐号,从而切换至管理员身份。普通用户权限受限,可以进行部分操作(查询,统计),管理员可以对该系统进行任何操作。2项目信息管理:可以对项目档案(包括:项目号,姓名,性别,系别,政治面貌)进行查询,删除,修改操作。3项目组信息管理:可以对项目组信息(包括
3、:项目号,姓名,性别,家庭住址,身份证)进行查询,修改,删除操作。4功能模块信息管理:可以对功能模块信息(包括:项目号,姓名,系别,课程号,课程名,教导人)进行查询,删除,修改操作。5项目信息添加:可以对项目的整体情况进行添加操作(包括:项目号,姓名,性别,系别,政治面貌,课程号,身份证,家庭住址),当然这个操作是对于管理员来说的,普通用户无权进行该项操作。6项目进展管理:可以对项目进展(包括:项目号,课程名,任课教师)进行查询,修改,添加,删除操作,其中修改,添加,删除操作必须是管理员身份,而查询操作任何人均可。7项目文档管理:可以对项目文档(包括:项目号,姓名,系别,课程号,课程名,成绩)
4、进行查询,修改,删除,更新,个人统计,全局统计,排序等操作。8项目报错模块:可以对项目报错情况(包括:项目号,姓名,系别,课程号,课程名,成绩)进行统计,算平均成绩,最高成绩,不及格情况,及格情况,排序操作。9项目总结统计:可以对项目总结情况(包括:项目号,姓名,系别,课程号,课程名,成绩)进行统计,按学号排序,最高成绩,最低成绩,不及格情况,及格情况,单科情况统计操作。10单科情况统计:可以对全部项目某部分的情况进行统计算平均进度,最高完成数,及格人数不及格情况以及人数,最低完成数,排序操作。4 系统数据库设计4.1 系统数据库的建立 数据库的设计尽量的实现与应用程序做到最低等级的耦合,按照
5、三层模式两级联系的方式设计数据库,把数据库设计成层次清晰的,高效的,实用数据库。鉴于系统开发数据的信息量大,容易造成冗余和数据不一致性,因此采用了触发器来帮助完成工作,从而也很好的减少了代码编辑量,达到了程序与后台执行的分离,从而提高了工作效率,大大节省了时间。4.2 系统E-R图项目管理系统数据库E-R模型,如下图所示:图4.1项目管理系统E-R模型图4.3 数据表的创建 由数据模型利用Oracle10g进行数据库的详细设计,其基本表的设计如下:表4.3.1 用户信息表列名数据类型长度允许为空默认值字段名说明useVARCHAR224用户名主键pwd密码id6身份标志表4.3.2 项目信息表
6、sno项目号主键,自动增长sname姓名ssex性别sdept系别表4.3.3项目文档信息表cno课程号grade分数 表4.3.4 项目组信息表Mianmao政治面貌identity身份证Address家庭住址 表4.3.5项目进展信息表cname课程名cteacher教师名表4.3.6 功能模块信息表score4.4 触发器设计创建的触发器如下:CREATE TRIGGER delete_proj /删除项目表时,实现数据一致性AFTER DELETE ON proj FOR EACH ROWDECLAREsno CHAR(10)BEGIN DELETE FROM sc WHERE sc.
7、sno=:OLD.snoEND delete_projCREATE TRIGGER update_proj /更新项目表时,实现数据一致性AFTER UPDATE ON student FOR EACH ROWUPDATE scSET sc.sname=:NEW.sname ,sc.sdept=:NEW.sdeptWHERE sc.sno=snoEND update_studentCREATE TRIGGER insert_student /插入项目表时,实现数据一致性AFTER INSERT ON student_all FOR EACH ROWINSERT INTO proj VALUES
8、(:NEW.sno ,:NEW.sname,:NEW.sdept);INSERT INTO mianmao VALUES(:NEW.sno,:NEW.mianmao);END insert_projCREATE TRIGGER insert_ /插入选课信息时,实现数据一致性AFTER INSERT ON xuanke FOR EACH ROWINSERT INTO sc VALUES(:NEW.cno,:NEW.greade);END insert_xuanke5 系统实现5.1 系统实现工具与支持平台(1)用户界面:本系统采用Visual Basic 6.0设计,用户交互界面采用的是基于的
9、窗口界面。(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 前台分为超级管理员和普通用户两种,默认为普通用户,在 进入了主界面后,可以在菜单栏中输入管理员密码和帐号,从而切换至管理员身 份。2项目档案管理:项目号,姓名,性别,系别, 政治面貌)进行查询,删除,
10、修改操作。项目号,姓名,系别,课程号,课程名,指导人)进行查询,删除,修改操作。6 选课信息管理:项目号,课程名,任课教师)进行查询,修改,添加,删除操作,其中修改,添加,删除操作必须是管理员身份,而查询操作任何人均可。项目号,姓名,系别,课程号,课程名,成绩)进行统计,算平均成绩,最高成绩,不及格情况,及格情况,排序操作。项目号,姓名,系别,课程号,课程名,成绩)进行统计,按学号排序,最高成绩,最低成绩,不及格情况,及格情况,单科情况统计操作。可以对全体学生某科目的情况进行统计算平均进度,最高完成数,及格人数不及格情况以及人数,最低完成数,排序操作。5.3.2 后台 充分利用数据库的大容量、
11、高效率等特点,为用户提供强大的功能支持, 当用户进行插入,删除,修改操作时候,数据库触发器帮助完成功能,大大减少代码的编写量。5.4 系统核心代码5.4.1 主程序CMyDlg:CMyDlg(CWnd* pParent /*=NULL*/) CDialog(CMyDlg:IDD, pParent) m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME); k=1; j=1;BOOL CMyDlg:OnInitDialog() CDialog:OnInitDialog(); m_menu.LoadMenu(IDR_MENU2); SetMenu(&m_menu
12、); b=1; CLogDlg dlg;b=dlg.b; dlg.DoModal(); if(b=0) 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_fon
13、t.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_lis
14、tCtrl.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 paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cxIcon = GetSystemMetrics(SM_CXICON
15、);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); CRect rect; GetClientRect(& dc.FillSolidRect(rect,RGB(229,232,244); /229,232,244OnPaint();HBR
16、USH 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);OnLButtonDown(UINT nFlags, CPoint point) PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(p
17、oint. x, point.y); CDialog:OnLButtonDown(nFlags, point);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,姓名
18、m_listCtrl.InsertColumn(2,性别,LVCFMT_CENTER,80);m_listCtrl.InsertColumn(3,系别,LVCFMT_CENTER,60);static int b=1;OnAboutme() CAboutDlg dlg;dlg.DoModal();HBRUSH CAboutDlg: HBRUSH hbr = CDialog: if(nCtlColor=CTLCOLOR_STATIC) pDC- pDC- return hbr;void CAboutDlg:CPaintDC dc(this);dc.FillSolidRect(rect,RGB(2
19、29,232,244);OnButtonJiguan() CJiguanDlg dlg;OnButtonDangan() CDanganDlg dlg;DisplayData()if(!m_db.IsOpen()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 studentT
20、RY 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 szError100;e-GetErrorMessage(szError,100);AfxMessageBox (szError);END_CATCHif(m_pset-GetRecordCount()=0) MessageBox(没有任何学生信息!学生
21、登记 m_db.Close();m_listCtrl.DeleteAllItems();m_pset-MoveFirst();char buf50;CDBVariant varValue;int i=0;CString sno,sname,sdept,cno,cname,cteacher;while(!IsEOF() m_listCtrl.InsertItem(i,buf);GetFieldValue(short)0,sno);m_listCtrl.SetItemText(i,0,sno);GetFieldValue(1,sname);m_listCtrl.SetItemText(i,1,sname);GetFieldValue(2,sdept);m_listCtrl.SetItemText(i,2,sdept);GetFieldValue(3,cno);m
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1