通讯录管理系统设计报告

阅读: 评论:0

通讯录管理系统
学生姓名: 学院:计算机与通信工程学院 班级: 学号:
本课程设计主要是一个简单的通讯录管理系统。通过程序中的菜单编号实现数据的添加、修改、删除等操作。在本课程设计中,系统开发平台为Windows2000,程序设计语言为C语言,程序运行平台为Windws 98/2000/XP。在程序设计中采用了结构体、链表的方法实现对数据的操作。程序通过调试运行,初步实现了设计目标,不过还需要很多的完善。
关键词 程序设计;  通讯录;  C语言;
1  
对于日常生活中的人们来说,通讯录管理系统是一个非常重要,并且非常实用的工具。有了通讯录系统,人们就不用再为记不住熟人们的号码等而烦恼了,增进了人们之间的联系,让人们更加方便与朋友亲人联系了。
1.1课题背景
通讯管理系统是一个很实用的系统,不仅在人们用的手机中扮演着重要的角,在各大商业与企业的运作中也起着非常大的作用。想当初没有电子通讯录系统,人们要花很多时间去记住联系人的,而且有时候还会弄错,导致一些不必要的尴尬,有了电子通讯录系统自然记不住的问题迎刃而解了。本系统只是实现了一个简单的通讯管理,通过对数组,结构体,链表,以及各个模块的应用达到一个管理的功能。
1.2课程设计目的
C语言现在是一个应用比较广泛的语言,通过对程序的设计让我们能更好的学习和了解它的各个方面的应用,对我们今后的学习有很大的帮助。同时,在做程序的过程中锻炼了我们对程序的分析与编写能力,更锻炼了我们的实战能力,为我们以后在自己的专业取得更好的成就做了一个好的铺垫。
1.3课程设计内容
本课程设计是一个通讯录管理系统,可以实现简单的插入、删除、添加等功能
                          图1-3通讯录管理系统
2 设计思路与方案
2.1设计思路
该个人通讯录管理系统是一个对数据进行管理修改的简单系统,首先做出一个主菜单界面供用户选择需要的操作,再用各个模块来实现菜单中各单独功能的实现,例如修改数据、插入数据、添加数据等。最后写一个主函数调用模块和函数实现通讯录菜单中的各功能。
2.2操作流程图
                                              图2-1操作流程 
3 详细实现
3.1查看联系人
进入菜单后选择查看联系人序号,再选择查看联系人的类型,即可列出该类型的所有联系人。如图3-1所示。
3-1查看联系人
实现此功能的代码如下:
void output(struct phone_info *head)
{
    struct phone_info *p1=head,*p2;
    system("cls");    //清屏
    if(head==NULL)    //如果当前链表头指针为空
    {
        printf("当前没有任何联系人信息\n\n");
        system( "pause ");
        return;    //返回
    }
    printf("电话联系薄(%d条信息)\n\n",n);
    for(;;)
    {
        p2=p1->next;
        printf("姓名:%s\n",p1->name);
        printf("电话:%s\n",p1->phone);
        if(p1->type=='A'||p1->type=='a')
            printf("类别:办公类\n");
        else if(p1->type=='B'||p1->type=='b')
            printf("类别:个人类\n");
        else
            printf("类别:商务类\n");
        printf("邮箱:%s\n",p1->email);
        printf("\n");
        if(p1->next==NULL)    //如果当前指针所指向的结构体中next指向空则链表输出完毕
            break;    //返回
        p1=p2;
    }
}
3.2新增联系人
  进入菜单后选择添加序号按要求依次输入姓名、电话、类别、。如图3-2所示。
3-2新增联系人
  实现此功能的代码如下:
