您的当前位置:首页正文

学生通讯录C语言课程设计源代码

2021-03-16 来源:好走旅游网
#include //程序中所需用到的所有函数的头文件// #include //清屏,暂停所需头文件// #include //退出所需函数头文件// #include //字符串函数//

char namekey[20],numkey[11],phonekey[20]; //全局变量,输入,查询,修改时要用到// int rshu;

void menu(); //后面主函数中需要调用到的函数,为全局变量// void add(); void alter(); void delet(); void search(); void help(); void order(); void scan();

struct student //定义一个数组,储存所需录入的信息,整个程序都可以使用// { char num[11]; char name[20]; char sex[5]; char address[50]; char phone[20]; char qq[10]; }stu[50];

void menu() { int wenjian(); int n; while(1) //循环使用此函数// {system(\"cls\"); //每次循环此函数都清屏// wenjian(); //存入文件//

printf(\"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\"); printf(\"\\n ★→ 菜单 ←★ \\n\"); printf(\"\\n 1.添加学生信息 2.修改学生信息 \\n\");

printf(\"\\n 3.删除学生信息 4.查询学生信息 \\n\"); printf(\"\\n 5.学生信息排序 6.浏览学生信息 \\n\"); printf(\"\\n 7.帮助菜单 8.退出系统 \\n\"); printf(\"\\n ★→ 学生通讯录 ←★ \\n\");

printf(\"\\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\");

printf(\"\\n\"); printf(\"请选择序号(1~8):[ ]\\b\\b\"); scanf(\"%d\ if (n>0 && n<9) { switch(n) {

case 1:add();break; case 2:alter();break; case 3:delet();break; case 4:search();break; case 5:order();break; case 6:scan();break; case 7:help();break; case 8:exit(0); } } else { printf(\"您输入的序号不在范围内:\\n\");

system(\"pause\"); //暂停,不直接执行后续操作// } } }

void main() //主函数,运行菜单函数// { menu();

}

void add() //添加函数,添加通讯录中的信息// { int i,n,j,k; char w,m;

printf(\"请输入所需添加信息条数(请输入数字1~50):\"); //输入信息的条数,决定添加多少信息// scanf(\"%d\ for(j=0;;j++) { if(n<1 || n>50) //判断输入的数是否在存储空间中,不满足,则重新选择// { printf(\"输入错误,请选择:1.重新输入 2.退出输入返回主菜单:\"); printf(\"\\n输入您的选择(1 or 2):\"); scanf(\"%d\ if(k==1) add(); //返回添加函数// if(k==2) menu(); //返回主菜单// }

else break; }

for(i=0;iprintf(\"请输入通讯地址:\"); //判断后继续输入//

scanf(\"%s\ printf(\"请输入电话:\"); scanf(\"%s\ printf(\"请输入QQ号:\"); scanf(\"%s\ } rshu+=n; //总人数增加添加的条数// printf(\"\\n添加成功!\\n\");

system(\"pause\"); //暂停,不直接执行后续操作// menu(); //返回主菜单// }

void alter() //修改通讯录中的信息// {

int i,j,k,n; char m,w;

if(rshu==0) //当人数为0时,没有数据删除,用户选择是否添加数据// {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字则返回主菜单):\\n\"); printf(\"请选择:\"); scanf(\"%d\ if(n==1) add(); else menu(); }

printf(\"\\n请输入要修改学生的姓名:\"); scanf(\"%s\ for(i=0;iprintf(\"\\n%s , %s , %s , %s , %s , %s\\n\e,stu[i].qq); break; }

if(i==rshu) //当i=rshu时,证明整个通讯录中的学生都查询到了,没有符合的// { printf(\"\\n没有该同学记录,请继续选择操作:\\n\"); printf(\"\\n请选择:1.重新输入 (其它数字键则返回主菜单)\");

scanf(\"%d\ if(n==1) alter(); else menu(); } else {

system(\"pause\"); system(\"cls\");

printf(\"\\n\\n学号,姓名,性别,通讯地址,电话,QQ号:\");

printf(\"\\n%s , %s , %s , %s , %s , %s\stu[i].qq);

printf(\"\\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\"); printf(\"\\n\\n请选择要修改的信息且一次操作只能修改一次: \");

printf(\"\\n\\n 1.学号 2.姓名 \"); //满足各种需要修改的信息//

printf(\"\\n\\n 3.通讯地址 4.电话号码 \"); printf(\"\\n\\n 5.QQ号码 6.全部信息 \");

printf(\"\\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\"); printf(\"\\n请选择(1~6):\"); scanf(\"%d\ if(k<1 || k>6) { printf(\"输入有误,请选择1.重新输入 2.退出修改返回主菜单\"); printf(\"\\n输入您的选择(1 or 2):\"); scanf(\"%d\ if(n==1) alter(); if(n==2) menu(); } if(k==1) //修改学号// { printf(\"\\n请输入新数据:\"); printf(\"\\n请输入学号:\"); scanf(\"%s\ }

if(k==2) { printf(\"\\n请输入新数据:\"); printf(\"请输入姓名:\"); scanf(\"%s\

} if(k==3) //修改通讯地址// { printf(\"\\n请输入新数据:\"); printf(\"请输入通讯地址:\"); scanf(\"%s\ } if(k==4) //修改电话// { printf(\"\\n请输入新数据:\"); printf(\"请输入电话:\"); scanf(\"%s\ } if(k==5) //修改QQ号// { printf(\"\\n请输入新数据:\"); printf(\"请输入QQ号:\"); scanf(\"%s\ } if(k==6) //修改全部信息// { printf(\"\\n请输入新数据:\"); printf(\"\\n请输入学号:\"); scanf(\"%s\ printf(\"请输入姓名:\"); scanf(\"%s\ printf(\"请输入性别(m or w):\"); scanf(\"%s\ for(j=0;;j++) { if(strcmp(stu[i].sex,\"w\")!=0 && strcmp(stu[i].sex,\"m\")!=0) { printf(\"输入错误,请重新输入:\"); printf(\"\\n请输入性别(m or w):\"); scanf(\"%s\ } else break; }

printf(\"请输入通讯地址:\"); scanf(\"%s\ printf(\"请输入电话:\"); scanf(\"%s\ printf(\"请输入QQ号:\"); scanf(\"%s\

} }

printf(\"修改成功!\\n\"); printf(\"是否需要查看修改后的信息?: 是(按1) or 否(按2):\"); scanf(\"%d\ if(k==1) { printf(\"\\n 学号,姓名,性别,通讯地址,电话,QQ号:\");

printf(\"\\n%s , %s , %s , %s , %s , %s\\n\e,stu[i].qq);

printf(\"\\n可返回主菜单\\n\"); } if(k==2) { printf(\"\\n可返回主菜单\\n\"); }

system(\"pause\"); //暂停,不直接执行后续操作// menu(); }

void delet() //删除函数// {

int i,k,n;

char *s; //定义一个字符指针变量//

if(rshu==0) //当人数为0时,没有数据删除,用户选择是否添加数据// {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字键则返回主菜单):\\n\"); printf(\"请选择:\"); scanf(\"%d\ if(n==1) add(); else menu(); }

printf(\"\\n请输入要删除学生的姓名:\"); scanf(\"%s\ for(i=0;i信息//

printf(\"\\n %s , %s , %s , %s , %s , %s\\n\ne,stu[i].qq); break; } if(i==rshu) { printf(\"\\n没有该同学记录,请继续选择操作:\\n\"); printf(\"\\n请选择:1.重新输入 (其它数字键则返回主菜单)\"); scanf(\"%d\ if(n==1) delet(); else menu(); } else { system(\"pause\"); system(\"cls\"); printf(\"\\n\\n学号,姓名,性别,通讯地址,电话,QQ号:\");

printf(\"\\n%s , %s , %s , %s , %s , %s\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\ if(k==1) { printf(\"\\n是否删除该学生<学号>信息?:删除(按1) or 不删除(按其它任意数字键):\"); scanf(\"%d\ if(n==1) {

s=stu[i].num; //将所查询到的姓名所在地址赋给s// *s=0; //s所指的值为0,原值将被删除// printf(\"已删除!\\n\"); } else { printf(\"请选择:1.重新选择 (按其它数字键则返回主菜单)\\n\"); scanf(\"%d\ if(n==1) alter(); else menu(); } }

if(k==2) { printf(\"\\n是否删除该学生<通讯地址>信息?:删除(按1) or 不删除(按其它任意数字键):\");

scanf(\"%d\ if(n==1) { s=stu[i].address; //将所查询到的通讯地址所在地址赋给s// *s=0; //s所指的值为0,原值将被删除// printf(\"已删除!\\n\"); } else { printf(\"请选择:1.重新选择 (按其它数字键则返回主菜单)\\n\"); scanf(\"%d\ if(n==1) alter(); else menu(); } } if(k==3) { printf(\"\\n是否删除该学生<电话>信息?:删除(按1) or 不删除(按其它任意数字键):\"); scanf(\"%d\ if(n==1) { *(stu[i].phone)=0; //将地址所指函数的值赋为,则原值删除// printf(\"已删除!\\n\"); } else { printf(\"请选择:1.重新选择 (按其它数字键则返回主菜单)\\n\");

scanf(\"%d\ if(n==1) alter(); else menu(); } } if(k==4) { printf(\"\\n是否删除该学生信息?:删除(按1) or 不删除(按其它任意数字键):\");

scanf(\"%d\ if(n==1) { *(stu[i].qq)=0; //将地址所指函数的值赋为,则原值删除// printf(\"已删除!\\n\"); } else { printf(\"请选择:1.重新选择 (按其它数字键则返回主菜单)\\n\"); scanf(\"%d\ if(n==1) alter(); else menu(); } } if(k==5) { printf(\"\\n是否删除该学生<全部>信息?:删除(按1) or 不删除(按其它任意数字键):\"); scanf(\"%d\ if(n==1) { stu[i]=stu[i+1]; printf(\"已删除!\\n\"); } else { printf(\"请选择:1.重新选择 (按其它数字键则返回主菜单)\\n\"); scanf(\"%d\ if(n==1) alter(); else menu(); } } } if(k==5&&n==1) //当删除全部信息后,人数才减,其它删除操作不改变人数个数// rshu-=1;

system(\"pause\"); }

void search() //查询函数// { void xm(); void xh(); void dh(); int n;

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\ if (n>0 && n<5) { switch(n) {

case 1:xm();break; case 2:xh();break;

case 3:dh();break; case 4:menu(); } } else { printf(\"您输入的序号不在范围内,请输入[1~4]:\\n\"); } } }

void xm() //按姓名查询函数// { int i,n;

if(rshu==0) //当人数为0时,没有数据查询,用户选择是否添加数据// {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字键则返回主菜单):\\n\"); printf(\"请选择:\"); scanf(\"%d\ if(n==1) add(); else menu(); }

printf(\"\\n请输入要查询的姓名:\"); scanf(\"%s\ for(i=0;iprintf(\"\\n 姓名,学号,性别,通讯地址,电话,QQ号:\");

printf(\"\\n%s , %s , %s , %s , %s , %s\\n\e,stu[i].qq); system(\"pause\"); break; }

if(i==rshu) { printf(\"没有该同学记录,请继续选择操作:\\n\"); system(\"pause\"); return; //回到查询界面选择//

} }

void xh() //按学号查询函数// { int i,n; if(rshu==0) //当人数为0时,没有数据查询,用户选择是否添加数据// {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字键则返回主菜单):\\n\"); printf(\"请选择:\"); scanf(\"%d\ if(n==1) add(); else menu(); }

printf(\"\\n请输入要查询的学号:\"); scanf(\"%s\ for(i=0;iprintf(\"\\n 学号,姓名,性别,通讯地址,电话,QQ号:\");

printf(\"\\n%s , %s , %s , %s , %s , %s\\n\e,stu[i].qq); system(\"pause\"); break; } if(i==rshu) { printf(\"没有该同学记录,请继续选择操作:\\n\"); system(\"pause\"); return; } }

void dh() //按电话查询函数// { int i,n; if(rshu==0) //当人数为0时,没有数据查询,用户选择是否添加数据// {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字键则返回主菜单):\\n\"); printf(\"请选择:\");

scanf(\"%d\ if(n==1) add(); else menu(); }

printf(\"\\n请输入要查询的电话:\"); scanf(\"%s\ for(i=0;iprintf(\"\\n 电话,学号,姓名,性别,通讯地址,QQ号:\");

printf(\"\\n%s , %s , %s , %s , %s , %s\\n\s,stu[i].qq); system(\"pause\"); break; } if(i==rshu) { printf(\"没有该同学记录,请继续选择操作:\\n\"); system(\"pause\"); return; } }

void help() //帮助函数// { system(\"cls\"); printf(\"\\n~~~~~~~~~~~~~~~~~~~##########欢迎使用帮助菜单##########~~~~~~~~~~~~~~~~~~~~~~\\n\"); printf(\"\\n ** 本系统为学生通讯录系统,管理学生通讯录信息 ** \\n\"); printf(\"\\n ** 您可在本系统实现添加、删除、修改、查询、排序等操作 ** \\n\"); printf(\"\\n ** 请在选择操作时,注意查看操作提示, 请您注意看清选项 ** \\n\"); printf(\"\\n ** 望您按照提示信息准确输入! ** \\n\"); printf(\"\\n ** 如 有 不 便 , 请 见 谅 ** \\n\"); printf(\"-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||-_-||\"); system(\"pause\"); }

void order() //排序函数// { int n;

void num(); void name();

system(\"cls\"); //清屏,把主菜单的目录覆盖掉,只显示排序界面//

printf(\"\\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\");

printf(\"\\n ★→ 请选择所需选项 ←★ \\n\");

printf(\"\\n-------------------------------------------------------------------------------\");

printf(\"\\n 1.按学号排序 \");

printf(\"\\n \");

printf(\"\\n 2.按姓名排序 \");

printf(\"\\n \");

printf(\"\\n 3.返回主菜单 \");

printf(\"\\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\");

printf(\"\\n\"); while(1) {

printf(\"请选择序号(1~3):[ ]\\b\\b\"); scanf(\"%d\ if (n>0 && n<4) {

switch(n) {

case 1:num();break; case 2:name();break; case 3:menu(); } } else {

printf(\"您输入的序号不在范围内,请输入[1~3]:\\n\");

} } }

void num() //排序函数中需要调用的一个函数,按学号排序// {

int i,j,n;

struct student temp; //定义一个新的结构体储存// if(rshu==0) {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字键则返回主菜单):\\n\"); printf(\"请选择:\"); scanf(\"%d\ if(n==1) add(); else menu(); }

for(i=0;ifor(j=i+1;jif(strcmp(stu[i].num,stu[j].num)>0) {

temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } }

for(i=0;iprintf(\"\\n%s , %s , %s , %s , %s , %s\\n\e,stu[i].qq);

system(\"pause\"); }

void name() //排序函数中需要调用的一个函数,按姓名排序// {

int i,j,n;

struct student temp; if(rshu==0) {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字键则返回主菜单):\\n\"); printf(\"请选择:\"); scanf(\"%d\ if(n==1) add(); else menu(); }

for(i=0;ifor(j=i+1;jif(strcmp(stu[i].name,stu[j].name)>0) {

temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } }

for(i=0;iprintf(\"\\n%s , %s , %s , %s , %s , %s\\n\e,stu[i].qq);

system(\"pause\"); //暂停,不直接执行后续操作// }

void scan() //浏览函数// {

int i,n;

if(rshu==0) {

printf(\"暂无通讯录数据,是否添加通讯录:1.是 (按其它数字键则返回主菜单):\\n\"); printf(\"请选择:\"); scanf(\"%d\ if(n==1) add(); else menu(); }

printf(\"\\n 学号 , 姓名 , 性别 , 通讯地址 , 电话 , QQ号\"); for(i=0;iprintf(\"\\n%s , %s , %s , %s , %s , %s\\n\e,stu[i].qq);

system(\"pause\"); //暂停,不直接执行后续操作// }

int wenjian() //文件函数,将输入的信息存入文件中// { FILE *fp; //定义结构指针变量// int i;

if((fp=fopen(\"tongxunlu.txt\ //为只写打开一个二进制文件,并测试// { printf(\"\\n文件打开失败\\n\"); exit(1); }

for(i=0;i<50;i++) { fwrite(&stu[i],sizeof(struct student),1,fp); }

fclose(fp); //关闭文件// return 0; //返回值// }

//可写进50个数据//

因篇幅问题不能全部显示,请点此查看更多更全内容