C语言实现通讯录管理系统

本文实例为大家分享了C语言实现通讯录管理系统的具体代码,供大家参考,具体内容如下

工具:Visual C++6.0

说明:

本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计。功能包括增、删、查、改等,非常适合初学者练手。通讯录包括的个人信息有姓名、学号、性别、籍贯、政治面貌、手机号、QQ号、宿舍等。主要用到了指针、结构体、遍历链表、文件读取等知识点。

运行效果:

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
typedef struct student  //定义结构体
{
 char name[20]; //姓名
 char num[15];  //学号
 char sex[10];  //性别
 char from[20]; //籍贯
 char political[10]; //政治面貌
 char phone[15];  //手机号
 char QQ[15];   //QQ号
 char dorm[10];  //宿舍
 struct student *next; //结构体指针
}stu;
stu *head;

void print() //主菜单
{
 system("cls");
 printf("\n\n\n");
 printf("  ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
 printf("  ***********************************************************\n");
 printf("  \t\t\t班级通讯录管理系统\n");
 printf("\n");
 printf("  \t\t1. 输入数据");
 printf("\t\t2. 显示数据\n");
 printf("  \t\t3. 插入数据");
 printf("\t\t4. 删除数据\n");
 printf("  \t\t5. 查看数据");
 printf("\t\t6. 修改数据\n");
 printf("  \t\t7. 保存数据");
 printf("\t\t8. 返回主菜单\n");
 printf("  ***********************************************************\n");
 printf("  ~~~~~退~~~~~~~~~~出~~~~~~~~~~请~~~~~~~~~~按~~~~~~~~~~9~~~~~\n");
 printf("  -----------------------------------------------------------\n\n");
}

void input(stu *p1) //输入相关数据
{
 printf("姓名:");
 scanf("%s",&p1->name);
 printf("学号:");
 scanf("%s",&p1->num);
 printf("性别:");
 scanf("%s",&p1->sex);
 printf("籍贯:");
 scanf("%s",&p1->from);
 printf("政治面貌:");
 scanf("%s",&p1->political);
 printf("手机号:");
 scanf("%s",&p1->phone);
 printf("QQ号:");
 scanf("%s",&p1->QQ);
 printf("宿舍:");
 scanf("%s",&p1->dorm);
}

stu * inputdata()  //数据输入的函数
{
 stu *p1,*p2;
 int i=1;
 p1=(stu *)malloc(sizeof(stu));
 if(p1!=NULL)
 {
  head=p1;
  printf("\n\t\t\t☆☆☆输入数据☆☆☆\n");
  printf("------------------------------------------------------------------\n");
  printf("在姓名处输入“ok”代表输入数据结束\n");
  while(i)
  {
   printf("姓名:");
   scanf("%s",&p1->name);
   if(strcmp(p1->name,"ok")==0)
   {
    printf("\n输入完毕!\n");
    printf("========================================================================\n");
    i=0;
    p2->next=NULL;
    free(p1);
    p1=p2;
   }
   else
   {
    printf("学号:");
    scanf("%s",&p1->num);
    printf("性别:");
    scanf("%s",&p1->sex);
    printf("籍贯:");
     scanf("%s",&p1->from);
    printf("政治面貌:");
    scanf("%s",&p1->political);
    printf("手机号:");
    scanf("%s",&p1->phone);
    printf("QQ号:");
    scanf("%s",&p1->QQ);
    printf("宿舍:");
    scanf("%s",&p1->dorm);
    printf("=====================================\n");
    p2=p1;
    p1=(stu *)malloc(sizeof(stu));
    if(p1!=NULL)
    {
     p2->next=p1;
    }
   }
  }
  return(p1->next);
 }
}

stu * lookdata(stu *p1)  //查看数据的函数
{
 printf("\n\t\t\t☆☆☆显示数据☆☆☆\n");
 printf("----------------------------------------------------------------------\n");
 while(p1!=NULL)
 {
  printf("姓名:%s\n",p1->name);
  printf("学号:%s\t",p1->num);
  printf("性别:%s\t",p1->sex);
  printf("籍贯:%s\t",p1->from);
  printf("政治面貌:%s\t",p1->political);
  printf("手机号:%s\t",p1->phone);
  printf("QQ号:%s\t",p1->QQ);
  printf("宿舍:%s\n",p1->dorm);
  printf("======================================================================\n");
  p1=p1->next;
 }
 return p1;
}

void insert()  //插入数据
{
 int i;
 char named[20];
 stu *p1,*p2,*p3;
 p1=head;
 p3=(stu *)malloc(sizeof(stu));
 p3->next=NULL;
 printf("\n\t\t\t☆☆☆插入数据☆☆☆\n");
 printf("----------------------------------------------------------------------\n");
 printf("请输入插入者的资料:\n");
 input(p3);
 printf("\n插入选项\n");
 printf("1.首位置插入\t2.尾位置插入\t3.前插\n");
 printf("请输入你的选择:");
 scanf("%d",&i);
 switch(i)
 {
 case 1:p3->next=p1;
  head=p3;
  break;
 case 2:while(p1->next!=NULL)
   {
    p2=p1;
    p1=p1->next;
   }
  p1->next=p3;
  break;
 case 3:printf("请输入姓名(前插):");
  scanf("%s",named);
  while(strcmp(named,p1->name)!=0)
  {
   p2=p1;
   p1=p1->next;
  }
  p2->next=p3;
  p3->next=p1;
  break;
 }
 printf("插入成功!\n");
 printf("======================================================================\n");
 return;
}

void deleted()   //删除数据
{
 stu *p1,*p2;
 char Name[20]; //想要删除的人的姓名
 printf("\n\t\t\t☆☆☆删除数据☆☆☆\n");
 printf("----------------------------------------------------------------------\n");
 printf("请输入要删除的姓名:");
 scanf("%s",Name);
 p1=head;
 if(head==NULL)
 {
 printf("内存空空神马都没有!\n");
 printf("======================================================================\n");
 return;
 }
 if(strcmp(Name,p1->name)==0)
 {
 head=p1->next;
 printf("删除成功!\n");
 printf("======================================================================\n");
 return;
 }
 while(p1!=NULL&&(strcmp(Name,p1->name)!=0))
 {
 p2=p1;
 p1=p1->next;
 }
 if(p1==NULL)
 {
 printf("此人不存在!\n");
 printf("======================================================================\n");
 return;
 }
 if(p1->next!=NULL)
 {
 p1=p1->next;
 p2->next=p1;
 printf("删除成功!\n");
 printf("======================================================================\n");
 return;
 }
 else
 {
 p2->next=NULL;
 printf("删除成功!\n");
 printf("======================================================================\n");
 return;
 }
}

find(stu *p2)  //通过姓名查找查看数据的函数
{
 char name[20];
 int b=0;
 printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");
 printf("----------------------------------------------------------------------\n");
 printf("请输入您想查找人的姓名:");
 scanf("%s",name);
 while(p2!=NULL)
 {
  if(strcmp(name,p2->name)==0)
  {
   printf("你要找到的数据\n");
   printf("姓名:%s\n",p2->name);
   printf("学号:%s\t",p2->num);
   printf("性别:%s\t",p2->sex);
   printf("籍贯:%s\t",p2->from);
   printf("政治面貌:%s\t",p2->political);
   printf("手机号:%s\t",p2->phone);
   printf("QQ号:%s\t",p2->QQ);
   printf("宿舍:%s\n",p2->dorm);
   printf("======================================================================\n");
   b=1;
  }
  p2=p2->next;
 }
 if(b==0)
 {
  printf("\n您要查找的人不存在!\n");
 }
}

update(stu *p2) //通过姓名查找修改数据
{
 char name[20];
 int b=0,i;
 printf("\n\t\t\t☆☆☆修改数据☆☆☆\n");
 printf("----------------------------------------------------------------------\n");
 printf("请输入将要修改人的姓名:");
 scanf("%s",name);
 while(p2!=NULL)
 {
  if(strcmp(name,p2->name)==0)
  {
   printf("该同学的基本信息\n");
   printf("姓名:%s\n",p2->name);
   printf("学号:%s\t",p2->num);
    printf("性别:%s\t",p2->sex);
   printf("籍贯:%s\t",p2->from);
   printf("政治面貌:%s\t",p2->political);
   printf("手机号:%s\t",p2->phone);
   printf("QQ号:%s\t",p2->QQ);
   printf("宿舍:%s\n",p2->dorm);
   printf("\n请选择要修改的信息\n");
   printf("\t1.姓名\t2.学号\t3.性别\t4.籍贯\n\t5.政治面貌\t6.手机号\t7.QQ\t8.宿舍\n");
   printf("\n您的选择是(1~8):");
   scanf("%d",&i);
   printf("请输入修改之后的内容\n");
   switch(i)
   {
   case 1:printf("姓名:");
    scanf("%s",&p2->name);
    break;
   case 2:printf("学号:");
    scanf("%s",&p2->num);
    break;
   case 3:printf("性别:");
    scanf("%s",&p2->sex);
    break;
   case 4:printf("籍贯:");
    scanf("%s",&p2->from);
    break;
   case 5:printf("政治面貌:");
    scanf("%s",&p2->political);
    break;
   case 6:printf("手机号:");
    scanf("%s",&p2->phone);
    break;
   case 7:printf("QQ:");
    scanf("%s",&p2->QQ);
    break;
   case 8:printf("宿舍:");
    scanf("%d",&p2->dorm);
    break;
   }
   printf("\n修改成功!\n");
   printf("=========================================================================\n");
   b=1;
  }
  p2=p2->next;
 }
 if(b==0)
 {
  printf("没有找到该人的资料!\n");
 }
}

save(stu *p2) //保存数据
{
 FILE *fp;
 char file[15];
 printf("\n\t\t\t☆☆☆保存数据☆☆☆\n");
 printf("----------------------------------------------------------------------\n");
 printf("输入文件名:");
 scanf("%s",file);
 if((fp=fopen(file,"w"))==NULL)
 {
  printf("cannot open this file\n");
  exit(0);
 }
 fprintf(fp,"姓名\t学号\t性别\t籍贯\t政治面貌\t手机号\tQQ号\t宿舍\n");
 while(p2!=NULL)
 {
  fprintf(fp,"%s\t",p2->name);
  fprintf(fp,"%s\t",p2->num);
  fprintf(fp,"%s\t",p2->sex);
  fprintf(fp,"%s\t",p2->from);
  fprintf(fp,"%s\t",p2->political);
  fprintf(fp,"%s\t",p2->phone);
  fprintf(fp,"%s\t",p2->QQ);
  fprintf(fp,"%s\n",p2->dorm);
  p2=p2->next;
 }
 printf("\n保存成功!\n");
 printf("======================================================================\n");
 fclose(fp);
}

void screen()
{
 int i;
 char s[251]={"欢迎使用由ZM制作班级通讯录管理系统,\n\n\t\t\t本系统用于通讯录管理----排序,打印\n\n\n\t\tWelcome to use produced by ZM class address book\n\n\t\t management system,sorting,printing"};

 printf("\n================================================================================\n");
 printf("\n\n\n\t\t\t");
 for(i=0;s[i]!=NULL;i++)
 {
  Sleep(30);
  printf("%c",s[i]);
 }
 printf("\n\n\n\n\n\n\n\n\t\t ~ Hi~ o(* ̄▽ ̄*)ブ~ ~ ~祝您旅途愉快~ ~\n");
 printf("================================================================================\n");

}

void main()
{
 int i;
 system("color 4e");
 screen();
 Sleep(3000);
 print();
 while(1)
 {
  printf("请输入你的选择(1~9):");
  loop:scanf("%d",&i);
  if(i<1||i>9)
  {
   printf("输入有误,请在1~9中进行选择:");
   goto loop;
  }
  switch(i)
  {
  case 1:
   inputdata();
   break;
  case 2:
   lookdata(head);
   break;
  case 3:
   insert();
   break;
  case 4:
    deleted();
   break;
  case 5:
   find(head);
   break;
  case 6:
   update(head);
   break;
  case 7:
   save(head);
   break;
  case 8:
   print();
   break;
  case 9:
   exit(1);
   break;
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现通讯录功能

    本文实例为大家分享了C语言实现通讯录功能的具体代码,供大家参考,具体内容如下 先定义头文件 #ifndef __CONTACT_H__ #define __CONTACT_H__ #define NAME_LEN 10 #define SEX_LEN 6 #define TELE_LEN 12 #define ADDR_LEN 20 #define MAX_PEO 1000 typedef struct PEO { char name[NAME_LEN]; int age; char sex[S

  • C语言使用结构体实现简单通讯录

    C语言用结构体实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 代码实现: 头文件: #ifndef __HEAD_H__ ////防止头文件被多次调用 #define __HEAD_H__ #include<stdio.h> #include<string.h> #in

  • C语言基于哈希表实现通讯录

    本文为大家分享了C语言基于哈希表实现通讯录的具体代码,供大家参考,具体内容如下 1.需求分析 本演示程序用C语言编写,完成哈希表的生成,电话号码的插入.以及查找等功能. (1)按提示输入相应的联系人的相关资料: (2)以相应的输出形式输出所存储的的联系人的资料: (3)程序可以达到建立.添加.查找.打印的功能: (4)程序可以判断用户输入的非法数据并引导正确的输入. 2.概要设计 存储电话号码的记录时,若在存储位置和其关键字之间建立某种确定的对应关系使得每个关键字和存储结构中一个唯一的存储位置相

  • 用C语言实现简易通讯录

    C语言实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 **提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人** 思路分析: 首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文件,这个头文件里可以包含一些相应信息,当实现文件和测试文件包含自己定义的头文件时便可以获得一些相关的信息.所以头文件里

  • C语言通讯录管理系统完整版

    C语言实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计算字节//

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

    本文实例为大家分享了C语言通讯录管理系统课程设计,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> struct Sign{ char name[8]; char sex[4]; char birthday[12]; char phone[11]; char postcode[7]; char addr[30]; struct Sign *next; }pe; char Ph

  • C语言实现个人通讯录管理系统

    如何用c语言制作简易的个人通讯录管理系统?想必这是每一位初步学习c语言的同学需要解决的一个大问题.如何将这些数据类型不完全相同的数据元素存储并访问呢?采用结构体便能轻松解决这个问题! #include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> struct stu //第一部分:声明结构体类型struct stu { char name[100];//姓名为字符串型

  • C语言实现简单的通讯录

    用C语言写了一个简单的通讯录,说简单一是功能简单,二是也没有加读写文件操作,只是作为链表操作的一个练习,希望能给这方面的新手一此引导和帮助. 代码: /* 转贴请注明出处 */ /* 作者:小浦原(ID:blueboy82006) */ /* http://blog.csdn.net/blueboy82006 */ #include <stdio.h> #include <stdlib.h> #include<string.h> #include<ctype.h&

  • C语言实现通讯录系统

    C语言通讯录系统实现,供大家参考,具体内容如下 需求分析: 利用文件读,写的方法 实现增加通讯录联系人信息 实现删除通讯录联系人信息 实现查找通讯录联系人信息 实现修改通讯录联系人信息 实现查看现有通讯录联系人信息 代码实现: // main.c // C语言通讯录实现 // // Created by Brisinga on 15/10/14. // Copyright © 2015年 yan. All rights reserved. // #include <stdio.h> #incl

  • 使用C语言打造通讯录管理系统和教学安排系统的代码示例

    通讯录管理系统 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计

随机推荐