当前位置:首页 » 编程语言 » c语言班级通讯录
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言班级通讯录

发布时间: 2022-12-06 07:14:50

c语言学生通讯录管理系统

/* HELLO.C -- Hello, world */

#include<stdio.h>
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20]="E:\\txl.txt";
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main( )

{
int m;
creat();
while(1)
{
printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n");
printf("\n\t\t添加,请按1");
printf("\n\t\t查找,请按2");
printf("\n\t\t修改,请按3");
printf("\n\t\t删除,请按4");
printf("\n\t\t输出,请按5");
printf("\n\t\t退出,请按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\n操作完毕,请再次选择!");
}
else
printf("\n\n选择错误,请再次选择!");
}
}

/*输入模块creat( ): 创建通讯录的子函数。*/
void creat()
{
struct person one;
long s1;
/*printf("\n请输入通讯录文件名:");
scanf("%s",filename); */

if((fp=fopen(filename,"at+"))==NULL)
{
printf("\n不能建立通讯录!");
exit();
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");
printf("\n请输入姓名、电话号码及住址(以0结束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}

/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/
void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
printf("\n\n%20s\n","通 讯 录");
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}

/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
printf("\n请输入添加的姓名、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}

/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}

/*修改模块modify( ):在通讯录中修改某人通讯信息的子函数*/
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:");
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\n对不起,通讯录中没有此人的记录。");
fclose(fp);
}

/*删除模块delete( ):在通讯录中删除某人通讯信息的子函数*/
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
if(k)
{
printf("\n已查到,记录为");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
else
printf("\n对不起,通讯录中没有此人的记录。");
fclose(fp);
}
}
}
}
<PIXTEL_MMI_EBOOK_2005>1###########################################################</PIXTEL_MMI_EBOOK_2005>

② 用c语言编写通讯录程序

这个属于基本的结构体数组和文件读写操作。

