请选择 进入手机版 | 继续访问电脑版

通讯录管理系统

[复制链接]
卓小兔 发表于 2020-12-31 19:01:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
通讯录课程设计陈诉



1 需求分析

需要设计一个简单的通讯录管理系统,来实现接洽人信息的长时间存储(包罗姓名、性别、年岁、电话号码等),并且在需要时可以大概查找出相关接洽人的信息。需要包罗录入、查找、修改、删除、保存等功能。
2 系统设计

2.1系统功能设计

该系统具有接洽人根本信息的输入、查询、删除、修改等功能。详细可将本系统分为以下功能,每项功能的主要任务是:
1、录入接洽人:完成接洽人信息的输入。
2、查询接洽人:根据姓名,查询接洽人的信息。
3、删除接洽人:根据姓名,删除接洽人的信息。
4、修改接洽人:修改已经录入的接洽人的信息。
5、保存文件:保存已经录入的接洽人的信息。
6、读取文件:读取已经存储的接洽人的信息。

2.2数据结构设计

所有子任务都围绕着一批接洽人的信息,每个接洽人包罗姓名、年岁、性别和电话号码,因此,界说一个接洽人的结构体范例如下:
  1. #define MAX_NAME 20#define MAX_TELE 12#define MAX_SEX 2struct Contact{        char name[MAX_NAME];        char tele[MAX_TELE];        char sex[MAX_SEX];        int age;}
复制代码
3主要模块设计与实现

  1. //初始化通讯录void InitiaContact(struct Contact* p, int *count);//录入接洽人信息void InputContact(struct Contact* p, int *count);//显示接洽人信息void ShowContact(struct Contact* p, int *count);//修改接洽人信息void ModifyContact(struct Contact* p, int *count);//查找接洽人信息void FindContact(struct Contact* p, int *count);//删除接洽人信息void DeleteContact(struct Contact* p, int *count);//保存接洽人信息void SaveContact(struct Contact* p, int *count);
复制代码
4 系统运行测试

要针对步调处理的差异情况列出有代表性的输入和输出,用足够多的实例说明步调完成了设计任务和目标。





5 源代码清单

  1. //界说结构体以及函数声明#include#include#include#include#define MAX_NAME 20#define MAX_TELE 12#define MAX_SEX 2struct Contact{        char name[MAX_NAME];        char tele[MAX_TELE];        char sex[MAX_SEX];        int age;};//初始化通讯录void InitiaContact(struct Contact* p, int *count);//录入接洽人信息void InputContact(struct Contact* p, int *count);//显示接洽人信息void ShowContact(struct Contact* p, int *count);//修改接洽人信息void ModifyContact(struct Contact* p, int *count);//查找接洽人信息void FindContact(struct Contact* p, int *count);//删除接洽人信息void DeleteContact(struct Contact* p, int *count);//保存接洽人信息void SaveContact(struct Contact* p, int *count);
复制代码
  1. //菜单void Menu(){        printf("******************************\n");        printf("**       欢迎使用通讯录     **\n");        printf("**--------------------------**\n");        printf("**                          **\n");        printf("**    1.  录入接洽人信息    **\n");        printf("**    2.  显示接洽人信息    **\n");        printf("**    3.  修改接洽人信息    **\n");        printf("**    4.  查找接洽人信息    **\n");        printf("**    5.  删除接洽人信息    **\n");        printf("**    6.  保存接洽人信息    **\n");        printf("**         0.  退出         **\n");        printf("**                          **\n");        printf("******************************\n");}
复制代码
  1. //主函数部门int main(void){        int input;        struct Contact *con;        int count;        con = (struct Contact*)malloc(1 * sizeof(struct Contact));        InitiaContact(con, &count);        do        {                int n;                Menu();                scanf("%d", &input);                switch (input)                {                        case 1:                                InputContact(con, &count);                                break;                        case 2:                                ShowContact(con, &count);                                break;                        case 3:                                ModifyContact(con, &count);                                break;                        case 4:                                FindContact(con, &count);                                break;                        case 5:                                DeleteContact(con, &count);                                break;                        case 6:                                SaveContact(con, &count);                                break;                        case 0:                                printf("退出乐成!\n");                                break;                        default:                                printf("选择错误,请重新选择!\n");                                break;                }                if(input != 0)                 {                        system("pause");                        system("cls");                                }        }while(input);        free(con);        con = NULL;        return 0;}
