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

这篇文章主要为大家详细介绍了C语言实现简单通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C语言实现简单通讯录管理系统,久久派带你了解更多相关信息。

C语言实现的通讯录管理系统,供大家参考,具体内容如下

设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:学号、姓名、电话号码、所在班级、寝室地址等),通信录数据类型定义为结构体类型。

主要实现功能包括:

(1)创建学生通讯录
(2)修改学生通讯录
(3)增删学生通讯录
(4)能够按多种方式进行查询(如:①按学号查询;②按所在班级查询)

源代码:

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<windows.h>#include<time.h>typedef struct people{ char name[10]; //姓名 char IDnumber[20];//学号 char phone[15];   // 手机号 int classNum; //班级 char roomID[10];   //寝室 }people;  //定义别名people//函数模块定义void UI_show();//进入界面 UI 实现void NEW_in(); //新学生信息添加void OLD_adjust();//修改学生信息void OLD_delete(); //删除学生信息void OLD_find();  //学生信息查找void OLD_findByNum();//通过学号查找void OLD_findByName();//通过姓名查找//各种UI界面显示void UI_show1();void UI_show2();void UI_show3();void UI_show4();void UI_show5();void UI_show6();//=======================================================================//进入界面 UI 实现void UI_show(){ int i; //-------------------------------------------------------------------- printf(\"\\n\"); for (i = 0; i < 75; i++)   //数字用来  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\"); for (i = 0; i < 30; i++) {  printf(\" \"); } printf(\"欢迎进入通讯录管理系统\"); for (i = 0; i < 30; i++) {  printf(\" \"); } printf(\"\\n\"); for (i = 0; i < 75; i++)    {  printf(\"=\"); } //实现上方欢迎界面//-------------------------------------------------------------------- printf(\"\\n\\n\\n\"); for (i = 0; i < 33; i++)                          //以下实现  菜单界面功能选择 {  printf(\" \"); } printf(\"请选择以下功能:\\n\"); for (i = 0; i < 33; i++) {  printf(\" \"); } printf(\"1、添加学生通讯录\\n\"); for (i = 0; i < 33; i++) {  printf(\" \"); } printf(\"2、修改学生通讯录\\n\"); for (i = 0; i < 33; i++) {  printf(\" \"); } printf(\"3、删除学生通讯录\\n\"); for (i = 0; i < 33; i++) {  printf(\" \"); } printf(\"4、查找通讯录信息\\n\"); for (i = 0; i < 33; i++) {  printf(\" \"); } printf(\"5、退出系统\"); printf(\"\\n\\n\"); for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\\n\"); for (i = 0; i < 33; i++) {  printf(\" \"); } printf(\"请选择:\"); //实现界面UI}//=======================================================================//添加学生到通讯录void NEW_in(){ FILE* fp = NULL; //定义文件指针    fp = fopen(\"output.txt\", \"a\");//以追加的方式打开 文件 if (fp == NULL) {  printf(\"\\n出现未知错误!按任意键退出.....\\n\");  exit(0); } int classNum;  //班级 char name[10]; //姓名 char IDnumber[20];//学号 char phone[15];   // 手机号 char roomID[10];   //寝室  char ch;  //键盘输入选择 system(\"cls\"); //清屏  UI_show1();  // 界面显示1; while (1)     //进入循环体,直到接收到信息 跳出循环 {  printf(\"请输入姓名:\");  scanf(\"%s\", name);  printf(\"请输入学号:\");  scanf(\"%s\", IDnumber);  printf(\"请输入联系电话:\");  scanf(\"%s\", phone);  printf(\"请输入寝室:\");  scanf(\"%s\", roomID);  printf(\"请输入班级:\");  scanf(\"%d\", &classNum);    //缓冲区保存到文件  fprintf(fp, \"%s  %s  %s  %s  %d  \\n\", name,  IDnumber, phone, roomID, classNum);  do           // 接收字符 判断是否 继续录入用户信息  {   printf(\"是否继续录入?请选择(Y/N)\");   getchar();   //接收 回车键   scanf(\"%c\", &ch);  } while ((ch != \'Y\') && (ch != \'y\') && (ch != \'n\') && (ch != \'N\'));  if ((ch == \'n\') || (ch == \'N\'))  {   fclose(fp);  //如果用户 输入N 则保存 并退出程序   break;  } }}//=========================================================================//修改学生通讯录信息void OLD_adjust()      //    先将硬盘文件中数据 保存到 内存缓冲区中,找到要修改的用户信息,修改后 重新写入文档{ system(\"cls\");        //清屏 people peopleI[100];//建立结构体 数组 int number = 0, sign = 0, i = 1, a, test; char name[10], ch; int classNum;  //班级 char IDnumber[20];//学号 char phone[15];   // 手机号 char roomID[10];   //寝室 FILE* fp = NULL;  //文件指针 UI_show2();       //UI调用 fp = fopen(\"output.txt\", \"r+\");     //以读写的方式打开文件 if (fp == NULL)                                                      // 错误检测 {  printf(\"文件打开失败!请先添加用户信息!\\n\");  return;  } printf(\"请输入要修改的学生姓名:\"); scanf(\"%s\", name); while (!feof(fp))  //从文件中读取 {  fscanf(fp, \"%s %s %s %s %d\", peopleI[i].name,  peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID, &peopleI[i].classNum);  i++;     //记录行的个数 }  printf(\"\\n\"); i--; test = i;  //保存 数据的行数 for ( ; i >= 0; i--) {  a = strcmp(name, peopleI[i].name);  //比较 输入的用户名  和文件中的用户名  if (a == 0)  {   sign = 1;  //判断 赋值1  代表找到 该数据   printf(\"姓名%s,学号%s,联系电话%s,寝室%s,班级%d\\n\", peopleI[i].name, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID,peopleI[i].classNum);   do   // 友情提示 选择   {    printf(\"你确定要修改该用户的信息吗?(Y/N):\");    getchar();    scanf(\"%c\", &ch);   } while ((ch != \'Y\') && (ch != \'y\') && (ch != \'n\') && (ch != \'N\'));   if ((ch == \'y\') || (ch == \'Y\'))  //如果 选y则 录入信息   {    printf(\"请输入姓名:\");          scanf(\"%s\", name);  printf(\"请输入学号:\");  scanf(\"%s\", IDnumber);  printf(\"请输入联系电话:\");  scanf(\"%s\", phone);  printf(\"请输入寝室:\");  scanf(\"%s\", roomID);  printf(\"请输入班级:\");  scanf(\"%d\", &classNum);    printf(\"修改成功!\");    fclose(fp);  //关闭文件    fp = fopen(\"output.txt\", \"w\");    for (i = 1; i < test; i++) //将内存中 修改过的信息 重新写入文件    {     fscanf(fp, \"%s %s %s %s %d\", peopleI[i].name,  peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID, &peopleI[i].classNum);  }    fclose(fp);    break; //跳出 for循环   }   else  //假如不修改信息  再次写入文件   {        fclose(fp);    break;   }  } } if (sign == 0) {  printf(\"没找到该用户!\\n请按任意键继续....\");  getchar(); }}//===============================================================================//删除住户信息的功能void OLD_delete(){ //  先将硬盘文件中数据 保存到 内存缓冲区中,找到要删除的用户信息,删除后 重新写入文档 system(\"cls\");  //清屏 people peopleI[10000];//建立结构体 数组 int number = 0, len = 0, sign = 0, i = 1, a, test, j; char name[10], ch; FILE* fp = NULL;  //文件指针 UI_show3(); fp = fopen(\"output.txt\", \"r\"); if (fp == NULL) {  printf(\"未找到文件!\");  return;    //返回 main函数 } printf(\"请输入要删除的住户姓名:\"); scanf(\"%s\", name); while (!feof(fp))  //从文件中读取,文件中数据转移到内存数组中区 {     //!feof(fp)只要文件不到末尾 就一直读下去  fscanf(fp, \"%s %s %s %s %d\", peopleI[i].name,  peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID, &peopleI[i].classNum);  i++; } ///------------------------------------  fclose(fp);  //保存文件  printf(\"\\n\"); i--; test = i;  //保存 行数 for (; i >= 0; i--) {  a = strcmp(name, peopleI[i].name);  //比较 输入的用户名  和文件中的用户名  if (a == 0)   //找到相应位置     {   sign = 1;  // 标志 是否找到 数据    printf(\"姓名%s,学号%s,联系电话%s,寝室%s,班级%d\\n\", peopleI[i].name, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID,peopleI[i].classNum);  //显示出要修改的信息   do   {    printf(\"你确定要删除该用户的信息吗?(Y/N):\");    getchar();    scanf(\"%c\", &ch);   } while ((ch != \'Y\') && (ch != \'y\') && (ch != \'n\') && (ch != \'N\'));   if ((ch == \'y\') || (ch == \'Y\'))  //假如 确定   {    printf(\"删除成功!\");    fp = fopen(\"output.txt\", \"w\");  //以写的方式打开,源文件被清除    for (j = 1; j < test; j++)  //重新写入文件      {     if (j == i) // 不写入 第i个数据     {      //操作为空      }     else //否则  写入文件      fscanf(fp, \"%s %s %s %s %d\", peopleI[i].name,  peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID, &peopleI[i].classNum);  }    fclose(fp);  //关闭  保存缓冲区 文件   }   else    //假如不修改信息  再次写入文件   {    fp = fopen(\"output.txt\", \"w\");  //以写的方式打开,源文件被清除    for (i = 1; i < test; i++) //将内存中 修改过的信息 重新写入文件    {     fscanf(fp, \"%s %s %s %s %d\", peopleI[i].name,  peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID, &peopleI[i].classNum);   }    fclose(fp);   }  } } if (sign == 0)   //判断为未找到用户 {  printf(\"没找到该用户!\\n请按回车键返回菜单选项.....\");  getchar(); }}//========================================================================================//查询通讯录信息;void OLD_find(){ system(\"cls\"); int temp; UI_show5();  printf(\"1.按学号查询通讯录信息\\t2.按姓名查询通讯录信息\\n\"); printf(\"请选择……\"); scanf(\"%d\",&temp); switch(temp){ case 1:  system(\"cls\");  OLD_findByNum();  break; case 2:  system(\"cls\");  OLD_findByName();    break; default:printf(\"\\n\\t\\t\\t输入错误! 按回车键返回重新选择\"); } _getch(); system(\"cls\");}//===================================================================================//按照学号查询通讯录信息void OLD_findByNum()     //    先将硬盘文件中数据 保存到 内存缓冲区中,找到要用户信息,修改后 重新写入文档{ system(\"cls\");        //清屏 people peopleI[100];//建立结构体 数组 int number = 0, sign = 0, i = 1,  test; int p; char IDnumber[20]; FILE* fp = NULL;  //文件指针 void UI_show5();       //UI调用 fp = fopen(\"output.txt\", \"r\");     //以读写的方式打开文件 if (fp == NULL)                                                      // 错误检测 {  printf(\"文件打开失败!请先添加用户信息!\\n\");  return;  // exit(0); } printf(\"请输入要查询的学号:\"); scanf(\"%s\",IDnumber); while (!feof(fp))  //从文件中读取 {  fscanf(fp, \"%s %s %s %s %d\", peopleI[i].name,  peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID, &peopleI[i].classNum);  i++;     //记录行的个数 } printf(\"\\n\"); i--; test = i;  //保存 数据的行数 for (; i >= 0; i--) {    //比较 输入的学号  和文件中的学号  p=strcmp(IDnumber,peopleI[i].IDnumber);  if (p==0)  {   sign = 1;  //判断 赋值1  代表找到 该数据   printf(\"姓名%s,学号%s,联系电话%s,寝室%s,班级%d\\n\", peopleI[i].name, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID,peopleI[i].classNum);   printf(\"\\n\");    fclose(fp);  //关闭文件   }   else  //假如meiyou信息  再次写入文件   {       fclose(fp);   }  } if (sign == 0) {  printf(\"没找到该学生信息!\\n请按任意键继续....\");  getchar(); }}//===================================================================================//按照姓名查询通讯录信息void OLD_findByName()     //    先将硬盘文件中数据 保存到 内存缓冲区中,找到要用户信息,修改后 重新写入文档{ system(\"cls\");        //清屏 people peopleI[100];//建立结构体 数组 int number = 0, sign = 0, i = 1,  test; int p; char name[10]; FILE* fp = NULL;  //文件指针 void UI_show6();       //UI调用 fp = fopen(\"output.txt\", \"r\");     //以读写的方式打开文件 if (fp == NULL)                                                      // 错误检测 {  printf(\"文件打开失败!请先添加用户信息!\\n\");  return;  // exit(0); } printf(\"请输入要查询的姓名:\"); scanf(\"%s\",name); while (!feof(fp))  //从文件中读取 {  fscanf(fp, \"%s %s %s %s %d\", peopleI[i].name,  peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID, &peopleI[i].classNum);  i++;     //记录行的个数 } printf(\"\\n\"); i--; test = i;  //保存 数据的行数 for (; i >= 0; i--) {    //比较 输入的姓名  和文件中的姓名  p=strcmp(name,peopleI[i].name);  if (p==0)  {   sign = 1;  //判断 赋值1  代表找到 该数据   printf(\"姓名%s,学号%s,联系电话%s,寝室%s,班级%d\\n\", peopleI[i].name, peopleI[i].IDnumber, peopleI[i].phone, peopleI[i].roomID,peopleI[i].classNum);   printf(\"\\n\");    fclose(fp);  //关闭文件   }   else  //假如meiyou信息  再次写入文件   {       fclose(fp);   }  } if (sign == 0) {  printf(\"没找到该学生信息!\\n请按任意键继续....\");  getchar(); }}//===================================================================================//判断文件是否为空int NEW_oj(){ FILE* fp; fp = fopen(\"output.txt\", \" r\"); if (fp == NULL) {  fp = fopen(\"output.txt\", \" w\"); } if (fgetc(fp) == EOF) {  fclose(fp);  return 0; } else {  return 1;  fclose(fp); }}//===================================================================================//      各种UI界面显示void UI_show1(){ int i; for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\"); for (i = 0; i < 15; i++) {  printf(\" \"); } printf(\"你正在添加通讯录学生信息,请根据提示输入信息。\\n\"); for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\");}void UI_show2(){ int i; for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\"); for (i = 0; i < 15; i++) {  printf(\" \"); } printf(\"你正在修改通讯录学生信息,请根据提示输入信息。\\n\"); for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\");}void UI_show3(){ int i; for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\"); for (i = 0; i < 15; i++) {  printf(\" \"); } printf(\"你正在删除通讯录学生信息,请根据提示输入信息。\\n\"); for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\");}void UI_show4(){ int i; for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\"); for (i = 0; i < 15; i++) {  printf(\" \"); } printf(\"你正在使用通讯录查询功能,请根据提示输入信息。\\n\"); for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\");}void UI_show5(){ int i; for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\"); for (i = 0; i < 15; i++) {  printf(\" \"); } printf(\"你正在使用按学号查找功能。\\n\"); for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\");}void UI_show6(){ int i; for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\"); for (i = 0; i < 15; i++) {  printf(\" \"); } printf(\"你正在使用按姓名查找功能。\\n\"); for (i = 0; i < 75; i++)   //数字  控制 上方 = 数量  {  printf(\"=\"); } printf(\"\\n\");}int main(){  int pan, p;  while (1) {  p = NEW_oj();//判断用户文件是否为空  if (p == 0)  {   printf(\"\\n\\n查询文件中未存在学生信息,请先进行信息录入!!!\");   printf(\"\\n请按回车键,进入信息添加系统.....\");   getchar();   NEW_in();  }  system(\"cls\");  //清屏  UI_show();    //调用 界面UI 显示  scanf(\"%d\", &pan);  switch (pan)  {  case 1:NEW_in(); break;//通讯录学生信息添加  case 2:OLD_adjust(); break;//通讯录学生信息修改  case 3:OLD_delete(); break;//通讯录学生信息删除  case 4:OLD_find(); break;//查询通讯录学生信息  case 5:exit(0);  break;//退出系统  default:printf(\"\\n\\t\\t\\t输入错误! 按回车键返回重新选择\");//按键错误反馈  }  _getch();  system(\"cls\");//清屏 } system(\"pause\"); return 0;}

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 203304862@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/7240.html

发表评论

登录后才能评论