用c语言程序设计一个学生通讯录系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言程序设计一个学生通讯录系统相关的知识,希望对你有一定的参考价值。

问题描述:
通讯录管理系统主要管理用户通讯录的基本信息。在系统中,每个用户是一条记录,包括姓名、电话号码、通讯地址。系统要对一个有N个用户的通讯录统一进行管理。包括了用户信息的录入、显示、修改、查询等操作。
1、 功能设计要求:
1)本系统采用结构体数组进行数据存储。用户结构体应该包括用户的基本信息(姓名、电话号码、通讯地址)。
2)设计主菜单界面,确定函数个数。设计菜单应包含以下功能:
 录入信息(用户基本信息录入)
 显示(显示用户基本情况)
 修改信息(用户基本信息修改)
 查询(查询用户的基本信息)
 退出系统
3)要求:建立两个结构体数组(或链表、文件),包括至少5个用户的必要信息,能对数据进行补充、修改。执行一个具体的功能之后,程序将重新显示菜单。
3、要求:
1)用C语言实现系统;
2)函数功能要划分好(结构化程序设计);
3)界面友好(良好的人机交互),加必要的注释;
4)提供程序测试方案。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct record

char name[20]; //姓名
char phone[12]; //电话
char adress[50]; //地址
char postcode[8]; //邮政编码
char e_mail[20]; //电子邮件。
student[100]; //假设最大数为100.
//定义全局变量num,表示已经输入的人数 。
int num; //这里使用数组解决通讯录的问题,实际上使用链表更好。
int menu_select()

char s[80];
int a;/*定义整形变量*/
system("cls");
printf("\t\t***********欢迎进入通讯管理界面********\n\n");
printf("\t\t\t0. 输入记录\n");
printf("\t\t\t1. 显示记录\n");
printf("\t\t\t2. 按姓名查找\n");
printf("\t\t\t3. 按电话号码查找\n");
printf("\t\t\t4. 插入记录 \n");
printf("\t\t\t5. 按姓名排序\n");
printf("\t\t\t6. 删除记录\n");
printf("\t\t\t7. Quit\n");
printf("\t\t***********************************************\n\n");
do
printf("Enter you choice(0~7):");
scanf("%s",s);
a=atoi(s);

while (a<0 || a>7);
return a;

int adduser()

printf("\t\t\t**************** 请输入用户信息 ****************\n");
printf("\t\t\t输入姓名:\n");
scanf("%s",student[num].name);
printf("\t\t\t输入电话号码:\n");
scanf("%s",student[num].phone);
printf("\t\t\t输入地址:\n");
scanf("%s",student[num].adress);
printf("\t\t\t输入邮编:\n");
scanf("%s",student[num].postcode);
printf("\t\t\t输入e-mail:\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否继续添加?(Y/N):\n");
if(getch()=='y' || getch()=='Y')
adduser();
return(0);

void list()

int i;
system("cls");
if(num!=0)

printf("\t\t\t*************** 以下为通讯录所有信息************\n");
for (i=0;i<num;i++)

printf("\t\t\t姓名:%s\n",student[i].name);
printf("\t\t\t电话:%s\n",student[i].phone);
printf("\t\t\t地址:%s\n",student[i].adress);
printf("\t\t\t邮编:%s\n",student[i].postcode);
printf("\t\t\te-mail:%s\n",student[i].e_mail);
if(i+1<num)

system("pause");


printf("\t\t\t************************************************\n");

else
printf("\t\t\t通讯录中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单:\n");
getch(); //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。
return;

int searchbyname()

int mark=0;
int i;
printf("\t\t\t***************** 按姓名查找 *******************\n");
char name[20];
printf("\t\t\t请输入姓名:\n");
scanf("%s",name);
for(i=0;i<num;i++)

if (strcmp(student[i].name,name)==0)

