基于c语言的通讯录管理系统设计与实现
更新时间:2023-04-13 16:47:01 阅读量: 实用文档 文档下载
- 大一c语言通讯录管理系统推荐度:
- 相关推荐
基于c语言的通讯录管理系统设计与实现
集团标准化小组:[VVOPPT-JOPP28-JPPTL98-LOPPNN]
《高级语言程序设计》
——基于c语言的通讯录管理系统
的设计与实现
姓名:王炳旭
学号: 1216F0610119
指导老师:孟芸
系别:信息工程系
专业班级:计科F1201班
《高级语言程序设计》课程设计任务书
设计内容及要求:
1.设计内容
输入功能:记录信息并保存文件中。
显示功能:输出文件中所有信息。
查找功能:查询所需通讯信息。
删除功能:删除无用信息。
2.设计要求
建立通讯录信息,信息包含姓名、性别、班级、电话,保存在文件中;
能够输出文件中所有通讯录信息。
能够提供按姓名、班级或性别查询信息;
能够提供按姓名删除通讯录信息的功能;
时间安排:
九月:选择自己所要设计的程序,查阅书籍、网上查询,收集所需资料解决疑惑。
十月:开始编写程序,不断分析。
十一月:代码实现,程序能够运行。
十二月:写报告,完成课程设计。
《高级语言程序设计》课程设计教师评阅成绩表
《高级语言程序设计》课程设计承诺书
目录
1.引言-------------------------------------------------------- 2
1.1设计内容 ---------------------------------------------- 2
1.2设计任务及具体要求 ------------------------------------ 2
1.3系统环境 ---------------------------------------------- 3
2.总体设计---------------------------------------------------- 3
2.1系统功能简介 ------------------------------------------ 3
2.2总体程序框图 ------------------------------------------ 3
2.3各个模块之间的主要关系 -------------------------------- 4
3.详细设计---------------------------------------------------- 4
3.1各个模块的程序流程图及运行界面 ------------------------ 4
3.2关键代码分析说明 -------------------------------------- 8
3.3程序使用说明 ------------------------------------------ 9
4.总结-------------------------------------------------------- 9
致谢---------------------------------------------------------- 9
参考文献------------------------------------------------------ 9
附录--------------------------------------------------------- 10
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为结构体类型定义一个更简单、直观、有意义和可读性更好的别名。
typedef struct address
{
char name[20];/* 姓名 */
char clas[20];/*班级 */
char sex[10];/* 性别 */
char tel[20]; /* 电话号码 */
}ADDRESS;/*结构体*/
ADDRESS adr[N],temp[N];
起初我创建结构体是typedef struct address{}ADDRESS adr[N];这是错误的,没有真正明白结构体的知识。通过我上网查询,除了上边的一种方法,还可以struct address{};typedef struct address ADDRESS;ADDRESS adr[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"
#define N 100
int i,j;/* 定义全局变量 */
typedef struct address
{
char name[20];/* 姓名 */
char clas[20];/*班级 */
char sex[10];/* 性别 */
char tel[20]; /* 电话号码 */
}ADDRESS;/*结构体*/
ADDRESS adr[N],temp[N];
/* 函数声明 */
int main();
void enter();/*输入模块*/
void search();/*查找模块*/
void del();/*删除模块*/
void display();/*显示模块*/
void xingming();
void banji();
void xingbie();
2.主菜单
#include "xu.h"
int main()
{
int n;
system("cls");
printf("\n\t\t\t\t 通讯录主菜单\n\n\n");
printf("\n\t\t\t\t 1.输入信息\n");
printf("\n\t\t\t\t 2.显示信息\n");
printf("\n\t\t\t\t 3.查找信息\n");
printf("\n\t\t\t\t 4.删除信息\n");
printf("\n\t\t\t\t 0.退出\n");
printf("\n\t\t请选择执行编号:");
scanf("%d",&n);
switch(n)
{
case 1:enter();break;
case 2:display();break;
case 3:search();break;
case 4:del();break;
case 0:exit(0);
}
}
3.输入界面
/*函数功能:输入信息
函数参数:字符变量q表示代数
函数返回值:无*/
#include "xu.h"
void enter()
{
char q;
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" void display() { FILE *fp; char q; int m=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,tem p[i].tel); printf("所有信息显示成功!\n\n\n"); printf("请输入任意键返回主菜单进行其他操作:"); scanf("%s",&q); system("cls"); main(); } 5.查找界面 /*函数功能:查找信息 函数参数:常量m表示次数,字符变量q表示代数 函数返回值:无*/ #include "xu.h" void search() { char s[20]; char q; FILE *fp; int flag=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) { case 1:xingming();break; case 2:banji();break; case 3:xingbie();break; } } void xingming() { char s[20]; char q; FILE *fp; int flag=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].se x,temp[i].tel); } } if(flag==0) printf("该姓名不存在!\n\n"); printf("请输入任意键返回:"); scanf("%s",&q); main(); } void banji() { char s[20]; char q; FILE *fp; int flag=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].se x,temp[i].tel); } } if(flag==0) printf("该信息不存在!\n\n"); printf("请输入任意键返回:"); scanf("%s",&q); main(); } void xingbie() { char s[20]; char q; FILE *fp; int flag=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,te mp[i].se x,temp[i].tel); } } if(flag==0) printf("该信息不存在!\n\n"); printf("请输入任意键返回:"); scanf("%s",&q); main(); } 6.删除界面 /*函数功能:删除信息 函数参数:常量m表示次数,常量k表示循环,字符变量q表示代数 函数返回值:无*/ #include "xu.h" void del() { int flag=0,k,m=0; char s[20]; char q; FILE *fp; 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,tem p[i].tel); printf("请输入删除信息的姓名:"); scanf("%s",s); for(i=0;i { if(strcmp(temp[i].name,s)==0)/*比较字符串是否相等*/ { flag=1; for(k=i;k temp[k]=temp[k+1]; printf("删除信息成功\n\n"); } m--; } fp=fopen("f:\\通讯录.txt","w"); for(i=0;i { fwrite(&temp[i],sizeof(ADDRESS),1,fp); } fclose(fp); printf("请输入任意键返回:"); scanf("%s",&q); main();}
正在阅读:
基于c语言的通讯录管理系统设计与实现04-13
2015年日历A4纸免费打印(含阴历)05-01
小学生分类优秀作文06-15
台湾儿童诗歌选12-17
西红柿好营养 常吃能治十种病!06-02
人教版五年级语文下册课内阅读练习题05-26
寺庄村综合楼施工组织设计05-10
美国金融危机 - 图文01-17
MATLAB与信号与系统实验指导书(李敏 教改版)05-11
新人教版数学一年级上册课课练 - 图文06-17
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 管理系统
- 通讯录
- 基于
- 语言
- 实现
- 设计
- 中考政治试题分项解析汇编第01期专题16可持续发展战略和保护环境
- 笑一笑,人生就这样 初中作文【600字】
- 建筑施工模板安全技术规范
- 全国计算机二级ACCESS考试试题及答案
- 2022部编版小学五年级语文下册期末练习试题大全
- 输煤栈桥土建工程施工方案(0331阅)
- 梨园古典剧院项目互动策划方案
- 公司员工手机领用协议
- GRE作文新思维_Dincyfeng
- 2022年吉林省长春市中考英语试卷及答案
- 2010年中考英语语法复习提要
- 2014年普通高等学校招生全国统一考试(全国新课标Ⅰ卷)数学试题(
- 河南省南阳市高一秋期期末数学2015年--2022年五年真题含详细答案
- 2022年全县建设工程安全隐患大排查暨危大工程专项检查第四检查组
- 恒压供水系统毕业论文 (1)
- 药物分析试题及答案大全
- 世界水日中国水周活动方案
- 青铜葵花试题及答案(20221122154143).docx
- 《黄金分割》说课材
- 业主大会具体事项模板