注册 登录
编程论坛 C++ Builder

学生宿舍信息的管理(链式存储),做了一点,继续不下去了,求大腿

wu1995313 发布于 2015-06-18 18:00, 5129 次点击
题目如下
课题名称:
学生宿舍信息的管理(链式存储)
课题内容:
已知宿舍的信息包括:宿舍楼号,宿舍号,床位号,对应床位号的学生学号,楼长姓名等。以链式存储结构设计程序能实现以下功能:
(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*/
}

1 回复
#2
dnc232016-02-17 10:59
回复 楼主 wu1995313
只要你认真验证代码写错那里,就会成功找出解决问题
1