首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

学生管理系统,安插一名学生的信息

2012-10-21 
学生管理系统,插入一名学生的信息。水平有限,求解。C/C++ code#include stdafx.h#include stdafx.h#incl

学生管理系统,插入一名学生的信息。
水平有限,求解。


C/C++ code
#include "stdafx.h"#include "stdafx.h"#include "stdafx.h"#include <stdio.h>#include<string.h>#include<stdlib.h>#define N 3struct student_data{    int num;    char name[10];    int age;    int grade;}stud[N];void MainScree();FILE *fp;void save(){    FILE *fp;    int i;    if((fp=fopen("stu.txt","wb"))==NULL)    {        printf("cannot open file\n");        return;    }    for(i=0;i<N;i++)        if(fwrite(&stud[i],sizeof(struct student_data),1,fp)!=1)            printf("file weite error\n");        fclose(fp);}void search(){    printf("**********************************\n");    printf("     1.1--------按学号查询\n");    printf("     1.2--------按姓名查询\n");    printf("     1.3--------按成绩查询\n");    printf("**********************************\n");    //FILE *fp;    int k;    int j,t,i;    char m[20];    printf("请选择查询方法:\n");    scanf("%d",&k);    if(k==1)    {        printf("您选择的是按学号查询,输入学号:\n");        scanf("%d",&j);        for(i=0;i<N;i++)        {            //fread(&stud[i],sizeof(struct student_data),1,fp);            if(stud[i].num==j)            {            printf("%d%s%d%d",stud[i].num,stud[i].name,stud[i].age,stud[i].grade);            printf("\n");            }        }    }    else if(k==2)    {        printf("您选择的是按姓名查询,输入姓名:\n");        scanf("%s",m);        for(i=0;i<N;i++)        {            //fread(&stud[i],sizeof(struct student_data),1,fp);            if(strcmp(stud[i].name,m)==0)            {            printf("%d%s%d%d",stud[i].num,stud[i].name,stud[i].age,stud[i].grade);            printf("\n");            }        }    }    else if(k==3)    {        printf("您选择的是按成绩查询,输入成绩:\n");        scanf("%d",&t);        for(i=0;i<N;i++)        {            //fread(&stud[i],sizeof(struct student_data),1,fp);            if(stud[i].grade<t)            {            printf("%d%s%d%d",stud[i].num,stud[i].name,stud[i].age,stud[i].grade);            printf("\n");            }        }    }    else {        printf("请输入有效的选择!\n");    }    //fclose(fp);    MainScree();}void paixu(){    struct student_data temp;    int i,j;    for(j=0;j<N-1;j++)    {        for(i=0;i<N-1-j;i++)        {           if(stud[i].grade<stud[i+1].grade)           {               temp=stud[i];               stud[i]=stud[i+1];               stud[i+1]=temp;           }        }    }    for(i=0;i<N;i++)    {      printf("%d%s%d%d\n",stud[i].num,stud[i].name,stud[i].age,stud[i].grade);    }    MainScree();}void charu(){    int i,k,j;    struct student_data temp;    FILE* fp;    printf("请输入k的值:\n");    scanf("%d",&k);    printf("请输入k个学生的数据:\n");      for(i=N;i<N+k;i++)        {             scanf("%d%s%d%d",&stud[i].num,stud[i].name,&stud[i].age,&stud[i].grade);        }    if((fp=fopen("stu.txt","w"))==NULL)    {        printf("cannot open file\n");        return;    }    for(i=0;i<N+k;i++)    {             if(fwrite(&stud[i],sizeof(struct student_data),1,fp)!=1);            printf("file write error!\n");    }    for(j=0;j<N+k-1;j++)    {        for(i=0;i<N+k-1-j;i++)        {           if(stud[i].num>stud[i+1].num)           {               temp=stud[i];               stud[i]=stud[i+1];               stud[i+1]=temp;           }        }    }    for(i=0;i<N+k;i++)    {      fread(&stud[i],sizeof(struct student_data),1,fp);      printf("%d%s%d%d\n",stud[i].num,stud[i].name,stud[i].age,stud[i].grade);    }    fclose(fp);}void tuichu(){}void shanchu(){}void MainScree(){    printf("**************************************\n");    printf("          1----------查询\n");    printf("          2----------排序\n");    printf("          3----------插入\n");    printf("          4----------删除\n");    printf("          5----------退出\n");    printf("**************************************\n");    int i;    printf("请选择:\n");    scanf("%d",&i);    switch(i)    {        case 1:search();break;        case 2:paixu();break;        case 3:charu();break;        case 4:shanchu();break;        case 5:tuichu();break;        default:{            printf("请输入有效选择!\n");                MainScree();                }    }}int main(){    int i;    printf("Please enter data of student:\n");    for(i=0;i<N;i++)        scanf("%d%s%d%d",&stud[i].num,stud[i].name,&stud[i].age,&stud[i].grade);    save();   FILE *fp;   if((fp=fopen("stu.txt","rb"))==NULL)    {        printf("cannot open file\n");    }    for(i=0;i<N;i++)    {        fread(&stud[i],sizeof(struct student_data),1,fp);        printf("%d%s%d%d",stud[i].num,stud[i].name,stud[i].age,stud[i].grade);        printf("\n");    }    //fclose(fp);    MainScree();    return 0;} 



怎么插入后,读取不到文件中呢???


[解决办法]
C/C++ code
//=============================================================// 语法格式:    file_write(TYPE * head)// 实现功能:    将所有链表信息存入文件// 参数:        *head:保存的链表首址// 返回值:        无//=============================================================void file_write(TYPE * head){    TYPE *pf,*pb;    STATE *pbstat;    rewind(fp);    //先保存学生信息头到文件开头    pbstat=(STATE *)malloc(sizeof(STATE));    if (head == NULL)        pbstat->total = 0;    else        pbstat->total = gl_total;    fwrite(pbstat,sizeof(STATE),1,fp);          free(pbstat);    //开始保存学生信息    while(head!=NULL)    {        head->total = gl_total;        fwrite(head,sizeof(TYPE),1,fp);              printf("%d\t\t%d\t%d\n",head->num,head->age,head->total);            head=head->next;    }    }//=============================================================// 语法格式:    file_write(TYPE * head)// 实现功能:    从文件读出所有链表信息,跟据信息内容创建一个链表// 参数:        无// 返回值:        返回创建好的链表首地址//=============================================================TYPE * file_read(){    TYPE *head,*pf,*pb;    STATE *pbstat;    int i,cont;    rewind(fp);    //首先读取学生信息头,获取学生总信息情况    pbstat=(STATE *)malloc(sizeof(STATE));    fread(pbstat,sizeof(STATE),1,fp);        cont = pbstat->total; //得到总的学生信息个数    gl_total = pbstat->total;    free(pbstat);    //如果文件中没有学生信息,直接退出    if (0 == gl_total)    {        printf("文件内容为空!\n");        return NULL;    }    printf("文件内容:\n");    for(i=0;i<cont;i++)    {        pb=(TYPE *)malloc(sizeof(TYPE));        fread(pb,sizeof(TYPE),1,fp);        printf("%d\t\t%d\t%d\n",pb->num,pb->age,pb->total);        if (i == 0)        {            pf = head = pb;        }        else        {            pf->next=pb;            pf=pb;        }    }    pb->next=NULL;    return(head);} 

热点排行