|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
变了一早上都没编出来,头都大了,帮忙看看吧别嫌乱!!
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(stu)
typedef struct student
{
char name[10];/* 学生名字*/
char xb[5];/* 性别*/
int xh[10];/* 学号*/
int yy[5];/* 英语成绩*/
int cyy[5];/* C语言成绩*/
struct student *next;
}stu;
void input(char arr[])/* 定义写入函数*/
{
printf("录入系统\n");
FILE *fg;/* 定义文件指针*/
stu s;
if((fg=fopen(arr,"rb+"))==NULL)
fg=fopen(arr,"wb+");
fseek(fg,0L,2);
printf("请输入姓名:");
scanf("%s",s.name);
printf("请输入学号:");
scanf("%d",s.xh);
printf("请输入性别:");
scanf("%s",s.xb);
printf("请输入英语成绩:");
scanf("%s",s.yy);
printf("请输入C成绩:");
scanf("%s",s.cyy);
fwrite(&s,LEN,1,fg);
int shu=1;/* 做循环用*/
printf("退出输入0,否则输入1:");
scanf("%d",&shu);/* 判断是否循环*/
if(shu==0)s.next=NULL;/* 链表结尾s.next添加NULL*/
while(shu)
{
s=*s.next;/* 链接下个链表*/
printf("请输入学号:");
scanf("%d",s.xh);
printf("请输入姓名:");
scanf("%s",s.name);
printf("请输入性别:");
scanf("%s",s.xb);
printf("请输入英语成绩:");
scanf("%s",s.yy);
printf("请输入C成绩:");
scanf("%s",s.cyy);
fwrite(&s,LEN,1,fg);
printf("退出输入0,否则输入1:");
scanf("%d",&shu);
if(shu==0)s.next=NULL;
}
fclose(fg);/*关闭指针文件 */
}
void liulan(char brr[])/* 定义浏览函数*/
{
FILE *fp;
stu a;
if((fp=fopen(brr,"rb+"))==NULL)
{printf("不存在文件");
return ;
}
fseek(fp,0L,0);/*定位文件指针位置 */
fread(&a,LEN,1,fp);/*读取文件 */
while(a.next!=NULL)/*从头读取,知道a.next为NULL */
{
printf("%s,%s,%d,%d,%d\n",a.name,a.xb,a.xh,a.yy,a.cyy);
a=*a.next;/*链接下个结构体 */
}
a.next=NULL;
fclose(fp);
}
void chaxun(char crr[])/*定义查询函数和浏览函数基本上一样的 */
{
int i;
printf("请输入学号:%d",i);
scanf("%d",&i);
FILE *ap;
stu k;
if((ap=fopen(crr,"rb+"))==NULL)
{printf("不存在文件");
return ;
}
printf("请输入学号\n");
fseek(ap,0L,0);
fread(&k,LEN,1,ap);
while(k.next!=NULL||k.xh[0]!=i)/* k.next不为NULL和k.xh不是想要的学号就继续循环*/
{
k=*k.next;
}
if(k.next==NULL)
printf("学号输入错误或不存在此学生");
printf("%s,%s,%d,%d,%d",k.name,k.xb,k.xh,k.yy,k.cyy);
fclose(ap);
}
void main()
{
int flag=1,n;
while(flag)
{
system("cls");
printf("1----------学生录入\n");
printf("2----------学生浏览\n");
printf("3----------学生查询\n");
printf("4----------学生删除\n");
printf("5----------成绩统计\n");
printf("0----------退出系统\n");
printf("请选择(0----5)\n");
scanf("%d",&n);
switch(n)
{
case 0:flag=0;break;
case 1:input("f:\\stu.dat");break;
case 2:liulan("f:\\stu.dat");break;
case 3:chaxun("f:\\stu.dat");break;
}
}
} |
|