学生通讯录程序:要求用面向对象的类实现学生通讯录程序。基本信息包括学号、姓名、班级、籍贯、手机、QQ号、电子邮箱等信息。具体实现的管理功能如下:(1)输入并显示多个学生信息;(2)可实现学生信息的添加;(3)查询(至少提供按姓名和手机查询两种方式);(4)修改(只提供按照姓名进行修改);(5)删除(依据指定的信息删除如姓名、学号等);(6)文件的导入和导出(从文件中读取若干条通讯录,或者将通讯录输出到文件中)。
```c
#define N 100
#define SIZE 40
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include <cstdlib>
struct student//定义结构体
{
char num[SIZE];
char name[SIZE];
char clas[SIZE];
char city[SIZE];
char tele[SIZE];
char qq[SIZE];
char mail[SIZE];
};
//进行函数的声明
void showlist();//显示菜单
int creatstu(struct student*p,int n);//输入通讯录
void displaystu(struct student*p,int n);//显示通讯录
void searchstu(struct student*p,int n);//查找
void changestu(struct student*p,int n);//修改通讯录
int addstu(struct student*p,int n);//增加通讯录
int deletestu(struct student*p,int n);//删除
void searchtele(struct student*p,int n);//按手机查找
void searchname(struct student*p,int n);//按名字查找
int loadinfo(struct student*p,int n);//载入通讯录信息
int saveinfo(struct student*p,int n);//保存通讯录信息
void main()
{
char ch,yes_no;//文件定义
struct student record[N];
int total=0,flag;//存放共一百条通讯录信息
total=loadinfo(record,N);//通讯录总数
//从文件读取记录信息,不超过一百条
do
{
showlist();
printf("请选择你要进行的操作:");
scanf("%s",&ch);
switch(ch)
{
case '1':
total=creatstu(record,total);
break;
case '2':
total=addstu(record,total);
break;
case '3':
searchstu(record,total);
break;
case '4':
changestu(record,total);
break;
case '5':
total=deletestu(record,total);
break;
case '6':
displaystu(record,total);
break;
case '7':
total=loadinfo(record,total);
break;
case '8':
flag=saveinfo(record,total);
if(flag==1) printf("\n 保存成功!\n");
else printf("\n保存失败!\n");
break;
case'9':
break;
}
if(ch=='0') break;
printf("\n 要继续进行吗?(Y/N)");
do
{
yes_no=getch();
}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}
while(yes_no!='Y'||yes_no!='y');
}
void showlist()
{
printf(" 请选择下面的菜单\n\n");
printf("1 创建\n");
printf("2 添加\n");
printf("3 查询\n");
printf("4 修改\n");
printf("5 删除\n");
printf("6 显示\n");
printf("7 从文件导入\n");
printf("8 导出到文件\n");
printf("9.退出\n");
}
int creatstu(struct student*p,int n)
{
int i=0;
int m;
printf("添加前的记录,共有<%d>个:\n",n);
printf("\n开始记录\n");
i=0;
while((i<n)&&(strcmp(p->num," ")!=0))
{
printf("%2d:%15s%15s%15s%15s%15s%15s%15s\n",i+1,p->num,p->name,p->clas,p->city,p->tele,p->qq,p->mail);
i++;
p++;
}
printf("\n请输入要输入的学生人数(<%d):",N-n);
scanf("%d",&m);
FILE *fp;
for (i = 0; i < m; i++)
{
scanf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n", p->num, p->name,p->clas,p->city,p->tele,p->qq,p->mail);
saveinfo(p, m);
p++;
}
return m+n;
}
int addstu(struct student*p,int n)
{
int i, flag,q=n;
char AddNum[25];
printf("添加通讯录:\n");
printf("请输入要添加的学号:");
scanf("%s", AddNum);
for (i = 0, flag = 0; i < n; i++)
{
if (strcmp(AddNum, p->num) == 0)
{
flag = 1;
printf("学号重复!\n");
return 0;
}
}
if (flag == 0)
{
//n++;
printf("学号不重复!请添加信息:\n");
printf("请输入要添加的名字:");
scanf("%s", p->name);
strcpy(p->num, AddNum);
printf("请输入要添加的班级:");
scanf("%s", p->clas);
printf("请输入要添加的地址:");
scanf("%s", p->city);
printf("请输入要添加的电话号码:");
scanf("%s", p->tele);
printf("请输入要添加的QQ:");
scanf("%s", p->qq);
printf("请输入要添加的邮箱:");
scanf("%s", p->mail);
//save(a,n);
printf("添加信息成功!\n");
return 1;
//printf("%d",n);
q++;
}
printf("\n");
return q;
}
void searchstu(struct student*p,int n)
{
int a;
scanf("%d",&a);
printf("名字(1)or手机号(2)?");
if(a==1)
{
void searchname(struct student*p,int n);
}
if(a==2)
{
void searchtele(struct student*p,int n);
}
}
void searchname(struct student*p,int n)
{
int i, flag;
char SearchName[25];
printf("按姓名查询通讯录:\n");
scanf("%s", SearchName);
for (i = 0, flag = 0; i < n; i++)
{
if (strcmp(SearchName, p->name) == 0)
{
printf("%s\t", p->num);
printf("%s\t", p->name);
printf("%s\t", p->clas);
printf("%s\t", p->city);
printf("%s\t", p->tele);
printf("%s\t", p->qq);
printf("%s\n", p->mail);
flag = 1;
break;
}
}
}
void searchtele(struct student*p,int n)
{
int i, flag;
char Searchtele[25];
printf("按姓名查询通讯录:\n");
scanf("%s", Searchtele);
for (i = 0, flag = 0; i < n; i++)
{
if (strcmp(Searchtele, p->tele) == 0)
{
printf("%s\t", p->num);
printf("%s\t", p->name);
printf("%s\t", p->clas);
printf("%s\t", p->city);
printf("%s\t", p->tele);
printf("%s\t", p->qq);
printf("%s\n", p->mail);
flag = 1;
break;
}
}
}
void changestu(struct student*p,int n)
{
int i, flag;
char SearchName[25];
printf("按姓名修改通讯录:\n");
scanf("%s", SearchName);
for (i = 0, flag = 0; i < n; i++)
{
if (strcmp(SearchName, p->name) == 0)
{
strcpy(p->name, SearchName);
printf("请输入要修改的学号:");
scanf("%s", p->num);
printf("请输入要修改的班级:");
scanf("%s", p->clas);
printf("请输入要修改的地址:");
scanf("%s", p->city);
printf("请输入要修改的电话号码:");
scanf("%s", p->tele);
printf("请输入要修改的QQ:");
scanf("%s", p->qq);
printf("请输入要修改的邮箱:");
scanf("%s", p->mail);
saveinfo(p, n);
printf("信息修改完毕!\n");
flag = 1;
break;
}
}
if (flag == 0)
printf("未找到该姓名信息!");
printf("\n");
}
int deletestu(struct student*p,int n)
{
int i, j;
char SearchName[25];
printf("按姓名删除通讯录:\n");
scanf("%s", SearchName);
for (i = 0; i < n; i++)
{
if (strcmp(p->name, SearchName) == 0)
break;
}
if (i >= n)
{
printf("未查询到该姓名信息!按姓名删除通讯录失败!\n");
return 0;
}
else
{
saveinfo(p, n);
printf("按姓名删除通讯录成功!\n");
return 1;
}
}
void displaystu(struct student*p,int n)
{
int i=0;
while((i<n)&&(strcmp(p->num," ")!=0))
{
printf("%2d:%15s%15s%15s%15s%15s%15s%15s\n",i+1,p->num,p->name,p->clas,p->city,p->tele,p->qq,p->mail);
i++;
p++;
}
}
int saveinto(struct student*p,int n)
{
FILE*fp;
int i,all=0;
char filename[30]="txt.dat";
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("不能建立或打开文件\n");
return 0;
}
fprintf(fp, "%d\n", n);
for (i = 0; i < n; i++)
{
fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num, p->name,p->clas,p->city,p->tele,p->qq,p->mail);
}
fclose(fp);
return 1;
}
```
具体报错,截图发出来啊