废话不多说,直接上代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define Student_MAX 1000//学生信息最大存储人数
enum Features
{
quit, //退出
tianjia, //添加
find, //查找
Revise, //修改
delete_d, //删除
empty, //清空
save, //保存
};
typedef struct Stu
{
char name[10];
char bj[10];//班级
char sex[3];//性别
int age; //年龄
char id[10] ;//学号
char call[20]; //电话
char jiguan[30];
}Stu;
typedef struct TongXunLu
{
Stu stu[Student_MAX];
int count;
}TXL,* ptxl;
void initiate(ptxl ptxl);//启动
void add1(ptxl ptxl);//添加学生信息人数,最多添加1000个
void find1(ptxl ptxl);//在通讯录中查找需要查找的人,按姓名查找
void show1(ptxl ptxl);//显示当前系统中所有人
void Revise1(ptxl ptxl);//修改系统中某一人的信息
void del(ptxl ptxl);//删除系统中某一人的信息
void empty1(ptxl ptxl);//清空系统中所有人信息
void menu();//导航栏
static int hanshu(ptxl ptxl, const char * name)
{
int i = 0;
for (i = 0; i < ptxl ->count; i++)
{
if (strcmp(name , ptxl->stu[i].name) == 0)
{
return i;
}
}
return -1;
}
void initiate(ptxl ptxl)
{
ptxl->count = 0;
}
void add1(ptxl ptxl)
{
if (ptxl ->count == Student_MAX)
{
printf( "电话本已满,无法添加!" );
return;
}
printf( "姓名:");
scanf( "%s", ptxl ->stu[ptxl->count].name);
printf( "班级:");
scanf( "%s", ptxl ->stu[ptxl->count].bj);
printf( "性别:");
scanf( "%s", ptxl ->stu[ptxl->count].sex);
printf( "年龄:");
scanf( "%d", &ptxl ->stu[ptxl->count].age);
printf( "学号:");
scanf( "%s", ptxl ->stu[ptxl->count].id);
printf( "电话:");
scanf( "%s", ptxl ->stu[ptxl->count].call);
printf( "籍贯:");
scanf( "%s", ptxl ->stu[ptxl->count].add);
ptxl->count++;
printf( "添加成功!\n" );
}
void delete_d1(ptxl ptxl)
{
int ret = 0;
int j = 0;
char name[10];
printf( "请输入要删除的名字:" );
scanf( "%s", name);
ret = hanshu( ptxl, name);
if (ret == -1)
{
printf( "删除的人不存在!\n" );
return;
}
else
{
for (j = 0; j < ptxl ->count - 1; j++)
{
ptxl->stu[j] = ptxl ->stu[j + 1];
}
}
ptxl->count--;
printf( "删除成功!\n" );
}
void find1(ptxl ptxl)
{
int ret = 0;
char name[10];
printf( "请输入要查找人的姓名:" );
scanf( "%s", name);
ret = hanshu( ptxl, name);
if (ret == -1)
{
printf( "抱歉,找不到该学生!\n" );
return;
}
else
{
printf( "姓名\t班级\t性别\t年龄\t学号\t电话\t\t籍贯\n" );
printf( "%s\t%s\t%s\t%d\t%s\t%s\t%s\n" , ptxl->stu[ret].name, ptxl->stu[ret].bj, ptxl ->stu[ret].sex, ptxl->stu[ret].age, ptxl->stu[ret].id,ptxl->stu[ret].call,ptxl->stu[ret].jiguan);
}
}
void Revise1(ptxl ptxl){
int ret = 0;
char name[10];
printf( "请输入要修改学生的姓名:" );
scanf( "%s", name);
ret = hanshu( ptxl, name);
if (ret == -1)
{
printf( "不存在要修改的学生!\n" );
return;
}
else
{
printf( "姓名:");
scanf( "%s", ptxl ->stu[ptxl->count].name);
printf( "性别:");
scanf( "%s", ptxl ->stu[ptxl->count].sex);
printf( "年龄:");
scanf( "%d", &ptxl ->stu[ptxl->count].age);
printf( "学号:");
scanf( "%s", ptxl ->stu[ptxl->count].id);
printf( "电话:");
scanf( "%s", ptxl ->stu[ptxl->count].call);
printf( "籍贯:");
scanf( "%s", ptxl ->stu[ptxl->count].jiguan);
}
}
void del(ptxl ptxl)
{
int ret = 0;
int j = 0;
char name[10];
printf( "请输入要删除的学生名字:" );
scanf( "%s", name);
ret = hanshu( ptxl, name);
if (ret == -1)
{
printf( "删除的人不存在!\n" );
return;
}
else
{
for (j = 0; j < ptxl ->count - 1; j++)
{
ptxl->stu[j] = ptxl ->stu[j + 1];
}
}
ptxl->count--;
printf( "删除成功!\n" );
}
void empty1(ptxl ptxl)
{
ptxl->count = 0;
printf( "系统信息清空!\n" );
}
void save1(ptxl ptxl)
{
FILE *fp = NULL;
int i = 0;
fp = fopen("list","w");
if(!fp)
{
perror("can not open file");
exit(1);
}
while(i < ptxl ->count)
{
fwrite(&ptxl->stu[i],sizeof(Stu),1,fp);
i++;
}
fclose(fp);
printf("学生信息保存成功\n");
return ;
}
void menu()
{
printf( "************************************************\n" );
printf( "**** 班级通讯录管理系统 ****\n" );
printf( "************************************************\n" );
printf( " 【1】添加学生信息\n" );
printf( " 【2】查找学生信息\n" );
printf( " 【3】修改学生信息\n" );
printf( " 【4】删除学生信息\n" );
printf( " 【5】清空学生信息\n" );
printf( " 【6】保存学生信息\n" );
printf( "------------------------------------------------\n" );
}
int main()
{
TXL txl;
int input = 1;
initiate(&txl);
while (input)
{
menu();
printf( "请选择:" );
scanf( "%d", &input);
switch (input)
{
case tianjia:
add1(&txl);
break;
case find:
find1(&txl);
break;
case Revise:
Revise1(&txl);
break;
case delete_d:
del(&txl);
break;
case empty:
empty1(&txl);
break;
case save:
save1(&txl);
break;
}
}
return 0;
}