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;}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持趣讯吧。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/7240.html