struct  phone_info *new_info(struct phone_info *head)//新增
{
    struct phone_info *p1,*p2,*p;
    char c;
    int flag;
    system("cls");    //清屏
    for(;;)
    {
        if(n==15)    //判断当前联系人数目是否超过系统限制
        {
            printf("存储空间已满,不能再录入新数据!\n\n");
            system( "pause");
            return head;
        }
        if(n==0)    //判断当前联系人数目是否为0
        {
            head=p1=p2=(struct phone_info *)malloc(sizeof(struct phone_info));    //新建结构体 并将结构体指针赋予链表头指针
            p1->next=NULL;
        }
        else
        {
            p1=head;
            p2=(struct phone_info *)malloc(sizeof(struct phone_info));    //新建结构体
        }
        printf("请输入要新增的联系人姓名:\n(如果输入“0”则停止新增,并返回主菜单)\n");
        scanf("%s",p2->name);
        if(strcmp(p2->name,"0")==0)    //判断输入的姓名是否为“0
        {
            free(p2);    //为“0”则释放新开辟的空间
            return head;    //返回
        }
        printf("\n请输入联系人的电话号码:\n");
        scanf("%s",p2->phone);
        for(flag=1,p=head;n!=0&&p!=NULL;)    //判断是否输入了相同的联系人电话
        {
            if(strcmp(p2->phone,p->phone)==0)
            {
                printf("\n录入了相同的联系人电话\n\n");
                system( "pause ");
                flag=0;    //标志位赋“0
                free(p2);
                system("cls");
                break;    //退出循环
            }
            p=p->next;
        }
        if(flag==0)    //判断标志位是否为“0
            continue;    //如果为“0”则进入下一次循环
        printf("\n请输入联系人的类别:\n(\"A\"为办公类 \"B\"为个人类 \"C\"为商务类)\n");
        scanf("%c",&c);    //保存上一次输入的回车键
        scanf("%c",&p2->type);
        printf("\n请输入联系人的:\n");
        scanf("%s",p2->email);
        while(p1->next!=NULL)   
            p1=p1->next;    //到链表的尾部
        p1->next=p2;    //将链表的尾部指向新添加的联系人
        p2->next=NULL;    //新的链表尾部赋结束标记
        system("cls");
        printf("新增成功\n\n");
        n++;        //保存的联系人数目加1
    }
    return head;
}
3.3拨号联系人
  进入菜单后选择拨号联系人,然后输入要拨号的姓名,会提示拨号成功,即实现了对联系人的拨号。
3-3拨号联系人
实现此功能的代码如下:
void diag(struct phone_info *head)
{
    char name[20];
    struct phone_info *p1;   
    system("cls");
    for(;;)
    {   
        if(n==0)    //判断当前联系人数目是否为0
        {
            printf("当前没有任何联系人信息\n\n");
            system("pause");
            return;
        }
        system("cls");
        output(head);    //调用输出函数 显示当前所有联系人的信息
        printf("请输入要拨号的联系人姓名:\n(如果输入“0”则停止拨号,并返回主菜单)\n");
        scanf("%s",name);   
        if(strcmp(name,"0")==0)    //判断输入的姓名是否为0
            return;    //返回
        else
        {
            p1=head;
            for(;;)
            {
                if(strcmp(name,p1->name)==0)    //到指定联系人所在节点
                {
                    printf("\n拨号成功\n\n");
                    system("pause");
                    break;
                }                           
                p1=p1->next;    //到下一节点
                if(p1==NULL)    //指针为空
                {
                    printf("\n姓名为%s的联系人不存在!\n\n",name);
                    system("pause");
                    break;
                }
            }
        }
    }
}
4 运行环境与结果
4.1运行环境
在本课程设计中,系统开发平台为WindowsXP,程序设计语言为Visual C++6.0,程序的运行环境为Visual C++ 6.0Visual C++一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种,在本课程设计中,以Visual C++ 6.0为编程环境。
Microsoft Visual C++ 6.0Microsoft公司的Microsoft Visual Studio 6.0开发工具箱中的一个C++程序开发包。Visual C++包中除包括C++编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。1993Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。 Visual C++从最早期的1.0版本,发展到最新的7.0版本,Visual C++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的7.0版本在编译器、MFC库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。
Visual C++ 6.0Microsoft公司推出的目前使用最广泛的基于Windows平台的可视化编程环境。Visual C++ 6.0是在以往版本不断更新的基础上形成的,由于其功能强大,灵活性好,完全课扩展以及具有强大的Internet支持,因而在各种C++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。
Visual C++ 6.0秉承Visual C++以前版本的优异特性,为用户提供了一套良好的可视化开发环境:主要包括文本编辑器、资源编辑器、工程创建工具、Debugger调试器等等。用户可以在集成开发环境中创建工程、打开工程、建立、打开和编辑文件、编译、链接、运行、调试应用程序。

本文发布于:2023-05-11 19:46:56,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/95935.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:联系人   实现   系统   版本   数据   菜单   输入
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图