数据库的课程设计校友录系统设计_第1页
数据库的课程设计校友录系统设计_第2页
数据库的课程设计校友录系统设计_第3页
数据库的课程设计校友录系统设计_第4页
数据库的课程设计校友录系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 系统摘要校友录系统是每个学校都必备的系统,其主要用于管理学院已毕业的校友的信息,是联系校友和学院之间的纽带。校友录系统的开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。可将整个系统设计分为两个模块:数据库的设计和应用程序的开发。模块一 数据库的设计需求分析阶段需求收集和分析,从分析结果中的到数据字典描述的数据需求概念结构设计阶段 形成一个独立于具体dbms的概念模型,可以用e-r图表示逻辑结构设计阶段 将概念结构转换为某个dbms所支持的数据模型,并对其进行优化数据库物理设计阶段 为逻辑数据模型选取一个最合适应用环境的物理结构模块二 应用程序的开发 使用access数据库进

2、行数据库方面的设计,通过vc+编译器进行框架的生成,结合两者实行对校友录系统的基本操作查询,增加,修改,删除。 制作人 2010年1月5日第一章 系统设计需求分析1.1前言目前,经济发展迅猛,人们的压力也越来越大,以致把大多数人时间都投入在工作中,往往就会淡忘以前的生活,学生时代是梦想最多时代,感情最纯真的时代,在那时,我们都会遇到很多不同的人,也交了很多知己,但是一走上工作岗位,大多数人都会与以前的朋友失去联系。有时,即使想联系都没有联系方式。通过校友录管理系统,可以要联系的朋友,这是许多人都认可的,可以看出设计一个校友录是极具可行性的。校友录是为了方便校友之间联系而使用的一种系统,一个校友

3、录管理系统,用户以个人的身份进入,查找满足条件的班级,并可以填写个人资料,以便被查询,通过校友录这种网络联系方式,可以让很多因毕业而分离的同学们还能经营聚首,互相嘘寒问暖,了解各自的近况,还可以建立毕业生和在校生的沟通渠道,增强学校的凝聚力,能很方便的和同学沟通和交流。1.2系统来源近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面,使得人们能以更低廉的价格,开发出更方面,更实用的网络工具,各种在线服务系统,更是深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯,过去的种种陈旧的联系方式,已经不能满足现代生活的需要。校友录作为一种方便校友之间联

4、系的实用系统便应运而生。校友录是校友之间进行交流和联系提供的一个平台,通过提供完善的校友录服务和规范校友录的管理,可以达到增进校友之间。校友与母校之间的感情,方便校友联系的母校。1.3目的和意义校友录管理系统的最终目的是加强各地校友之间的联系,增进校友之间,校友与母校之间的感情,通过校友之间的交流,为各地学习提供广泛的事业合作机会,能增强学校的凝聚力,让各地学子联合起来,校友录是为校友之间进行交流和联系提供的一个平台,虽然现在大多数人都能用各种聊天工具与同学朋友联系,但是聊天工具有个最大的弱点就是安全性不高,一旦密码丢失或被盗,所有联系人资料都丢失,而校友录管理系统能解决这个问题,所有校友的信

5、息都将长期储存在数据库,用户登录校友录就能找到同学的信息并与之取得联系,并且可以实时关注母校的动态,现在我们也都面临这毕业,拥有一个属于自己的校友录系统也是很多同学的心愿,所以,设计并制作这个校友录管理系统是很大 的实际意义。1.4系统功能分析 校友录管理系统满足来自两个方面的需求,这两个方面分别是用户(校友),校友管理人员。用户管理功能:用户管理功能主要包括用户登录和注册,只有已注册登录的用户才能找到同学的信息并与之取得联系,并且可以实时关注母校的动态,。校友管理人员:校友管理人员的功能最为复杂,对用户注册,删除,添加,修改信息进行管理和维护1.5需求分析过程各个阶段需求分析数据库设计人熟悉