③ 用c语言程序设计一个学生通讯录系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct record
{
char name[20]; //姓名
char phone[12]; //电话
char adress[50]; //地址
char postcode[8]; //邮政编码
char e_mail[20]; //电子邮件。
}student[100]; //假设最大数为100.
//定义全局变量num,表示已经输入的人数 。
int num; //这里使用数组解决通讯录的问题,实际上使用链表更好。
int menu_select()
{
char s[80];
int a;/*定义整形变量*/
system("cls");
printf("\t\t***********欢迎进入通讯管理界面********\n\n");
printf("\t\t\t0. 输入记录\n");
printf("\t\t\t1. 显示记录\n");
printf("\t\t\t2. 按姓名查找\n");
printf("\t\t\t3. 按电话号码查找\n");
printf("\t\t\t4. 插入记录 \n");
printf("\t\t\t5. 按姓名排序\n");
printf("\t\t\t6. 删除记录\n");
printf("\t\t\t7. Quit\n");
printf("\t\t***********************************************\n\n");
do{
printf("Enter you choice(0~7):");
scanf("%s",s);
a=atoi(s);
}
while (a<0 || a>7);
return a;
}
int adser()
{
printf("\t\t\t**************** 请输入用户信息 ****************\n");
printf("\t\t\t输入姓名:\n");
scanf("%s",student[num].name);
printf("\t\t\t输入电话号码:\n");
scanf("%s",student[num].phone);
printf("\t\t\t输入地址:\n");
scanf("%s",student[num].adress);
printf("\t\t\t输入邮编:\n");
scanf("%s",student[num].postcode);
printf("\t\t\t输入e-mail:\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否继续添加?(Y/N):\n");
if(getch()=='y' || getch()=='Y')
adser();
return(0);
}
void list()
{
int i;
system("cls");
if(num!=0)
{
printf("\t\t\t*************** 以下为通讯录所有信息************\n");
for (i=0;i<num;i++)
{
printf("\t\t\t姓名:%s\n",student[i].name);
printf("\t\t\t电话:%s\n",student[i].phone);
printf("\t\t\t地址:%s\n",student[i].adress);
printf("\t\t\t邮编:%s\n",student[i].postcode);
printf("\t\t\te-mail:%s\n",student[i].e_mail);
if(i+1<num)
{
system("pause");
}
}
printf("\t\t\t************************************************\n");
}
else
printf("\t\t\t通讯录中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单:\n");
getch(); //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。
return;
}
int searchbyname()
{
int mark=0;
int i;
printf("\t\t\t***************** 按姓名查找 *******************\n");
char name[20];
printf("\t\t\t请输入姓名:\n");
scanf("%s",name);
for(i=0;i<num;i++)
{
if (strcmp(student[i].name,name)==0)
{
printf("\t\t\t************* 以下是您查找的用户信息 ***********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
mark++;
if((i+1)<num)
{
printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");
if(getch()=='y' || getch()=='Y')
{
continue;
}
else
return(0);
}
else
{
printf("\t\t\t按任意键返回主菜单");
getch();
return(0);
}
}
}
if(mark == 0)
{
printf("\t\t\t没有相同姓名的用户纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return 0;
}
int searchbyphone()
{
int mark=0;
int i;
printf("\t\t\t****************** 按电话查找 ******************\n");
char phone[10];
printf("\t\t\t请输入电话号码:\n");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t************** 以下是您查找的用户信息 **********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
printf("\t\t\t按任意键返回主菜单\n");
mark++;
getch();
return(0);
}
}
if (mark==0)
{
printf("\t\t\t没有改用户的信息\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return(0);
}
void deletebyphone()
{
int i,j;
int deletemark=0;
char phone[20];
printf("\t\t\t请输入要删除用户电话号码:\n");
scanf("%s",phone);
if(num==0)
{
printf("\t\t\t对不起,文件中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch()=='Y')
{
for (j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
return;
}
void deletebyname()
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\t\t\t请输入要删除用户姓名:\n");
scanf("%s",name);
for (i=a;i<num;i++)
{
if(strcmp(student[i].name,name)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:");
findmark++;
printf("\t\t\t________________________________");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
if((i+1)<num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
else if (findmark!=0)
{
printf("\t\t\t没有重名信息");
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
}
int dele()
{
char choic;
printf("\t\t\t1-按电话号码删除 2-按姓名删除");
printf("\t\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':deletebyphone();break;
case '2':deletebyname();break;
}
return(0);
}
int sortbyname() //按姓名进行排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].name,student[i-1].name)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;
}
}
printf("\t\t\t排序成功,是否显示?(y/n)");
if (getch()=='y')
list();
return(0);
}
int main()
{
printf("\t\t************************************************\n");
printf("\t\t********welcome to TONGXUNLU *******************\n");
printf("\t\t###########code by XXXXX ###################\n");
printf("\t\t*************************************************\n");
printf("按任意键进入主菜单\n");
getch();
int selectnum;
while(1)
{
selectnum = menu_select();
switch(selectnum)
{
case 0:
{
adser();
break;
}
case 1:
{
list();
break;
}
case 2:
{
searchbyname();
break;
}
case 3:
{
searchbyphone();
break;
}
case 4:
{
adser(); //这里插入,应该能指定位置,不过意义不大,所以和添加记录一样了。
break;
}
case 5:
{
sortbyname();
break;
}
case 6:
{
dele();
break;
}
case 7:
{
printf("BYE BYE!\n");
system("pause");
getchar();
exit(0);
}
}
}
getchar();
return 0;
}

④ c语言通讯录编写

靠山山倒,靠树树倒,靠自己最好!
自己写吧,一个
结构体{
姓名;
性别;
年龄;
手机;
}
如果不会用链表,那你就用数组!
录入:就是往数组里写入数据
删除:就清为0就可以了呗
查询:就是从数组的第一项到保存数查找一遍喽。
大哥
,你是在做课程设计吧?计科的?
伤不起!!!!!!

⑤ 用C语言设计一个班级同学的通讯录

这个程序可是挺复杂啊,我大概明天或者后天给你把程序传上去

⑥ C语言课程设计:编写程序,建立班级通讯录

这个比较简单,将输入信息,保存到txt文件中,实现文件读取就行了吧?

⑦ 怎么用C语言编写简单的班级通讯录系统的管理与实现

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "iostream.h"
#include "fstream.h"

typedef struct goal /*成绩*/
{
float course1;
float course2;
float course3;
float course4;
float course5;
}goal;

typedef struct base /*基本信息*/
{
int num;
char name[20];
char sex[4];
int age;
long tel;
goal *brother;
}base;

typedef struct student
{
int num;
base *firstchild;
struct student *firstbrother;
}student;

student *creatroot(void)
{
student *root;
root=(student*)malloc(sizeof(student));
root->firstchild=NULL;
root->firstbrother=NULL;
root->num=9999;
return (root);
}

int number(student *root)
{
student *p=root;
int num=0;
while(p->firstbrother)
{
p=p->firstbrother;
num++;
}
printf("总共%d条记录\n",num);
return num;
}

int jiemian()
{
int c;
printf("\n\n**********学生信息管理*********\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");
printf("0 退出\n");
printf("\n*******************************\n");
printf("\n Enter you choice(0~9):\n");
scanf("%d",&c);
while(c<0||c>9)
{
printf("\nwrong input again:\n");
scanf("%d",&c);
}
return(c);
}

student *bublesort(student *root)
{
student *q,*p,*r;
r=NULL;
while(r!=root->firstbrother)
{
p=root->firstbrother;q=root;
while(p->firstbrother!=r)
{
if(p->num>p->firstbrother->num)
{
q->firstbrother=p->firstbrother;
p->firstbrother=q->firstbrother->firstbrother;
q->firstbrother->firstbrother=p;
}
q=q->firstbrother;p=q->firstbrother;
}
r=p;
}
return(root);
}

student *loadbase(student *root) /*基本信息管理*/
{
int i,n;
student *p1,*p2;
base *q1;
goal *t;
p2=root;
if(root->firstbrother!=NULL)
{
while(p2->firstbrother)
{p2=p2->firstbrother;}
}

printf("要登记多少条学生基本信息?\n");
scanf("%d",&n);

for(i=0;i<n;i++)
{
p1=(student*)malloc(sizeof(student));
q1=(base*)malloc(sizeof(base));
t=(goal*)malloc(sizeof(goal));
p1->firstchild=q1;
q1->brother=t;
printf("学号\t姓名\t年龄\t性别\t电话\n");
scanf("%d",&q1->num);p1->num=q1->num;
scanf("%s",q1->name);
scanf("%d",&q1->age);
scanf("%s",q1->sex);
scanf("%ld",&q1->tel);
t->course1=t->course2=t->course3=t->course4=t->course5=0;
p2->firstbrother=p1;
p2=p1;
}
p1->firstbrother=NULL;
bublesort(root);

return(root);
}
student *modifybase(student *root)
{
student *p;
base *q;
int num,c;
printf("输入要修改的学号:\n");
scanf("%d",&num);
p=root->firstbrother;
while(p!=NULL&&(p->num!=num))
{
p=p->firstbrother;
}
if(p==NULL)
{printf("学号不存在!\n");}
else
{
q=p->firstchild;
printf("\n\n***********选择需要修改的记录*********\n\n");
printf("1 学号\n");
printf("2 姓名\n");
printf("3 性别\n");
printf("4 年龄\n");
printf("5 电话\n");
printf("6 返回\n");
printf("\n\n**************************************\n\n");
printf("\n Enter you choice(1~6):\n");
scanf("%d",&c);
while(c<0||c>6)
{
printf("\nwrong input again:\n");
scanf("%d",&c);
}
switch(c)
{
case 1: printf("原学号: %d\t输入新学号:\t",q->num);scanf("%d",&q->num);p->num=q->num;break;
case 2: printf("原姓名: %s\t输入新姓名:\t",q->name);scanf("%s",q->name);break;
case 3: printf("原性别: %s\t输入新性别:\t",q->sex);scanf("%s",q->sex);break;
case 4: printf("原年龄: %d\t输入新年龄:\t",q->age);scanf("%d",&q->age);break;
case 5: printf("原电话: %ld\t输入新电话:\t",q->num);scanf("%ld",&q->tel);break;
case 6: return NULL;
}
root=bublesort(root);
}
return(root);
}
student *delbase(student *root)
{
int num;
student *p,*q;
p=root->firstbrother;q=root;
printf("输入要删除的学号:\t");
scanf("%d",&num);
while(p!=NULL&&p->num!=num)
{
q=p;
p=p->firstbrother;
}
if(p==NULL)
{printf("学号不存在!\n");}
else
{q->firstbrother=p->firstbrother;
free(p);}
return(root);
}
student *insertbase(student *root)
{
int num;
student *p,*q;
base *t;
p=root;
printf("输入要插入的学号");
scanf("%d",&num);
while((p->firstbrother!=NULL)&&(num>p->firstbrother->num))
{
p=p->firstbrother;
}
q=(student*)malloc(sizeof(student));
t=(base*)malloc(sizeof(base));
q->firstchild=t;
t->brother=(goal*)malloc(sizeof(goal));
t->brother->course1=t->brother->course2=t->brother->course3=t->brother->course4=t->brother->course5=0;
printf("学号: %d\n",num);
printf("姓名\t年龄\t性别\t电话\n");
q->num=t->num=num;
scanf("%s",t->name);
scanf("%d",&t->age);
scanf("%s",t->sex);
scanf("%ld",&t->tel);
q->firstbrother=p->firstbrother;
p->firstbrother=q;
return(root);
}

student *loadgoal(student *root) /*成绩信息管理*/
{
student *p;
base *q;
goal *t;
if(root->firstbrother==NULL)
{
printf("请输入学生基本信息:\n");
loadbase(root);
}
else
{
p=root->firstbrother;
while(p!=NULL)
{
q=p->firstchild;
t=q->brother;
printf("学号:%d\n",q->num);
printf("课程1\t课程2\t课程3\t课程4\t课程5\n");
scanf("%f",&t->course1);
scanf("%f",&t->course2);
scanf("%f",&t->course3);
scanf("%f",&t->course4);
scanf("%f",&t->course5);
p=p->firstbrother;
}
}
return(root);
}
student *insertgoal(student *root)
{
student *p;
base *q;
goal *t;
int num;
printf("请输入学号\n");
scanf("%d",&num);
p=root->firstbrother;
while(p!=NULL&&p->num!=num)
{
p=p->firstbrother;
}
if(p==NULL)
printf("学号不存在!\n");
else
{
q=p->firstchild;
t=q->brother;
printf("学号:%d\n",q->num);
printf("课程1\t课程2\t课程3\t课程4\t课程5\n");
scanf("%f",&t->course1);
scanf("%f",&t->course2);
scanf("%f",&t->course3);
scanf("%f",&t->course4);
scanf("%f",&t->course5);
}
return(root);
}

student *modifygoal(student *root)
{
student *p;
base *q;
goal *t;
int num,c;
printf("输入要修改的学号:\n");
scanf("%d",&num);
p=root->firstbrother;
while(p!=NULL&&p->num!=num)
{
p=p->firstbrother;
}
if(!p)
{printf("学号不存在!\n");}
else
{
q=p->firstchild;
if(!q->brother)
printf("没有已登记的成绩!\n");
else
{
t=q->brother;
printf("\n\n***********选择需要修改的记录*********\n\n");
printf("1 课程1\n");
printf("2 课程2\n");
printf("3 课程3\n");
printf("4 课程4\n");
printf("5 课程5\n");
printf("6 返回\n");
printf("\n\n**************************************\n\n");
printf("\n Enter you choice(1~6):\n");
scanf("%d",&c);
while(c<0||c>6)
{
printf("\nwrong input again:\n");
scanf("%d",&c);
}
switch(c)
{
case 1: printf("原成绩: %f\t输入新成绩:\t",t->course1);scanf("%f",&t->course1);break;
case 2: printf("原成绩: %f\t输入新成绩:\t",t->course2);scanf("%f",&t->course2);break;
case 3: printf("原成绩: %f\t输入新成绩:\t",t->course3);scanf("%f",&t->course3);break;
case 4: printf("原成绩: %f\t输入新成绩:\t",t->course4);scanf("%f",&t->course4);break;
case 5: printf("原成绩: %f\t输入新成绩:\t",t->course5);scanf("%f",&t->course5);break;
case 6: return NULL;
}
}
}
return(root);
}

void find(student *root) /*查询*/
{
student *p=root->firstbrother;
base *q;
goal *t;
int c=1,num;
printf("输入学号\n");
scanf("%d",&num);
while(p!=NULL&&p->num!=num)
{
p=p->firstbrother;
}
if(p==NULL)
{printf("学号不存在!\n");}
else
{
q=p->firstchild;

printf("查询(基本信息/成绩)?(1/0)\n");
scanf("%d",&c);
if(c==1)
{
printf("学号\t姓名\t年龄\t性别\t电话\n");
printf("%d ",q->num);
printf("%s ",q->name);
printf("%d ",q->age);
printf("%s ",q->sex);
printf("%ld\n",q->tel);
}
else if((c==0))
{
if(q->brother==NULL)
{printf("无成绩,请输入成绩\n");root=loadgoal(root);}
t=q->brother;
printf("学号: %d\n",q->num);
printf("课程1\t课程2\t课程3\t课程4\t课程5\n");
printf("%f ",t->course1);
printf("%f ",t->course2);
printf("%f ",t->course3);
printf("%f ",t->course4);
printf("%f \n",t->course5);
}
}
}

void print(student *root) /*浏览*/
{
student *p=root->firstbrother;
base *q;
if(!p)
printf("无内容!\n");
while(p)
{
q=p->firstchild;
printf("num :%d\n",p->num);
printf("学号\t姓名\t年龄\t性别\t电话\n");
printf("%d ",q->num);
printf("%s ",q->name);
printf("%d ",q->age);
printf("%s ",q->sex);
printf("%ld\n",q->tel);
p=p->firstbrother;
}
}
student *insertsave(void) /*申请新结点*/
{
student *s1;
base *b1;
goal *g1;
s1=(student*)malloc(sizeof(student));
s1->num=0;
b1=(base*)malloc(sizeof(base));
b1->age=0;b1->num=0;b1->tel=0;strcpy(b1->name,"0");strcpy(b1->sex,"0");
g1=(goal*)malloc(sizeof(goal));
g1->course1=g1->course2=g1->course3=g1->course4=g1->course5=0;
s1->firstchild=b1;
s1->firstbrother=NULL;
b1->brother=g1;
return(s1);
}

void savenum(int num)
{

fstream in;
in.open("number.txt",ios::in|ios::out);
if(in.fail())
{
printf("文件不存在\n");
return;
}
in<<num;
in.close();
}
int loadnum(void)
{
int num=0;
fstream out;
out.open("number.txt",ios::in|ios::out);
if(out.fail())
{
printf("文件不存在\n");
return 0;
}
out>>num;
out.close();
return num;

}

void savetofile(student *root)
{
student *ps;
int i,num=number(root);
ps=root->firstbrother;
if(ps==NULL)
{
printf("现在没有学生信息,请先输入学生信息\n\n");
return;
}
fstream in;
in.open("student.txt",ios::in|ios::out);
if(in.fail())
{
printf("文件不存在\n");
return;
}
savenum(num);
for(i=0;i<num;i++)
{
in<<ps->firstchild->num;
in<<" ";
in<<ps->firstchild->name;
in<<" ";
in<<ps->firstchild->age;
in<<" ";
in<<ps->firstchild->sex;
in<<" ";
in<<ps->firstchild->tel;
in<<" ";
in<<ps->firstchild->brother->course1;
in<<" ";
in<<ps->firstchild->brother->course2;
in<<" ";
in<<ps->firstchild->brother->course3;
in<<" ";
in<<ps->firstchild->brother->course4;
in<<" ";
in<<ps->firstchild->brother->course5;
in<<" ";
ps=ps->firstbrother;
}
in.close();
}

student *loadfromfile(void)
{
student *p,*q,*root;
int i,num=0;
root=creatroot();
fstream out;
out.open("student.txt",ios::in|ios::out);
if(out.fail())
{
printf("文件不存在\n");
return root;
}
num=loadnum();
printf("记录数:%d",num);
q=root;
for(i=0;i<num;i++)
{
p=insertsave();
q->firstbrother=p;
q=p;
out>>q->firstchild->num;
out>>q->firstchild->name;
out>>q->firstchild->age;
out>>q->firstchild->sex;
out>>q->firstchild->tel;
out>>q->firstchild->brother->course1;
out>>q->firstchild->brother->course2;
out>>q->firstchild->brother->course3;
out>>q->firstchild->brother->course4;
out>>q->firstchild->brother->course5;
q->num=q->firstchild->num;
}
out.close();
return root;
}

void choice(student *root)
{
student *t;
for(;;)
{
loop: switch(jiemian())
{
case 1: root=loadbase(root);break; /*登记基本信息*/
case 2: t=modifybase(root);if(t==NULL)goto loop;else root=t;break; /*修改基本信息*/
case 3: root=delbase(root);break; /*删除基本信息*/
case 4: root=insertbase(root);break; /*插入基本信息*/
case 5: root=loadgoal(root);break; /*登记成绩*/
case 6: t=modifygoal(root);if(t==NULL)goto loop;else root=t;break; /*修改成绩*/
case 7: insertgoal(root);break; /*插入新成绩*/
case 8: print(root);break; /*浏览*/
case 9: find(root);break; /*查看单条*/
case 0: savetofile(root);free(root);exit(1); /*退出*/
}
}
}

void main()
{
student *root;
root=loadfromfile();
choice(root);
}

没有现成的,自己改改