搜档网
当前位置:搜档网 › 学生信息管理系统c语言链表版(未完善)

学生信息管理系统c语言链表版(未完善)

学生信息管理系统c语言链表版(未完善)
学生信息管理系统c语言链表版(未完善)

#include

#include

#include

#include

struct date

{

inty,m,d;

};

struct student

{

char number[20];

char name[20];

char sex;

struct date birthday;

char phone[20];

struct student *next;

} ;

//检查部分

int check1(char number[])

{

for(inti=0;number[i]!='\0';i++)

{

if(number[i]>'9'||number[i]<'0') return 0;

}

if(strlen(number)!=11) return 0;

return 1;

}

int check2(char name[])

{

for(inti=0;name[i]!='\0';i++)

{

if(name[i]>'z'||name[i]<'a') return 0;

}

if(strlen(name)>20||strlen(name)<0) return 0;

return 1;

}

int check3(char sex)

{

if(sex=='F'||sex=='M') return 1;

else return 0;

}

int check4(inty,intm,int d)

{

if(y<1850||y>2018) return 0;

if(m<1||m>12) return 0;

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

{

if(d<1||d>31)

return 0;

}

if(m==4||m==6||m==9||m==11)

{

if(d<1||d>30)

return 0;

}

if(m==2&&y%4==0)

{

if(d<1||d>29)

return 0;

}

if(m==2&&y%4!=0)

{

if(d<1||d>28)

return 0;

}

return 1;

}

int check5(char phone[])

{

for(inti=0;phone[i]!='\0';i++)

{

if(phone[i]>'9'||phone[i]<'0') return 0;

}

if(strlen(phone)!=11) return 0;

return 1;

}

//查看全部voidchakan(struct student *head)

{

if(head==NULL) printf("\n 无记录\n");

else

{

struct student *cur=head->next;

printf("\n");

printf(" 学号姓名性别出生年月手机号码\n");

if(cur==NULL) printf("\n 无记录\n");

for(inti=1;cur!=NULL;cur=cur->next,i++)

{

printf("%15s%20s%5c%8d-%d-%d%15s\n",cur->number,cur->name,cur->sex,cur->birthday.y,cur-> birthday.m,cur->birthday.d, cur->phone);

}

}

}

//查询部分

void search1(struct student *head)

{

struct student *s=NULL;

s=head->next;

char xuehao1[20]="";

char xuehao2[20]="";

int c=0;

while(1){

printf("\n 请输入学号大致范围(11位数)\n");

gets(xuehao1);

gets(xuehao2);

if(strcmp(xuehao1,xuehao2)>0) printf("\n 范围错误,请重新输入!\n"); else break;

}

printf(" 学号姓名性别出生年月手机号码\n");

while(s!=NULL)

{

if(strcmp(s->number,xuehao1)>=0&&strcmp(s->number,xuehao2)<=0)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c++;

}

s=s->next;

}

if(c==0) printf("\n 暂无记录\n");

}

void search2(struct student *head)

{

struct student *s=NULL;

s=head->next;

charmingzhi[20];

printf("\n 请输入名字中前面的字符:\n");

gets(mingzhi);

int z=0,c=0;

z=strlen(mingzhi);

printf(" 学号姓名性别出生年月手机号码\n");

while(s!=NULL)

{

if(strncmp(s->name,mingzhi,z)==0)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c++;

}

s=s->next;

}

if(c==0) printf("\n 暂无记录\n");

}

void search3(struct student *head)

{

struct student *s=NULL;

s=head->next;

char xuehao1[20]="";

char xuehao2[20]="";

int c=0;

while(1){

printf("\n 请输入手机号大致范围(11位数)\n");

gets(xuehao1);

gets(xuehao2);

if(strcmp(xuehao1,xuehao2)>0) printf("\n 范围错误,请重新输入!\n"); else break;

}

printf(" 学号姓名性别出生年月手机号码\n");

while(s!=NULL)

{

if(strcmp(s->phone,xuehao1)>=0&&strcmp(s->phone,xuehao2)<=0)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c++;

}

s=s->next;

}

if(c==0) printf("\n 暂无记录\n");

}

void search4(struct student *head)

{

struct student *s=NULL;

s=head->next;

charsexa;

int c=0;

while(1)

{

printf("\n 请输入性别(F / M):\n");

sexa=getchar();getchar();

if(sexa!='F'&&sexa!='M') { printf("\n 暂无该性别,请重新输入!\n");}

else break;

}

printf(" 学号姓名性别出生年月手机号码\n");

while(s!=NULL)

{

if(sexa==s->sex)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c++;

}

s=s->next;

}

if(c==0) printf("\n 暂无记录\n");

}

void search5(struct student *head)

{

struct student *s=NULL;

s=(struct student*)malloc(sizeof(struct student));

s=head->next;

int a=0,b=0,e=0,f=0,g=2000;

int c1=0,c2=0,c3=0,c4=0;

while(1){

printf("\n 请输生日范围(空格区分月和日)\n");

scanf("%d%d%d%d",&a,&b,&e,&f);

getchar();

if(check4(g,a,b)==1&&check4(g,e,f)==1)

{

if(a==e)

{

if(f>=b) break;

}

if(a

}

printf("\n 非法数据,请重新输入!\n");

}

while(s!=NULL)

{

if(s->birthday.m>a&&s->birthday.m

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c1++;

}

if(s->birthday.m==a&&s->birthday.m

{

if(s->birthday.d>=b)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c2++;

}

}

if(s->birthday.m>a&&s->birthday.m==e)

{

if(s->birthday.d<=f)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c3++;

}

}

if(s->birthday.m==a&&s->birthday.m==e)

{

if(s->birthday.d>=b&&s->birthday.d<=f)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",s->number,s->name,s->sex,s->birthday.y,s->bir thday.m,s->birthday.d,s->phone);

c4++;

}

}

s=s->next;

}

