学生通讯录管理系统【C语言---结构体】

upward337
Java领域优质创作者
2020-04-01 10:22:15

纯C语言 代码

#include <stdio.h>
#include <string.h>
#define N 108

typedef struct telephone
{
char name[25];
char num[25];
char tel[25];
}TEL;

void DisplayMenu(); //显示主菜单
void save(TEL a[],int n);
void CreateList(TEL a[],int n); //1.创建通讯录
void DisplayList(TEL a[],int n); //2.显示通讯录
void InquireListName(TEL a[],int n); ////3.按姓名查询通讯录
void InquireListNum(TEL a[],int n); //4.按学号查询通讯录
void ChangeListName(TEL a[],int n); //5.按姓名修改通讯录
void ChangeListNum(TEL a[],int n); //6.按学号修改通讯录
int DelListName(TEL a[],int n); //7.按姓名删除通讯录
int DelListNum(TEL a[],int n); //8.按学号删除通讯录
void UpSortListName(TEL a[],int n); //9.姓名升序排序通讯录
void DownSortListNum(TEL a[],int n); //10.学号逆序排序通讯录
int AddList(TEL a[],int n); //11.添加学生信息


int main()
{
struct telephone a[N];
int i,n;
FILE *fp;

if( (fp = fopen("stu.dat","r")) != NULL ) //如果文件stu.dat已存在
{ //则把数据从文件加载到数组a(读入记录个数n和n个姓名、学号、电话号码)
fscanf(fp,"%d",&n);
for(i=0;i<n;i++)
fscanf(fp,"%s%s%s",a.name,a[i].num,a[i].tel);
}
else
{
printf("第一次使用该系统,请输入n和n个姓名、学号、电话号码:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s%s%s",a[i].name,a[i].num,a[i].tel);
save(a,n);
}

DisplayMenu(); //显示主菜单
while(1)
{
char select;
char name[25];
scanf(" %c",&select);

if( select<'a' || select>'l' )
{
printf("输入错误!\n");
continue;
}
//if( select=='l' )
// break;

switch(select)
{
case 'a':
DisplayMenu(); //显示主菜单
break;
case 'b':
DisplayList(a,n); //2.显示通讯录
break;
case 'c':
InquireListName(a,n); //3.按姓名查询通讯录
break;
case 'd':
InquireListNum(a,n); //4.按学号查询通讯录
break;
case 'e':
ChangeListName(a,n); //5.按姓名修改通讯录
break;
case 'f':
ChangeListNum(a,n); //6.按学号修改通讯录
break;
case 'g':
if( DelListName(a,n) )//7.按姓名删除通讯录
n--;
break;
case 'h':
if( DelListNum(a,n) ) //8.按学号删除通讯录
n--;
break;
case 'i':
UpSortListName(a,n); //9.姓名升序排序通讯录
break;
case 'j':
DownSortListNum(a,n); //10.学号逆序排序通讯录
break;
case 'k':
if( AddList(a,n) ) //11.添加学生信息
n++;
save(a,n);
break;
case 'l':
exit(0); //12.退出系统
break;
}
}
return 0;
}


void save(TEL a[],int n)
{
int i;
FILE *fp;
fp = fopen("stu.dat","w");
fprintf(fp,"%d\n",n);
for(i=0;i<n;i++)
fprintf(fp,"%s\t%s\t%s\n",a[i].name,a[i].num,a[i].tel);
}


void DisplayMenu() //1.显示主菜单
{
printf(" 学生通讯录管理系统\n\n");
printf("*************************系统功能菜单**************************\n");
printf(" -------------------------------------------------------------\n");
printf(" a.显示主菜单 b.显示通讯录\n");
printf("************************************************************\n");
printf(" c.按姓名查询通讯录 d.按学号查询通讯录\n");
printf("************************************************************\n");
printf(" e.按姓名修改通讯录 f.按学号修改通讯录\n");
printf("************************************************************\n");
printf(" g.按姓名删除通讯录 h.按学号删除通讯录\n");
printf("************************************************************\n");
printf(" i.姓名升序排序通讯录 j.学号逆序排序通讯录\n");
printf("************************************************************\n");
printf(" k.添加学生信息 l.退出系统\n");
printf(" -------------------------------------------------------------\n");
printf("***************************************************************\n\n");
printf("请选择您需要的操作:\n");
}


void DisplayList(TEL a[],int n) //2.显示通讯录
{
int i;
printf("显示通讯录:\n");
for(i=0;i<n;i++)
printf("%s\t%s\t%s\n",a[i].name,a[i].num,a[i].tel);
printf("\n");
}


void InquireListName(TEL a[],int n) //3.按姓名查询通讯录
{
int i,flag;
char SearchName[25];
printf("按姓名查询通讯录:\n");
scanf("%s",SearchName);
for(i=0,flag=0;i<n;i++)
{
if( strcmp(SearchName,a[i].name)==0 )
{
printf("%s\t",a[i].name);
printf("%s\t",a[i].num);
printf("%s\n",a[i].tel);
flag=1;
break;
}
}
if(flag==0)
{
printf("未查询到该姓名信息!\n");
}
printf("\n");
}


void InquireListNum(TEL a[],int n) //4.按学号查询通讯录
{
int i,flag;
char SearchID[25];
printf("按学号查询通讯录:\n");
scanf("%s",SearchID);
for(i=0,flag=0;i<n;i++)
{
if( strcmp(SearchID,a[i].num)==0 )
{
printf("%s\t",a[i].name);
printf("%s\t",a[i].num);
printf("%s\n",a[i].tel);
flag=1;
break;
}
}
if(flag==0)
{
printf("未查询到该学号信息!\n");
}
printf("\n");
}