复制代码
  1. //初始化通讯录void InitiaContact(struct Contact* p, int* count){        struct Contact temp;        if (p == NULL)        {                printf("%s\n", strerror(errno));                return;        }        *count = 0;        //从文件中读取数据        FILE* Read = fopen("contact.dat", "rb");        if (Read != NULL)        {                while (fread(&temp, sizeof(struct Contact), 1, Read))                {                        struct Contact* ps;                        p[*count] = temp;                        *count = *count + 1;                        ps = (struct Contact*)realloc(p, (*count + 1) * sizeof(struct Contact));                        if (ps != NULL)                                p = ps;                }                fclose(Read);                Read = NULL;        }}
复制代码
  1. //保存接洽人信息void SaveContact(struct Contact* p, int* count){        //打开文件        FILE* Write = fopen("contact.dat", "wb");        int i = 0;        if (Write == NULL)        {                printf("%s\n", strerror(errno));        }        else        {                for (i = 0; i < *count; i++)                {                        //将数据写入文件                        fwrite(&p[i], sizeof(struct Contact), 1, Write);                }                printf("保存乐成!\n");        }        //关闭文件        fclose(Write);        Write = NULL;}
复制代码
  1. //录入接洽人信息void InputContact(struct Contact* p, int* count){        struct Contact* ps;        system("cls");        printf("\n-------- 接洽人信息录入功能 --------\n\n");        printf("------------------------------------\n\n");        printf("第%d个接洽人信息\n", *count + 1);        printf("输入接洽人的姓名(输入0退出录入):");        scanf("%s", p[*count].name);        if(strcmp(p[*count].name, "0") != 0)        {                printf("输入接洽人的电话号码:");                scanf("%s", p[*count].tele);                printf("输入接洽人的性别(M代表男性,F代表女性):");                do                {                        scanf("%s", p[*count].sex);                        if(strcmp(p[*count].sex, "M") == 0 || strcmp(p[*count].sex, "F") == 0)                                break;                        printf("输入错误,请重新输入:");                }while(1);                printf("输入接洽人的年岁:");                scanf("%d", &p[*count].age);                printf("\n你输入的接洽人信息为:\n");                printf("%-15s\t%-12s\t%-5s\t%-5s\n", "姓名", "电话", "性别", "年岁" );                printf("%-15s\t%-12s\t%-5s\t%-5d\n",                        p[*count].name,                        p[*count].tele,                        p[*count].sex,                        p[*count].age);                *count = *count + 1;                ps = (struct Contact*)realloc(p, (*count + 1) * sizeof(struct Contact));                if (ps != NULL)                        p = ps;                printf("\n保存接洽人乐成!\n");        } }
复制代码
  1. //查找接洽人信息void FindContact(struct Contact* p, int* count){        char name[MAX_NAME];        int i = 0, ret = -1;        system("cls");        printf("\n-------- 接洽人信息查找功能 --------\n\n");        printf("------------------------------------\n\n");        printf("输入要查找的接洽人的姓名:");        scanf("%s", name);        for (i = 0; i < *count; i++)        {                if (0 == strcmp(name, p[i].name))                {                        ret = i;                        break;                }        }        if (ret == -1)                printf("通讯录没有此接洽人!\n");        else        {                printf("%-15s\t%-12s\t%-5s\t%-5s\n", "姓名", "电话", "性别", "年岁");                printf("%-15s\t%-12s\t%-5s\t%-5d\n",                        p[ret].name,                        p[ret].tele,                        p[ret].sex,                        p[ret].age);        }}
