员工教师通讯录应用系统.docx
- 文档编号:30309555
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:51
- 大小:484.77KB
员工教师通讯录应用系统.docx
《员工教师通讯录应用系统.docx》由会员分享,可在线阅读,更多相关《员工教师通讯录应用系统.docx(51页珍藏版)》请在冰豆网上搜索。
员工教师通讯录应用系统
员工教师通讯录应用系统
姓名:
学号:
题目:
员工教师通讯录应用系统
班级:
时间:
2012/11/5
摘要
随着通信的发展,人们之间的距离越来越近了,范围却越来越大了,联系也越来越紧密了,这就迫切要求我们把所有人的联系方式统一应用起来,为此,本设计就为学校教师提供了一个应用联系方式的方法。
教师通讯录应用系统是用计算机针对教师通讯录来应用的方式,来详细记录学校教师各多方面信息的应用系统,其系统主要包括系统教师应用模块、教师基本资料模块。
我们根据这些功能,设计出系统的功能模块,每一个功能模块都需要针对不同的表完成相同的数据库操作,分别是查询(查看、预览)模块,具体实现了教师信息的查看和预览;更新(添加、修改、删除)模块,具体实现了教师和(新)人员信息的登记,修改和删除;生成预览报表,具体实现了人员信息的总的查看和浏览。
设计利用Delphi7.0、MicrosoftAccess数据库技术的基本特点,提高了编成效率和可靠性.
关键词:
教师;通讯录;系统应用;access、delphi;
目录
摘要I
目录III
1绪论1
1.1课题的研究背景1
1.2课题的研究现状1
2系统中的主要技术3
3系统分析与设计5
3.1需求分析5
3.2模块设计6
3.3数据库设计6
3.3.1数据表设计6
3.3.2设计参照完整性规则11
3.4创建表记录集类13
3.4.1建立ODBC数据源13
3.4.2扩展记录集类14
4系统的实现17
4.1主窗口设计17
4.1.1主窗口信息显示17
4.1.2查询教师信息23
4.1.3追加新教师信息24
4.1.4修改教师信息26
4.1.5删除教师信息27
4.1.6追加教师组27
4.1.7删除教师组29
4.1.8修改密码31
4.1.9更改组名31
4.2登录界面设计32
4.2.1登录模块实现32
4.2.2注册模块实现34
4.2.3密码找回模块实现36
5总结和展望38
致谢39
参考文献40
附录41
1.1课题的研究背景
随着网络及现代通信技术的发展,人们之间的联系越来越便捷,这也使得同时与许多人保持联系成为可能,而单纯依靠人脑已经很难记住所有人的联系方式。
对于存储电话号码到手机上的方式,比较方便,随时随地可以联系,不过只能通过电话联系,没有记录其他的联系方式,如果手机丢了可能就谁也联系不上了;对于记录电话等信息到本子上的方式,第一也可能丢失本子,第二是查找起来比较困难,需要人工查找,而且更新时不容易,需要涂改以前记录的信息,第三格式比较死板,不利于跟随教师的需求扩展;对于用名片夹存放名片的形式也是查找起来不方便,有丢失的危险;对于记录到WORD文档或打印出来的,也是扩展性不强,查找起来不方便。
因此,以软件形式实现的通讯录成为了许多人保持联系方式的首选。
本通讯录将极有普通通讯录的主要功能,它可以对教师进行分组,并可以添加或删除组,也可以添加或删除教师,或者对已经保存的教师信息进行修改,查询功能也是必不可少的。
1.2课题的研究现状
教师通讯录应用系统是每一个教师应用通讯录的不可缺少的一个应用信息系统,它的内容对于教师的应用者来说是至关重要的,所以教师通讯录应用系统应该能够为每一个教师的应用者提供充足的信息和快捷的查询手段,大大的方便教师合理的应用通讯录。
随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对通讯录进行应用,具有着手工应用所无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高通讯录应用的效率,也是教师理财的科学化、正规化应用,与先进科学技术接轨的重要条件。
因此,开发这样一套应用软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实应用的一次很有意义的实践活动。
2系统中的主要技术
本系统使用delphi作为开发工具,Access作为数据库。
下面列出以浏览器为基础和以客户端为基础的应用程序技术的对比:
1、以浏览器为基础的应用程序的优缺点
(1)易于安装:
可以用于许多桌面型计算机,并且与教师使用的操作系统平台无关,只要其安装浏览器就能运行程序。
(2)易于部署与维护:
只需要在服务器端进行部署和维护工作。
(3)必须联网操作:
工作效率和网络是否延迟有关。
(4)不能充分利用客户端计算机的资源:
只能通过有限的HTML语言来呈现教师界面,没有利用客户端计算机的计算处理能力。
只能利用浏览器的打印功能来打印资料,不适用于企业的报表打印。
(5)网络传输量大:
由于客户端不能保存状态数据,因此必须在客户端和服务器之间传输教师界面内容以及所需的数据。
(6)安全性较低。
对于服务器来说可以通过防火墙软件来过滤数据,因为所有传输内容都是基于HTTP端口。
但很难对数据进行加密和签名以保证在传输过程中的完整性。
(7)适合电子商务或不要求严格控制客户端的应用程序。
2、客户端应用程序的优缺点
(1)充分利用客户端计算机的资源:
可以为教师提供丰富的界面元素,可以存取本机磁盘与本机应用程序接口,执行速度较快。
(2)网络传输量较小:
只需在客户端和服务器之间传输数据。
(3)安全性较高:
可以方便的在客户端和服务器执行加密和解密操作。
(4)安装、部署和维护工作较为繁琐:
对客户端计算机在操作平台和附加软件上有一定的限制和要求。
(5)可以离线工作:
前提是本地必须有缓存数据的能力,这涉及到与服务器数据同步的问题。
(6)适合企业内部应用程序。
3系统分析与设计
3.1需求分析
开发软件首先要进行的就是需求分析,通常这一步需要与客户进行广泛的交流,对于一个复杂一些的系统,可能需要与客户进行数次会议,甚至需要需求分析人员在客户处调查数月。
对于本通讯录系统,我们可以先将自己作为通讯录的使用者,从自己的角度来考察需求(在真正的项目中,这一点是十分忌讳的,需求分析人员可以帮助,诱导客户说出他的需求,而绝不能从自己的角度替客户提出需求)。
很显然,一个普通的通讯录系统,最基本的功能是记录一个教师的信息,那么,教师的信息需要有哪些呢?
这是一个在需求分析中要特别注意的问题,一般而言,通讯录使用者可能需要的信息有以下这些:
姓名、性别、工作单位、办公电话、住址、住宅电话、手机、邮箱、QQ、MSN、其他备注信息。
这样开发者了解了需要保存的每个教师的基本信息有哪些,同时,应当注意到,不是每一位教师都有工作单位,也不是每一位教师都有手机或者QQ。
因此,除了姓名与性别外,其他信息都可以是空的,但既然是通讯录,其中也至应当记录该教师的一项联系信息,所以,对上述信息记录时的要求应当为:
姓名与性别是必需的,其他所有信息至少有一项不为空。
与记录教师信息相关的操作很容易联想到有增加教师、删除教师和对教师信息进行更新3钟。
所以对教师的操作的需求归纳为以下3点:
增加新的教师、删除已存在的教师、修改已存在的教师的信息。
软件形式的通讯录与传统纸面形式的通讯录比较起来,可以实现更为方便、有效的应用。
为了便于查看及使用,通常通讯录需要对教师进行分组应用,这又成为一个新的需求挖掘点。
基于实例的简单性考虑,对于组操作假定仅有以下需求:
组增加、组删除、组改名。
对于组的操作还有一个细节性的问题,有时候有些教师可能不会被归属于任何组,此时,该教师会被归入“未分组”这个组。
也就是说,“未分组”本身也需要成为一个组,而且,它不应当可以被删除。
另外,为了避免所有人打开电脑都能随意查看机主的通讯录,本系统还应设置一个登录界面,即拥有机主的教师名和密码才能进入系统。
而作为通讯录的拥有者,同时还会拥有一个数据库,可以方便的进行教师名的添加功能。
同时登录界面也可以进行教师的注册,但是只有在拥有机主的密码才能注册成功。
另外,注册成功的教师,如果忘记了密码,也可以通过找回密码功能找回自己的密码。
3.2模块设计
从模块的角度来说,并没有刻意地进行模块的划分,相关的操作是集中在一起进行处理的。
从类的角度来说,可以将系统分为登录窗口、注册窗口、找回密码窗口、主窗口、查询窗口,追加组窗口及数据库表记录集映射类几个模块。
它们之间的关系如图3-1所示。
图3-1模块划分及模块之间的关系
3.3数据库设计
3.3.1数据表设计
数据库应用系统的核心毫无疑问是存储在数据库中的数据。
而要合理有效地存储数据,有赖于设计一个结构良好的数据库结构。
同时,对于一些比较重要的系统,可能还需要考虑到备份、同步等问题。
因此,一个系统选用何种数据库是要综合权衡各方面因素之后才能决定的。
而对于通讯录而言,它主要应用于桌面,因此没有数据同步的要求,数据量也很小,备份工作也不需要经常地进行。
所以,可以考虑用Access数据库作为存储手段。
得到上面的数据项和数据结构以后,就可以设计出能够满足教师需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
这些实体包括各种具体信息,通过相互之间的作用形成数据的流动。
图3-2为教师实体E-R图;图3-3为教师实体E-R图;
图3-4为分组实体E-R图
图3-2教师实体E-R图
图3-3教师实体E-R图
图3-4分组实体E-R图
在确定的使用数据库的类型之后,就可以对数据库进行详细的设计了。
针对需求分析,现在已经知道需要保存的信息主要包含三个方面,即登录信息、组信息和教师信息。
在设计数据库时一般会遵循“一事一地”的原则,也就是说,一类实体存储于一张表中,一张表中也仅表示一类实体。
根据这个原则,数据库中应当存在三张表,它们分别用来存储信息和教师信息,它们的表结构如表3-1、表3-2和表3-3所示。
表3-1组信息表groupInfo结构
字段
含义
类型
长度
默认值
NULL/主键
id
组id
int
主键/自增
groupName
组名
varchar
20
表3-2教师登录信息表user结构
字段
含义
类型
长度
默认值
NULL/主键
username
教师名
varchar
50
不允许空
pwd
密码
varchar
20
不允许空
answer
密保答案
varchar
255
question
密保问题
varchar
255
表3-3教师信息表people结构
字段
含义
类型
长度
默认值
NULL/主键
id
ID
int
主键/自增
groupId
所属组ID
int
1
外键
fullName
姓名
varchar
50
sex
性别
是/否
company
工作单位
varchar
255
phoneInCompany
办公电话
varchar
15
homeAddress
住址
varchar
255
phoneInhome
住宅电话
varchar
15
mobile
手机
varchar
15
邮箱
varchar
50
varchar
15
msn
MSN
varchar
50
memory
备注
varchar
255
在以数据库为核心的程序中,数据库设计的重要性不言而喻。
如果设计不合理,不仅操作数据比较麻烦,增加应用程序设计人员的工作量,数据库的性能也会受到影响。
通过进行正规化的表格设计,可以令数据库具有可读性和扩展性,同时也会提升应用的性能。
正规化就是在设计表格时,消除冗余性和不协调的从属关系的过程。
本次数据库设计中,在表people中并没有直接保存组名信息,而只是保存了一个组的ID号,这实际上是遵循数据库规范化设计原则的结果。
概念设计完成后就可以在ACCESS里面进行表的设计了。
图3-3为groupInfo表;图3-4为people表;图3-5为user表
图3-3groupInfo表的设计
图3-4people表的设计
图3-5user表的设计
在需求分析阶段,已经明确指出“未分组”是不可以被删除的,也就是说,它应是系统固有的,而且,为了便于编程,“未分组”的组ID希望被设定为1,而字段id被设计为自增的字段。
因此,表groupInfo建立完成后,应首先手工在其中输入组名“未分组”,以便其对应的id为1。
3.3.2设计参照完整性规则
使用数据库存储数据与使用普通文件存储数据有一个区别是,在数据库中不仅可以存储数据,还可以保存数据之间的关系,这是数据库与普通数据文件之间的一个本质区别。
在数据库中保证数据的完整性可以从实体完整性、域完整性及参照完整性三个方面入手。
前两者是在表中完成的完整性规则,而参照完整性则正式通过表之间的关系来实现的。
所谓参照完整性是指当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确。
所以关系对于保证数据的完整性有着非常重要的作用。
在本实例中,数据库中的关系主要是表people中的字段groupId对应于表groupInfo的字段id,换句话说,表groupInfo的主键是字段id,表people的外键是字段groupId。
在ACCESS中,建立关系的步骤如下:
①启动SQLSERVER,打开数据库address。
②在菜单栏选择“表设计器”-->“关系”,此时将显示关系窗口,如图3-6所示。
图3-6外键关系对话框
用鼠标选中左边的FK_people_people之后,点击右边的“表和列规范”,可以看到子分支下有四个选项:
外键基表,外键列,主/唯一键基表,主/唯一键列。
点击右边的“…”,就会出现表和列对话框,如图3-7所示。
图3-7表和列对话框
在这里面就可以选择主外键关系。
另外为了实行参照完整性,在外键关系对话框中的右边,还要将INSERT和UPDATA规范中的“更新规则”和“删除规则”选为“层叠”。
默认情况下是“无操作”,这样就起不到级联的作用了。
如图3-8所示。
图3-8设定关系
“更新规则”是指当表groupInfo中字段id的值发生变化时,表people中字段groupId的对应值也自动跟随变化。
这样可以不因表groupInfo中字段id值的变化而丢失了原先在两张表中存在关系的数据。
“删除规则”是指当删除表groupInfo中的某一条记录时,表people的字段groupId与表groupInfo被删除记录字段id值相同的记录也将被删除。
使用“删除规则”可以确保每一个教师都属于一个特定组,这样可以避免在表people中字段groupId的值在表groupInfo中找不到的情况。
3.4创建表记录集类
3.4.1建立ODBC数据源
在MFC中创建记录集类时需要用到ODBC数据源,因此需要先为通讯录数据库设定ODBC数据源,其具体创建步骤如下:
①进入“控制面板”,然后选择进入“系统和安全”。
②在“系统和安全”窗口进入“应用工具”。
③进入“应用工具”窗口之后,双击“数据源(ODBC)”。
④在弹出的“ODBC数据源应用器”窗口中先选择“系统DNS”选项卡,然后单击“添加”按钮。
⑤创建新数据源首先要选择数据源的驱动程序,通讯录的数据库采用SQL,因此,此处选择“SQLServer”,然后单击“完成按钮”。
如图3-9所示。
⑥在随后弹出的“创建到SQLServer的新数据源”对话框中将“名称”设定为“address”,“服务器”从下拉表中选择自己正在使用的SQL服务器。
点击下一步继续。
⑦接下来会弹出一个SQLServer验证登录ID的真伪对话框,此处选择“使用网络登录ID的WindowsNT验证”,继续下一步。
⑧这时会让我们选择默认数据库,我们从下拉表中找到此前建立的数据库address,然后单击下一步。
⑨最后一步默认系统的设定,直接单击“完成”。
这样,“ODBC”数据源应用器的“系统DNS”选项卡中将出现新设定的数据源address。
至此,ODBC数据源设定完成。
图3-9选择数据源驱动程序
3.4.2扩展记录集类
在设定完ODBC数据源后,就可以在程序中利用它自动生成与数据表相关联的记录集类了,其实现的具体步骤如下:
①选择菜单“视图”-->“类视图”,右键单击“Addresslist”,在弹出菜单中选择“添加”-->“类”。
如图3-10所示。
图3-10添加类
②此时将会显示一个如图3-11所示的对话框,此时我们在左侧选择“MFC”,右侧选择“MFCODBC使用者”,单击添加。
图3-11添加MFCODBC类
③随后将弹出如图3-12所示的对话框,点击“数据源”,在“机器数据源”中选择“address”点击确定。
此时会弹出一个SQLServer登录对话框,单击确定进行连接。
图3-12选择数据源
④连接成功之后会出现如图3-13所示的选择数据库对象的对话框,在这里我们选择groupInfo,然后单击确定按钮,随后MFC会自动生成类CGroupInfo的代码。
图3-13选择数据库对象
⑤参考上述生成类CGroupInfo的步骤,生成记录集类CPeople和Cuser的代码。
4系统的实现
4.1主窗口设计
4.1.1主窗口信息显示
本系统采用了以对话框为主体的界面方案,在建立了程序框架及扩展了相关记录集后就可以开始进行具体功能上的实现了。
通讯录最重要的功能便是显示教师信息,因此主窗口的主要功能也应当是查询及显示教师信息。
根据此前对系统需求的分析,教师的信息应包含姓名、性别、工作单位、办公电话、住址、住宅电话、手机、邮箱、QQ、MSN及备注信息,教师的分组列表则可以用树控件进行显示,所以主窗口中应显示上述全部信息。
基于上述考虑,在资源视图中更改对话框(即ID为ID_ADDRESSLIST_DIALOG的对话框)的大小并按图4-1所示添加相应控件。
其中有一个树控件,然后是多个静态文本和编辑框,一个单选按钮,数个按钮用来实现增删改查的功能。
图4-1主界面
控件添加好了之后,分别对它们进行添加变量,具体方法如下:
①右键单击某个控件,在弹出的菜单中选择“添加变量”。
②此时会弹出一个对话框,在里面可以选择变量的类型和类别,然后输入变量名,最后单击完成按钮即可完成一个变量的添加。
如图4-2所示。
图4-2添加变量
③重复上述步骤,添加其他变量。
在上述步骤中定义的变量在MFC中是如何与相应的控件联系起来的呢?
通过在类CAddressListDlg中找到函数DODataExchange,可以发现MFC正是在这个函数中为变量和控件建立了映射关系,其代码如下:
voidCAddressListDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAddressListDlg)
DDX_Control(pDX,IDC_TREE_LIST,m_tree_list);
DDX_Text(pDX,IDC_EDIT_ADDRESS,m_address);
DDX_Text(pDX,IDC_EDIT_COMPANY,m_company);
DDX_Text(pDX,IDC_EDIT_MAIL,m_mail);
DDX_Text(pDX,IDC_EDIT_MEMORY,m_memory);
DDX_Text(pDX,IDC_EDIT_MOBILE,m_mobile);
DDX_Text(pDX,IDC_EDIT_MSN,m_msn);
DDX_Text(pDX,IDC_EDIT_PHONEATHOME,m_phoneInHome);
DDX_Text(pDX,IDC_EDIT_PHONEINCOMPANY,m_phoneInCompany);
DDX_Text(pDX,IDC_EDIT_QQ,m_qq);
DDX_Radio(pDX,IDC_RADIO_MAN,m_sex);
DDX_Text(pDX,IDC_EDIT_NAME,m_name);
//}}AFX_DATA_MAP
DDX_Control(pDX,IDC_About,m_About);
}
程序启动后,显示主窗口时需要对左侧的树控件进行初始化,它应显示当前系统中所有的分组及隶属于不同组的教师成员。
树控件初始化的工作由函数InitTreeList完成,它将在初始化函数OnInitDialog中被调用。
函数InitTreeList首先调用树控件的DeleteAllItems方法清空控件中原有的项目,然后从数据库中查询组信息,并依次将组名插入到树控件中,在每插入一个组后,立即将隶属于该组的教师添加到该组下。
由MFC向导生成的记录集类在生成实例时需要传入一个CDatabase类型的引用参数,因此在使用类CGroupInfo及CPeople之前需要先构建CDatabase类的实例,然后将它的引用作为参数构建类CGroupInfo及CPeople的实例。
在产生记录集的实例后(函数InitTreeList中的实例名分别为gi和people),将查询SQL语句传入其Open方法打开记录集,然后通过树控件的InsetItem方法将组名或教师姓名作为树控件的一个条目插入,为了能够在控件中唯一地标识每一个组及教师,还需要调用SetItemData方法将组ID或教师ID绑定到控件中的相应条目上。
在对数据库的操作方面,函数中还出现了记录集的MoveNext方法及数据库的Close方法,它们的作用分别是移动记录集指针到下一条记录,以及关闭当前数据库连接。
InitTreeList()函数如下所示。
voidCAddressListDlg:
:
InitTreeList()
{
m_tree_list.DeleteAllItems();
CStringstrPeoPleQuery;
strPeoPleQuery="SELECT*FROMgroupInfoORDERBYidDESC";
CDatabasedb1;
CGroupInfogi(&db1);
gi.Open(AFX_DB_USE_DEFAULT_TYPE,strPeoPleQuery);
while(!
gi.IsEOF())
{
HTREEITEMhGroup=m_tree_list.InsertItem(gi.m_groupName);
m_tree_list.SetItemData
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 教师 通讯录 应用 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)