学生通讯录C语言课程设计源代码.docx
《学生通讯录C语言课程设计源代码.docx》由会员分享,可在线阅读,更多相关《学生通讯录C语言课程设计源代码.docx(23页珍藏版)》请在冰点文库上搜索。
![学生通讯录C语言课程设计源代码.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/de1ff5d7-8738-4ef8-924d-b310508c758d/de1ff5d7-8738-4ef8-924d-b310508c758d1.gif)
学生通讯录C语言课程设计源代码
#include//程序中所需用到的所有函数的头文件//
#include//清屏,暂停所需头文件//
#include//退出所需函数头文件//
#include//字符串函数//
charnamekey[20],numkey[11],phonekey[20];//全局变量,输入,查询,修改时要用到//
intrshu;
voidmenu();//后面主函数中需要调用到的函数,为全局变量//
voidadd();
voidalter();
voiddelet();
voidsearch();
voidhelp();
voidorder();
voidscan();
structstudent//定义一个数组,储存所需录入的信息,整个程序都可以使用//
{
charnum[11];
charname[20];
charsex[5];
charaddress[50];
charphone[20];
charqq[10];
}stu[50];
voidmenu()
{
intwenjian();
intn;
while
(1)//循环使用此函数//
{system("cls");//每次循环此函数都清屏//
wenjian();//存入文件//
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("\n★→菜单←★\n");
printf("\n1.添加学生信息2.修改学生信息\n");
printf("\n3.删除学生信息4.查询学生信息\n");
printf("\n5.学生信息排序6.浏览学生信息\n");
printf("\n7.帮助菜单8.退出系统\n");
printf("\n★→学生通讯录←★\n");
printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("\n");
printf("请选择序号(1~8):
[]\b\b");
scanf("%d",&n);
if(n>0&&n<9)
{
switch(n)
{
case1:
add();break;
case2:
alter();break;
case3:
delet();break;
case4:
search();break;
case5:
order();break;
case6:
scan();break;
case7:
help();break;
case8:
exit(0);
}
}
else
{
printf("您输入的序号不在范围内:
\n");
system("pause");//暂停,不直接执行后续操作//
}
}
}
voidmain()//主函数,运行菜单函数//
{
menu();
}
voidadd()//添加函数,添加通讯录中的信息//
{
inti,n,j,k;
charw,m;
printf("请输入所需添加信息条数(请输入数字1~50):
");//输入信息的条数,决定添加多少信息//
scanf("%d",&n);
for(j=0;;j++)
{
if(n<1||n>50)//判断输入的数是否在存储空间中,不满足,则重新选择//
{
printf("输入错误,请选择:
1.重新输入2.退出输入返回主菜单:
");
printf("\n输入您的选择(1or2):
");
scanf("%d",&k);
if(k==1)add();//返回添加函数//
if(k==2)menu();//返回主菜单//
}
elsebreak;
}
for(i=0;i{
printf("\n请输入学号:
");
scanf("%s",stu[rshu+i].num);
printf("请输入姓名:
");
scanf("%s",stu[rshu+i].name);
printf("请输入性别(morw):
");
scanf("%s",stu[rshu+i].sex);
for(j=0;;j++)
{
if(strcmp(stu[rshu+i].sex,"w")!
=0&&strcmp(stu[rshu+i].sex,"m")!
=0)
{//进行性别录入判断,只能为m或者w,否则重新输入//
printf("输入错误,请重新输入:
");
printf("\n请输入性别(morw):
");
scanf("%s",stu[rshu+i].sex);
}
elsebreak;
}
printf("请输入通讯地址:
");//判断后继续输入//
scanf("%s",stu[rshu+i].address);
printf("请输入电话:
");
scanf("%s",stu[rshu+i].phone);
printf("请输入QQ号:
");
scanf("%s",stu[rshu+i].qq);
}
rshu+=n;//总人数增加添加的条数//
printf("\n添加成功!
\n");
system("pause");//暂停,不直接执行后续操作//
menu();//返回主菜单//
}
voidalter()//修改通讯录中的信息//
{
inti,j,k,n;
charm,w;
if(rshu==0)//当人数为0时,没有数据删除,用户选择是否添加数据//
{
printf("暂无通讯录数据,是否添加通讯录:
1.是(按其它数字则返回主菜单):
\n");
printf("请选择:
");
scanf("%d",&n);
if(n==1)add();
elsemenu();
}
printf("\n请输入要修改学生的姓名:
");
scanf("%s",namekey);
for(i=0;iif(strcmp(namekey,stu[i].name)==0)//比较字符串//
{
printf("\n已查询到,记录为:
");
printf("\n\n学号,姓名,性别,通讯地址,电话,QQ号:
");
printf("\n%s,%s,%s,%s,%s,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phone,stu[i].qq);
break;
}
if(i==rshu)//当i=rshu时,证明整个通讯录中的学生都查询到了,没有符合的//
{
printf("\n没有该同学记录,请继续选择操作:
\n");
printf("\n请选择:
1.重新输入(其它数字键则返回主菜单)");
scanf("%d",&n);
if(n==1)alter();
elsemenu();
}
else
{
system("pause");
system("cls");
printf("\n\n学号,姓名,性别,通讯地址,电话,QQ号:
");
printf("\n%s,%s,%s,%s,%s,%s",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phone,stu[i].qq);
printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("\n\n请选择要修改的信息且一次操作只能修改一次:
");
printf("\n\n1.学号2.姓名");//满足各种需要修改的信息//
printf("\n\n3.通讯地址4.电话号码");
printf("\n\n5.QQ号码6.全部信息");
printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("\n请选择(1~6):
");
scanf("%d",&k);
if(k<1||k>6)
{
printf("输入有误,请选择1.重新输入2.退出修改返回主菜单");
printf("\n输入您的选择(1or2):
");
scanf("%d",&n);
if(n==1)alter();
if(n==2)menu();
}
if(k==1)//修改学号//
{
printf("\n请输入新数据:
");
printf("\n请输入学号:
");
scanf("%s",stu[i].num);
}
if(k==2)
{
printf("\n请输入新数据:
");
printf("请输入姓名:
");
scanf("%s",stu[i].name);
}
if(k==3)//修改通讯地址//
{
printf("\n请输入新数据:
");
printf("请输入通讯地址:
");
scanf("%s",stu[i].address);
}
if(k==4)//修改电话//
{
printf("\n请输入新数据:
");
printf("请输入电话:
");
scanf("%s",stu[i].phone);
}
if(k==5)//修改QQ号//
{
printf("\n请输入新数据:
");
printf("请输入QQ号:
");
scanf("%s",stu[i].qq);
}
if(k==6)//修改全部信息//
{
printf("\n请输入新数据:
");
printf("\n请输入学号:
");
scanf("%s",stu[i].num);
printf("请输入姓名:
");
scanf("%s",stu[i].name);
printf("请输入性别(morw):
");
scanf("%s",stu[i].sex);
for(j=0;;j++)
{
if(strcmp(stu[i].sex,"w")!
=0&&strcmp(stu[i].sex,"m")!
=0)
{
printf("输入错误,请重新输入:
");
printf("\n请输入性别(morw):
");
scanf("%s",stu[i].sex);
}
elsebreak;
}
printf("请输入通讯地址:
");
scanf("%s",stu[i].address);
printf("请输入电话:
");
scanf("%s",stu[i].phone);
printf("请输入QQ号:
");
scanf("%s",stu[i].qq);
}
}
printf("修改成功!
\n");
printf("是否需要查看修改后的信息?
:
是(按1)or否(按2):
");
scanf("%d",&k);
if(k==1)
{
printf("\n学号,姓名,性别,通讯地址,电话,QQ号:
");
printf("\n%s,%s,%s,%s,%s,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phone,stu[i].qq);
printf("\n可返回主菜单\n");
}
if(k==2)
{
printf("\n可返回主菜单\n");
}
system("pause");//暂停,不直接执行后续操作//
menu();
}
voiddelet()//删除函数//
{
inti,k,n;
char*s;//定义一个字符指针变量//
if(rshu==0)//当人数为0时,没有数据删除,用户选择是否添加数据//
{
printf("暂无通讯录数据,是否添加通讯录:
1.是(按其它数字键则返回主菜单):
\n");
printf("请选择:
");
scanf("%d",&n);
if(n==1)add();
elsemenu();
}
printf("\n请输入要删除学生的姓名:
");
scanf("%s",namekey);
for(i=0;iif(strcmp(namekey,stu[i].name)==0)//判断输入名字是否在通讯录中有记录,进行字符串比较//
{
printf("\n已查询到,记录为:
");
printf("\n学号,姓名,性别,通讯地址,电话,QQ号:
");//显示查询到的信息//
printf("\n%s,%s,%s,%s,%s,%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phone,stu[i].qq);
break;
}
if(i==rshu)
{
printf("\n没有该同学记录,请继续选择操作:
\n");
printf("\n请选择:
1.重新输入(其它数字键则返回主菜单)");
scanf("%d",&n);
if(n==1)delet();
elsemenu();
}
else
{
system("pause");
system("cls");
printf("\n\n学号,姓名,性别,通讯地址,电话,QQ号:
");
printf("\n%s,%s,%s,%s,%s,%s",stu[i].num,stu[i].name,stu[i].sex,stu[i].address,stu[i].phone,stu[i].qq);
printf("\n*******************************************************************************");
printf("\n\n请选择需要删除的信息:
");
printf("\n\n******************1.学号2.通讯地址**********************");
printf("\n\n******************3.电话4.QQ号**************************");
printf("\n\n****************************5.全部信息***********************************");
printf("\n*******************************************************************************");
printf("\n\n按其它数字键则不删除信息且返回主菜单,请选择:
");
scanf("%d",&k);
if(k==1)
{
printf("\n是否删除该学生<学号>信息?
:
删除(按1)or不删除(按其它任意数字键):
");
scanf("%d",&n);
if(n==1)
{
s=stu[i].num;//将所查询到的姓名所在地址赋给s//
*s=0;//s所指的值为0,原值将被删除//
printf("已删除!
\n");
}
else
{
printf("请选择:
1.重新选择(按其它数字键则返回主菜单)\n");
scanf("%d",&n);
if(n==1)alter();
elsemenu();
}
}
if(k==2)
{
printf("\n是否删除该学生<通讯地址>信息?
:
删除(按1)or不删除(按其它任意数字键):
");
scanf("%d",&n);
if(n==1)
{
s=stu[i].address;//将所查询到的通讯地址所在地址赋给s//
*s=0;//s所指的值为0,原值将被删除//
printf("已删除!
\n");
}
else
{
printf("请选择:
1.重新选择(按其它数字键则返回主菜单)\n");
scanf("%d",&n);
if(n==1)alter();
elsemenu();
}
}
if(k==3)
{
printf("\n是否删除该学生<电话>信息?
:
删除(按1)or不删除(按其它任意数字键):
");
scanf("%d",&n);
if(n==1)
{
*(stu[i].phone)=0;//将地址所指函数的值赋为,则原值删除//
printf("已删除!
\n");
}
else
{
printf("请选择:
1.重新选择(按其它数字键则返回主菜单)\n");
scanf("%d",&n);
if(n==1)alter();
elsemenu();
}
}
if(k==4)
{
printf("\n是否删除该学生信息?
:
删除(按1)or不删除(按其它任意数字键):
");
scanf("%d",&n);
if(n==1)
{
*(stu[i].qq)=0;//将地址所指函数的值赋为,则原值删除//
printf("已删除!
\n");
}
else
{
printf("请选择:
1.重新选择(按其它数字键则返回主菜单)\n");
scanf("%d",&n);
if(n==1)alter();
elsemenu();
}
}
if(k==5)
{
printf("\n是否删除该学生<全部>信息?
:
删除(按1)or不删除(按其它任意数字键):
");
scanf("%d",&n);
if(n==1)
{
stu[i]=stu[i+1];
printf("已删除!
\n");
}
else
{
printf("请选择:
1.重新选择(按其它数字键则返回主菜单)\n");
scanf("%d",&n);
if(n==1)alter();
elsemenu();
}
}
}
if(k==5&&n==1)//当删除全部信息后,人数才减,其它删除操作不改变人数个数//
rshu-=1;
system("pause");
}
voidsearch()//查询函数//
{
voidxm();
voidxh();
voiddh();
intn;
system("cls");//清屏,把主菜单的目录覆盖掉,只显示查询界面//
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("\n★→查询界面←★\n");
printf("\n");
printf(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");
printf("1.按姓名查询|2.按学号查询\n");
printf("―――――――――――――――――――|――――――――――――――――――――\n");
printf("3.按电话查询|4.返回主菜单\n");
printf("__________________|___________________\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("\n");
while
(1)
{
printf("请选择序号(1~4):
[]\b\b");
scanf("%d",&n);
if(n>0&&n<5)
{
switch(n)
{
case1:
xm();break;
case2:
xh();break;
case3:
dh();break;
case4:
menu();
}
}
else
{
printf("您输入的序号不在范围内,请输入[1~4]:
\n");
}
}
}
voidxm()//按姓名查询函数//
{
inti,n;
if(rshu==0)//当人数为0时,没有数据查询,用户选择是否添加数据//
{
printf("暂无通讯录数据,是否添加通讯录:
1.是(按其它数字键则返回主菜单):
\n");
printf("请选择:
");
scanf("%d",&n);
if(n==1)add();
elsemenu();
}
printf("\n请输入要查询的姓名:
");
scanf("%s",namekey);
for(i=0;iif(strcmp(namekey,stu[i].name)==0)
{
printf("\n已查询到,记录为:
");
printf("\n姓名,学号,性别,通讯地址,电话,QQ号:
");
printf("\n%s,%s,%s,%s,%s,%s\n",stu[i].name,stu[i].num,stu[i].sex,stu[i].address,stu[i].phone,stu[