复制代码
  1. //删除接洽人信息void DeleteContact(struct Contact* p, int* count){        char name[MAX_NAME];        int ret = -1, i = 0;        printf("输入要删除的接洽人的姓名:");        scanf("%s", name);        for (i = 0; i < *count; i++)        {                if (0 == strcmp(name, p[i].name))                {                        ret = i;                        break;                }        }        if (ret == -1)                printf("通讯录没有此接洽人!\n");        else        {                *count = *count - 1;                printf("删除接洽人乐成!\n");        }}
复制代码
  1. //显示接洽人的信息void ShowContact(struct Contact* p, int* count){        int i = 0;        system("cls");        printf("\n-------- 接洽人信息显示功能 --------\n\n");        printf("------------------------------------\n\n");        printf("%-15s\t%-12s\t%-5s\t%-5s\n", "姓名", "电话", "性别", "年岁" );        for (i = 0; i < *count; i++)        {                printf("%-15s\t%-12s\t%-5s\t%-5d\n",                        p[i].name,                        p[i].tele,                        p[i].sex,                        p[i].age);        }}
复制代码
  1. //修改接洽人的信息void ModifyContact(struct Contact* p, int* count){        char name[MAX_NAME];        int ret = -1, i = 0;        system("cls");        printf("\n-------- 接洽人信息修改功能 --------\n\n");        printf("------------------------------------\n\n");        printf("输入要修改的接洽人的姓名:");        scanf("%s", name);        for (i = 0; i < *count; i++)        {                if (0 == strcmp(name, p[i].name))                {                        ret = i;                        break;                }        }        if ( ret == -1 )                printf("通讯录没有此接洽人!\n");        else        {                int t;                printf("\n你要修改的接洽人信息为:\n");                printf("%-15s\t%-12s\t%-5s\t%-5s\n", "姓名", "电话", "性别", "年岁" );                printf("%-15s\t%-12s\t%-5s\t%-5d\n",                        p[ret].name,                        p[ret].tele,                        p[ret].sex,                        p[ret].age);                printf("\n选择你要修改的信息:\n");                printf("1. 姓名\n");                printf("2. 电话号码\n");                printf("3. 性别\n");                printf("4. 年岁\n\n");                scanf("%d", &t);                if(t == 1)                {                        printf("输入修改后的接洽人姓名:");                        scanf("%s", p[ret].name);                }                else if(t == 2)                {                        printf("输入修改后的接洽人电话号码:");                        scanf("%s", p[ret].tele);                }                else if(t == 3)                {                        printf("输入修改后接洽人的性别(M代表男性,F代表女性):");                        do                        {                                scanf("%s", p[ret].sex);                                if(strcmp(p[ret].sex, "M") == 0 || strcmp(p[ret].sex, "F") == 0)                                break;                                printf("输入错误,请重新输入:");                        }while(1);                }                else if(t == 4)                {                        printf("输入修改后的接洽人年岁:");                        scanf("%d", &p[ret].age);                }                else                        printf("选择错误!\n");                        if(t == 1 || t == 2 || t == 3 || t == 4)                        printf("修改接洽人乐成!\n");        }}
复制代码
6 实训小结

颠末这次C语言课程设计,我们不光实时巩固了本学期学到的的知识,并且熟悉了一个系统的开辟流程,相识了分工互助的实际意义。当我们面临一个实际问题,应该迅速根据问题性质和特点来选择符合的方法来管理问题,别的,对步调的测试应该要仔细,根据模块的特点和测试阶段,接纳各种软件测试方法对步调举行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题形貌中要求的功能。 通过这个步调设计,我们不光提高了动手利用本领,对 C语言有了更深的认识, 可以大概更好地运用 C语言举行编程设计,同时在思维、对待问题的全面性等方面也有了很大的提高。不外由于时间、履历不敷、对语言的掌握程度不深等问题,在这个系统设计还存在一些问题,,希望可以在以后的设计上可以大概管理这些问题,做的更好。

来源:https://blog.csdn.net/wenmou_/article/details/111936835
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )