课程设计源代码

  1. /*  
  2. 烟台大学计算机学院  
  3.   
  4. 文件名称:goushuai.cpp  
  5.   
  6. 作者:张俊杰
  7.   
  8. 完成日期:2017年12月22日  
  9.   
  10. 问题描述:通讯录系统
  11.  

  12.   
  13. */  
main.cpp

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include "zccc.h"

int  main()
{
    Link *L;
    system("color 7e");
    static char name[100];
    static char num[100];
    Initlist(L);//初始化单链表
    while(1)
    {


        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("         ☆            7.查看用户数            ★\n");
        printf("         ☆            0.退出系统              ★\n");
        printf("         ★                                    ☆\n");
        printf("         ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
        printf("请输入:");


        int s;
        scanf("%d",&s);
        switch(s)
        {
            case 1:
            {
                int m;
                Creatlist(L);

            do{
                system("cls");
                printf("继续输入请按1,返回上层请按2:");
                getchar();
                scanf("%d",&m);
                if(m==1)
                    Creatlist(L);
                 }while(m!=2);
                 break;
            }
         case 2:
            {
                system("cls");
                int n;

                printf("1、按姓名查找\n");
                printf("2、按编号查找\n");
                scanf("%d",&n);
                if(n==1)
                {
                     printf("请输入要查找人的姓名: \n");
                     scanf("%s",name);
                     SearchName(L,name);
                }
                 if(n==2)
                {
                     printf("请输入要查找的编号: \n");
                     scanf("%s",num);
                     SearchNum(L,num);
                }

                     break;
            }
         case 3:
            {
                    printf("排序已完成\n");
                    printf("排序结果如下:\n");
                    SortNum(L);
                    Display(L);
                    break;
            }
         case 4:

            {
                    system("cls");

                    Display(L);

                    break;
	        }
         case 5:
            {
                    system("cls");
                    printf("请输入需要修改信息的个人编号: \n");
                    getchar();
                    scanf("%s",num);
                    Alter(L,num);
                    break;
            }
         case 6:
            {
                    char g;
                    system("cls");
                    printf("请输入所要删除的学生的编号: \n");
                    getchar();
                    scanf("%s",num);
                    printf("是否确定删除该同学:(Y/N)");
                    scanf("%s",&g);
                    if(g=='Y')
                    {
                        Del(L, num);
                    }
                    else
                    {
                        printf("输入错误,请重新输入Y/N");
                    }
                        break;
            }
         case 7:
            {
                Print(L);
                break;

            }
        case 0:
            {

                    printf("谢谢使用 \n");
                    break;
                    default:
                    break;

            }


	     }

       }

    return 0;
}

zccc.h
#ifndef ZCCC_H_INCLUDED
#define ZCCC_H_INCLUDED
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>


typedef struct telebook
{
	    char num[30];/*编号*/
        char name[30];/*姓名*/
	    char addr[30];/*地址*/
        char telenum[30];/*手机号*/
}tele;

typedef struct LNode
{
     tele data;
	 struct LNode* next;
}Link;


void Initlist(Link *&L);//初始化单链表
void Creatlist(Link *&L);//头插法生成单链表
void SearchNum(Link *L,char num[30]);//编号查询
void Del(Link *&L,char num[30]);//按编号删除
void SearchName(Link *L,char name[30]);//姓名查询
void Alter(Link *L,char num[30]);//更改信息
void Display(Link *&L);//显示信息
void SortNum(Link *L);//编号排序
void Print(Link *L); //显示通讯录人数

#endif // ZCCC_H_INCLUDED


zzzc.cpp
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include "zccc.h"


void Initlist(Link *&L)//初始化线性表
{
    L=(Link *)malloc(sizeof(Link)); //分配内存空间

    L->next=NULL;

}
void Print(Link *L)  //显示通讯录人数功能
{
    int num=0;
    Link *p;
    p=L;
    while(p)
    {
        p=p->next;
        num++;
    }
    printf("\n该通讯录共有信息数:%d\n",num-1);
}


void Creatlist(Link *&L)//头插法生成单链表
{
    Link *r;
    r=(Link *)malloc(sizeof(Link));
    printf("请录入个人信息\n");
    printf("编号:   \n");
    scanf("%s",r->data.num);
    printf("姓名:   \n");
    scanf("%s",r->data.name);
    printf("地址:   \n");
    scanf("%s",r->data.addr);
    printf("手机号: \n");
    scanf("%s",r->data.telenum);
    r->next=L->next;
    L->next=r;

}

void Alter(Link *L,char num[30])//修改个人信息
{
    Link *p;
    p=L;
    int s;
    while(p)
    {
        if(strcmp(p->data.num,num)==0)
        {
           printf("请输入你要修改的信息:1.修改编号 2.修改姓名 3.修改地址 4.修改手机号\n");
           printf("请选择:");
           scanf("%d",&s);
           switch(s)
       {
             case 1:
                 {

                    printf("请输入编号: ",p->data.num);
                    scanf("%s",p->data.num);
                    printf("信息修改成功\n");
                    break;
                 }
             case 2:
                 {
                    printf("请输入姓名: ",p->data.name);
                    scanf("%s",p->data.name);
                    printf("信息修改成功\n");
                    break;
                 }
             case 3:
                 {
                    printf("请输入地址: ",p->data.addr);
                    scanf("%s",p->data.addr);
                    printf("信息修改成功\n");
                    break;
                 }
            case 4:
                 {
                    printf("请输入手机号: ",p->data.telenum);
                    scanf("%s",p->data.telenum);
                    printf("该学生的信息修改成功\n");
                    break;
                 }

       }
        }
        p=p->next;
    }


}


void Del(Link *&L, char num[100])//按编号进行删除
{
    Link *p,*q;
    p=L;
    q=L->next;
    char flag=0;
    while(q)
    {
        if(strcmp(q->data.num,num)==0)
        {
            p->next=q->next;
            free(q);
            flag=1;
            break;
        }
        p=p->next;
        q=q->next;
    }
    if(!flag)
    {
        printf("对不起,该编号不存在 \n");
    }
    printf("删除成功\n");
}





void Display(Link *&L)//显示信息
{
    Link *p;
    p=L->next;
    char flat=0;
    while(p)
    {
        printf("编号\t姓名\t地址\t手机号\n");
        for(p=L->next;p;p=p->next)
        {
             printf("%s\t%s\t%s\t%s\n",p->data.num,p->data.name,p->data.addr,p->data.telenum);
             flat=1;
        }
    }
    if(!flat)
    {
        printf("无法显示信息 \n");
    }
}




void SearchName(Link *L,char name[100])//学号查询
    {
        Link *p;
        p=L;
        char flat=0;
        while(p)
        {
            if(p!=NULL)
            {
                if(strcmp(p->data.name,name)==0)
                {
                    printf("学号:     %s\n",p->data.num);
                    printf("姓名:     %s\n",p->data.name);
                    printf("地址:     %s\n",p->data.addr);
                    printf("手机号:   %s\n",p->data.telenum);
                    flat=1;
                }
            }
            p=p->next;
        }
        if(!flat)
        {
            printf("对不起输入姓名错误或该信息已被删除,请重新输入进行查询 \n");
        }

    }





void SearchNum(Link *L,char num[100])//学号查询
    {
        Link *p;
        p=L;
        char flat=0;
        while(p)
        {
            if(p!=NULL)
            {
                if(strcmp(p->data.num,num)==0)
                {
                    printf("编号:     %s\n",p->data.num);
                    printf("姓名:     %s\n",p->data.name);
                    printf("地址:     %s\n",p->data.addr);
                    printf("手机号:   %s\n",p->data.telenum);
                    flat=1;
                }
            }
            p=p->next;
        }
        if(!flat)
        {
            printf("对不起输入编号错误或该信息已被删除,请重新输入进行查询 \n");
        }

    }




void SortNum(Link *L)//按编号排序
{
    Link *p,*q;
    tele temp;
    for(p=L->next;p!=NULL;p=p->next)
    {
        for(q=p->next;q!=NULL;q=q->next)
        {
            if(strcmp(p->data.num,q->data.num)>0)
            {
                    temp=q->data;
                    q->data=p->data;
                    p->data=temp;
            }
        }
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值