printf("\t\t\t************* 以下是您查找的用户信息 ***********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
mark++;
if((i+1)<num)

printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");
if(getch()=='y' || getch()=='Y')

continue;

else
return(0);

else

printf("\t\t\t按任意键返回主菜单");
getch();
return(0);



if(mark == 0)

printf("\t\t\t没有相同姓名的用户纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);

return 0;

int searchbyphone()

int mark=0;
int i;
printf("\t\t\t****************** 按电话查找 ******************\n");
char phone[10];
printf("\t\t\t请输入电话号码:\n");
scanf("%s",phone);
for(i=0;i<num;i++)

if (strcmp(student[i].phone,phone)==0)

printf("\t\t\t************** 以下是您查找的用户信息 **********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
printf("\t\t\t按任意键返回主菜单\n");
mark++;
getch();
return(0);


if (mark==0)

printf("\t\t\t没有改用户的信息\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);

return(0);

void deletebyphone()

int i,j;
int deletemark=0;
char phone[20];
printf("\t\t\t请输入要删除用户电话号码:\n");
scanf("%s",phone);
if(num==0)

printf("\t\t\t对不起,文件中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return;

for (i=0;i<num;i++)

if (strcmp(student[i].phone,phone)==0)

printf("\t\t\t以下是您要删除的用户纪录:\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch()=='Y')

for (j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y' || getch()=='Y')
deletebyphone();
return;

else
return;

continue;

if (deletemark==0)

printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch()=='Y')
deletebyphone();
return;

return;

void deletebyname()

int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\t\t\t请输入要删除用户姓名:\n");
scanf("%s",name);
for (i=a;i<num;i++)

if(strcmp(student[i].name,name)==0)

printf("\t\t\t以下是您要删除的用户纪录:");
findmark++;
printf("\t\t\t________________________________");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch() == 'Y')

for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
if((i+1)<num)

printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y')

a=i;
continue;


printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;

if((i+1)<num)

printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y' || getch() == 'Y')

a=i;
continue;



else
continue;

if ((deletemark==0)&&(findmark==0))

printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;

else if (findmark!=0)

printf("\t\t\t没有重名信息");
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;


int dele()

char choic;
printf("\t\t\t1-按电话号码删除 2-按姓名删除");
printf("\t\t\t请选择:");
choic=getch();
switch (choic)

case '1':deletebyphone();break;
case '2':deletebyname();break;

return(0);

int sortbyname() //按姓名进行排序

int i,j;
struct record tmp;
for (i=1;i<num;i++)

if(strcmp(student[i].name,student[i-1].name)<0)

tmp=student[i];
j=i-1;
do

student[j+1]=student[j];
j--;
while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;


printf("\t\t\t排序成功,是否显示?(y/n)");
if (getch()=='y')
list();
return(0);

int main()

printf("\t\t************************************************\n");
printf("\t\t********welcome to TONGXUNLU *******************\n");
printf("\t\t###########code by XXXXX ###################\n");
printf("\t\t*************************************************\n");
printf("按任意键进入主菜单\n");
getch();
int selectnum;
while(1)

selectnum = menu_select();
switch(selectnum)

case 0:

adduser();
break;

case 1:

list();
break;

case 2:

searchbyname();
break;

case 3:

searchbyphone();
break;

case 4:

adduser(); //这里插入,应该能指定位置,不过意义不大,所以和添加记录一样了。
break;

case 5:

sortbyname();
break;

case 6:

dele();
break;

case 7:

printf("BYE BYE!\n");
system("pause");
getchar();
exit(0);



getchar();
return 0;
参考技术A OO,lz可能要自己动手写了!~ 控制台程序,其实很简单的!

C语言设计个人通讯录管理系统

别从网上随便给我复制粘贴一个过来,最好自己先拿C语言验证一下,网上大多都是有错误的。
对自己自信的高手来,或者有建议的也可以回答,在另外给赏金。

个人通讯录管理系统
建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
功能要求
(1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
(2) 输入功能:可以一次完成若干条信息的输入。
(3) 显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)
(4) 查找功能:可以按姓名等多种方式查找通讯信息
(5) 增加、删除、修改功能:完成通讯录信息的多种更新
还有没有会的高手了,下面的那个有个小错误,请帮忙看下,或者给我个新的程序,谢谢

1、创建学生社团管理系统的欢迎界面,该欢迎界面以图片的方式呈现,系统启动时再屏幕中居中显示。

2、再创建用户登录窗口,用户通过文本框输入用户名和密码,单击“登录”按钮后,在窗体中显示登录是否成功;单击“重置”按钮后,清空文本框信息。

3、创建“社团成员信息管理”窗体,用户可以对成员信息进行浏览、添加、删除与修改等多种操作;本任务重将实现添加成员信息的部分功能,从窗体各个控件中获取新成员的各项数据并显示在窗体右侧。

4、完成的“社团成员信息管理”窗体中实现社团成员照片的选择,并将选择的图片显示在窗体中,为用户提供预览功能。

5、设计并创建“学生社团管理系统”的主界面,主界面中具有背景图片、菜单、工具栏、状态栏等元素。

6、对于“成员编号”等有固定长度或长度限制以及有使用规定字符集合的信息,在输入错误时作提示。窗体左侧“成员列表”上方的文本框中输入姓名并按回车,实现按键查询。

参考技术A /*
* main_tongxunlu.c
*
* Created on: 2011-6-21
* Author: zhanglujin
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct record

char name[20]; //姓名
char phone[12]; //电话
char adress[50]; //地址
char postcode[8]; //邮政编码
char e_mail[20]; //电子邮件。
student[100]; //假设最大数为100.
//定义全局变量num,表示已经输入的人数 。
int num; //这里使用数组解决通讯录的问题,实际上使用链表更好。
int menu_select()

char s[80];
int a;/*定义整形变量*/
system("cls");
printf("\t\t***********欢迎进入通讯管理界面********\n\n");
printf("\t\t\t0. 输入记录\n");
printf("\t\t\t1. 显示记录\n");
printf("\t\t\t2. 按姓名查找\n");
printf("\t\t\t3. 按电话号码查找\n");
printf("\t\t\t4. 插入记录 \n");
printf("\t\t\t5. 按姓名排序\n");
printf("\t\t\t6. 删除记录\n");
printf("\t\t\t7. Quit\n");
printf("\t\t***********************************************\n\n");
do
printf("Enter you choice(0~7):");
scanf("%s",s);
a=atoi(s);

while (a<0 || a>7);
return a;

int adduser()

printf("\t\t\t**************** 请输入用户信息 ****************\n");
printf("\t\t\t输入姓名:\n");
scanf("%s",student[num].name);
printf("\t\t\t输入电话号码:\n");
scanf("%s",student[num].phone);
printf("\t\t\t输入地址:\n");
scanf("%s",student[num].adress);
printf("\t\t\t输入邮编:\n");
scanf("%s",student[num].postcode);
printf("\t\t\t输入e-mail:\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否继续添加?(Y/N):\n");
if(getch()=='y' || getch()=='Y')
adduser();
return(0);

void list()

int i;
system("cls");
if(num!=0)

printf("\t\t\t*************** 以下为通讯录所有信息************\n");
for (i=0;i<num;i++)

printf("\t\t\t姓名:%s\n",student[i].name);
printf("\t\t\t电话:%s\n",student[i].phone);
printf("\t\t\t地址:%s\n",student[i].adress);
printf("\t\t\t邮编:%s\n",student[i].postcode);
printf("\t\t\te-mail:%s\n",student[i].e_mail);
if(i+1<num)

system("pause");


printf("\t\t\t************************************************\n");

else
printf("\t\t\t通讯录中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单:\n");
getch(); //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。
return;

int searchbyname()

int mark=0;
int i;
printf("\t\t\t***************** 按姓名查找 *******************\n");
char name[20];
printf("\t\t\t请输入姓名:\n");
scanf("%s",name);
for(i=0;i<num;i++)

if (strcmp(student[i].name,name)==0)

printf("\t\t\t************* 以下是您查找的用户信息 ***********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
mark++;
if((i+1)<num)

printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");
if(getch()=='y' || getch()=='Y')

continue;

else
return(0);

else

printf("\t\t\t按任意键返回主菜单");
getch();
return(0);



if(mark == 0)

printf("\t\t\t没有相同姓名的用户纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);

return 0;

int searchbyphone()

int mark=0;
int i;
printf("\t\t\t****************** 按电话查找 ******************\n");
char phone[10];
printf("\t\t\t请输入电话号码:\n");
scanf("%s",phone);
for(i=0;i<num;i++)

if (strcmp(student[i].phone,phone)==0)

printf("\t\t\t************** 以下是您查找的用户信息 **********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
printf("\t\t\t按任意键返回主菜单\n");
mark++;
getch();
return(0);


if (mark==0)

printf("\t\t\t没有改用户的信息\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);

return(0);

void deletebyphone()

int i,j;
int deletemark=0;
char phone[20];
printf("\t\t\t请输入要删除用户电话号码:\n");
scanf("%s",phone);
if(num==0)

printf("\t\t\t对不起,文件中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return;

for (i=0;i<num;i++)

if (strcmp(student[i].phone,phone)==0)

printf("\t\t\t以下是您要删除的用户纪录:\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch()=='Y')

for (j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y' || getch()=='Y')
deletebyphone();
return;

else
return;

continue;

if (deletemark==0)

printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch()=='Y')
deletebyphone();
return;

return;

void deletebyname()

int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\t\t\t请输入要删除用户姓名:\n");
scanf("%s",name);
for (i=a;i<num;i++)

if(strcmp(student[i].name,name)==0)

printf("\t\t\t以下是您要删除的用户纪录:");
findmark++;
printf("\t\t\t________________________________");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch() == 'Y')

for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
if((i+1)<num)

printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y')

a=i;
continue;


printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;

if((i+1)<num)

printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y' || getch() == 'Y')

a=i;
continue;



else
continue;

if ((deletemark==0)&&(findmark==0))

printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;

else if (findmark!=0)

printf("\t\t\t没有重名信息");
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;


int dele()

char choic;
printf("\t\t\t1-按电话号码删除 2-按姓名删除");
printf("\t\t\t请选择:");
choic=getch();
switch (choic)

case '1':deletebyphone();break;
case '2':deletebyname();break;

return(0);

int sortbyname() //按姓名进行排序

int i,j;
struct record tmp;
for (i=1;i<num;i++)

if(strcmp(student[i].name,student[i-1].name)<0)

tmp=student[i];
j=i-1;
do

student[j+1]=student[j];
j--;
while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;


printf("\t\t\t排序成功,是否显示?(y/n)");
if (getch()=='y')
list();
return(0);

int main()

printf("\t\t************************************************\n");
printf("\t\t********welcome to TONGXUNLU *******************\n");
printf("\t\t###########code by XXXXX ###################\n");
printf("\t\t*************************************************\n");
printf("按任意键进入主菜单\n");
getch();
int selectnum;
while(1)

selectnum = menu_select();
switch(selectnum)

case 0:

adduser();
break;

case 1:

list();
break;

case 2:

searchbyname();
break;

case 3:

searchbyphone();
break;

case 4:

adduser(); //这里插入,应该能指定位置,不过意义不大,所以和添加记录一样了。
break;

case 5:

sortbyname();
break;

case 6:

dele();
break;

case 7:

printf("BYE BYE!\n");
system("pause");
getchar();
exit(0);



getchar();
return 0;

以上回答你满意么?追问

error C2065: 'searchbyphone' : undeclared identifier
这有个错误,请问怎么修改,就这一个,谢谢了。改好就给悬赏了。

本回答被提问者采纳
参考技术B 把邮箱给我,我给你工程追问

他说不让留邮箱。说可以上传到知道

以上是关于用c语言程序设计一个学生通讯录系统的主要内容,如果未能解决你的问题,请参考以下文章

c语言通讯录程序

C语言设计个人通讯录管理系统

求用C语言建立通讯录管理系统

c语言通讯录管理系统的排序怎么做?

c语言编写一个通讯录系统 用简单一点的c😊

用C语言编写宿舍管理查询系统