昆明理工大学管理信息系统课程设计
通讯录管理系统
学 院 计算机科学与技术学院 姓 名 黄亚军
学 号 200910405229 指导教师姓名
王剑
2012年 05月27 日
昆明理工大学管理信息系统课程设计 .......................... 1
摘要
参考文献 .............................................. 25
摘要:
通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。
随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。
关键词:通讯录 管理信息系统 计算机科学 用户
一、前瞻 1.开发背景简介
随着信息活动在国民经济中主导地位的确立和信息产业的崛起信息资源管理(Informetion Resouces Management,简称IRM)作为一个专有名词和的学科逐渐发展起来。如何积极开发、合理配置和有效利用信息资源,日益成为社会生活中亟待解决的问题。由于计算机和通信技术的高速发展,推广应用计算
机进行信息、管理成为推动信息化工作的重要内容,管理信息系统正是应用计算机信息化过程中出现的新生事物。它是一个利用计算机软硬件资源进行电子数据处理的人——机系统,它能提供信息,支持企业或组织的运行,具有管理和支持决策的功能利用计算机能把生产经营过程中的巨大数据流收集组织起来。经过处理转换为对各部门不可缺少的数据,经过对这些数据的分析使其变为各级管理人员做出决策具有重要意义的信息。总之,管理信息系统用于管理中可以大大减轻管理人员的工作负担,提高工作效率,使管理更加程序化、科学化。
对一个组织而言,内部管理的好坏直接关系到组织的存在与良好运行,而内部管理中非常重要的一项就是对他人的联系,他人的具体情况,如:手机号、电子邮箱、家庭住址„„;一旦工作人员没有及时出现在自己的岗位时、及其他情况发生变化,可以迅速联系或找到本人甚至其家人及时了解情况;引入计算机管理信息系统,可以提高工作效率,改善管理情况,使管理工作系统化、科学化、提高整体的管理的水平。
本系统是针对通讯录管理系统编写的。对于许多人来说,已经认识到一个好的通讯录是很必要的,可以方便和他人的联系;但是应用计算机来进行管理,他们还无法自己实现,这就需要有专门的管理软件来帮助实现。
随着科技的进步和信息产业的飞速发展,通讯录成为了现代生活中一个重要的工具。本通讯录管理系统利用计算机对通讯录进行统一管理,包括添加、修改、查询记录等功能,实现通讯录管理工作的系统化、规范化和自动化,为人们的工作和生活提供便利。整个系统程序采用c语言来实现。c语言是目前国际上比较流行的计算机高级编程语言之一,因其简洁、使用方便且具备强大的功能而受到编程人员的普通青睐。它既适合作为系统描述语言,也可用来编写系统软件,还可用来编写应用软件。
2 管理信息系统的发展趋势
现代管理信息系统软件的规模越来越大,且管理思想越来越复杂,以至于超出了软件开发者在合理的时间和价值内设计、描述、开发和验证它们的能力。
因此,在开发管理信息系统的时候,需要利用可靠的构件,或者是以前开发的很小但经过验证的较小的程序模块,在可接受的时间范围内组建出可靠而复杂的软件系统。
一般情况下,管理信息系统的体系结构采用自上而下的纵向分层、横向分块来设计实现。分层为管理软件的复杂度及重用提供了一个很好的解决方法,在分层系统的等级组织形式中,每一层都给下一层提供服务,对其下层则要求得到服务。分块指按信息系统软件实现的功能将软件分为若干块,每一块既是一的子系统,又是大系统的一个组成部分。块与块之间通过数据表进行耦合。
在确定的分层分块的体系结构中,再采取自下而上的方法,首先,对最底层的功能模块,对该功能模块包含的管理思想标准化、模型化,使其具有通用性,再进行构件化设计,并按照软构件应该具有的可移植性、互操作性、扩展性、可配置性和可维护性等特点,进行参数化设置;其次,对该功能的上一层进行构件化改造,减少模块间的重叠,这样层层改造之后,对于类似企业的管理信息系统的开发,只需要针对该企业的个性,对某些局部的构件进行改动就可以完成了
3.开发的目的和意义
计算机已经成为我们学习和工作的得力助手,使用其可方便的管理通讯录 今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域。
现在我国的通讯录管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
我作为一个计算机应用专业的毕业生,希望可以在这方面有所贡献。改革的总设计师同志说过“科学技术是第一生产力”,我希望能用我所学的知识编制出一个实用的程序来帮助用户进行财务管理。
开发这一系统的好处大约有以下几点:
第一、可以存储大量的通讯录信息,安全、高效; 第二、只需一档案录入员即可操作系统,节省人力; 第三、可以迅速查到所需通讯录信息。
根据2003年中国电信的调查报告显示我国的上网人数已达到1870万,互联网已经十分
普及,况且现在网上通讯已经出现,本系统为用户将来的上网作了先期工作。
4. 开发工具
Microsoft Visual Studio是一种可视化的、面向对象和调用事件
驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在 Microsoft Visual Studio环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
二、可行性分析
1. 可行性研究的前提
要求:满足对个人信息的添加、删除、修改、保存、查询; 目标:实现无纸化记录联系方式
条件、假定、:当需要保存的朋友的联系方式达到一定数量,超过了人工纸化记录能承受的劳动压力时,就必需采取新的管理手段;如用计算机对信息进行保存和查询;这样一个通讯录管理系统就可以对通讯方式的信息进行良好的管理。
2. 经济可行性 开发成本要低廉
效益:大幅度提高了“通讯方式”信息的储存和查询,为用户提供了准确的联系人信息和联系方式等。 预算:很低,个人能承受
3.技术可行性
3.1 软件需求:操作系统:WINDOWS 2000 Advance Server以上 硬件需求:2G CPU,512M 内存80G硬盘的计算机
3.2 本系统采用简单的C语言来实现,依靠其简单的语法和结构来
实现 3.3 要求掌握计算机技术:熟悉系统的功能和使用方法是系统正常
运行,熟练使用C语言
3.4 目标方案可行性
计算机设备处理大量信息,减少了人力、物理、财力的开销;
极大地提高了工作效率。高效率的管理,能提高竞争力和节
省时间,本系统的管理可以根据用户所需进行修改和完善。
3.5 操作可行性
本系统采用简单的DOS环境下文字界面,对于一般的人员也能
轻松上手。 整个系统有清晰简单的文字提示界面,简单明了,操作简单,
不需要对数据库进行深入的了解
三、需求分析
1.引言来源:http://baike.baidu.com/view/111493.htm
需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死.
需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,他在软件开发的过程中具有举足轻重的地位.大家一定要对需求分析具有足够的重视.在一个大型软件系统的开发中,他的作用要远远大于程序设计.
2.设计题目及要求:
◆ 建立通讯录信息,信息至少包含姓名、电话、通讯地址等; ◆ 能够提供添加、删除和修改通讯录信息的功能;
◆ 能够提供安不同方式查询的功能;如按姓名或电话等查询; ◆ 将通讯录保存在文件中;
◆ 能够按表格方式输出通讯录信息。
3.系统功能需求分析:
主要包含一下多种功能:
添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 查询:查询通讯录记录 修改:修改通讯录记录
四、系统设计流程
4.概要设计
系统用例图(工具:powerdesigner)
系统功能模块图:
添加 删除 修改 查询 显示 主菜单
添加:可以添加通讯录记录,依次输入姓名、电话号码、通讯地址 显示:可以以表格形式输出所有通讯录里的记录
删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话2种方式查询
修改:输入欲修改的那个人的名字后,再依次输入姓名、电话号码、通讯地址即可完成修改 保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件
5、界面设计
用户可以根据界面提示进行所需要实现的功能操作,即使是对计算机不太熟悉的人也能对其进行操作,充分体现出了其可操作性
详细设计
模块设计
程序所需要的模块:
定义联系人结构体
添加联系人模块 int add(); 删除联系人模块 int del(); 显示模块 int read(); 修改模块 int change(); 查询模块 int find();
添加联系人模块:
显示联系人模块
删除联系人模块:
查询联系人模块:
先选择查询方式,以姓名查询方式为例
修改联系人模块:修改通讯录记录
测试:
输入数据 1,1,黄冠军,110,天堂 1,2,黄亚军,111,地狱 0
预期输出 添加联系人界面,将联系人信息保存 添加联系人界面,将联系人信息保存 保存输入的信息,并返回主界面 实际输出 添加联系人界面,将联系人信息保存 添加联系人界面,将联系人信息保存 保存输入的信息,并返回主界面
显示联系人:
输入 2
预期输出 显示保存的联系人信息 实际输出 显示保存的联系人信息
查询联系人 输入 3,1,110 3,1,111 3,1,112 3,2,黄冠军 3,2,黄亚军 3,2,黄季军
测试数据 3,1,110
预期输出 进入查询方式选择界面,显示号码为110的联系人信息 进入查询方式选择界面,显示号码为111的联系人信息 进入查询方式选择界面,提示无该号码 进入查询方式选择界面,显示名为“黄冠军”的信息 进入查询方式选择界面,显示名为“黄亚军”的信息 进入查询方式选择界面,提示无此人 实际输出 进入查询方式选择界面,显示号码为110的联系人信息 进入查询方式选择界面,显示号码为111的联系人信息 进入查询方式选择界面,提示无该号码 进入查询方式选择界面,显示名为“黄冠军”的信息 进入查询方式选择界面,显示名为“黄亚军”的信息 进入查询方式选择界面,提示无此人
测试数据3,1,111
测试数据 3,1,112
测试数据3,2,黄冠军
测试数据 3,2,黄亚军
测试数据 3,2,黄季军
修改联系人测试: 输入 4,1,皇军,213,岛国 4,2,,999,公鸡 4,3,美军,222,母鸡 预期输出 将编号为1下的联系人信息修改并保存,提示修改成功 将编号为2下的联系人信息修改并保存、提示修改成功 提示无该编号 实际输出 将编号为1下的联系人信息修改并保存,提示修改成功 将编号为2下的联系人信息修改并保存、提示修改成功 提示无该编号
测试数据 4,1,皇军,213,岛国
测试数据4,2,,999,公鸡
测试数据4,3,美军,222,母鸡
查看修改后的信息:
删除联系人测试: 输入 5,皇军 5, 5,美军
预期输出 进入删除界面,删除成功并提示 进入删除界面,删除成功并提示 进入删除界面,提示无此人 实际输出 进入删除界面,删除成功并提示 进入删除界面,删除成功并提示 进入删除界面,提示无此人
7.全文总结
在本系统的开发过程中,由于本人是对JAVA以及C语言里工程项目MFC APPWIZARD不熟悉,无法开发出可操作的GUI,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。通过开发这个系统,我掌握了的项目基本开发过程,用到的知识巩固了我对Visual C#的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。 8.致 谢
从接受课题到现在完成设计论文,衷心的感谢我的指导老师王剑老师给予了精心的指导和热情的帮助,尤其在课题设计的前期准备阶段和本人的数据库的设计阶段,导师提出许多宝贵的设计意见,在最后的测试修改阶段老师在百忙之中抽出时间为我们提供了必要的帮助,这样使得我得以顺利的完成毕业设计开发工
作,在短暂的一个月的相处时间里,老师渊博的知识、敏锐的思路和实事求是的工作作风给我留下了深刻的印象,这将使得我终身受益,谨此向老师表示衷心的感谢和崇高的敬意!
参考文献
[1] 史济明等编著,软件工程-原理、方法与应用,高等教育出版社,2002 [2] 汪孝宜等,信息系统开发实例精粹(C#版),电子工业出版社,2006 [3] 张立,C#2.0宝典,电子工业出版社,2007
[4] 李兰友等编著,Visual C#.Net程序设计,清华大学出版社,2003 [5] 何玉洁编著,数据库原理与应用,机械工业出版社,2006
附录
代码
菜单头部分
#define header1 \"|---------------------电话簿--------------------------|\\n\" #define header2 \"|------- ---------- ------------------ ---------------|\\n\"
#define header3 \"| 编号 | 姓名 | 电话 | 地址 |\\n\" #define header4 \"|-------|----------|------------------|---------------|\\n\" #define end \"|---------------------------------------------------------|\"
结构体部分
typedef struct tele { int num;
char name[10];
char phonenum[15];
char address[20]; }telebook;
菜单输出部分
void menu() { system(\"cls\"); }
菜单头的输出
void printheader() /*输出菜单头*/ { }
printf(header1); printf(header2); printf(header3); printf(header4); system(\"color 2F\");
printf(\"\\n\\n\\n\");
printf(\"\\| 电话薄管理系统 |\\n\"); printf(\"\\| |\\n\"); printf(\"\\| |\\n\"); printf(\"\\|********************菜单******************|\\n\"); printf(\"\\| |\\n\"); printf(\"\\| |\\n\"); printf(\"\\| 1 增加 2 显示 |\\n\"); printf(\"\\| |\\n\"); printf(\"\\| 3 查找 4 修改 |\\n\"); printf(\"\\| |\\n\"); printf(\"\\| 5 删除 0 退出 |\\n\"); printf(\"\\| |\\n\"); printf(\"\\|******************************************|\\n\");
添加联系人模块代码 int add(telebook temp[]) {
int i;int m=0; FILE *fp; system(\"cls\");
if((fp=fopen(\"D:\\\\rex.txt\ { printf(\"打开文件有误!\");
exit(0);
}
printf(\"可以输入最多一百个人的信息!\\n\");
printf(\"如果在“编号”项输入0则退出出输入!\\n\"); for(i=m;i<(100+m);i++) { printf(\"编号:\");
scanf(\"%d\ if(temp[i].num==0) break; printf(\"姓名:\");
scanf(\"%s\ printf(\"电话号码:\");
scanf(\"%s\ printf(\"地址:\");
scanf(\"%s\
fwrite(&temp[i],sizeof(struct tele),1,fp);
}
m+=100; fclose(fp); system(\"cls\");
return 0; }
显示联系人模块代码
int read(telebook temp[])//显示,读取存储在文件中的信息 {
int count,i; FILE *fp; system(\"cls\");
if((fp=fopen(\"D:\\\\rex.txt\ { printf(\"打开文件有误!\"); }
exit(0);
printheader();
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/
if(count==0)
printf(\"\\n\\n\\n\\文件内没有信息!\\n\\n\\n\"); for(i=0;i |%-15s|\\n\ } 查找模块代码 void find() { } int n; telebook message1[20]; system(\"cls\"); system(\"color 2F\"); printf(\"\\n\"); while(1) { /*输出查找函数主菜单*/ printf(\"\\n\\n\\n\\n\"); printf(\" |-------查找功能------|\\n\"); printf(\" printf(\" printf(\" printf(\" printf(\" printf(\" | |\\n\"); | 1 按电话号码查找 |\\n\"); | |\\n\"); | 2 按姓名查找 |\\n\"); | |\\n\"); | 0 退出 |\\n\"); printf(end); fclose(fp); return 0; printf(\" | |\\n\"); printf(\" |---------结束--------|\\n\"); printf(\"输入您的查找方式:\"); scanf(\"%d\switch(n) { case 1:find1(message1);break; case 2:find2(message1);break; case 0:return;break; } getchar(); system(\"cls\"); } 按姓名查找代码 int find2(telebook temp[]) { int i,count ,t=0; char a[20]; FILE *fp; system(\"cls\"); printf(\"\\n\"); if((fp=fopen(\"D:\\\\rex.txt\ { printf(\"打开文件有误!\"); /*姓名查询*/ exit(0); } printf(\"输入要查找的名字:\"); scanf(\"%s\ getchar(); printf(\"\\n\\n\"); printheader(); for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/ for(i=0;i t=1; printf(\"|%-7d|%-10s|%-15s |%-15s|\\n\ /*输出查询到的信息*/ } } } if(t==0) { printf(\"\\a\\n\\n\\没有要查找的信息..............!\\n\\n\\n\"); printf(end); return 0; } printf(end); fclose(fp); return 0; 按号码查找代码 int find1(telebook temp[]) { int i,count,t=0 ;char n[20]; FILE *fp; /*电话号码查询*/ system(\"cls\"); printf(\"\\n\"); if((fp=fopen(\"D:\\\\rex.txt\ { printf(\"打开文件有误!\"); exit(0); } printf(\"输入要查找的号码:\"); scanf(\"%s\ printf(\"\\n\\n\"); printheader(); getchar(); for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/ for(i=0;i printf(\"|%-7d|%-10s|%-15s |%-15s|\\n\ /*输出查询到的信息*/ } } } if(t==0) { printf(\"\\a\\n\\n\\没有要查找的信息..........!\\n\\n\\n\"); printf(end); return 0; } printf(end); fclose(fp); return 0; 修改模块代码 int change(telebook temp[]) { int i,count,t=0; FILE *fp; struct tele ne[10]; system(\"cls\"); printf(\"---按编号修改---\\n\"); if((fp=fopen(\"D:\\\\rex.txt\ { printf(\"打开文件有误!\"); exit(0); } printf(\"--输入新内容--:\\n\"); printf(\"-编号:\"); scanf(\"%d\ printf(\"-姓名:\"); scanf(\"%s\ printf(\"-电话:\"); scanf(\"%s\ printf(\"-地址:\"); scanf(\"%s\ for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/ fclose(fp); for(i=0;i t=1; temp[i].num=ne[0].num; strcpy(temp[i].name,ne[0].name); strcpy(temp[i].phonenum,ne[0].phonenum); strcpy(temp[i].address,ne[0].address); getchar(); printf(\"\\n\\n\\\修改成功..........!\"); } } if(t==0) { getchar(); printf(\"\\n\\n\\\没有要修改的信息.........!\"); return 0; } } fp=fopen(\"D:\\\\rex.txt\ for(i=0;i 删除联系人代码 int del(telebook temp[]) { int i,j,count,t=0;char name1[20]; FILE *fp; system(\"cls\"); printf(\"\\n\"); if((fp=fopen(\"D:\\\\rex.txt\ { printf(\"打开文件有误!\"); exit(0); } printf(\"输入要删除的人名:\"); scanf(\"%s\ for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的fclose(fp); for(i=0;i /*查找要删除的信息*/ if(strcmp(temp[i].name,name1)==0) { for(j=i;j temp[j].num=temp[j+1].num; strcpy(temp[j].name,temp[j+1].name); strcpy(temp[j].phonenum,temp[j+1].phonenum); strcpy(temp[j].address,temp[j+1].address); } count--; printf(\"\\n\\n\\n\\\删除成功..................!\"); } } if(t==0) } { getchar(); printf(\"\\a\\n\\n\\n\\\没有要删除的信息..................!\"); return 0; } getchar(); fp=fopen(\"D:\\\\rex.txt\for(i=0;i 主函数 void main() { } telebook message[N]; int n; while(1) { menu(); printf(\"输入您的选择:\"); scanf(\"%d\getchar(); switch(n) { case 1:add(message);break; case 2:read(message);break; case 3:find();break; case 4:change(message);break; case 5:del(message);break; case 0:exit(0);break; } getchar(); } printf(\"press enter continue...............\"); 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务