if(c1+c2+c3+c4==0) printf("\n 暂无记录\n");

}

//删除部分

void del1(struct student *head)

{

struct student *p=NULL,*q=NULL;

char xuehao1[20]="";

char xuehao2[20]="";

int c=0;

while(1){

printf("\n 请输入学号大致范围(11位数)\n");

gets(xuehao1);

gets(xuehao2);

if(strcmp(xuehao1,xuehao2)>0) printf("\n 范围错误,请重新输入!\n"); else break;

}

printf(" 学号姓名性别出生年月手机号码\n");

for(p=head,q=head->next;q!=NULL;)

{

if(strcmp(q->number,xuehao1)>=0&&strcmp(q->number,xuehao2)<=0)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c++;

}

else p=p->next,q=q->next;

}

if(c!=0) {printf("\n 删除后:\n"); chakan(head);}

if(c==0) printf("\n 暂无记录\n");

}

void del2(struct student *head)

{

struct student *p=NULL,*q=NULL;

charmingzhi[20];

printf("\n 请输入名字中前面的字符:\n");

gets(mingzhi);

int c=0,z=0;

z=strlen(mingzhi);

printf(" 学号姓名性别出生年月手机号码\n");

for(p=head,q=head->next;q!=NULL;)

{

if(strncmp(q->name,mingzhi,z)==0)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c++;

}

else p=p->next,q=q->next;

}

if(c!=0) {printf("\n 删除后:\n"); chakan(head);}

if(c==0) printf("\n 暂无记录\n");

}

void del3(struct student *head)

{

struct student *p=NULL,*q=NULL;

char xuehao1[20]="";

char xuehao2[20]="";

int c=0;

while(1){

printf("\n 请输入手机号大致范围(11位数)\n");

gets(xuehao1);

gets(xuehao2);

if(strcmp(xuehao1,xuehao2)>0) printf("\n 范围错误,请重新输入!\n"); else break;

}

printf(" 学号姓名性别出生年月手机号码\n");

for(p=head,q=head->next;q!=NULL;)

{

if(strcmp(q->phone,xuehao1)>=0&&strcmp(q->phone,xuehao2)<=0)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c++;

}

else p=p->next,q=q->next;

}

if(c!=0) { printf("\n 删除后:\n"); chakan(head);}

if(c==0) printf("\n 暂无记录\n");

}

void del4(struct student *head)

{

struct student *p=NULL,*q=NULL;

charsexa;

int c=0;

while(1)

{

printf("\n 请输入性别(F \\ M):\n");

sexa=getchar();getchar();

if(sexa!='F'&&sexa!='M') { printf("\n 暂无该性别,请重新输入!\n");}

else break;

}

printf(" 学号姓名性别出生年月手机号码\n");

for(p=head,q=head->next;q!=NULL;)

{

if(sexa==q->sex)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c++;

}

else p=p->next,q=q->next;

}

if(c!=0) { printf("\n 删除后:\n"); chakan(head);}

if(c==0) printf("\n 暂无记录\n");

}

void del5(struct student *head)

{

struct student *p=NULL,*q=NULL;

int a=0,b=0,e=0,f=0,g=2000;

int c1=0,c2=0,c3=0,c4=0;

while(1){

printf("\n 请输生日范围(空格区分月和日)\n");

scanf("%d%d%d%d",&a,&b,&e,&f);

getchar();

if(check4(g,a,b)==1&&check4(g,e,f)==1)

{

if(a==e)

{

if(f>=b) break;

}

if(a

}

printf("\n 非法数据,请重新输入!\n");

}

for(p=head,q=head->next;q!=NULL;)

{

if(q->birthday.m>a&&q->birthday.m

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c1++;

}

else if(q->birthday.m==a&&q->birthday.m

{

if(q->birthday.d>=b)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c2++;

}

}

else if(q->birthday.m>a&&q->birthday.m==e)

{

if(q->birthday.d<=f)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c3++;

}

}

else if(q->birthday.m==a&&q->birthday.m==e)

{

if(q->birthday.d>=b&&q->birthday.d<=f)

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",q->number,q->name,q->sex,q->birthday.y,q->b irthday.m,q->birthday.d,q->phone);

p->next=q->next;free(q);

q=p->next;

c4++;

}

}

else p=p->next,q=q->next;

}

if(c1+c2+c3+c4!=0) { printf("\n 删除后:\n"); chakan(head);} if(c1+c2+c3+c4==0) printf("\n 暂无记录\n");

}

//排序部分

void paixu1(struct student *head)

