燕子低飞要下雨的作文:【急!】一道C语言题 帮我补充一下

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 01:04:28
是要写一个
能把我们同学的档案全部装在里面
还要能添加,删除,查找
#include"stdio.h"
#include"stdlib.h"
#define txl struct st
sxt
{
int no;
char name[10];
char sex[3];
struct
{int year;
int month;
int day;
} sr;
char adress[30];
. .
. .
. .
};
main()
{txl *head=Null;
int x;
do
{clrscs()
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("0......退出\n");
printf("请选择(0-7):");
scanf("%d",&x);
switch(x)
{case 1:...... break;
2:...... break;
case case 3:...... break;
case 4:...... break;
case 5:...... break;
case 6:...... break;
case 7:...... break;
case 0:...... break;
default:......
}
}while(x!=0);
}
帮忙啊!大哥!
急用啊

#include"stdio.h"
#include"stdlib.h"

#define txl struct st
txl
{
int no;
char name[10];
char sex[3];
struct
{int year;
int month;
int day;
} sr;
char adress[30];

};

int n=0; /*全局变量n是纪录总数*/

void addone(txl *here)
{ printf("input stu\n");
scanf("%d",&here->no);
scanf("%s",&here->name); /*more...*/
}

txl *add(txl *head)
{
if(n==0) {head=(txl *)malloc(sizeof(txl));}

else {head=(txl *)realloc(head,(n+1)*sizeof(txl)); }

addone(head+n);
n++;
return head;
}

txl *del(txl *head)
{int record;
printf("which record\n");
scanf("%d",&record);

if(n>0&&record<n)
{int i=record;
n--;
if(n==0) head=NULL;
else
for(;i<n;i++)
head[i]=head[i+1]; /*删除处后面的纪录前移*/
}
return head;
}

/*从文件中读取数组*/txl *readen(txl *head){
int i;
FILE *fp;
n=0;

if((fp=fopen("recore.txt","r"))==NULL)
{printf("cannot open the file recore.txt\n"); return head;
}
head=(txl *)malloc(sizeof(txl));

for(n=0;fread(head+n,sizeof(txl),1,fp)!=0;n++,head=(txl *)realloc(head,(n+1)*sizeof(txl)));
fclose(fp);
printf("read %d students\n",n);
if(n==0) return NULL;
else return head;
}

/*保存文件*/void save(txl *head){FILE *fp;int i;

if((fp=fopen("recore.txt","w"))==NULL)/*如果保存错误就退出或重试*/
{printf("cannot open the file score.txt\n"); return;
}
for(i=0;i<n;i++)
if(fwrite(head+i,sizeof(txl),1,fp)!=1)
printf("cant not write\n");
fclose(fp);
}

void pall(txl *head)
{int i;
for(i=0;i<n;i++)
{printf("%d\n",(head+i)->no);
printf("%s\n",(head+i)->name); /*more...*/
}
}

void editone(txl *head)
{int record;
printf("which record\n");
scanf("%d",&record);
if(n>0&&record<n)
{scanf("%d",&(head+record)->no);
scanf("%s",&(head+record)->name); /*more...*/
}

}
main()
{txl *head=NULL;
int x;
do
{
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("0 退出\n");
printf("请选择(0-7):");
scanf("%d",&x);
switch(x)
{case 1: head=add(head); break;
case 2: head=del(head); break;
case 3: pall(head);break;
case 4: editone(head);break;
case 5: /*查询?没说清楚怎么查,用什么查,查什么。自己做啦*/break;
case 6: save(head);break;
case 7: head=readen(head);break;
case 0: exit(1);break;
default: break;
}
}while(x!=0);

}
/*基本填满了,除了一些小菜的地方。参照我的程序,别说你自己还搞不掂啊^_^*/
/*以后再有急题就不要想着上网啦,象这种分少题烦的题,愿做的人n少*/