Doxers
2013.06.28
采纳率:9% 等级:14
已帮助:2826人
说明:保存程序源代码时,必须以.c为后缀名.
详细的程序代码如下:(给出了详细的解释,本程序在vc6.0或tc2.0都编译通过)
#include
#include
#include
#include
#include
typedef struct student
{
char sequencenumber[10];/*序号*/
char name[20];/*姓名*/
char classnumber[20];/*班级*/
char telephone[20];/*手机号*/
char e_mail[20];/*email*/
char dormitorynumber[10];/*宿舍号*/
struct student *next;
}student;
student *headlink;/*链表表头指针*/
/*以下是函数声明*/
void desplaymenu(void);
void createheadlink(void);
student *mallocnode(void);
void getinformation(student *t);
void outputinformation(void);
void classnumberbytelephone(void);
void desplayinfobysequencenumber(void);
void desplayonenode(student *t);
void insertonenode(student *t);
void deletenodebysequencenumber(void);
void desplayinfobyname(void);
int choose;/*用于接受用户的选择*/
/*主函数*/
void main()
{
createheadlink();
desplaymenu();
}
/************************************
函数功能:显示菜单,根据用户的输入
完成相应的功能
************************************/
void desplaymenu(void)
{
student *p;
printf(“\n——-请选择相应功能————-\n\n”);
printf(“| 1 显示所有学生信息 |\n”);
printf(“| 2 按学生序号高到低排序 |\n”);
printf(“| 3 根据学生序号查询学生的信息 |\n”);
printf(“| 4 根据学生姓名查询学生的信息 |\n”);
printf(“| 5 增加一个学生 |\n”);
printf(“| 6 删除某一学生 |\n”);
printf(“| 7 退出 |\n\n”);
scanf(“%d”,&choose);/*取得用户的选择*/
switch(choose)
{
case 1:
outputinformation();
break;
case 2:
classnumberbytelephone();
break;
case 3:
desplayinfobysequencenumber();
break;
case 4:
desplayinfobyname();
break;
case 5:
p=mallocnode();/*先申请一个新结点*/
getinformation(p);/*要求用户输入信息到新结点中*/
insertonenode(p);/*将新结点加到链表中*/
break;
case 6:
deletenodebysequencenumber();
break;
case 7:
free(headlink);/*先释放内存空间*/
exit(1);
break;
default:
break;
}
desplaymenu();/*递归调用*/
}
/************************************
函数功能:建立链表表头
************************************/
void createheadlink(void)
{
student *p;
p=(student*)malloc(sizeof(student));
headlink=p;
p->next=null;
}
/************************************
函数功能:申请一个新结点,并将其初始化
************************************/
student *mallocnode(void)
{
student *p;
int i;
p=(student*)malloc(sizeof(student));
if(p==null)
return null;
for(i=0;i<10;i++)
p->sequencenumber[i]=’\0′;
for(i=0;i<20;i++)
p->classnumber[i]=’\0′;
for(i=0;i<20;i++)
p->name[i]=’\0′;
for(i=0;i<20;i++)
p->e_mail[i]=’\0′;
for(i=0;i<10;i++)
p->dormitorynumber[i]=’\0′;
for(i=0;i<10;i++)
p->telephone[i]=’\0′;
p->next=null;
return p;
}
/************************************
函数功能:取得用户输入的学生信息
************************************/
void getinformation(student *t)
{
printf(“请输入序号:\n”);
scanf(“%s”,t->sequencenumber);
printf(“请输入班级:\n”);
scanf(“%s”,t->classnumber);
printf(“请输入姓名:\n”);
scanf(“%s”,t->name);
printf(“请输入电话:\n”);
scanf(“%s”,t->telephone);
printf(“请输入email:\n”);
scanf(“%s”,t->e_mail);
printf(“请输入宿舍号:\n”);
scanf(“%s”,t->dormitorynumber);
}
/************************************
函数功能:在链表的结尾处增加一个结点
************************************/
void insertonenode(student *t)
{
student *p;
p=headlink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/************************************
函数功能:根据用户输入的序号显示该序号学生的信息
************************************/
void desplayinfobysequencenumber(void)
{
student *p;
char good[10];
char flag=0;
p=headlink->next;
if(p==null)
{
printf(“对不起,现在没有学生信息!\n”);
return;
}
printf(“请输入序号:\n”);
scanf(“%s”,good);
while(p)
{
if(strcmp(p->sequencenumber,good)==0)
{
desplayonenode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf(“对不起,不存在序号为 %s 的学生\n”,good);
}
/************************************
函数功能:根据用户输入的姓名显示该学生的信息
************************************/
void desplayinfobyname(void)
{
student *p;
char name[10];
char flag=0;
p=headlink->next;
printf(“请输入姓名:\n”);
scanf(“%s”,name);
while(p)
{
if(strcmp(p->sequencenumber,name)==0)
{
desplayonenode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf(“对不起,不存在姓名为 %s 的学生\n”,name);
}
/************************************
函数功能:输出一个学生结点的信息
************************************/
void desplayonenode(student *t)
{
printf(“%s\t”,t->sequencenumber);
printf(“%s\t”,t->classnumber);
printf(“%s\t”,t->name);
printf(“%s\t”,t->telephone);
printf(“%s\t”,t->e_mail);
printf(“%s\t\n”,t->dormitorynumber);
}
/************************************
函数功能:根据用户输入的序号删除该学生
************************************/
void deletenodebysequencenumber(void)
{
char good[10];
student *p,*q;
char flag=0;
printf(“请输入要删除的学生序号:”);
scanf(“%s”,good);
p=headlink;
q=headlink->next;
while(q)
{
if(strcmp(q->sequencenumber,good)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
printf(“不存在这学生\n”);
}
/************************************
函数功能:显示所有学生的信息
************************************/
void outputinformation(void)
{
student *p;
p=headlink->next;
if(p==null)
{
printf(“现在没有学生信息,请先输入学生\n\n”);
return;
}
printf(“序号\t班级\t姓名\t电话\t邮箱\t宿舍号\t\n”);
while(p)
{
desplayonenode(p);
p=p->next;
}
}
/************************************
函数功能:根据用户输入的班级,按序号到低排序
************************************/
void classnumberbytelephone(void)
{
char classnumber[20];
student exchange,*r,*p,*q;
r=headlink->next;
if(r==null)
{
printf(“现在还没学生信息,请先输入学生信息\n”);
return;
}
printf(“请输入班级名:\n”);
scanf(“%s”,classnumber);
while(r)/*两层while循环实现排序*/
{
p=r;
q=r->next;
while(q)
{
if((strcmp(p->sequencenumber,q->sequencenumber)>0)/*序号大时才交换*/
&&(strcmp(p->classnumber,classnumber)==0)/*并且班级相同时才交换*/
&&(strcmp(q->classnumber,classnumber)==0))
{
strcpy(exchange.sequencenumber,q->sequencenumber);/*先复制q结点信息到exchange*/
strcpy(exchange.e_mail,q->e_mail);
strcpy(exchange.dormitorynumber,q->dormitorynumber);
strcpy(exchange.name,q->name);
strcpy(exchange.classnumber,q->classnumber);
strcpy(exchange.telephone,q->telephone);
strcpy(q->sequencenumber,p->sequencenumber);/*再复制p结点信息到q*/
strcpy(q->e_mail,p->e_mail);
strcpy(q->dormitorynumber,p->dormitorynumber);
strcpy(q->name,p->name);
strcpy(q->classnumber,p->classnumber);
strcpy(q->telephone,p->telephone);
strcpy(p->sequencenumber,exchange.sequencenumber);/*最复制exchange结点信息到p*/
strcpy(p->e_mail,exchange.e_mail);
strcpy(p->dormitorynumber,exchange.dormitorynumber);
strcpy(p->name,exchange.name);
strcpy(p->classnumber,exchange.classnumber);
strcpy(p->telephone,exchange.telephone);
}
q=q->next;
}
r=r->next;
}
}
00分享举报
今天的文章c语言void main()报错_c语言中undefined reference to「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89528.html