| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1685 人关注过本帖
标题:求能够从文件录入信息的学生成绩管理程序
只看楼主 加入收藏
蒲公英的海
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-6-29
收藏
 问题点数:0 回复次数:0 
求能够从文件录入信息的学生成绩管理程序
1  录入学生信息,录入学生成绩信息;
2  从文件载入学生成绩信息,将学生成绩信息保存至外部文件
2  修改修改信息;
3  查询及学生信息;
4  浏览学生信息(包括按关键字排序学生信息);
5  删除学生信息;
6  计算统计学生成绩

使用C语言的文件操作功能,将学生成绩信息存储在磁盘文件上,如scores.txt文本文件中,每次操作从scores.txt文件读取数据,操作完成,将数据写回scores.txt。
/*
学生成绩管理程序
编制一个统计学生考试分数的管理程序。
设学生成绩已以一个学生一个记录的形式存储在文件中,
每位学生记录包含的信息有:姓名,学号和各门功课的成绩。
程序具有以下几项功能:求出各门课程的总分,平均分,按姓名,
按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。
*/
下面也是我找的,希望大神帮忙改成符合要求的
#include <stdio.h>
#define    SWN        3    /* 课程数 */
#define NAMELEN        20    /* 姓名最大字符数 */
#define CODELEN        10    /* 学号最大字符数 */
#define FNAMELEN    80    /* 文件名最大字符数 */
#define BUFLEN        80    /* 缓冲区最大字符数 */
/* 课程名称表 */
char schoolwork[SWN][NAMELEN+1] = {"Chinese","Mathematic","English"};
struct record
{
    char    name[NAMELEN+1];    /* 姓名 */
    char     code[CODELEN+1];    /* 学号 */
    int     marks[SWN];        /* 各课程成绩 */
    int total;            /* 总分 */
}stu;

struct node
{
    char    name[NAMELEN+1];    /* 姓名 */
    char     code[CODELEN+1];    /* 学号 */
    int     marks[SWN];        /* 各课程成绩 */
    int     total;            /* 总分 */
    struct    node *next;        /* 后续表元指针 */
}*head;    /* 链表首指针 */

int total[SWN];        /* 各课程总分 */
FILE *stfpt;        /* 文件指针 */
char stuf[FNAMELEN];    /* 文件名 */

/* 从指定文件读入一个记录 */
int readrecord(FILE *fpt,struct record *rpt)
{
    char buf[BUFLEN];
    int i;
    if(fscanf(fpt,"%s",buf)!=1)
        return 0;    /* 文件结束 */
    strncpy(rpt->name,buf,NAMELEN);
    fscanf(fpt,"%s",buf);
    strncpy(rpt->code,buf,CODELEN);
    for(i=0;i<SWN;i++)
        fscanf(fpt,"%d",&rpt->marks[i]);
    for(rpt->total=0,i=0;i<SWN;i++)
        rpt->total+=rpt->marks[i];
    return 1;
}
/* 对指定文件写入一个记录 */
writerecord(FILE *fpt,struct record *rpt)
{
    int i;
    fprintf(fpt,"%s\n",rpt->name);
    fprintf(fpt,"%s\n",rpt->code);
    for(i=0;i<SWN;i++)
        fprintf(fpt,"%d\n",rpt->marks[i]);
    return ;
}

/* 显示学生记录 */
displaystu(struct record *rpt)
{
    int i;
    printf("\nName   : %s\n",rpt->name);
    printf("Code   : %s\n",rpt->code);
    printf("Marks  :\n");
    for(i=0;i<SWN;i++)
        printf("       %-15s : %4d\n",schoolwork[i],rpt->marks[i]);
    printf("Total  : %4d\n",rpt->total);
}

/* 计算各单科总分 */
int totalmark(char *fname)
{
    FILE *fp;
    struct record s;
    int count,i;
    if((fp=fopen(fname,"r"))==NULL)
    {
        printf("Can't open file %s.\n",fname);
        return 0;
    }
    for(i=0;i<SWN;i++)
        total[i]=0;
    count=0;
    while(readrecord(fp,&s)!=0)
    {
        for(i=0;i<SWN;i++)
            total[i]+=s.marks[i];
        count++;
    }
    fclose(fp);
    return count;    /* 返回记录数 */
}

/* 列表显示学生信息 */
void liststu(char *fname)
{
    FILE *fp;
    struct record s;
    if((fp=fopen(fname,"r"))==NULL)
    {
        printf("Can't open file %s.\n",fname);
        return ;
    }
    while(readrecord(fp,&s)!=0)
    {
        displaystu(&s);
        printf("\n      Press ENTER to continue...\n");
        while(getchar()!='\n');
    }
    fclose(fp);
    return;
}
搜索更多相关主题的帖子: 管理程序 文本文件 关键字 C语言 信息 
2016-06-29 19:29
快速回复:求能够从文件录入信息的学生成绩管理程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018840 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved