typedefstructStudent
{
intnum;/*学号*/
charname[15];/*姓名*/
charsex;/*性别*/
charzhuanye[20];/*专业*/
intlounum;/*楼号*/
intsushenum;/*宿舍号*/
intchuangnum;/*床号*/
structStudent*next;
}Stu;
voidWrite_to_File(Stu*L)/*将信息写入文件*/
{
FILE*fp;
Stu*p;
fp=fopen("sushe。
txt",”w");
if(fp==NULL)
{
printf(”打开失败!
");
getchar();
getchar();
exit(0);
}
p=L—>next;
while(p)
{
fprintf(fp,”%d%s%c%s%d%d%d\n",p—〉num,p->name,p—〉sex,p-〉zhuanye,p—〉lounum,p—>sushenum,p—>chuangnum);
p=p->next;
}
fclose(fp);
}
voidInitStu(Stu**h)/*创建头结点*/
{
(*h)=(Stu*)malloc(sizeof(Stu));
if(h==NULL)
{
printf(”创建失败!
!
");
getchar();
getchar();
exit(0);
}
(*h)->next=NULL;
}
voidappend()/*录入学生信息*/
{
Stu*head;
Stu*p,*q;
charch;
InitStu(&head);
q=head;
while
(1)
{
system("clear”);
printf("请录入学生信息\n”);
p=(Stu*)malloc(sizeof(Stu));
printf(”\n学号:
");
scanf(”%d”,&p->num);
printf(”\n姓名:
");
scanf("%s”,p-〉name);
printf("\n性别:
”);
scanf("%c",&p->sex);
printf(”\n专业:
”);
scanf("%s",p—>zhuanye);
printf("\n楼号:
”);
scanf(”%d",&p—〉lounum);
printf(”\n宿舍号:
”);
scanf(”%d”,&p—>sushenum);
printf(”\n床号:
");
scanf(”%d",&p—>chuangnum);
p-〉next=q->next;
q—〉next=p;
q=p;
printf("按任意键继续录入,按0结束录入");
getchar();
ch=getchar();
if(ch==’0')
break;
}
Write_to_File(head);
}
voidRead_from_File(Stu*h)/*读出文件信息*/
{
FILE*fp;
Stu*p,*q;
inti;
fp=fopen(”sushe。
txt",”r”);
if(fp==NULL)
{
printf("打开失败”);
exit(0);
}
q=h;
while(!
feof(fp))
{
p=(Stu*)malloc(sizeof(Stu));
i=fscanf(fp,”%d%s%c%s%d%d%d\n",&p—>num,p—〉name,&p->sex,
p->zhuanye,&p—〉lounum,&p-〉sushenum,&p-〉chuangnum);
if(i==EOF)
break;
q->next=p;
q=p;
}
q->next=NULL;
fclose(fp);
}
intdisplay()/*显示文件信息*/
{
Stu*head=NULL;
Stu*p;
InitStu(&head);
Read_from_File(head);
//printf("ok!
\n”);
p=head->next;
system("clear");
if(!
p)
{
printf(”无内容!
”);
printf("\n按任意键键返回\n”);
getchar();
getchar();
return0;
}
printf(”学号姓名性别专业楼号宿舍号床号\n\n”);
while(p)
{
printf("%—8d%-10s%-6c%-14s%-8d%-8d%-5d\n",p—〉num,p—>name,p-〉sex,p—>zhuanye,
p->lounum,p-〉sushenum,p—>chuangnum);
p=p—>next;
}
printf("\n按任意键返回\n");
getchar();
getchar();
return1;
}
voiddel()/*删除学生信息*/
{
Stu*head;
Stu*p,*q;
charch,h;
intN;
intlounum,sushenum,chuangnum;
InitStu(&head);
Read_from_File(head);
q=head;
p=head->next;
do
{
system(”clear”);
printf(”\n1。
根据学生学号删除\n");
printf("\n2。
根据宿舍信息删除\n");
printf("\n请选择删除方式:
");
scanf(”%c”,&ch);
while
(1)
{
if(ch=='1')
{
printf(”\n请输入学生学号:
”);
scanf(”%d",&N);
while(p)
{
if(p—>num==N)
{
q—>next=p-〉next;
printf("删除成功!
");
break;
}
q=p;
p=p->next;
}
if(p==NULL)
{
printf("\n未找到此学生”);
break;
}else
{
free(p);
}
}
elseif(ch=='2’)
{
printf("\n请输入宿舍信息(楼号宿舍床号):
");
scanf("%d%d%d",&lounum,&sushenum,&chuangnum);
while(p!
=NULL)
{
if(p->lounum==lounum&&p—〉sushenum==sushenum&&p->chuangnum)
{
q->next=p—>next;
printf(”删除成功!
”);
break;
}
q=p;
p=p—>next;
}
if(p==NULL)
{
printf(”未找到此学生");
break;
}else
{
free(p);
}
}
break;
}
printf(”\n\n是否继续:
Y/N?
”);
scanf("%c”,&h);
}while(h==’Y’||h==’y');
Write_to_File(head);
}
voidinsert()/*用头插法插入学生信息*/
{
Stu*p,*head;
charch;
InitStu(&head);
Read_from_File(head);
system("clear");
do
{
p=(Stu*)malloc(sizeof(Stu));
p—>next=NULL;
printf("\t\t请输入插入的学生信息:
\n");
printf(”\t学号:
");
scanf(”%d",&p—>num);
printf("\n\t姓名:
");
scanf("%s”,p-〉name);
printf("\n\t性别:
”);
scanf("%c”,&p—〉sex);
printf("\n\t专业:
”);
scanf("%s”,p—>zhuanye);
printf("\n\t楼号:
”);
scanf(”%d”,&p->lounum);
printf(”\n\t宿舍号:
”);
scanf("%d",&p-〉sushenum);
printf("\n\t床号:
”);
scanf(”%d”,&p—〉chuangnum);
p—>next=head-〉next;
head—>next=p;
printf("\n\n是否继续插入?
Y/N”);
scanf("%c",&ch);
}while(ch==’y'||ch==’Y’);
Write_to_File(head);
}
voidmodify()/*修改学生信息(按学号修改)*/
{
Stu*head;
Stu*p;
charch;
intN;
InitStu(&head);
Read_from_File(head);
system(”clear");
printf("\n\n请输入修改的学生学号:
”);
scanf(”%d",&N);
p=head->next;
do
{
while(p!
=NULL)
{
if(p—>num==N)
{
system("clear");
printf(”\n请输入新的学生信息:
\n”);
printf(”\n学号:
");
scanf("%d”,&p-〉num);
printf(”\n姓名:
");
scanf(”%s",p-〉name);
printf("\n性别:
");
scanf(”%c”,&p—〉sex);
printf(”\n专业:
");
scanf(”%s”,p->zhuanye);
printf(”\n楼号:
”);
scanf("%d”,&p-〉lounum);
printf("\n宿舍号:
");
scanf("%d",&p—〉sushenum);
printf(”\n床号:
”);
scanf("%d",&p->chuangnum);
break;
}
p=p-〉next;
}
if(p==NULL)
printf("\n未找到此学生”);
else
{
printf(”修改成功\n”);
}
printf("\n\n继续修改?
Y/N");
scanf("%c”,&ch);
}while(ch==’y’||ch==’Y');
Write_to_File(head);
}
voidxuehao_search(Stu*head)/*按照学生学号查找*/
{
intnum;
Stu*p;
charch;
p=head->next;
do
{
system("clear”);
printf(”\n请输入要查找的学生学号:
");
scanf(”%d”,&num);
while(p!
=NULL)
{
if(p—〉num==num)
{
printf(”学号姓名性别专业楼号宿舍号床号\n\n");
printf("%—8d%—8s%-4c%—8s%—8d%—8d%—5d\n",p—〉num,p—>name,p-〉sex,p—>zhuanye,
p-〉lounum,p—>sushenum,p—〉chuangnum);
break;
}
p=p-〉next;
}
if(p==NULL)
printf(”\n未找到此学生");
printf("\n\n继续查找?
Y/N");
scanf("%s”,&ch);
}while(ch==’Y'||ch==’y’);
}
voidsushe_search(Stu*head)/*按照宿舍信息查找*/
{
intlounum,sushenum,chuangnum;
Stu*p;
charch;
p=head—〉next;
do
{
system(”clear");
printf(”\n请输入要查找的学生宿舍信息(楼号宿舍床号):
”);
printf(”\n楼号:
");
scanf("%d”,&lounum);
printf("\n宿舍号:
”);
scanf(”%d",&sushenum);
printf(”\n床号:
”);
scanf(”%d",&chuangnum);
while(p!
=NULL)
{
if(p->lounum==lounum&&p->sushenum==sushenum
&&p-〉chuangnum==chuangnum)
{
printf("学号姓名性别专业楼号宿舍号床号\n\n”);
printf("%-8d%—8s%—4c%—8s%—8d%—8d%—5d\n",p—>num,p-〉name,p->sex,
p-〉zhuanye,
p->lounum,p-〉sushenum,p-〉chuangnum);
break;
}
p=p—>next;
}
if(p==NULL)
printf("\n未找到此学生");
printf("\n\n是否继续?
Y/N");
scanf(”%s”,&ch);
}while(ch=='y'||ch==’Y’);
}
voidSearch()/*查找学生信息*/
{
intchoose;
Stu*head;
InitStu(&head);
Read_from_File(head);
system("clear");
printf("\n1。
根据宿舍信息查找。
”);
printf(”\n2。
根据学生学号查找.");
printf(”\n3。
退出.\n\n");
printf(”\n请选择查找方式:
”);
scanf("%d",&choose);
switch(choose)
{
case1:
sushe_search(head);
break;
case2:
xuehao_search(head);
break;
case3:
break;
}
}
voidsort()/*将学生信息按学号排序*/
{
Stu*head;
Stu*i,*j,*k;
Stu*m,*n;
Stu*temp;
intl=0;
InitStu(&head);
Read_from_File(head);//冒泡排序法
for(m=head,i=head—>next;i;m=i,i=i->next)
{
k=i;
for(n=i,j=i—>next;j;n=j,j=j->next)
{
if(j—>num〈k->num)
{
k=j;
break;
}
}
if(i!
=k)
{
m—〉next=j;
n—>next=i;
temp=i-〉next;
i-〉next=j->next;
j-〉next=temp;
i=head;
}
}
system("clear");
printf("\n\n输入学生信息:
\n\n");
i=head—>next;
printf("学号姓名性别专业楼号宿舍号床号\n\n");
while(i)
{
printf("%-8d%—8s%—4c%-8s%—8d%-8d%-5d\n”,i—>num,i—〉name,i-〉sex,
i->zhuanye,
i—〉lounum,i—〉sushenum,i—>chuangnum);
i=i->next;
}
printf(”\n按任意键返回!
");
getchar();
getchar();
}
voidtongji()/*统计学生信息*/
{
Stu*head,*p;
intCount1,Count2;
InitStu(&head);
Read_from_File(head);
system("clear");
p=head->next;
Count1=0;
Count2=0;
while(p!
=NULL)
{
if(p—〉sex==’w’||p—〉sex==’W')
{
Count1++;
}
else
{
Count2++;
}
p=p—>next;
}
printf("\t女生总数:
%d\n”,Count1);
printf("\t男生总数:
%d\n”,Count2);
printf("\t学生总数:
%d\n",Count1+Count2);
printf("\t按任意键返回!
”);
getchar();
getchar();
}
voidmain()
{
intchoice;
charch;
while
(1)
{
system(”clear");
printf("\n学生宿舍管理系统\n");
printf("=========================================\n");
printf("1.录入学生信息\n\n");
printf(”2.删除学生信息\n\n”);
printf(”3.插入学生信息\n\n”);
printf(”4.修改学生信息\n\n");
printf(”5。
显示学生信息\n\n");
printf(”6。
查找学生信息\n\n”);
printf(”7。
排序学生信息\n\n”);
printf("8。
统计学生信息\n\n”);
printf("0。
退出系统\n”);
printf("==========================================\n”);
printf("请选择0—8:
\n”);
printf(”\n请选择要进行的操作:
”);