C语言实现通讯录管理系统
更新时间:2021年1月2日 21:51 点击:1894
本文实例为大家分享了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; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
上一篇: C语言实现简易的三子棋游戏
下一篇: C语言实现多线程定时器实例讲解
相关文章
- 这篇文章主要为大家详细介绍了C语言实现放烟花的程序,有音乐播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-23
- 本篇文章主要介绍C语言中char的知识,并附有代码实例,以便大家在学习的时候更好的理解,有需要的可以看一下...2020-04-25
- 这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
- 这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- 这篇文章主要介绍了C语言中计算正弦的相关函数总结,包括正弦和双曲线正弦以及反正弦的函数,需要的朋友可以参考下...2020-04-25
详解C语言中的rename()函数和remove()函数的使用方法
这篇文章主要介绍了详解C语言中的rename()函数和remove()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了C语言中求和、计算平均值、方差和标准差的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-10
- 本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...2021-09-18
- 这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
- 今天小编就为大家分享一篇C语言实现从文件读入一个3*3数组,并计算每行的平均值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C语言中memcpy 函数的用法详解的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下...2020-04-25
- 很多同学在学习c语言的时候是不是会碰到a++和++a都有甚么作用啊。今天我们就来探讨下...2020-04-25
- 这篇文章主要为大家详细介绍了原生JS实现微信通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-19
- 下面小编就为大家带来一篇C语言实现时间戳转日期的算法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C语言之整数划分问题(递归法)实例代码的相关资料,需要的朋友可以参考下...2020-04-25
- 本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。...2020-04-25