学生宿舍信息的管理(链式存储),做了一点,继续不下去了,求大腿
题目如下课题名称:
学生宿舍信息的管理(链式存储)
课题内容:
已知宿舍的信息包括:宿舍楼号,宿舍号,床位号,对应床位号的学生学号,楼长姓名等。以链式存储结构设计程序能实现以下功能:
(1)宿舍信息录入:可随时增加宿舍信息到数据文件中
(2)宿舍信息浏览:宿舍的信息输出到屏幕
(3)查询:按学号查询学生所住宿舍楼号、宿舍号等信息,按宿舍楼号查询出该楼所有空床位的信息
(4)修改:修改指定宿舍的信息
(5)删除:删除指定宿舍的信息
(6)统计:计算指定宿舍楼的宿舍床位的空床数
(7)系统以菜单方式工作
然后是我自己做的部分程序,其他人讲的杂七杂八,求一个能运行的程序,让我学习下,谢谢了!
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int ssh;
int cwh;
int xh;
} datatype;
typedef struct node{
datatype data;
struct node *next;
} LinkNode,*LinkList;
typedef struct {
int lh; //楼号
char name[60]; //楼长名
LinkList head; //指向宿舍信息链表
int len;//共有len栋楼
}List;
LinkList initList();/*置一个空表(带头结点)*/
void createList_1(LinkList head);/*创建单链表*/
void sort_xh(LinkList head);/*单链表排序*/
void reverse(LinkList head);/*单链表倒置*/
void pntList(LinkList head);/*打印单链表*/
void Error(char *s);/*自定义错误处理函数*/
int delet(LinkList head);/*删除指定宿舍的信息*/
void main{
}
/*置一个空表*/
LinkList initList()
{LinkList p;
p=(LinkList)malloc(sizeof(LinkNode));
p->next=NULL;
return p;}
/*创建单链表*/
void createList_1(LinkList head)
{ FILE *fp;
int lh;
int ssh;
int cwh;
int xh;
char name[60];
LinkList p;
if((fp=fopen("records.txt","r"))==NULL)
{Error("can not open file !");
return ;}
while(!feof(fp))
{fscanf(fp,"%d%d%d%d%s",&lh,&ssh,&cwh,&xh,name);
p=(LinkList)malloc(sizeof(LinkNode));
p->data.lh=lh;
p->data.ssh=ssh;
p->data.cwh=cwh;
p->data.xh=xh;
scanf("%s",p->data.name);
p->next=head->next;
head->next=p;}
fclose(fp);}
/*单链表排序*/
void sort_xh(LinkList head)
{
LinkList q,p,u;
p=head->next;
head->next=NULL;/*利用原表头结点建新的空表*/
while(p)
{ q=p; /*q为被插入的结点*/
p=p->next;/*用p记录后继结点*/
/*遍历新链表查找插入位置*/
u=head;
while(u->next!=NULL)/*查找插入位置*/
{ if(u->next->data.xh>q->data.xh)
break;
u=u->next;
}
/*插入在u结点的后面*/
q->next=u->next;
u->next=q; }}
/*单链表倒置*/
void reverse(LinkList head)
{ LinkList p, r;
p=head->next;
head->next=NULL;
while(p)
{ r=p;
p=p->next;
/*r指向结点头插到链表*/
r->next=head->next;
head->next=r;} }
/*输出单链表*/
void pntList(LinkList head)
{ LinkList p;
p=head->next;
while(p!=NULL)
{printf("%d %d %d %d %s\n",p->data.lh,p->data.ssh,p->data.cwh,p->data.xh,p->data.name);
p=p->next;}}
void Error(char *s)
{printf("\n %s", s);
exit(1); /*返回OS,该函数定义在stdlib.h中*/}
int delet(LinkList head)
{
LinkList p,q,v;
datatype x;
int flag=0;
q=head;
p=head->next;
while(p!=NULL)
{ if(p->data.lh==x.lh&&p->data.ssh==x.ssh)
{ /*删除p所指结点*/
q->next=p->next;
free(p);
p=q->next ;
flag=1;
}
else
{ q=p;
p=p->next;
flag=flag;}
}
return flag; /*删除成功返回1,否则返回0*/
}