6、校友录的功能明确学院和校友需求确定系统边界概念模型dfddd1.6数据流图的设计数据流图的设计 1. 校友录0层数据流图校友录管理系统 校友录管理员校友 查询 更新 信息 信息 2. 校友录一层数据流图这是该系统的一张0层数据流图,主要体现的是一个针对系统本身而言的一个输入输出的关系。从这张图可以明确的看出校友与系统的关系,它是一个索取信息的关系,他们都是系统的输出信息的地方;而管理员则是该系统的输入者,系统所拥有的资源都是管理员所提供的。校友和校友录管理员都是这个系统的外部项。一层数据流图是对0层数据流图的细化。注册主界面登录校友 无注册 登录 有注册 进入校友信息 专业信息 管理员信息 系

7、院信息通讯录通讯录的校友通讯信息1.7数据字典数据词典的作用是给数据流图上每个要素给以定义和说明。这里主要是对校友这个外部项进行了解释和说明。修改记录 简要说明:本系统提供的校友信息是有限的输出数据流:校友信息主要特征:校友的姓名,性别,年龄,家庭住址,专业以及系院输入数据流:所要的校友信息外部项系统名:_校友录数据库系统_ 编号:_条目名:_校友_ 别名:_2010-1-5日期江*编写日期审核尹*2010-1-5第二章 概念模型的设计2.1系统功能模块 根据系统设计的需求分析的要求,可以将整个系统划分分成三部分,经过模块化的分析得到了如图所示的功能模块化结构图:校友录数据库系统管理员各系院校

8、友管理员自身信息的查询更新数据库中校友的信息搜索所有校友信息定期对数据库进行重组和重构监控数据库的性能改进提供毕业生信息将更新系院专业信息提供给管理员更新个人信息查询其他校友的信息个人信息的查询 功能结构图2.2概念设计的步骤 在概念设计阶段中,设计人员从用户的角度看待数据集处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定dbms的限制。 利用e-r方法进行数据库的概念设计,可分成三步进行:首先设计局部e-r模式,然后把各局部e-r模式综合成一个全局模式,最后对全局e-r模式

9、进行优化,得到最终的模式,即概念模式。2.3设计各个局部e-r模式e-r模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:m,m:n,还是1:1等。还要考察一个实体类型类型内部是否存在联系,等等。校友管理员搜索校友信息编号姓名姓名性别地址电话专业系院学号性别1n拥有校友信息姓名地址电话专业系院学号性别校友姓名地址电话专业系院学号性别11属于系院系名系号简述校友姓名地址电话专业系院学号性别n1属于专业专业名专业号简述校友姓名地址电话专业系院学号性别n1管理校友姓名地址电

10、话专业系院学号性别n校友管理员编号姓名性别1系院系名系号简述m专业专业名专业号简述n包含2.4设计全局e-r模式所有局部e-r模式设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部e-r模式,而且必须合理地表示一个完整,一致的数据库概念结构。1.确定公共实体类型为了给多个局部e-r模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型作为公共实体类型的另一类候选。2.局部e-r模式的合并合并的原则是:首先进行两

11、两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。1.消除冲突冲突分为三类:属性冲突,结构冲突,命名冲突。设计全局e-r模式的目的不在于把若干局部e-r模式形式上合并为一个e-r模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模式。2.全局e-r模式的优化在得到全局e-r模式后,为了提高数据库系统的效率,还应进一步依据处理需求对e-r模式进行优化。一个好的全局e-r模式,除能准确,全面地反映用户功能需求外,还应该满足下列条件:实体类型的个数压迫尽可能的少;实体类型间联系与冗余。综上所述,“校友录管理系统”的全局e-r模式如图

12、:校友管理员搜索校友信息编号姓名姓名性别地址电话专业系院学号性别1n校友专业系院管理拥有属于属于学号系号专业系院性别姓名地址1n11简述系名简述专业号专业名包含nn11n1电话第三章 逻辑模型的设计3.1逻辑设计部分3.1.1概念模型向关系模型转换及依赖关系分析:根据总e-r图中的实体与实体之间的联系以及转换的一般原则,得到如下的关系:拥有校友信息校友11根据以上1:1的关系可得到关于校友的关系: friendinfo(studentno,name,sex,birthday,address,special,department) uselogin(name,passwd,uesrtype)3.

13、1.2各个关系模型的函数依赖关系分析:uselogin(name,passwd,uesrtype)namepasswdusertype 从函数依赖图可以看出,该关系中不存在部分函数依赖、传递函数依赖,且只有姓名能确定其他各项。所以该关系是bcnf范式。 该关系来源于校友这个实体,该关系的函数依赖图如下:friendinfo(studentno,name,sex,birthday,address,special,department)namesexstudentnobirthdayspecialdepartmentaddress由该函数依赖图可知,该关系仍然是bcnf范式3.2整个系统的关系设计

