#include stdio.h
公司主营业务:网站制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出长丰免费做网站回馈大家。
#include malloc.h
#include stdlib.h
#include string.h
#include conio.h
#include windows.h
#define null '\0'
int shoudsave=0;
struct student /*声明一个结构体类型struct student*/
{
char clas[20]; /*定义成员班级号*/
char name[20]; /*定义成员学生姓名*/
char classnum[20]; /*定义成员学生学号*/
float basis; /*定义成员基础学分*/
float major; /*定义成员专业学分*/
float elective; /*定义成员选修学分*/
float humanity; /*定义成员人文学分*/
float laboratory; /*定义成员实验学分*/
float sum; /*定义成员学分总和*/
float average; /*定义成员平均学分*/
};
typedef struct node /*声明一个节点类型struct node*/
{
struct student data; /*定义节点数据*/
struct node *next; /*定义节点指针*/
}Node,*Link;
void menu1() /*输出系统名称及简介*/
{
printf("\n 学生学分管理系统 \n");
printf("********************************************************************************");
printf("说明:本系统旨在帮助师生方便,快捷地统计,管理学分。您可以进行输入,修改,查看,排序等操作,界面清爽,操作简单,欢迎您的使用。\n");
printf("********************************************************************************");
}//menu1
void menu2() /*输出主菜单*/
{
printf(" 菜 单 \n");
printf("\t\t0:退出本次登入\t\t\t5:清除屏幕内容\n");
printf("\t\t1:输入学生信息\t\t\t6:修改学生学分\n");
printf("\t\t2:删除学生信息\t\t\t7:显示学生学分\n");
printf("\t\t3:查询学生学分\t\t\t8:统计学生信息\n");
printf("\t\t4:排序学生学分\t\t\t9:保存学生学分\n");
}//menu2
void menu3() /*输出排序菜单,供void sort(Link l)函数调用*/
{
printf("\n\t\tA:基础学分\t\t\tB:专业学分\n");
printf("\t\tC:选修学分\t\t\tD:人文学分\n");
printf("\t\tE:实验学分\t\t\tF:学分总和\n");
printf("\t\tG:平均学分\t\t\t\n");
printf("\n请选则您要排序的课程代码:");
}//menu3
void menu4() /*输出菜单上下限制符*/
{
printf("================================================================================");
}//menu4
void title() /*输出显示菜单,供void display(Link l)函数调用*/
{
printf(" 班级\t学号\t姓名\t基础\t专业\t选修\t人文\t试验\t总分\t平均\n");
}//title
void data(Node *p,char find[]) /*输出按姓名查找的结果,供void search(Link l)函数调用*/
{
if(strcmp(p-data.name,find)==0)
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p-data.clas,p-data.classnum,p-data.name,p-data.basis,p-data.major,p-data.elective,p-data.humanity,p-data.laboratory,p-data.sum,p-data.average);
}//data
void data1(Node *p) /*输出按学号查找的结果,供void search(Link l)函数调用*/
{
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p-data.clas,p-data.classnum,p-data.name,p-data.basis,p-data.major,p-data.elective,p-data.humanity,p-data.laboratory,p-data.sum,p-data.average);
}//data1
void data2(Node *p,char find[]) /*输出按班级查找的结果,供void search(Link l)函数调用*/
{
if(strcmp(p-data.clas,find)==0)
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p-data.clas,p-data.classnum,p-data.name,p-data.basis,p-data.major,p-data.elective,p-data.humanity,p-data.laboratory,p-data.sum,p-data.average);
}//data2
Node* Locate(Link l,char find[],char match[]) /*查找匹配函数定义,该函数用于定位链表中符合要求的节点,并返回该指针*/
{
Node *r; /*定义节点指针r*/
if(strcmp(match,"classnum")==0) /*按学号查询*/
{
r=l-next; /*初始化r,指向第一个节点*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r-data.classnum,find)==0) /*查询成功*/
return r;
r=r-next; /*节点后移*/
} //while
} //if
else if(strcmp(match,"name")==0) /*按姓名查询*/
{
r=l-next; /*初始化r,指向第一个节点*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r-data.name,find)==0) /*查询成功*/
return r;
r=r-next; /*节点后移*/
} //while
} //else if
else if(strcmp(match,"clas")==0) /*按班级号查询*/
{
r=l-next; /*初始化r,指向第一个节点*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r-data.clas,find)==0) /*查询成功*/
return r;
r=r-next; /*节点后移*/
}//while
}//else if
return 0;
}//Locate
void input(Link l) /*输入函数定义,用于增加学生信息*/
{
char clas[10];
Node *r,*p; /*定义节点r和p*/
r=l; /*将r指向头结点*/
while(r-next!=NULL)
r=r-next; /*将指针置于最末尾*/
while(l)
{
printf("\n友情提示:输入'#'返回上一菜单\n");
printf("\n输入学生的班级号:");
scanf("%s",clas);
if(strcmp(clas,"#")==0)
break;
p=(Node *)malloc(sizeof(Node)); /*生成新的节点*/
strcpy(p-data.clas,clas); /*将clas字符串复制到p-data.clas中*/
printf("输入学生的学 号:");
scanf("%s",p-data.classnum);
getchar();
printf("输入学生的姓 名:");
scanf("%s",p-data.name);
getchar();
printf("输入学生的基础分:");
scanf("%3.1f",p-data.basis);
getchar();
printf("输入学生的专业分:");
scanf("%3.1f",p-data.major);
getchar();
printf("输入学生的选修分:");
scanf("%3.1f",p-data.elective);
getchar();
printf("输入学生的人文分:");
scanf("%3.1f",p-data.humanity);
getchar();
printf("输入学生的实验分:");
scanf("%3.1f",p-data.laboratory);
getchar();
p-data.sum=p-data.basis+p-data.major+p-data.elective+p-data.humanity+p-data.laboratory; /*计算学分总和*/
p-data.average=p-data.sum/5; /*计算平均学分*/
p-next=NULL; /*p节点的下一个节点为空*/
r-next=p; /*节点前移*/
r=p;
}//while
}//input
void delet(Link l) /*删除函数定义*/
{
char find[10];
Node *p,*r; /*定义节点r和p*/
if(!l-next) /*删除位置不合理*/
{ printf("\n\a对不起,无信息可删除!");
printf("\n");
return;
}//if
printf("\n请输入要删除学生的学号:");
scanf("%s",find);
p=Locate(l,find,"classnum");
if(p)
{ r=l; /*r指向头结点*/
while(r-next!=p) /*r的下一个节点不是p,一直循环*/
r=r-next; /*顺指针向后查找,直到r指向p的前一个节点*/
r-next=p-next; /*删除节点p*/
free(p); /*释放节点p*/
printf("\n\a系统提示:信息删除成功!\n");
shoudsave=1; /*保存资料*/
}//if
else
{ printf("\n\a对不起,无信息可删除!");
printf("\n");
}//else
}//delet
void search(Link l) /*查询函数定义*/
{
char temp; /*定义单字符temp*/
char find[10]; /*定义字符串find[]*/
Node *p; /*定义节点p*/
if(!l-next)
{
printf("\n\a对不起,无信息可查询!");
printf("\n");
return;
}//if
printf("\n\t\t1:按学号查询\t 2:按姓名查询\t 3:按班级查询\n");
printf("\n请输入您要查询的方式:");
scanf("%s",temp);
if(temp!='1' temp!='2' temp!='3')
printf("\n\a\a系统提示:您输入错误!\n");
else if(temp=='1')
{
printf("\n请输入要查询的学号:");
scanf("%s",find);
p=Locate(l,find,"classnum"); /*按学号进行查找匹配*/
}//else if
else if(temp=='2')
{
printf("\n请输入要查询的姓名:");
scanf("%s",find);
p=Locate(l,find,"name"); /*按名字进行查找匹配*/
}//else if
else if(temp=='3')
{
printf("\n请输入您要查询的班级:");
scanf("%s",find);
p=Locate(l,find,"clas"); /*按班级号进行查找匹配*/
}//else if
if(p)
{
printf("\n ==============查询结果==============\n");
menu4();
title();
if(temp=='1')
data1(p); /*输出按学号查找的结果*/
else if(temp=='2')
while(p)
{
data(p,find); /*输出按名字查找的结果*/
p=p-next; /*节点后移*/
}//while
else if(temp=='3')
while(p)
{
data2(p,find); /*输出按班级号查找的结果*/
p=p-next; /*节点后移*/
}//while
menu4();
}//if
else
{
printf("\n\a对不起,无信息可查询!");
printf("\n");
}//else
}//search
Link sortH(Link l,char ch) /*分类排序函数定义*/
{
Node *p,*q,*wei,*s,*p1; /*定义节点p,q,wei,s,p1*/
wei=NULL; /*将尾节点置空*/
char temp;
temp=ch;
if(!l-next)
{
printf("\n\a对不起,无信息可排序!");
printf("\n");
return 0;
}//if
while(l-next!=wei)
{
p=l;
q=p-next;
while(q-next!=wei)
{
if(temp=='A') /*按基础学分由高到低进行排序*/
{
if(p-next-data.basisq-next-data.basis)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//if
else if(temp=='B') /*按专业学分由高到低进行排序*/
{
if(p-next-data.majorq-next-data.major)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='C') /*按选修学分由高到低进行排序*/
{
if(p-next-data.electiveq-next-data.elective)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='D') /*按人文学分由高到低进行排序*/
{
if(p-next-data.humanityq-next-data.humanity)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='E') /*按实验学分由高到低进行排序*/
{
if(p-next-data.laboratoryq-next-data.laboratory)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='F') /*按学分总和由高到低进行排序*/
{ if(p-next-data.sumq-next-data.sum)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='G') /*按平均学分由高到低进行排序*/
{
if(p-next-data.averageq-next-data.average)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
p=p-next;
q=q-next;
}//while
wei=q;
}//while
p1=l-next;
printf("\n ==============排序结果==============\n");
menu4();
if(temp=='A') /*输出按基础学分排序的结果*/
{ printf("\t\t\t班级\t学号\t姓名\t基础学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.basis);
p1=p1-next;
}//while
}//if
if(temp=='B') /*输出按专业学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t专业学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.major);
p1=p1-next;
}//while
}//if
if(temp=='C') /*输出按选修学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t选修学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.elective);
p1=p1-next;
}//while
}//if
if(temp=='D') /*输出按人文学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t人文学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.humanity);
p1=p1-next;
}//while
}//if
if(temp=='E') /*输出按实验学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t实验学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.laboratory);
p1=p1-next;
}//while
}//if
if(temp=='F') /*输出按学分总和排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t学分总和\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.sum);
p1=p1-next;
}//while
}//if
if(temp=='G') /*输出按平均学分排序的结果*/
{
printf("\t\t\t班级\t学号\t姓名\t平均学分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.average);
p1=p1-next;
}//while
}//if
printf("\n");
menu4();
printf("\n");
return l;
}//sortH
void sort(Link l) /*排序函数定义*/
{
menu3();
char temp;
scanf("%s",temp);
switch(temp) /*对要排序的类别进行选择*/
{
case 'A':sortH(l,'A');break;
case 'B':sortH(l,'B');break;
case 'C':sortH(l,'C');break;
case 'D':sortH(l,'D');break;
case 'E':sortH(l,'E');break;
case 'F':sortH(l,'F');break;
case 'G':sortH(l,'G');break;
default:printf("\n\a\a系统提示:您输入错误!\n");getchar();break;
}//switch
}//sort
void modify(Link l) /*修改函数定义*/
{
char temp;
char find[10];
Node *p; /*定义节点p*/
if(!l-next)
{
printf("\n\a\a对不起,无信息可修改!");
printf("\n");
return;
}//if
printf("\n\t\t1:按学号修改\t 2:按姓名修改\n");
printf("\n请输入您要修改的方式:");
scanf("%s",temp);
if(temp!='1'temp!='2')
{
printf("\n\a\a系统提示:您输入错误!\n");
return;
}//if
else if(temp=='1') /*按学号修改*/
{
printf("请输入要修改的学号:");
scanf("%s",find);
p=Locate(l,find,"classnum"); /*按学号查找匹配*/
}//else if
没有空间了 邮箱给我 发你邮箱去
以上回答你满意么?
AddStudent和DisplayStudents函数要先声明噻,放到你调用函数的前面声明哈
#includeiostream.h
#includestring.h
#includefstream.h
#includeiomanip.h
class stu
{
char name[20];
double age,homephone,telphone;
char sex;
public:
stu(){}
stu(char n[20],char se,double ag,double ho,double te)
{
strcpy(name, n);
age=ag;
homephone=ho;
telphone=te;
}
friend void main();
};
void main()
{
cout"请选择您需要的操作!"endl;
cout"操作:"endl;
cout"(0)通讯录录入"endl;
cout"(1)增加人员"endl;
cout"(2)删除人员"endl;
cout"(3)修改数据"endl;
cout"(4)显示记录"endl;
cout"(5)退出"endl;
cout"选择相关操作请输入相对的括号里的阿拉伯数字!"endl;
stu *s[50];
int i=0;
int j=0;
bool flag2=0;
char p;
do
{
cinp;
if((p='0'p='5'))
flag2=1;
else
cout"指令错误!请重新输入:"endl;
}while(flag2==0);
switch(p)
{
case '0': //(0)通讯录录入
{
char name[20];
double age,homephone,telphone;
char sex,c;
do{
cout"请输入姓名:"endl;
cinname;
cout"请输入性别:"endl;
cinsex;
cout"请输入年龄:"endl;
cinage;
cout"请输入家里的电话号码:"endl;
cinhomephone;
cout"请输入移动电话号码:"endl;
cintelphone;
j++;
s[i]=new stu(name, sex, age, homephone , telphone);
i++;
cout"数据录入成功,想继续录入吗(y/n)"endl;
cinc;
flag2=0;
do
{
if(c!='y'c!='n')
{
cout"指令错误!请重新输入!"endl;
cinc;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break; }
////////////////////////////////////////////////////////////////////
case '1': //(1)增加人员(Add)
{
char name[20];
double age,homephone,telphone;
char sex,c;
do{
cout"请输入姓名:"endl;
cinname;
cout"请输入性别:"endl;
cinsex;
cout"请输入年龄:"endl;
cinage;
cout"请输入家里的电话号码:"endl;
cinhomephone;
cout"请输入移动电话号码:"endl;
cintelphone;
j++;
s[i]=new stu(name, sex, age, homephone , telphone);
i++;
cout"数据录入成功,想继续录入吗(y/n)"endl;
cinc;
flag2=0;
do
{
if(c!='y'c!='n')
{
cout"指令错误!请重新输入!"endl;
cinc;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break; }
case '2': //(2)删除人员(Delete)
{
char name[20];bool flag3=0;char c;
do{
cout"请输入您要删除的学生姓名:"endl;
cinname;
for(int h=0;hi;h++)
{
if(strcmp(name,s[h]-name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h=i);
}
}
if(flag3==0)
cout"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout"要继续删除吗?(y/n)"endl;
cinc;
if(c!='y'c!='n')
{
cout"指令错误!请重新输入!"endl;
cinc;
}
}while(c=='y');
break; }
case '3': //(3)修改数据(Alter)
{
char name[20],se;double ag,ho,te;flag2=0;
char c;
do
{
cout"请输入您要修改的学生的姓名:"endl;
cinname;
for(int h=0;hi;h++)
{
if(strcmp(name,s[h]-name)==0)
{
flag2=1;
cout"请输入性别:"endl;
cinse;
cout"请输入年龄:"endl;
cinag;
cout"请输入家里的电话号码:"endl;
cinho;
cout"请输入移动电话号码:"endl;
cinte;
s[h]-sex=se;
s[h]-age=ag;
s[h]-homephone=ho;
s[h]-telphone=te;
cout"数据修改成功!";
}
}
if(flag2==0)
{
cout"您要修改的学生本来就不存在!请检查重新输入!"endl;
}
cout"想继续修改吗(y/n)"endl;
cinc;
if(c!='y'c!='n')
{
cout"指令错误!请重新输入!"endl;
cinc;
}
}while(c=='y');
break; }
case '4': //(4)显示记录(List)
{
cout"本系统所有通讯录的数据如下:"endl;
if(i==0)
cout"管理系统中没有录入数据或者数据已经被删除!"endl;
for(int k=0;ki;k++)
{
coutk+1" ""姓名:"" "s[k]-name
"性别:"" "s[k]-sex"年龄:"" "s[k]-age
"家里的电话号码:"" "s[k]-homephone"移动电话号码:"
" "s[k]-telphoneendl;
}
break; } }
cout"您想继续进行其他操作吗?(y/n)"endl;
bool flag4=0;
do
{
cinp;
if(p!='y'p!='n')
cout"指令错误!请重新输入!"endl;
else
flag4=1;
}while(flag4==0);
if(p=='y')
cout"请输入操作代码(0 通讯录录入/1 增加人员(Add)/2 删除人员(Delete)/3 修改数据(Alter)/4 显示记录(List)/ 5 退出(Exit))"endl;
cinp;
for(int x=0;xi;x++)
{
delete s[x];
cout"删除所有成员!"endl;
}
}
回答者:little_goblin - 初入江湖 三级 7-11 09:35
评价已经被关闭 目前有 1 个人评价
好
100% (1) 不好
0% (0)
对最佳答案的评论 共 1 条
看不懂
评论者: hanrenhui88 - 试用期 一级
其他回答 共 1 条
我自己前不久编写的一个通讯录,呵呵.
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
struct student
{
int no; /*学号*/
char name[20]; /*姓名*/
char acdamic[20]; /*院系*/
char major[20]; /*专业*/
char province[20]; /*籍贯*/
char address[40]; /*家庭地址*/
long phone; /*联系电话*/
struct student *next;
};
struct student *input();
void print(struct student *h);
struct student *insert(struct student *h);
struct student *del(struct student *h);
void find4(struct student *h);
void find3(struct student *h);
void find2(struct student *h);
void find1(struct student *h);
struct student *head=NULL;
char ch,*menu[]={"------------------通讯录菜单------------",
"1.----------建立学生通讯录---------------",
"2.----------输出全部学生通讯录---------------",
"3.----------增加的学生的个数---------------",
"4.----------删除指定学号的学生--------------",
"5.----------按系别查找学生信息-------------",
"6.----------按专业查找学生信息-------------",
"7.----------按姓名查找学生信息-------------",
"8.----------按学号查找学生信息--------------",
"9.----------退出通讯录-----------------------"};
struct student *input() /*输入函数*/
{
int n;
printf("请输入你要建立的学生通讯录的学生个数:\n");
scanf("%d",n);
struct student *h=NULL,*p,*q;
int i;
for(i=1;i=n;i++)
{
printf("请依次输入第%d个学生的学号,姓名,系别,专业,籍贯,家庭住址和联系电话:\n",i);
p=(struct student *)malloc(sizeof(struct student));
if(p==NULL)
{
printf("内存不足!\n");
exit(0);
}
scanf("%d%s%s%s%s%s%ld",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
if(i==1)h=p;
else q-next=p;
q=p;
}
q-next=NULL;
return h;
}
void print(struct student *h) /*输出函数*/
{
struct student *p=h;
while(p)
{
printf("学生信息:\n%d,%s,%s,%s,%s,%s,%ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
struct student *insert(struct student *h) /*增加学生信息*/
{
int n;
printf("请输入你要增加的学生的个数:\n");
scanf("%d",n);
struct student *p,*r;
int i;
for(i=1;i=n;i++)
{
r=(struct student *)malloc(sizeof(struct student));
printf("请输入第%d个你要插入的学生的信息:\n",i);
scanf("%d%s%s%s%s%s%ld",r-no,r-name,r-acdamic,r-major,r-province,r-address,r-phone);
p=h;
h=r;
r-next=p;
}
return h;
}
struct student *del(struct student *h) /*按学号进行删除*/
{
int n;
printf("请输入要删除的学生的学号:\n");
scanf("%d",n);
struct student *p,*q;
if(h=NULL)printf("empty list!\n");
else
{
p=h;
while(p-no!=np-next)
{q=p;p=p-next;}
if(p-no==n)
{
if(h==p)h=p-next;
else q-next=p-next;
}
else printf("%d is not found!\n");
}
return h;
}
void find1(struct student *h) /*按院系查找学生信息*/
{
char s[40];
printf("请输入要查找的学生的院系:\n");
scanf("%s",s);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(strcmp(p-acdamic,s)==0)
printf("学生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
}
void find2(struct student *h) /*按专业查找*/
{
char s[20];
printf("请输入要查找的学生的专业名:\n");
scanf("%s",s);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(strcmp(p-major,s)==0)
printf("学生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
}
void find3(struct student *h) /*按姓名查找*/
{
char ss[10];
printf("请输入要查找的学生的姓名:\n");
scanf("%s",ss);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(strcmp(p-name,ss)==0)
printf("学生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
}
void find4(struct student *h) /*按学号查找*/
{
int num;
printf("请输入要查找的学生的学号:\n");
scanf("%d",num);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(p-no==num)
printf("学生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
else
printf("没有你要查找的学生信息!\n");
p=p-next;
}
}
}
int menu_select()
{
int i,s;
char c[3];
for(i=0;i10;i++)
printf("%s\n",menu[i]);
do
{
scanf("%s",c);
s=atoi(c);
}while(s0||s9);
return s;
}
main()
{
for(;;)
{
switch(menu_select())
{
case 1:head=input();break;
case 2:print(head);break;
case 3:head=insert(head);break;
case 4:head=del(head);break;
case 5:find1(head);break;
case 6:find2(head);break;
case 7:find3(head);break;
case 8:find4(head);break;
case 9:exit(0);
}
}
}