void ChangeListName(TEL a[],int n) //5.按姓名修改通讯录
{
int i,flag;
char SearchName[25];
printf("按姓名修改通讯录:\n");
scanf("%s",SearchName);
for(i=0,flag=0;i<n;i++)
{
if( strcmp(SearchName,a[i].name)==0 )
{
strcpy(a[i].name,SearchName);
printf("请输入要修改的学号:");
scanf("%s",a[i].num);
printf("请输入要修改的电话号码:");
scanf("%s",a[i].tel);
//strcpy(p[i].name,ChangeName);
//strcpy(p[i].name,ChangeTel);
save(a,n);
printf("信息修改完毕!\n");
printf("%s\t%s\t%s\n",a[i].name,a[i].num,a[i].tel);
flag=1;
break;
}
}
if(flag==0)
printf("未找到该姓名信息!");
printf("\n");
}


void ChangeListNum(TEL a[],int n) //6.按学号修改通讯录
{
int i,flag;
char SearchNum[25];
printf("按学号修改通讯录:\n");
scanf("%s",SearchNum);
for(i=0,flag=0;i<n;i++)
{
if( strcmp(SearchNum,a[i].num)==0 )
{
strcpy(a[i].num,SearchNum);
printf("请输入要修改的名字:");
scanf("%s",a[i].name);
printf("请输入要修改的电话号码:");
scanf("%s",a[i].tel);
//strcpy(p[i].name,ChangeName);
//strcpy(p[i].name,ChangeTel);
save(a,n);
printf("信息修改完毕!\n");
printf("%s\t%s\t%s\n",a[i].name,a[i].num,a[i].tel);
flag=1;
break;
}
}
if(flag==0)
printf("未找到该学号信息!");
printf("\n");
}


int DelListName(TEL a[],int n) //7.按姓名删除通讯录
{
int i,j;
char SearchName[25];
printf("按姓名删除通讯录:\n");
scanf("%s",SearchName);
for(i=0;i<n;i++)
{
if( strcmp(a[i].name,SearchName)==0 )
break;
}
if(i>=n)
{
printf("未查询到该姓名信息!按姓名删除通讯录失败!\n");
return 0;
}
else
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
save(a,n);
printf("按姓名删除通讯录成功!\n");
return 1;
}
}


int DelListNum(TEL a[],int n) //8.按学号删除通讯录
{
int i,j,flag;
char SearchNum[25];
printf("按学号删除通讯录:\n");
scanf("%s",SearchNum);
for(i=0;i<n;i++)
{
if( strcmp(a[i].num,SearchNum)==0 )
break;
}
if(i>=n)
{
printf("未查询到该学号信息!按学号删除通讯录失败!\n");
return 0;
}
else
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
printf("按学号删除通讯录成功!\n");
save(a,n);
return 1;
}
printf("\n");
}


void UpSortListName(TEL a[],int n) //9.姓名升序排序通讯录
{
int i,j;
TEL temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if( strcmp(a[i].name,a[j].name)>0 )
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("姓名升序排序通讯录:\n");
for(i=0;i<n;i++)
printf("%s\t%s\t%s\n",a[i].name,a[i].num,a[i].tel);
printf("\n");
}


void DownSortListNum(TEL a[],int n) //10.学号逆序排序通讯录
{
int i,j;
TEL temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if( strcmp(a[i].num,a[j].num)>0 )
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("学号逆序排序通讯录:\n");
for(i=n-1;i>=0;i--)
printf("%s\t%s\t%s\n",a[i].name,a[i].num,a[i].tel);
printf("\n");
}


int AddList(TEL a[],int n) //11.添加学生信息
{
int i,flag;
char AddNum[25];
printf("添加通讯录:\n");
printf("请输入要添加的学号:");
scanf("%s",AddNum);
for(i=0,flag=0;i<n;i++)
{
if( strcmp(AddNum,a[i].num)==0 )
{
flag=1;
printf("学号重复!\n");
return 0;
}
}
if(flag==0)
{
//n++;
printf("学号不重复!请添加信息:\n");
printf("请输入要添加的名字:");
scanf("%s",a[n].name);
strcpy( a[n].num,AddNum );
printf("请输入要添加的电话号码:");
scanf("%s",a[n].tel);
//save(a,n);
printf("添加信息成功!\n");
return 1;
//printf("%d",n);
}
printf("\n");
}

[i]在C++环境下 ,编译运行,需要 添加 头文件 #include <cstdlib>

C++ 中error: ‘exit’ was not declared in this scope 的解决方法:添加头文件#include <cstdlib>

...全文
1461 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ta96699699 2021-12-04
  • 打赏
  • 举报
回复

错误 C2228 “.name”的左边必须有类/结构/联合 这个问题怎么改呀,铁铁

朝^O^夕 2022-11-21
  • 举报
回复
@ta96699699 这个改好了吗
Yezz烨 2022-12-21
  • 举报
回复
@ta96699699 加个[i]就好了
upward337 2020-04-01
  • 打赏
  • 举报
回复
引用 2 楼 chxchxkkk的回复:
是展示作品吗
以前的作业。随便发的,hh~
chxchxkkk 2020-04-01
  • 打赏
  • 举报
回复
是展示作品吗
upward337 2020-04-01
  • 打赏
  • 举报
回复

65,182

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