基于c语言的电话薄管理系统设计与实现.docx
- 文档编号:27631029
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:26
- 大小:110.59KB
基于c语言的电话薄管理系统设计与实现.docx
《基于c语言的电话薄管理系统设计与实现.docx》由会员分享,可在线阅读,更多相关《基于c语言的电话薄管理系统设计与实现.docx(26页珍藏版)》请在冰豆网上搜索。
基于c语言的电话薄管理系统设计与实现
《高级语言程序设计》
——基于c语言的通讯录管理系统的设计与实现
姓名:
王炳旭
学号:
1216F0610119
指导老师:
孟芸
系别:
信息工程系
专业班级:
计科F1201班
《高级语言程序设计》课程设计任务书
设计题目
基于c语言的通讯录管理系统的设计与实现
设计容与要求:
1.设计容
输入功能:
记录信息并保存文件中。
显示功能:
输出文件中所有信息。
查找功能:
查询所需通讯信息。
删除功能:
删除无用信息。
2.设计要求
◆建立通讯录信息,信息包含、性别、班级、,保存在文件中;
◆能够输出文件中所有通讯录信息。
◆能够提供按、班级或性别查询信息;
◆能够提供按删除通讯录信息的功能;
时间安排:
九月:
选择自己所要设计的程序,查阅书籍、网上查询,收集所需资料解决疑惑。
十月:
开始编写程序,不断分析。
十一月:
代码实现,程序能够运行。
十二月:
写报告,完成课程设计。
设计环境:
VC++6.0
实现目标:
能够提供查询和删除通讯录信息的功能;
能够提供按或班级、性别查询;
能将通讯录保存在文件中;
能够输出通讯录信息。
《高级语言程序设计》课程设计教师评阅成绩表
系名称:
信息工程系
学号
1216F0610119
王炳旭
专业
计算机科学与技术
指导教师
孟芸
教师评阅平均得分
设计题目
基于c语言的通讯录管理系统的设计与实现
指导教师评语与得分
指导教
师评语
评分项
目分值
指导教师对课程设计评分
制定题目、撰写任务书15
调查研究查阅整理资料10
学习态度与规要求10
数据处理、文字表达10
论文(设计、创作)质量和创新意识
55
合计
100
得分
指导教
师签名
此表由教师填写
《高级语言程序设计》课程设计承诺书
设计题目
基于c语言的通讯录管理系统的设计与实现
姓名
王炳旭
所学专业
计算机科学与技术
学号
1216F0610119
完成时间
2013年11月18日
指导教师
职称
孟芸
承诺容:
1.本设计是学生在指导教师的指导下独立完成的,没有抄袭、剽窃他人成果,没有请人代做,若在论文(设计、创作)的各种检查、评比中被发现有以上行为,愿按学校有关规定接受处理,并承担相应的法律责任。
备注:
学生签名:
指导教师签名:
年月日年月日
1.引言
当今时代,计算机已经成为人们生活中不可或缺的一部分,它打破了地域时间限制,改变了人们的工作和生活方式。
通讯录系统能方便用户的需求,满足用户迅速、准确的查找修改或者删除联系人信息,把各个联系人信息以文档保存。
本文介绍了简易通讯录管理系统在VC++6.0环境下的实现过程:
系统的分析,功能模块的设计,系统的流程图与运行界面。
此系统的主要管理的信息由:
联系人的、班级、性别、,加深对c++语言程序设计的理解,提高算法设计的能力,锻炼编程的能力。
用c++语言编程一个通讯录管理系统软件,要求能实现通讯录管理系统中的增加信息,删除信息,显示通讯里的所有信息,按名字查询信息,保存通讯录,退出系统。
1.1设计容
通讯录管理系统设计容:
输入功能:
记录信息并保存文件中。
显示功能:
输出文件中所有信息。
查找功能:
查询所需通讯信息。
删除功能:
删除无用信息。
1.2设计任务与具体要求
1.设计任务:
自学C语言中相关知识,设计出通讯录管理系统。
2.设计要求:
◆建立通讯录信息,信息包含、性别、班级、,保存在文件中;
◆能够输出文件中所有通讯录信息。
◆能够提供按、班级或性别查询信息;
◆能够提供按删除通讯录信息的功能;
时间安排:
九月:
选择自己所要设计的程序,查阅书籍、网上查询,收集所需资料解决疑惑。
十月:
开始编写程序,不断分析。
十一月:
代码实现,程序能够运行。
十二月:
写报告,完成课程设计。
1.3系统环境
VC++6.0
2.总体设计
2.1系统功能简介
该通讯录管理系统分为以下四个功能:
1.输入功能:
可以添加通讯录记录,选择添加人数,依次输入、班级、性别、后,提示信息保存成功,按任意键会返回主菜单。
2.显示功能:
可以输出所有通讯录里的记录。
3.查找功能:
可以选择、班级、性别三种方式查询信息。
所输入信息不存在时,提示该信息不存在,返回主菜单。
4.删除功能:
在显示的所有通讯录信息里,输入要删除通讯录信息的,即删除成功。
5.退出:
结束运行,退出程序。
2.2总体程序框图
该通讯录系统共有四个功能模块。
打开程序之后,先进入主菜单,根据需求选择功能,分别有输入、显示、查找、删除。
输入功能可以添加通讯录记录,选择添加人数,依次输入、班级、性别、。
显示功能可以输出所有通讯录里的记录。
查找功能可以选择、班级、性别三种方式查询信息。
删除功能可以删除无用的信息。
图2-1总流程图
2.3各个模块之间的主要关系
该系统用下面四个功能模块编写,每个模块执行不同的功能,体现了模块化设计的思想。
下面四个模块都是利用C语言文件,向文件中追加数据、读取、查询数据和删除数据。
输入:
用fopen()建立一个文本文件,然后用fwrite()向其中输入数据,再用fclose()函数关闭并保存文件。
显示:
通过循环依次输出文件中的数据,即输出所有通讯录里的信息。
查找:
为了满足用户的实际需求,设计了三种查询方式,可以用、性别、班级三种方式查找通讯录记录。
这里用到strcmp()函数,通过比较字符串是否一样来判别是否找到相关信息,找到后,就把文件中的数据赋给对应的变量,再把变量所带的值输出到屏幕上。
删除:
输入你要删除的人的后,系统会自动删除文件中的记录。
3.详细设计
3.1各个模块的程序流程图与运行界面
1.输入模块
在主菜单选择1,进入输入界面,按显示输入记录人数和信息,信息有、班级、性别、,数据可以自动从存保存到文件中。
如图3.1-2。
显示信息保存成功后,输入任意键返回主菜单。
图3-1输入流程图
图3-2输入运行界面
2.显示模块
用户进入显示功能,显示功能利用循环显示文件中所有信息,所有信息显示成功后,会提示所有信息显示成功,若文件中没有信息,显示信息不存在,输入任意键可以返回主菜单。
如图3-3。
图3-3显示流程图
图3.1-4显示运行界面
3.查找模块
进入查找界面,选择要查找信息的方式,有、班级、。
输入条件,用strcmp()函数通过比较字符串是否一样来判别是否找到相关信息,找到则显示此所有信息,未找到显示“该信息不存在”。
如下图3-5。
输入任意键可以返回主菜单。
图3-5查找流程图
根据班级查找信息:
图3-6
根据性别查找信息:
图3-7
根据查找信息:
图3-8
4.删除模块
在主菜单选择4,进入删除功能,根据自动显示的文件中的所有信息,输入要删除信息的,就可以在文件中永久删除此信息,若删除成功显示删除信息成功。
如下图3-9。
图3-9删除流程图
图3-10删除运行界面
3.2关键代码分析说明
1.结构体的创建:
结构体(structure)是一个或多个一样数据类型或不同数据类型的变量集合在一个名字下的用户自定义说明。
为了增强程序的可读性,使程序更简洁,c程序员经常用typedef为结构体类型定义一个更简单、直观、有意义和可读性更好的别名。
typedefstructaddress
{
charname[20];/**/
charclas[20];/*班级*/
charsex[10];/*性别*/
chartel[20];/**/
}ADDRESS;/*结构体*/
ADDRESSadr[N],temp[N];
起初我创建结构体是typedefstructaddress{}ADDRESSadr[N];这是错误的,没有真正明白结构体的知识。
通过我上网查询,除了上边的一种方法,还可以structaddress{};typedefstructaddressADDRESS;ADDRESSadr[N];typedef是把结构名重命,换成一个简单的。
2.文件
打开文件
if((fp=fopen("f:
\\通讯录.txt","r"))==NULL)
{
printf("打开文件失败!
请按任意键返回主菜单!
\n");
scanf("%s",&q);
system("cls");
main();
}
读取文件
while(!
feof(fp))
{
fread(&temp[m],sizeof(ADDRESS),1,fp);
m++;
}
关闭文件
fclose(fp);
这是一个重要的知识点,也是我最弱的一点,我通过询问我的指导老师学会并掌握。
我们要把信息从存保存到文件中,再从文件中把信息读取到存,只有在存中才可以修改信息。
fp=fopen("f:
\\通讯录.txt","a");文件名字和文件地点可以自己设置。
a是添加的意思,不清除文件中本有的信息,w则是重写文件中的信息。
3.3程序使用说明
随着网络与信息技术的发展,人们的联系人越来越多,需要联系的人逐渐增多,需要记录的
信息也逐渐增多。
以前是将这些信息手写到通讯录中,这很容易造成信息的丢失,而且查找起来
很不方便。
本系统主要实现同学信息的管理,包括同学信息的添加、查询和删除,与一些辅助功能。
4.总结
通讯录管理系统能够较好的管理我们的通讯录记录。
在编写过程中,我逐步了解到程序模块化设计的思想含义。
模块化思维就是编程任何一个功能模块或者函数的时候,要多想一些,不要局限于完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极避免重复性的工作。
另外,我们要重视程序中的算法,算法是程序的灵魂,我们要学习先进的算法,来提高自己的编程能力。
在整个程序的设计中,语法的错误还是比较容易检查出来,但是对于那些逻辑思维问题方面的缺陷不易查出,因此常常出现系统提示没有错误但是仍然不能够正常运行的境况,尽管有很多不足之处,但我在整个系统程序设计的过程中,我可以感受到自己对C语言有了一定的掌握,对整体的把握度也提高了很多。
通过这次课程设计,我对c语言有了更深的了解,增强了程序的编写能力,提高了专业知识,对程序的模块化观念也更加清晰。
在程序的运作和调试过程中,出现了很多错误,通过请教指导老师和自己反复的复习课本知识以与参考课外书籍,不停地修改和调试,我终于完成了这个程序。
致
历时将近三个月的时间终于将通讯录课程设计完成,从课题的选择到最终完成,孟芸老师始终都给予了我细心的指导和不懈的支持。
在编写程序的过程中遇到了无数的困难和障碍,都在老师和同学的帮助下解决了。
另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。
也要感这篇报告所涉与到的各位学者,本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成此次课程设计。
尤其要强烈感我的指导老师——孟芸老师,她作为一名优秀的、经验丰富的教师,具有丰富的专业知识和实践经验,她对我进行了无私的指导和帮助,不厌其烦的帮助我进行程序的修改和改进,并对我提出严格要求,引导我不断开阔思路,使我增长了知识,锻炼了心态,培养了良好的习惯。
在此向帮助和指导我的孟芸老师表示最衷心的感!
参考文献
[1]郭翠英.c语言课程设计案例精编.市三里河路6号.中国水利水电
[2]小红,志刚.c语言大学实用教程学习指导(第三版).市海淀区万寿路173信箱.电子工业
[3]明日科技.c语言项目案例分析.清华大学学研大厦A座.清华大学
[4]小红,志刚.c语言大学使用教程(第三版).市海淀区万寿路173信箱.电子工业
附录
源程序
1.头文件
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#defineN100
inti,j;/*定义全局变量*/
typedefstructaddress
{
charname[20];/**/
charclas[20];/*班级*/
charsex[10];/*性别*/
chartel[20];/**/
}ADDRESS;/*结构体*/
ADDRESSadr[N],temp[N];
/*函数声明*/
intmain();
voidenter();/*输入模块*/
voidsearch();/*查找模块*/
voiddel();/*删除模块*/
voiddisplay();/*显示模块*/
voidxingming();
voidbanji();
voidxingbie();
2.主菜单
#include"xu.h"
intmain()
{
intn;
system("cls");
printf("\n\t\t\t\t通讯录主菜单\n\n\n");
printf("\n\t\t\t\t1.输入信息\n");
printf("\n\t\t\t\t2.显示信息\n");
printf("\n\t\t\t\t3.查找信息\n");
printf("\n\t\t\t\t4.删除信息\n");
printf("\n\t\t\t\t0.退出\n");
printf("\n\t\t请选择执行编号:
");
scanf("%d",&n);
switch(n)
{
case1:
enter();break;
case2:
display();break;
case3:
search();break;
case4:
del();break;
case0:
exit(0);
}
}
3.输入界面
/*函数功能:
输入信息
函数参数:
字符变量q表示代数
函数返回值:
无*/
#include"xu.h"
voidenter()
{
charq;
FILE*fp;
system("cls");
printf("输入记录人数:
");
scanf("%d",&j);
printf("\n\n输入记录信息\n");
printf("name\t\tclas\t\tsex\t\ttel\n\n");
for(i=0;i { printf("----------------------------------------------------\n\n"); scanf("%s%s%s%s",&adr[i].name,&adr[i].clas,&adr[i].sex,&adr[i].tel); printf("----------------------------------------------------\n\n"); } fp=fopen("f: \\通讯录.txt","a"); for(i=0;i { fwrite(&adr[i],sizeof(ADDRESS),1,fp); } fclose(fp); printf("信息保存成功! \n\n"); printf("请输入任意键返回: "); scanf("%s",&q); system("cls"); main(); } 4.显示界面 /*函数功能: 显示文件所有信息 函数参数: 字符变量q表示代数 函数返回值: 无*/ #include"xu.h" voiddisplay() { FILE*fp; charq; intm=0; system("cls"); if((fp=fopen("f: \\通讯录.txt","r"))==NULL) { printf("打开文件失败! 请按任意键返回主菜单! \n"); scanf("%s",&q); system("cls"); main(); } while(! feof(fp)) { fread(&temp[m],sizeof(ADDRESS),1,fp); m++; } fclose(fp); for(i=0;i printf("%s%s%s%s\n\n",temp[i].name,temp[i].clas,temp[i].sex,temp[i].tel); printf("所有信息显示成功! \n\n\n"); printf("请输入任意键返回主菜单进行其他操作: "); scanf("%s",&q); system("cls"); main(); } 5.查找界面 /*函数功能: 查找信息 函数参数: 常量m表示次数,字符变量q表示代数 函数返回值: 无*/ #include"xu.h" voidsearch() { chars[20]; charq; FILE*fp; intflag=0,m=0,z; system("cls"); printf("\t\t\t1.按查找\n\n\t\t\t2.按班级查找\n\n\t\t\t3.按性别查找\n\n"); printf("\t\t\t请选择查找方式\t\t"); scanf("%d",&z); switch(z) { case1: xingming();break; case2: banji();break; case3: xingbie();break; } } voidxingming() { chars[20]; charq; FILE*fp; intflag=0,m=0,z; system("cls"); if((fp=fopen("f: \\通讯录.txt","r"))==NULL) { printf("打开文件失败! 请按任意键返回主菜单! \n"); scanf("%s",&q); system("cls"); main(); } while(! feof(fp)) { fread(&temp[m],sizeof(ADDRESS),1,fp); m++; } fclose(fp); printf("请输入查找信息的: "); scanf("%s",s); for(i=0;i { if(strcmp(temp[i].name,s)==0) { flag=1; printf("name\t\tclas\t\tsex\t\ttel\n\n"); printf("%s\t\t%s\t\t%s\t\t%s\n\n\n",temp[i].name,temp[i].clas,temp[i].sex,temp[i].tel); } } if(flag==0) printf("该不存在! \n\n"); printf("请输入任意键返回: "); scanf("%s",&q); main(); } voidbanji() { chars[20]; charq; FILE*fp; intflag=0,m=0,z; system("cls"); if((fp=fopen("f: \\通讯录.txt","r"))==NULL) { printf("打开文件失败! 请按任意键返回主菜单! \n"); scanf("%s",&q); system("cls"); main(); } while(! feof(fp)) { fread(&temp[m],sizeof(ADDRESS),1,fp); m++; } fclose(fp); printf("请输入查找信息的班级: "); scanf("%s",s); for(i=0;i { if(strcmp(temp[i].clas,s)==0) { flag=1; printf("name\t\tclas\t\tsex\t\ttel\n\n"); printf("%s\t\t%s\t\t%s\t\t%s\n\n\n",temp[i].name,temp[i].clas,temp[i].sex,temp[i].tel); } } if(flag==0) printf("该信息不存在! \n\n"); printf("请输入任意键返回: "); scanf("%s",&q); main(); } voidxingbie() { chars[20]; charq; FILE*fp; intflag=0,m=0,z; system("cls"); if((fp=fopen("f: \\通讯录.txt","r"))==NULL) { printf("打开文件失败! 请按任意键返回主菜单! \n"); scanf("%s",&q); system("cls"); main(); } while(! feof(fp)) { fread(&temp[m],sizeof(ADDRESS),1,fp); m++; } fclose(fp); printf("请输入查找信息的性别: "); scanf("%s",s); for(i=0;i { if(strcmp(temp[i].sex,s)==0)/*比较字符串是否相等*/ { flag=1; printf("name\t\tclas\t\tsex\t\ttel\n\n"); printf("%s\t\t%s\t\t%s\t\t%s\n\n\n",temp[i].name,temp[i].clas,temp[i].sex,temp[i].tel); } } if(flag==0) printf("该信息不存在! \n\n"); printf("请输入任意键返回: "); scanf("%s",&q); main(); } 6.删除界面 /*函数功能: 删除信息 函数参数: 常量m表示次数,常量k表示循环,字符变量q表示代数 函数返回值: 无*/ #include"xu.h" voiddel() { intflag=0,k,m=0; chars[20]; charq; FILE*fp; system("cls"); if((fp=fopen("f: \\通讯录.txt","r"))==NULL)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 电话薄 管理 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)