14、所有关系的定义:specialinfo(specialno,special,detail)friendinfo(studentno,name,sex,birthday,address,special,department)uselogin(name,passwd,uesrtype)admininfo(adminno,adminname,sex,age,adminqq)departmentinfo(departmentno,department,detail)connectioninfo(name,phone,friendqq)第四章 物理结构模型设计4.1物理设计的内容 数据库的物理设计是为了

15、逻辑数据模型设计适合应用环境的物理结构:为关系选择存取方法和存取路径;确定数据库存储结构,即确定关系,索引,聚簇,日志,备份等数据的存储安排和存储结构;确定系统配置。4.2存储结构及视图的设计create procedure name1name varchar(10)mycursor cursor varying outputas set mycursor forselect(studentno,name,sex,birthday,address,special,departmentfrom friendinfowhere name like %+name+%)open mycurrsorde

16、calre studentno varchar(10)decalre name varchar(10)decalre sex varchar(10)decalre birthday varchar(50)decalre address varchar(50)decalre special varchar(50)decalre department varchar(50)declare thecursor cursorexec name name=江,mycursor=the cursou outputwhile(0=0)beginfetch next from thecursou into s

17、tudentno,name,sex,address,special,departmentif(fetch_status0) breakselect studentno,name,sex,address,special,departmentendclose thecursordeallocate thcursor 这是friendinfo的存储过程create view cs_friendinfoasselect *from friendinfo这是创建了一个cs_friendinfo视图,它是基于表friendinfo,可通过它来保护friendinfo中的信息。第五章 数据库的实施运行5.1

