视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
通讯录管理系统课程设计报告书(C语言)
2025-09-29 16:38:56 责编:小OO
文档
课程设计报告书

课程名称:    C语言课程设计    

班    级:                     

学    号:                     

姓    名:                     

指导老师:                     

手机名片管理系统

一.设计要求和目的

二.概要设计

系统功能模块图:

添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。

显示:可以以表格形式输出所有通讯录里的记录

删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容

查询:可以选择用姓名、电话、地址三种方式查询

修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改

保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件

一.详细设计

(1).通讯录:

typedef struct 

    { 

        char score;               /*编号*/

        char name[10];           /*姓名*/ 

        char num[15];            /*号码*/ 

        char email[20];            /*邮箱*/

        char age[8];                /*年龄*/

        char adds[20];                /*住址*/

    }Person;

void main()                                         /*主函数*/ 

    int n=0; 

    for(;;) 

    { 

        switch(menu_select()) 

        { 

        case 1: 

        printf("\\n\添加记录到通讯录\\n");                         /*添加记录*/ 

        n=Input(pe,n); 

        break; 

        case 2: 

        printf("\\n\\\    通讯录记录表\\n");                      /*显示记录*/ 

        Display(pe,n); 

        break;

        

        case 3: 

        printf("\\n\从通讯录中删除记录\\n"); 

        n=Delete_a_record(pe,n);                                  /*删除记录*/ 

        printf("\"); 

        system("pause"); 

        break; 

        case 4: 

        printf("\\n\在通讯录中查找记录\\n"); 

        Query_a_record(pe,n);                                      /*查找记录*/ 

        printf("\"); 

        system("pause"); 

        break;

        

        case 5: 

        printf("\\n\修改通讯录中的记录\\n"); 

        Change(pe,n);                                             /*修改数据*/ 

        printf("\"); 

        system("pause"); 

        break; 

        case 6: 

        printf("\\n\保存功能\\n"); 

        WritetoText(pe,n);                                         /*保存数据*/ 

        printf("\"); 

        system("pause"); 

        break; 

        case 0: 

        printf("\\n\\谢谢使用,再见!\\n");                         /*结束程序*/ 

        printf("\\n\\"); 

        system("pause"); 

        exit(0); 

        } 

    } 

}

(2).工作流程图:

①添加:添加通讯录记录

②显示:显示通讯录记录

③删除:删除通讯录记录                    ④查询:查询通讯录记录

先选择查询方式,以姓名查询方式为例

 

⑤修改:修改通讯录记录

二.源程序代码

#include

#include

#include

typedef struct 

    { 

        char score;               /*编号*/

        char name[10];            /*姓名*/ 

        char num[15];             /*号码*/ 

        char email[20];            /*邮箱*/

        char age[8];                /*年龄*/

        char adds[20];                /*住址*/

    }Person; 

Person pe[80];                        

int menu_select() 

    { 

        char c; 

        do{ 

        system("cls"); 

        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("\\请您选择(0-6):"); 

        c=getchar();  

     }while(c<'0'||c>'6');

        return(c-'0'); 

    } 

int Input(Person per[],int n) 

{

    int i=0; 

    char sign,x[10];                      

    while(sign!='n'&&sign!='N') 

    { 

        printf("\编号:"); 

        scanf("\%d",&per[n+i].score); 

        printf("\姓名:"); 

        scanf("\%s",per[n+i].name); 

        printf("\年龄:"); 

        scanf("\%s",per[n+i].age);

        printf("\电话号码:"); 

        scanf("\%s",per[n+i].num); 

        printf("\通讯住址:"); 

        scanf("\%s",per[n+i].adds);

        printf("\电子邮箱:");

        scanf("\%s",per[n+i].email);

        gets(x);   

        printf("\\n\是否继续添加?(Y/N)"); 

        scanf("\%c",&sign); 

        i++; 

    } 

    return(n+i); 

void Display(Person per[],int n)                                         

    int i; 

    printf("----------------------------------------------------------------------\\n");                          /*格式*/ 

    printf("编号  姓名  年龄    电话号码     通讯地址        电子邮箱\\n"); 

    printf("----------------------------------------------------------------------\\n"); 

for(i=1;i    { 

        printf("%-5d%-8s%-6s%-13s%-15s%-15s\\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); 

     if(i>1&&i%10==0)

        {

            printf("\-----------------------------------\\n"); 

            printf("\"); 

            system("pause"); 

            printf("\-----------------------------------\\n"); 

        } 

    } 

    printf("----------------------------------------------------------------------\\n");

    system("pause"); 

int Delete_a_record(Person per[],int n) 

    char s[20]; 

    int i=0,j; 

    printf("\请输入想删除记录中的名字:"); 

    scanf("%s",s); 

while(strcmp(per[i].name,s)!=0&&i    if(i==n) 

    {

        printf("\通讯录中没有此人!\\n"); 

        return(n); 

    } 

for(j=i;j    { 

        strcpy(per[j].num,per[j+1].num); 

        strcpy(per[j].name,per[j+1].name); 

        strcpy(per[j].age,per[j+1].age);

        strcpy(per[j].adds,per[j+1].adds);

        strcpy(per[j].email,per[j+1].email);

        per[j].score=per[j+1].score; 

    } 

    printf("\\\已经成功删除!\\n"); 

    return(n-1); 

void Query_a_record(Person per[],int n) 

    

    int m;

    printf("\\\n请选择查询方式:\\n");

    printf("\┌──────┐\\n");

    printf("\│1------姓名 │\\n");

    printf("\│2------电话 │\\n");

    printf("\│3------地址 │\\n");

    printf("\│4------返回 │\\n");

    printf("\└──────┘\\n");

    printf("请选择:");

    scanf("%d",&m);

    while(m!=1&&m!=2&&m!=3&&m!=4)

    { 

        printf("输入错误,请重新选择:");

        scanf("%d",&m);

    }

    if(m==1)

    {

        char s[20]; 

        int i=0; 

        printf("\请输入想查询的姓名:"); 

        scanf("\%s",s); 

     while(strcmp(per[i].name,s)!=0&&i        if(i==n) 

        {

            printf("\通讯录中没有此人!\\n"); 

            return; 

        } 

        printf("\此人编号: %d\\n",per[i].score);

        printf("\此人年龄: %s\\n",per[i].age); 

        printf("\电话号码: %s\\n",per[i].num); 

        printf("\通讯地址: %s\\n",per[i].adds);

        printf("\电子邮箱: %s\\n",per[i].email);

    } ;

    if(m==2)

    {

        char s[20]; 

        int i=0; 

        printf("\请输入想查询的电话:"); 

        scanf("\%s",s); 

     while(strcmp(per[i].num,s)!=0&&i        if(i==n) 

        {

            printf("\通讯录中没有此人!\\n"); 

            return; 

        } 

        printf("\此人编号: %d\\n",per[i].score);

        printf("\此人姓名: %s\\n",per[i].name);

        printf("\此人年龄: %s\\n",per[i].age); 

        printf("\通讯地址: %s\\n",per[i].adds);

        printf("\电子邮箱: %s\\n",per[i].email);

    } ;

    if(m==3)

    {

        char s[20]; 

        int i=0; 

        printf("\请输入想查询的地址:"); 

        scanf("\%s",s); 

     while(strcmp(per[i].adds,s)!=0&&i        if(i==n) 

        { 

            printf("\通讯录中没有此人!\\n"); 

            return; 

        } 

        printf("\此人编号: %d\\n",per[i].score);

        printf("\此人姓名: %s\\n",per[i].name);

        printf("\此人年龄: %s\\n",per[i].age); 

        printf("\电话号码: %s\\n",per[i].num); 

        printf("\电子邮箱: %s\\n",per[i].email);

    } ;

}

void Change(Person per[],int n) 

{

    char s[20]; 

    int i=0; 

    printf("\请输入想修改的记录中的名字:"); 

    scanf("%s",s); 

while(strcmp(per[i].name,s)!=0&&i    if(i==n) 

    { 

        printf("\通讯录中没有此人!\\n"); 

        return; 

    } 

    printf("\编号:"); 

    scanf("\%d",&per[i].score); 

    printf("\姓名:"); 

    scanf("\%s",per[i].name); 

    printf("\年龄:"); 

    scanf("\%s",per[i].age);

    printf("\电话号码:"); 

    scanf("\%s",per[i].num); 

    printf("\通讯住址:"); 

    scanf("\%s",per[i].adds);

    printf("\电子邮箱:");

    scanf("\%s",per[i].email);

    printf("\修改成功!");

}

void WritetoText(Person per[],int n)             

    int i=0; 

    FILE *fp;                                           /*定义文件指针*/ 

    char filename[20];                                  /*定义文件名*/ 

    printf("\保存到文件\\n");                          /*输入文件名*/ 

    printf("\请输入所保存的文件名:"); 

    scanf("\%s",filename); 

    if((fp=fopen(filename,"w"))==NULL)                   

    { 

        printf("\无法打开文件\\n"); 

        system("pause"); 

        return; 

    } 

    fprintf(fp,"******************************************通讯录******************************************\\n");

    fprintf(fp,"编号     姓名   年龄      电话号码           通讯地址             电子邮箱\\n");

    fprintf(fp,"------------------------------------------------------------------------------------------\\n");

while(i    { 

        fprintf(fp,"%-3d\%-6s\%-3s\%-13s\%-20s\%-20s\\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email); 

        i++; 

    }

    fprintf(fp,"------------------------------------------------------------------------------------------\\n");

    fprintf(fp,"***************************************共有%d条记录****************************************\\n",n); 

    fclose(fp);                                         /*关闭文件*/ 

    printf("保存成功!\\n"); 

void main()                                         /*主函数*/ 

    int n=0; 

    for(;;) 

    { 

        switch(menu_select()) 

        { 

        case 1: 

        printf("\\n\添加记录到通讯录\\n");                         /*添加记录*/ 

        n=Input(pe,n); 

        break; 

        case 2: 

        printf("\\n\\\    通讯录记录表\\n");                      /*显示记录*/ 

        Display(pe,n); 

        break;

        

        case 3: 

        printf("\\n\从通讯录中删除记录\\n"); 

        n=Delete_a_record(pe,n);                                  /*删除记录*/ 

        printf("\"); 

        system("pause"); 

        break; 

        case 4: 

        printf("\\n\在通讯录中查找记录\\n"); 

        Query_a_record(pe,n);                                      /*查找记录*/ 

        printf("\"); 

        system("pause"); 

        break;

        

        case 5: 

        printf("\\n\修改通讯录中的记录\\n"); 

        Change(pe,n);                                             /*修改数据*/ 

        printf("\"); 

        system("pause"); 

        break; 

        case 6: 

        printf("\\n\保存功能\\n"); 

        WritetoText(pe,n);                                         /*保存数据*/ 

        printf("\"); 

        system("pause"); 

        break; 

        case 0: 

        printf("\\n\\谢谢使用,再见!\\n");                         /*结束程序*/ 

        printf("\\n\\"); 

        system("pause"); 

        exit(0); 

        } 

    } 

三.测试数据及其结果分析

测试:

1).显示的主菜单界面

2).添加界面:

3).显示界面:

4).删除界面:

删除后,通讯录里的显示记录:

5).查询界面:

以姓名查询方式为例:

6).修改界面:

修改后,通讯录里的显示记录:

7).保存界面:

四.课程设计总结下载本文

显示全文
专题