{

int n=0,i=0,j=0; //读取文件

struct student temp[100];

struct student tenp;

FILE*fp=NULL;

fp=fopen("D:\\record.txt","r");

if(fp==NULL)

{

printf("\n 打开文件失败!\n");

exit(0);

}

while(feof(fp)==0)

{

fscanf(fp,"%15s%20s%5s%6d%4d%4d%15s\n",&temp[n].number,&temp[n].name,&temp[n].sex, &temp[n].birthday.y,&temp[n].birthday.m,&temp[n].birthday.d,&temp[n].phone);

n++;

}

fclose(fp); //关闭文件

printf("\n 排序前:\n");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

for(i=1;i

{

for(j=0;j

{

if(strcmp(temp[j].number,temp[j+1].number)>0)

{

tenp=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tenp;

}

}

}

printf("\n 排序后:\n");

fp=fopen("D:\\record.txt","w");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

fprintf(fp,"%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

fclose(fp);

}

void paixu2(struct student *head)

{

int n=0,i=0,j=0; //读取文件

struct student temp[100];

struct student tenp;

FILE*fp=NULL;

fp=fopen("D:\\record.txt","r");

if(fp==NULL)

{

printf("\n 打开文件失败!\n");

exit(0);

}

while(feof(fp)==0)

{

fscanf(fp,"%15s%20s%5s%6d%4d%4d%15s\n",&temp[n].number,&temp[n].name,&temp[n].sex, &temp[n].birthday.y,&temp[n].birthday.m,&temp[n].birthday.d,&temp[n].phone);

n++;

}

fclose(fp); //关闭文件

printf("\n 排序前:\n");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

for(i=1;i

{

for(j=0;j

{

if(strcmp(temp[j].name,temp[j+1].name)>0)

{

tenp=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tenp;

}

}

}

printf("\n 排序后:\n");

fp=fopen("D:\\record.txt","w");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

fprintf(fp,"%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

fclose(fp);

}

void paixu3(struct student *head)

{

int n=0,i=0,j=0; //读取文件

struct student temp[100];

struct student tenp;

FILE*fp=NULL;

fp=fopen("D:\\record.txt","r");

if(fp==NULL)

{

printf("\n 打开文件失败!\n");

exit(0);

}

while(feof(fp)==0)

{

fscanf(fp,"%15s%20s%5s%6d%4d%4d%15s\n",&temp[n].number,&temp[n].name,&temp[n].sex, &temp[n].birthday.y,&temp[n].birthday.m,&temp[n].birthday.d,&temp[n].phone);

n++;

}

fclose(fp); //关闭文件

printf("\n 排序前:\n");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

for(i=1;i

{

for(j=0;j

{

if(strcmp(temp[j].phone,temp[j+1].phone)>0)

{

tenp=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tenp;

}

}

}

printf("\n 排序后:\n");

fp=fopen("D:\\record.txt","w");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

fprintf(fp,"%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

fclose(fp);

}

void paixu4(struct student *head)

{

int n=0,i=0,j=0; //读取文件

struct student temp[100];

struct student tenp;

FILE*fp=NULL;

fp=fopen("D:\\record.txt","r");

if(fp==NULL)

{

printf("\n 打开文件失败!\n");

exit(0);

}

while(feof(fp)==0)

{

fscanf(fp,"%15s%20s%5s%6d%4d%4d%15s\n",&temp[n].number,&temp[n].name,&temp[n].sex, &temp[n].birthday.y,&temp[n].birthday.m,&temp[n].birthday.d,&temp[n].phone);

n++;

}

fclose(fp); //关闭文件

printf("\n 排序前:\n");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

for(i=1;i

{

for(j=0;j

{

if(temp[j].sex=='M')

{

tenp=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tenp;

}

}

}

printf("\n 排序后:\n");

fp=fopen("D:\\record.txt","w");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

fprintf(fp,"%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

fclose(fp);

}

void paixu5(struct student *head)

{

int n=0,i=0,j=0; //读取文件struct student temp[100];

struct student tenp;

FILE*fp=NULL;

fp=fopen("D:\\record.txt","r");

if(fp==NULL)

{

printf("\n 打开文件失败!\n");

exit(0);

}

while(feof(fp)==0)

{

fscanf(fp,"%15s%20s%5s%6d%4d%4d%15s\n",&temp[n].number,&temp[n].name,&temp[n].sex, &temp[n].birthday.y,&temp[n].birthday.m,&temp[n].birthday.d,&temp[n].phone);

n++;

}

fclose(fp); //关闭文件

printf("\n 排序前:\n");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

for(i=1;i

{

for(j=0;j

{

if(temp[j].birthday.y>temp[j+1].birthday.y)

{

tenp=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tenp;

}

if(temp[j].birthday.y==temp[j+1].birthday.y)

{

if(temp[j].birthday.m>temp[j+1].birthday.m)

{

tenp=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tenp;

}

if(temp[j].birthday.m==temp[j+1].birthday.m)

{

if(temp[j].birthday.d>temp[j+1].birthday.d)

{

tenp=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tenp;

}

}

}

}

}

printf("\n 排序后:\n");

fp=fopen("D:\\record.txt","w");

for(i=0;i

{

printf("\n%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

fprintf(fp,"%15s%20s%5c%6d%4d%4d%15s\n",temp[i].number,temp[i].name,temp[i].sex,temp[i]. birthday.y,temp[i].birthday.m,temp[i].birthday.d,temp[i].phone);

}

fclose(fp);

}

voidmyprintf()

{ system("cls");

printf(" |--------------------------------------------|\n");

printf(" | 请输入选项的编号:|\n");

printf(" |--------------------------------------------|\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(" | 》<0>---退出|\n");

printf(" |--------------------------------------------|\n");

printf(" | 注意!|\n");

printf(" | 程序输入默认以回车结束|\n");

printf(" | 如有特殊情况请看提示|\n");

printf(" | 程序默认自动保存在D:\\record.txt |\n");

printf(" |--------------------------------------------|\n");

}

struct student * mycreate() //输入

{

struct student *head,*tail,*cur;

head=tail=(struct student*)malloc(sizeof(struct student));

inti,sum;

printf("\n 请输入学生的数量:\n");

scanf("%d",&sum);

getchar(); //sacnf后接gets回车会出错,getcher吃掉回车符

for(i=0;i

{

cur=(struct student*)malloc(sizeof(struct student));

while(1){

printf("\n 请输入第(%d)个学生的学号(11位数):\n",i+1);

gets(cur->number);

if(check1(cur->number)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入第(%d)个学生的姓名(小写拼音):\n",i+1);

gets(cur->name);//wzh 16219111320

if(check2(cur->name)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入第(%d)个学生的性别(F / M):\n",i+1);

scanf("%s",&cur->sex);

if(check3(cur->sex)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入第(%d)个学生的生日(按空格区分年月日):\n",i+1);

scanf("%d%d%d",&cur->birthday.y,&cur->birthday.m,&cur->birthday.d);

getchar();

if(check4(cur->birthday.y,cur->birthday.m,cur->birthday.d)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入第(%d)个学生的手机号(11位数):\n",i+1);

gets(cur->phone);

if(check5(cur->phone)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

tail->next=cur;tail=cur;

}

tail->next=NULL;

return head;

}

void mysearch(struct student *head) //查询

{

char c='\0';

printf("\n");

printf(" |--------------------------------------------|\n");

printf(" | 请输入选项的编号:|\n");

printf(" |--------------------------------------------|\n");

printf(" | > 1---学号模糊查找|\n");

printf(" | > 2---姓名模糊查找|\n");

printf(" | > 3---手机模糊查找|\n");

printf(" | > 4---性别精确查找|\n");

printf(" | > 5---生日范围查找|\n");

printf(" |--------------------------------------------|\n");

c=getche();

switch(c)

{

case '1':search1(head);break;

case '2':search2(head);break;

case '3':search3(head);break;

case '4':search4(head);break;

case '5':search5(head);break;

default:printf("\n 非法选项!\n");

}

}

void mycharu(struct student *head) //插入

{

struct student *cur=NULL,*p=NULL,*q=NULL;

q=head;p=head->next;

printf("\n 输入前:\n");

chakan(head);

int a=0;

printf("\n 请问在第几条数据后插入?(提示:如需在首端插入,请输入'0')\n");

scanf("%d",&a);

getchar();

cur=(struct student*)malloc(sizeof(struct student));

while(1){

printf("\n 请输入学生的学号(11位数):\n");

gets(cur->number);

if(check1(cur->number)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入学生的姓名(小写拼音):\n");

gets(cur->name);//wzh 16219111320

if(check2(cur->name)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入学生的性别(F / M):\n");

scanf("%s",&cur->sex);

if(check3(cur->sex)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入学生的生日(按空格区分年月日):\n");

scanf("%d%d%d",&cur->birthday.y,&cur->birthday.m,&cur->birthday.d);

getchar();

if(check4(cur->birthday.y,cur->birthday.m,cur->birthday.d)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

while(1){

printf("\n 请输入学生的手机号(11位数):\n");

gets(cur->phone);

if(check5(cur->phone)==0) printf("\n 非法数据,请重新输入!\n"); else break;

}

inti=0;

for(i=0;i<=a;i++)

{

if(i==a)

{

cur->next=p;

q->next=cur;

break;

}

else

{

q=q->next;

c语言航班信息查询系统实验报告

软件学院大作业任务书题目:航班信息查询系统 专业: 班级: 姓名: 学号: 完成人数: 起讫日期: 任课教师:职称:讲师 部分管主任: 完成时间:

说明 1.本任务书由任课教师填写后,下达到学生。 2.任务完成后,任课教师需填写小结表。 3.任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一 并报送各教学研究部审核后转教务办。 4.另附一份全班大作业总结

NANCHANG UNIVERSITY 高级语言程序设计课程设计 题目: 航班信息查询系统 学院: 专业: 班级: 完成人数: 成员: 起讫日期: 任课教师: 完成时间: 填表日期:

目录 一、需求分析.............................................................................................................................. - 1 - 1.1 项目介绍.................................................................................................................. - 1 - 1.2 功能需求.................................................................................................................. - 1 - 二、系统分析.............................................................................................................................. - 1 - 2.1 本程序需解决的关键技术问题.............................................................................. - 1 - 2.2 程序流程.................................................................................................................. - 1 - 三、程序设计与实现.................................................................................................................. - 2 - 3.1 程序设计.................................................................................................................. - 2 - 3.2 程序实现....................................................................................... 错误!未定义书签。 四、系统测试............................................................................................................................ - 11 - 五、个人小结............................................................................................................................ - 13 - 六、参考文献............................................................................................................................ - 13 -

C语言链表功能实现

#include #define MaxSize 10 #define error 0 typedef int ElemType; typedef struct{ ElemType elem[MaxSize]; int last; }SeqList; void Input(SeqList *L);//Input the list void Output(SeqList L);//Output the list void Search(SeqList L);//Search element void Insert(SeqList *L); void Delete(SeqList *L); void Sort(SeqList *L); void bubblesort(SeqList *L); void selectsort(SeqList *L); void Function(); int main(){ int i,flag=1,k; ElemType e; SeqList L; https://www.sodocs.net/doc/1014975013.html,st=0; Function(); printf("Please pick an option: "); scanf("%d",&k); while(flag){ switch(k){ case 0:{ flag=0; break; } case 1:{ Input(&L); break; } case 2:{ Output(L); break; } case 3:{ Insert(&L); break; } case 4:{

Search(L); break; } case 5:{ Delete(&L); break; } case 6:{ bubblesort(&L); break; } case 7:{ selectsort(&L); break; } default :{ printf("\nOption is useless.Please input again."); break; } } if(flag){ printf("\nPlease pick an option: "); scanf("%d",&k); } } return 0; } void Input(SeqList *L){ int i,n; printf("Please input the sum of elements:\n"); scanf("%d",&n); while(n>MaxSize){ printf("Sum is bigger than MaxSize,please input again\n"); scanf("%d",&n); } printf("Input the elements of list:\n"); for(i=0;ielem[i]); L->last++; } } void Output(SeqList L){

C语言飞机订票系统

课程设计 课程:数据结构 专业班级:xx软件工程 xx班姓名:xx 学号:xxx 姓名:xxx 学号:xxx 设计时间:xxx 指导老师:xxx

课程设计题:飞机订票系统 一、设计目的 1.掌握结构体数组的表示和存储。 2. 掌握链表的存储和操作。 3.掌握文件的操作。 二、设计内容和要求 1. 任务:通过此系统可以实现如下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否 满仓);可以输入起飞抵达城市,查询飞机航班情况; 订票:订票情况可以存在一个数据文件中,结构自己设定。可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票:可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 修改航班信息:当航班信息改变可以修改航班数据文件。 要求:根据以上功能说明,设计航班信息,订票信息的存储结

构,设计程序完成功能 设计思想: 管理操作系统,主要考虑的是信息的录入,这里利用文件的读写完成该 功能;输出,查询以及删除,利用结构数组存储航班与客户信息,依次 对订票,退票,查询及相关操作编写成子程序,然后再主程序中调用, 这样程序看起来相当简练,而且易读懂; 算法设计分析: (次系统运行环境为VC6.0) 1.txt beijing shanghai 1 1 12 0 1 1 18 0 6 100 2 shanghai wuhang 2 2 12 0 2 2 14 0 2 110 1 wuhang chibi 3 3 13 0 3 3 14 0 1 50 2 (此文件是程序执行航班信息录入时自动生成,在信息读取时需要调用) 首先是航班于客户信息的存储,结构数组的利用很好的解决该问题; 其次是文件的操作,在主函数中利用文件的读与写;下面介绍订票退票

c语言实现机票管理系统源代码

/*1、用户和管理员及航班信息请以英文字母或数字输入*/ /*2、管理员账户为:boss,密码为:123。保存在txt文件中,需要修改请于程序中修改*/ /*3、部分文件读写为二进制读写,所以打开文件时会看到乱码*/ #include #include #include #include #define N 1000 void zhujiemian();//主界面函数 void verify();//用户及管理员登录选择 void loginmanager();//管理员登录 void loginuser();//用户登录 void loginflightm();//管理员登录机票系统 void loginflightu();//用户登录机票系统 void creatfile();//创建用户信息模块 void saveuser();//用户信息保存模块程序 void input(); //输入航班信息 void print(); //输出航班信息 void save(); //保存航班信息 void read(); //读取航班信息 void paixu(); // 对所有航班按航班号排序 void search(); //查找航班信息 void dingpiao(); //订票信息 struct users //管理员/用户信息结构体,管理员可以修改航班信息 { char Name[20]; //管理员/用户姓名 char sexual[10];//用户性别 char ps[8]; // 用户密码 int age; //用户年龄 long Number; //用户身份证号码 int power; //power为1是管理员登录,为0是用户登录 }user[N],up,mg;//up为键盘输入用户信息,user[N]为文件保存的用户信息,mg为管理员结构体 int n;//所有用户个数,初始化为0

C语言课程设计――飞机订票系统源代码

#include//标准输入、输出头文件 #include//包含字符串函数处理头文件 #include//包含access函数的头文件 #define N 99//定义最多的航班数 #define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//宏定义输出格式struct air//定义结构体数组{int num;//定义航班号 char start[20];//航班起始站 char over[20];//终点站 char time[10];//飞行时间 int count;//机票数量 }s[N]; int i,m=0;//定义全局变量 char ii[10]; void add();//函数声明增加航班信息函数 void print();//显示航班信息 void search();//查找航班信息 void dingpiao();//订票业务 void tuipiao();//退票 void read();//读取文件 void save();//保存文件

void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小 void main()//主函数{int j; chushihua();//系统初始化判断是否存在原始数据文件 printf("欢迎使用飞机订票系统\n");//打印出系统主界面 do{printf("============================================================= =================== "); printf(" 1.增加航班信息\n" "\t 2.浏览航班信息\n" "\t\t 3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n" "\t\t\t 4.航班排序(按航班号)\n" "\t\t\t\t 5.订票业务\n" "\to(︶︿︶)o\t\t\t

航班信息管理系统

课程设计 课程名称C语言课程设计 题目名称航班信息管理系统 学生学院物理与光电工程学院专业班级电子科学与技术(4)班学号 学生姓名 指导教师 2015 年10 月23 日

目录 一设计目的.............................................................................................................................. - 2 - 二课程设计的内容.................................................................................................................. - 2 - 三课程设计的要求与数据...................................................................................................... - 2 - 四课程设计应完成的工作...................................................................................................... - 3 - 五总体设计.............................................................................................................................. - 3 - 六详细设计.............................................................................................................................. - 3 - 七调试分析.............................................................................................................................. - 9 - 7.1 源程序及注释............................................................................................................... - 9 - 7.2 调试与测试................................................................................................................. - 30 - 7.2.1 算法调试过程中出现的问题及解决方法:.................................................. - 30 - 7.2.2 主要程序运行结果.......................................................................................... - 32 - 八总结.................................................................................................................................... - 35 - 九参考文献............................................................................................................................ - 36 -

C语言程序设计-航班管理系统

仲恺农业工程学院 C语言程序设计报告 航班信息管理系统 课程名称C语言程序设计 姓名XXX 院(系)信息科学与技术学院 专业班级网络工程XX 学号201320XX 指导教师XXX 仲恺农业工程学院教务处制

目录 1 需求分析 (1) 2 系统总框图和功能模块说明 (1) 2.1 系统总框图 (1) 2.2 功能模块说明 (2) 3 系统设计 (3) 3.1 主要结构体 (3) 3.2主要功能函数 (3) 3.3 关键函数的流程图 (4) 4 系统调试 (5) 5 总结 (7) 6 源程序清单 (7)

1 需求分析 航班信息包括航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号、票价,八项信息。 试设计航班信息管理系统,使之能提供以下功能: ●系统以菜单方式工作 ●航班信息录入功能(航班信息用文件保存)--输入 ●航班信息浏览功能--输出 ●航班信息查询功能-算法(其中查询方式可以按学历查询、按职工号查询等) ●航班信息排序、筛选功能 2 系统总框图和功能模块说明 2.1 系统总框图 图1 系

统总框图 2.2 功能模块说明 输入航班信息模块,完成航班信息的录入。航班信息的录入前,录入系统先完成新建文件,检测文件是否存在的功能。检测完毕,采用循环的输入流程,以检测文件是否终止为循环的判定条件;输入信息时,以检测编号判断输入的信息与文件中的信息是否有冲突,防止输入的信息存在冲突;把航班信息一一输入后,判断其有没有存入文件中。 排序航班信息模块,完成航班信息中的价格排序,便于筛选信息结果的查看,排序是利用冒泡排序法,按照价格从高到低编排。 查询航班信息模块,根据输入的航班编号,查询航班编号的信息,。其过程中,首先是

c语言航班管理系统代码

#include #include #include #define N 10000 struct air { int num; char start[20]; char over[20]; char time[10]; int count; }s[N]; int i; int m=0; #define PRINT "%-dsssd\n",s.num,s.start,s.over,s.time,s.count void input(); void print(); void save(); void read(); void search(); void shanchu(); void dingpiao(); void tuipiao(); void xiugai(); void main() { int j; printf(" ★---您好,欢迎进入中国民航管理系统!---★\n"); printf ("============================================================================== ==\n"); do { printf(" -------- ☆ 1.输入航班信息☆-------- \n\n" " -------- ☆ 2.浏览航班信息☆-------- \n\n" " -------- ☆ 3.修改航班信息☆-------- \n\n" " -------- ☆ 4.查找航班信息☆-------- \n\n" " -------- ☆ 5.删除航班信息☆-------- \n\n" " -------- ☆ 6.订票信息☆-------- \n\n" " -------- ☆ 7.退票信息☆-------- \n\n" " -------- ☆ 0.退出☆-------- \n\n"); printf

C语言课程设计_职工信息管理系统_单链表实现程序源代码

//C语言课程设计职工信息管理系统—单链表实现 #include "stdio.h" #include "stdlib.h" #include "string.h" int saveflag=0; /*是否需要存盘的标志变量*/ struct employee { char name[15]; char num[10];/* 工号 */ char sex[4]; char bm[15]; char zc[20]; int gz; }; typedef struct node { struct employee data; struct node *next; }Node,*Link; //Link l (注意是:字母l不是数字1) void add(Link l); void disp(Link l); //查看职工所有信息 void del(Link l); //删除功能 Node* Locate(Link l,char findmess[],char nameornum[]); void Qur(Link l); //查询功能 void Tongji(Link l); //统计 void Sort(Link l); //排序 void Modify(Link l); //修改功能 void save(Link l); //将单链表l中的数据写入文件 void printe(Node *p); //本函数用于打印链表中某个节点的数据内容 */ //以下4个函数用于输出中文标题 void printstart(); void Wrong(); void Nofind(); void printc();

C语言程序设计-基于链表的学生成绩管理系统

华北科技学院计算机系综合性实验 实验报告 课程名称 C语言程序设计 实验学期 2011 至 2012 学年第二学期学生所在系部计算机系 年级 2011 专业班级计算机科学与技术B-111 学生姓名学号 任课教师 实验成绩 计算机系制

实验报告须知 1、学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。 2、学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、 内容、结果及分析等。 3、教师应该填写的内容包括:实验成绩、教师评价等。 4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合 性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。 5、未尽事宜,请参考该课程的实验大纲和教学大纲。

《C语言程序设计》课程综合性实验报告 实验题目基于链表的学生成绩管理系统 一、实验目的 1、掌握链表的创建、遍历显示和清除; 2、掌握链表数据的文件保存、读取; 二、设备与环境 微型计算机、VC++ 三、实验内容 1、定义结构体,创建链表 struct xsnode { int xh; char xm[15]; int gs; int yy; int wl; struct xsnode *next; }; 2、根据以上链表结点结构,实现以下功能 a、学生学号、姓名、各门成绩的录入; b、链表数据显示及清除; c、链表数据的文件保存与读取; 四、实验结果及分析 1、运行结果 主菜单

(C语言版)飞机订票系统

订票系统 1.需求分析 任务:通过此系统可以实现如下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票:可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件 要求: 根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能; 2:主要设计思路: 1)算法构造流程图: A:主菜单:

B:各分块模板的构造流程图:

3:功能函数设计: (1):订票系统主菜单函数menu_select() 本函数主要构造系统的主菜单,系统需要实现很多功能,并且各个功能需要各自的函数支持,所以通过主菜单可以轻松的进入各个函数下实现各自的功能,故主菜单显得尤为重要。其实就是通过键盘输入选择项,然后通过scanf接受,在通过swtich判断进入各个选择项。 (2):工作人员管理函数enter()&change() 系统需要各个航班的详细信息,所以需要工作人员把信息输入系统里,以供乘客查询订票。enter()函数的构造就是为了解决这个问题。而有可能航班线路更改或由于天气等原因飞机的起飞时间发生了更改,故工作人员需要及时更改信息,所以需要构造change()函数。 (3):列出航班信息的函数list() 乘客需要查询各个航班的信息,所以通过系统要能调出上面工作人员已经录入好的航班信息,所以构造本函数来实现这个功能。(4)乘客具体查询函数search() 本函数分两个分函数:search1()和search2(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。 (5)票务管理函数book()&quit() 通过book()函数可以实现乘客的订票操作,通过quit()可

081103_链表的C语言实现之单链表的实现

链表的C语言实现之单链表的实现 https://www.sodocs.net/doc/1014975013.html,/article/2779.html 一、单链表的建立 有了动态内存分配的基础,要实现链表就不难了。 所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分: 1、数据域:用来存储本身数据 2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。 例: typedef struct node { char name[20]; struct node *link; }stud; 这样就定义了一个单链表的结构,其中char name[20]是一个用来存储姓名的字符型数组,指针*link是一个用来存储其直接后继的指针。 定义好了链表的结构之后,只要在程序运行的时候爱数据域中存储适当的数据,如有后继结点,则把链域指向其直接后继,若没有,则置为NULL。 下面就来看一个建立带表头(若未说明,以下所指链表均带表头)的单链表的完整程序。 #include <stdio.h> #include <malloc.h> /*包含动态内存分配函数的头文件*/ #define N 10 /*N为人数*/ typedef struct node { char name[20]; struct node *link; }stud; stud * creat(int n) /*建立单链表的函数,形参n为人数*/ { stud *p,*h,*s; /* *h保存表头结点的指针,*p指向当前结点的前一个结点,*s指向当前结点*/ int i; /*计数器*/ if((h=(stud *)malloc(sizeof(stud)))==NULL) /*分配空间并检测*/ { printf("不能分配内存空间!"); exit(0); } h->name[0]='\0'; /*把表头结点的数据域置空*/ h->link=NULL; /*把表头结点的链域置空*/ p=h; /*p指向表头结点*/ for(i=0;i<n;i++) {

单链表完整C语言纯代码

单链表 带头结点 #include #include /* 带头结点的单链表的操作 在该链表中,数据元素是int, 我们让头结点的数据域存储链表的实际长度 */ /*链表节点的类型定义*/ struct node { int data; struct node *next; }; /* 链表的初始化函数 在该函数中要分配头结点存储空间 让头指针指向头结点, 因此要修改头指针的值, 所以传递头指针的地址进来 */ void init(struct node **h) { struct node *s; s = (struct node *)malloc(sizeof(struct node)); if(s==NULL) return; /* 头结点的数据域存储链表的长度 */ s->data=0; s->next=NULL; /*让头指针指向头结点*/ *h = s; } /* 创建链表,仍然按照逆序创建, 从后往前输入元素的值, 然后把新结点插入到表头 */ void createLink(struct node *h) {

struct node *s; int n; while(1) { scanf("%d",&n); /*根据实际情况判断链表的元素 输入结束 还有一种情况就是找不到合适的 作为结束标记的值 先让用户输入元素个数, 然后固定字数循环*/ if(n==-1) break; /* 创建新结点 */ s = (struct node *)malloc(sizeof(struct node)); s->data = n; s->next = h->next; /* 新结点放入链表的表头 让头结点的NEXT指向新结点 */ h->next = s; (h->data)++; } } /* 遍历整个链表 */ void bianliLink(struct node *h) { int k; struct node *p; /* P指向第一个结点 */ p=h->next; /* 如果定义了链表长度变量, 可以使用变量计数, 表示处理到链表的最后一个元素 如果不定义链表长度变量, 就用指针是否指向NULL, 判断是否处理到最后一个元素了

C语言 飞机订票系统

飞机订票系统

一、课程设计目的 (1)了解并掌握算法的设计方法,具备初步的独立分析和设计能力; (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 二、课程设计的内容和要求 本程序主要用于机票的管理,甩以提供了以下功能,行班信息输入输出保存、航线查询、订票,退票,和修改航班信息。 创建航班信息:包括航班号、起飞时间、降落时间、起飞抵达城市、航班票价、及票价的折扣,票数等信息.录入的信息应该保存在一个文件里。 浏览航班信息:通过浏览系统,客户可以根据自己时间、金钱等多方面的因素选择适合自己的航班。 修改航班信息:当航班信息改变可以修改航班数据文件。 查询航班信息:可通过航班号查询,可通过飞机终点站查询,也可以按航线查询。删除航班信息:可通过航班号删除,也可以按航线删除。 添加航班信息:按添加的航班数量依次添加航班信息 订票:可以订票,如果该航班已经无票,可以推荐相关航班 退票:不满意所订的票时可进行退票 三、算法的基本思想 1.涉及到的数据结构 typedef struct flightnode //定义结构体数组 { int num; //航班号 char start[20]; //起始城市 char over[20]; //终点城市 char Stime[10]; //起始时间 har Etime[10]; int Price; int Discount; //折扣 int count; //机票数 struct flightnode *next; } NODE;

单链表完整C语言纯代码

单链表完整C语言纯代码

单链表 带头结点 #include #include /* 带头结点的单链表的操作 在该链表中,数据元素是int, 我们让头结点的数据域存储链表的实际长度*/ /*链表节点的类型定义*/ struct node { int data; struct node *next; }; /* 链表的初始化函数 在该函数中要分配头结点存储空间 让头指针指向头结点, 因此要修改头指针的值, 所以传递头指针的地址进来 */

void init(struct node **h) { struct node *s; s = (struct node *)malloc(sizeof(struct node)); if(s==NULL) return; /* 头结点的数据域存储链表的长度 */ s->data=0; s->next=NULL; /*让头指针指向头结点*/ *h = s; } /* 创建链表,仍然按照逆序创建, 从后往前输入元素的值, 然后把新结点插入到表头 */ void createLink(struct node *h) { struct node *s;

int n; while(1) { scanf("%d",&n); /*根据实际情况判断链表的元素 输入结束 还有一种情况就是找不到合适的 作为结束标记的值 先让用户输入元素个数, 然后固定字数循环*/ if(n==-1) break; /* 创建新结点 */ s = (struct node *)malloc(sizeof(struct node)); s->data = n; s->next = h->next; /* 新结点放入链表的表头 让头结点的NEXT指向新结点 */

链表的C语言实现之单链表的查找运算

建立了一个单链表之后,如果要进行一些如插入、删除等操作该怎么办?所以还须掌握一些单链表的基本算法,来实现这些操作单链表的基本运算包括:查找、插入和删除下面我们就一一介绍这三种基本运算的算法,并结合我们建立单链表的例子写出相应的程序 1、查找 对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们所要查好的值,若是返回该结点的指针,否则返回null 因为在单链表的链域中包含了后继结点的存储地址,所以当我们实现的时候,只要知道该单链表的头指针,即可依次对每个结点的数据域进行检测 以下是应用查找算法的一个例子: #include <stdio.h> #include <malloc.h> #include <string.h>/*包含一些字符串处理函数的头文件*/ #define n 10 typedef struct node { char name[20]; struct node *link; }stud; stud * creat(int n) /*建立链表的函数*/ { stud *p,*h,*s; int i; if((h=(stud *)malloc(sizeof(stud)))==null) { printf(\"不能分配内存空间!\"); exit(0); } h->name[0]=\'\\0\'; h->link=null; p=h; for(i=0;i<n;i++) { if((s= (stud *) malloc(sizeof(stud)))==null) { printf(\"不能分配内存空间!\"); exit(0); } p->link=s;

c语言航班管理系统代码

#include<>??? #include<>???? #include<> #define N 10000 struct air { int num; char start[20]; char over[20]; char time[10]; int count; }s[N]; int i; int m=0; #define PRINT "%-dsssd\n",,,,, void input(); void print(); void save(); void read(); void search(); void shanchu(); void dingpiao();

void tuipiao(); void xiugai(); void main() { int j; printf(" ★---您好,欢迎进入中国民航管理系统!---★\n"); printf ("==================================================================== ============\n"); do { printf(" -------- ☆ 1.输入航班信息☆--------\n\n" " -------- ☆ 2.浏览航班信息☆--------\n\n" " -------- ☆ 3.修改航班信息☆--------\n\n" " -------- ☆ 4.查找航班信息☆--------\n\n"

" -------- ☆ 5.删除航班信息☆--------\n\n" " -------- ☆ 6.订票信息☆--------\n\n" " -------- ☆7.退票信息☆--------\n\n" " -------- ☆0.退出☆--------\n\n"); printf ("==================================================================== ============\n"); printf("请在0-7中选择以回车键结束:\n\n"); scanf("%d",&j); switch(j) { case 1: input(); break; case 2:print(); break; case 3:xiugai(); break;

链表的C语言实现

链表的C语言实现 分类:计算机学习 2006.12.29 09:06 作者:ybxycy | 评论:0 | 阅读:652 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一。我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费。 我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要。链表就是我们需要的动态数组。它是在程序的执行过程中根据需要有数据存储就向系统要求申请存储空间,决不构成对存储区的浪费。 链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表、循环链表、双向链表,下面将逐一介绍。 7.4.1 单链表 图7 - 3是单链表的结构。 单链表有一个头节点h e a d,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。无论在表中访问那一个节点,都需要从链表的头开始,顺序向后查找。链表的尾节点由于无后续节点,其指针域为空,写作为N U L L。 图7 - 3还给出这样一层含义,链表中的各节点在内存的存储地址不是连续的,其各节点的地址是在需要时向系统申请分配的,系统根据内存的当前情况,既可以连续分配地址,也可以跳跃式分配地址。

C语言课程设计职工信息管理系统单链表实现程序源代码

C语言课程设计职工信息管理系统单链表实现 程序源代码 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

有%d条记录已经保存.)\n",count); saveflag=0; } else { system("cls"); printf("保存文件失败,'0'条记录被保存!\n"); } fclose(fp); } xt","ab+"); else exit(0); } ....\n"); while(!feof(fp)) n",count); while(1) { menu(); printf("\t\t====>请选择:"); scanf("%d",&choose); if(choose==0) { if(saveflag==1) { getchar(); printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)\n"); scanf("%c",&ch); if(ch=='y'||ch=='Y') Save(list); } //if printf("\n=====>提示:你已经退出系统,再见!\n"); break; }//if switch(choose) { case 1:Add(list); break; /* 增加职工记录 */

case 2: Del(list); break;/* 删除职工记录 */ case 3: Qur(list); break;/* 查询职工记录 */ case 4: Modify(list); break;/* 修改职工记录 */ case 5: Insert(list); break;/*插入职工记录*/ case 6: Tongji(list); break;/*统计职工记录*/ case 7: Sort(list); break;/*排序职工记录*/ case 8: Save(list); break;/* 保存职工记录 */ case 9: system("cls"); Disp(list); break; /*显示职工记录*/ default: Wrong(); getchar(); break; } //switch(choose) }//while(1) } //main() /* */

相关主题