C语言课程设计通讯录管理系统

上传人:ali****an 文档编号:121905635 上传时间:2020-02-27 格式:DOC 页数:28 大小:530KB
返回 下载 相关 举报
C语言课程设计通讯录管理系统_第1页
第1页 / 共28页
C语言课程设计通讯录管理系统_第2页
第2页 / 共28页
C语言课程设计通讯录管理系统_第3页
第3页 / 共28页
C语言课程设计通讯录管理系统_第4页
第4页 / 共28页
C语言课程设计通讯录管理系统_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《C语言课程设计通讯录管理系统》由会员分享,可在线阅读,更多相关《C语言课程设计通讯录管理系统(28页珍藏版)》请在金锄头文库上搜索。

1、中 国 地 质 大 学本科生课程论文封面课程名称 C语言程序设计 教师姓名 本科生姓名 本科生学号 本科生专业 所在院系 类别: 日期: 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目 录课程设计评语2目 录31课程论文题目42程序设计思路43功能模块图54数据结构设计55算法设计66程序代码137程序运行结果218编程中遇到的困难及解决方法279总结心得及良好建议2810致谢281课程论文题目 通讯录管理系统要求:设计具有数据插

2、入、修改、删除、显示和查询功能的电话簿管理系统。数据包括:人名、工作单位、电话号码和E-mail地址。可对记录中的姓名和电话号码进行修改。可增加或删除记录。可显示所有保存的记录。可按人名或电话号码进行查询。2程序设计思路根据题目的要求,程序应该采用结构体数组和文件系统实现。应该有动态的存储空间和文件输入、输出等操作功能;在程序中应该包括添加、显示、删除、查询和修改以及保存和退出的功能;另外还应提供键盘式选择菜单实现功能选择。3功能模块图4数据结构设计整个程序中用到的数据主要是全局变量MAX 100和字符变量name10、addr20、phnum20、email20。5算法设计1. 主函数主函数

3、的设计一般比较的简单,只提供输入,功能处理和输出部分的函数调用。其中个功能模块用菜单方式选择。菜单部分也可以写成函数。流程图程序main() /*主函数*/int n; /*变量保存选择菜单数子*/creat(); do printf(nt*n); printf(nnt*WELCOME TO USE!*n); printf(nt*n); printf(nntt*Please make a choice below*n); printf(ntt1.Add a piece of meg); printf(ntt2.List all the meg); printf(ntt3.Delete a pi

4、ece of meg); printf(ntt4.Find a piece of meg); printf(ntt5.Alter a piece of meg); printf(ntt6.Save and Quit); printf(ntt7.Create an address book); printf(nnn); printf(t*Input Your Choice:*n);scanf(%d,&n); switch(n) /*输入n的在1-6之间执行switch */ case 1: Add(); /*添加模块*/ break; case 2: List(); /*显示模块*/ break

5、; case 3: Delete(); /*删除模块*/ break; case 4: Find(); /*查询模块:分为名字查询(0)和电话号码查询(1)*/ break; case 5: Alter(); /*修改模块:分为修改名字(0)和修改电话号码(1)*/ break; case 6: exit(0); /*退出模块*/ break; case 7: creat(); /*带回链表起始地址*/ fclose(fp); default: /*输入的n不在1-6之间执行default */ printf(nt*n); printf(nt The num should be 1-6! n)

6、; printf(nt*n); break; while(1); 2.各功能模块设计数据结构通讯录的数据信息:人名、工作单位、电话号码、E-mail地址均可以采用字符型数组;可以采用结构体的形式,把各信息作为结构的成员,由于通讯录要具有添加、查找、和删除的功能,所以整个通讯录采用链表比较容易的实现以上功能。用结构体变量作为链表中的接点是最合适的。结构体变量可以是指针类型,我们可以用这个指针类型的成员来存放下一个结点的地址。结构体的类型如下: struct persons typedef struct p char name10 char name10; char addr20; char ad

7、dr20; char phnum20; char phnum20; char email20; char email20; personsMAX; struct p *next; p,*linklist;struct persons类型为每个链表成员; typedef struct p为一个动态的结点,它的成员next存放下一个结点的地址。以下为各模块分析时要用的指针: linklist head=NULL,t=NULL; /*定义头指针和尾指针*/ p *s,*p0,*p1,*p2,*p3,*p4,*p5; int i; char name110,ch; char str120 ; FILE

8、 *fp; /*定义文件指针*/(1)输入模块程序void creat() /*将文件的信息读入结构体数组在转存入链表中*/int j;long k; fp=fopen(people.txt,r+);/*打开文件*/ if(fp!=NULL) for(i=1;iname,personsi.name); strcpy(s-addr,personsi.addr); strcpy(s-phnum,personsi.phnum);strcpy(s-email,personsi.email); if(head=NULL) /*用尾插法将其插入链表中*/ head=s; else t-next=s; t=

9、s; else fp=fopen(people.txt,w); i=1; /*不能打开另开辟一个文件*/ 添加模块 由于运用的是链表的形式,且通讯录只是按照输入的先后循序排序,所以对添加的信息采用插入末端的方式,同时添加也使用于空通讯录的信息输入。程序void Add() /*向通讯录中添加(或输入)一个人的信息*/s=(linklist)malloc(sizeof(p);s-next=NULL; printf(nnt*Please input the sbs message:*); printf(nnttname:); scanf(%s,s-name); printf(nnttAddr:); scanf(%s,s-addr); printf(nnttphnum:); scanf(%s,s-phnum);printf(nnttemai:); scanf(%s,s-email); if(head=NULL) head=s; /*若通讯录为空则添加在头指针之后相当于输入信息*/ else t-next=s;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号