18、建立数据库并组织数据入库sql语句脚本:create database schoolfriendcreate table specialinfo(specialno text primary key,special text,detail text)create table friendinfo(studentno varchar(10) primary key,name varchar (10),sex varchar(10) text varchar(10),birthday varchar(50),address varchar(50),special varchar(50) ,depa

19、rtment varchar(50)create table uselogin(name text peimary key,passwd text,uesrtype text)create table admininfo(adminno text parmary key,adminname text,sex,age text,adminqq text)create table departmentinfo(departmentno text primary key,department text,detail text)create table connectioninfo(name text

20、 primary key,phone text,friendqq text) 5.2后台数据库表中的数据通讯录联系表系院表校友信息表系信息表管理员信息表用户登录信息表第六章 课程设计应用程序的开发6.1c+应用程序的设计六张表对应六个set类分别为cadmininfoset,cconnectionset,cdepartmentinfoset,cfriendset,cspecialinfoset,cuserinfoset.主窗口程序#include stdafx.h#include friend.h#include searchfrienddlg.h#include mainfrm.h#incl

21、ude userlogindlg.h#include specialdlg.h#include separtmentdlg.h#include connectiondlg.h#include admininfodlg.h#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#endif/ cmainframeimplement_dyncreate(cmainframe, cframewnd)begin_message_map(cmainframe, cframewnd)/afx_msg_

22、map(cmainframe)on_wm_create()on_command(id_menu_res, onmenures)on_command(id_menu_look, onmenulook)on_command(id_menu_department, onmenudepartment)on_command(id_menu_special, onmenuspecial)on_command(id_menu_connection, onmenuconnection)on_command(id_menu_admin, onmenuadmin)on_command(id_menu_exit,

23、onmenuexit)/afx_msg_mapend_message_map()static uint indicators =id_separator, / status line indicatorid_indicator_caps,id_indicator_num,id_indicator_scrl,;/ cmainframe construction/destructioncmainframe:cmainframe()/ todo: add member initialization code herecuserlogindlg dlg;dlg.domodal();cmainframe

24、:cmainframe()int cmainframe:oncreate(lpcreatestruct lpcreatestruct)if (cframewnd:oncreate(lpcreatestruct) = -1)return -1;if (!m_wndtoolbar.createex(this, tbstyle_flat, ws_child | ws_visible | cbrs_top| cbrs_gripper | cbrs_tooltips | cbrs_flyby | cbrs_size_dynamic) |!m_wndtoolbar.loadtoolbar(idr_main

25、frame)trace0(failed to create toolbarn);return -1; / fail to createif (!m_wndstatusbar.create(this) |!m_wndstatusbar.setindicators(indicators, sizeof(indicators)/sizeof(uint)trace0(failed to create status barn);return -1; / fail to create/ todo: delete these three lines if you dont want the toolbar

26、to/ be dockablem_wndtoolbar.enabledocking(cbrs_align_any);enabledocking(cbrs_align_any);dockcontrolbar(&m_wndtoolbar);return 0;bool cmainframe:precreatewindow(createstruct& cs)if( !cframewnd:precreatewindow(cs) )return false;/ todo: modify the window class or styles here by modifying/ the createstru

27、ct csreturn true;/ cmainframe diagnostics#ifdef _debugvoid cmainframe:assertvalid() constcframewnd:assertvalid();void cmainframe:dump(cdumpcontext& dc) constcframewnd:dump(dc);#endif /_debug/ cmainframe message handlersvoid cmainframe:onmenures() / todo: add your command handler code herecuserlogind

28、lg dlg;dlg.domodal();void cmainframe:onmenulook() / todo: add your command handler code here csearchfrienddlg dlg;dlg.domodal();void cmainframe:onmenudepartment() / todo: add your command handler code herecsepartmentdlg dlg;dlg.domodal();void cmainframe:onmenuspecial() / todo: add your command handl

29、er code herecspecialdlg dlg;dlg.domodal();void cmainframe:onmenuconnection() / todo: add your command handler code herecconnectiondlg dlg;dlg.domodal();void cmainframe:onmenuadmin() / todo: add your command handler code herecadmininfodlg dlg;dlg.domodal();void cmainframe:onmenuexit() / todo: add you

30、r command handler code hereif(afxmessagebox(您确定要退出系统吗?,mb_okcancel)=idcancel)return;cframewnd:onclose();用户登录注册窗口#include stdafx.h#include friend.h#include userlogindlg.h#include userinfoset.h#include friendinfodlg.h#include friendset.h#ifdef _debug#define new debug_new#undef this_filestatic char thi

31、s_file = _file_;#endif/ cuserlogindlg dialogcuserlogindlg:cuserlogindlg(cwnd* pparent /*=null*/): cdialog(cuserlogindlg:idd, pparent)/afx_data_init(cuserlogindlg)m_strname = _t();m_strpasswd = _t();/afx_data_initvoid cuserlogindlg:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);/afx_da

32、ta_map(cuserlogindlg)ddx_text(pdx, idc_edit_name, m_strname);ddx_text(pdx, idc_edit_passwd, m_strpasswd);/afx_data_mapbegin_message_map(cuserlogindlg, cdialog)/afx_msg_map(cuserlogindlg)on_bn_clicked(idc_button_res, onbuttonres)/afx_msg_mapend_message_map()/ cuserlogindlg message handlersvoid cuserl

33、ogindlg:onok() / todo: add extra validation here cuserinfoset recordset;cstring strsql;updatedata(true);if(m_strname.isempty()afxmessagebox(请输入姓名!);return;/检查密码是否输入if(m_strpasswd.isempty()afxmessagebox(请输入密码!);return;/clibraryapp* ptheapp = (clibraryapp *) afxgetapp();strsql.format(select * from use

34、rlogin where name=%s and passwd=%s,m_strname,m_strpasswd);if(!recordset.open(afx_db_use_default_type,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;if(recordset.getrecordcount()=0)recordset.close();messagebox(密码错误,请重新输入!);m_strpasswd=;updatedata(false);else/ptheapp-m_bisadmin = recordset.m_isadmin;

35、/ptheapp-m_stroperator = recordset.m_user;recordset.close();cdialog:onok();cdialog:onok();void cuserlogindlg:onbuttonres() / todo: add your control notification handler code hereupdatedata();if(m_strname.isempty()afxmessagebox(请输入读者姓名!);return;if(m_strpasswd.isempty()afxmessagebox(请输入密码!);return;cst

36、ring strsql;strsql.format(select * from userlogin where name = %s,m_strname);cuserinfoset rs;if(!rs.open(afx_db_use_default_type,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;if(rs.getrecordcount()!=0)rs.close();afxmessagebox(该用户名已经存在,请重新输入!);return;rs.close();if(!rs.open(afx_db_use_default_type)m

37、essagebox(打开数据库失败!,数据库错误,mb_ok);return ;rs.addnew();rs.m_passwd = m_strpasswd;rs.m_name = m_strname;rs.m_usertype=2;rs.update();rs.close(); cfriendinfodlg dlg;dlg.domodal();增加联系窗口#include stdafx.h#include friend.h#include addconnectiondlg.h#include connectionset.h#ifdef _debug#define new debug_new#u

38、ndef this_filestatic char this_file = _file_;#endif/ caddconnectiondlg dialogcaddconnectiondlg:caddconnectiondlg(cwnd* pparent /*=null*/): cdialog(caddconnectiondlg:idd, pparent)/afx_data_init(caddconnectiondlg)m_strname = _t();m_strphone = _t();m_strqq = _t();/afx_data_initvoid caddconnectiondlg:do

39、dataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);/afx_data_map(caddconnectiondlg)ddx_text(pdx, idc_edit_name, m_strname);ddx_text(pdx, idc_edit_phone, m_strphone);ddx_text(pdx, idc_edit_qq, m_strqq);/afx_data_mapbegin_message_map(caddconnectiondlg, cdialog)/afx_msg_map(caddconnectiondlg)/

40、afx_msg_mapend_message_map()/ caddconnectiondlg message handlersvoid caddconnectiondlg:onok() / todo: add extra validation hereupdatedata();if(m_strname.isempty()afxmessagebox(请输入姓名!);return;if(m_strphone.isempty()afxmessagebox(请输入联系电话!);return;if(m_strqq.isempty()afxmessagebox(请输入qq!);return;cstrin

41、g strsql;strsql.format(select * from connectioninfo where name= %s,m_strname);cconnectionset rs;if(!rs.open(afx_db_use_default_type,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;if(rs.getrecordcount()!=0)rs.close();afxmessagebox(该联系人已经存在,请重新输入!);return;rs.close();if(!rs.open(afx_db_use_default_typ

42、e)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;rs.addnew();rs.m_name = m_strname;rs.m_phone = m_strphone;rs.m_friendqq = m_strqq;rs.update();rs.close();cdialog:onok();管理员信息窗口#include stdafx.h#include friend.h#include admininfodlg.h#include admininfoset.h#ifdef _debug#define new debug_new#undef this_file

43、static char this_file = _file_;#endif/ cadmininfodlg dialogcadmininfodlg:cadmininfodlg(cwnd* pparent /*=null*/): cdialog(cadmininfodlg:idd, pparent)/afx_data_init(cadmininfodlg)/ note: the classwizard will add member initialization here/afx_data_initvoid cadmininfodlg:dodataexchange(cdataexchange* p

44、dx)cdialog:dodataexchange(pdx);/afx_data_map(cadmininfodlg)ddx_control(pdx, idc_list_admin, m_ctrlist);/afx_data_mapbegin_message_map(cadmininfodlg, cdialog)/afx_msg_map(cadmininfodlg)/afx_msg_mapend_message_map()/ cadmininfodlg message handlersbool cadmininfodlg:oninitdialog() cdialog:oninitdialog(

45、);/ todo: add extra initialization herem_ctrlist.insertcolumn(0,管理员号); m_ctrlist.insertcolumn(1,管理员姓名); m_ctrlist.insertcolumn(2,性别); m_ctrlist.insertcolumn(3,年龄); m_ctrlist.insertcolumn(4,qq); m_ctrlist.setcolumnwidth(0,80);m_ctrlist.setcolumnwidth(1,120); m_ctrlist.setcolumnwidth(2,80);m_ctrlist.s

46、etcolumnwidth(3,80); m_ctrlist.setcolumnwidth(4,120); m_ctrlist.setextendedstyle(lvs_ex_fullrowselect|lvs_ex_gridlines);datafresh();return true; / return true unless you set the focus to a control / exception: ocx property pages should return falsevoid cadmininfodlg:datafresh()m_ctrlist.setfocus();/清空列表m_ctrlist.deleteallitems();m_ctrlist.setredraw(false);cstring strsql;updatedata(true);/打开记录集strsql=select *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论