用C语言编一个成绩记录簿

作者&投稿:子车唐 (若有异议请与网页底部的电邮联系)
C语言编一个成绩记录簿~

我花了一天时间写的,自己也学了下文件,感觉还不错,界面什么都比较友好了,提示也很多。如果网页显示代码不是很好的话发个邮箱给我,我把txt文件发给你,里面已经加入了写入文件功能和读取文件功能,开入主界面就可以看见多了两个功能,全部功能都是写在函数里的,你自己要改应该也很方便的,我自己检查过了,可用,代码如下:

#include
#include
#include
#define MAX 1000

typedef struct Lesson //定义课程结构体
{
int Lesson_Num;
char Lesson_Name[50];
int Lesson_Mark;
int Lesson_Credit;
}Lesson;

typedef struct Student //定义学生的结构体
{
char Name[50];
int Num;
int Lesson_Count;
Lesson L[20];
}Student;

Student S[MAX];
static int Student_Count = 0; //记录学生数的变量

void PrintInterface(); //打印界面
int AddStudent(); //添加,带返回值,提示操作成功
int DelStudent(); //删除,带返回值,提示操作成功
void CheckStudent(); //查学生成绩
void CheckClass(); //查班成绩表
void WriteFile(); //写入文本文件
void ReadFile(); //读取文本文件

void main()
{
int Choice;
while (1)
{
PrintInterface();
scanf("%d%*c", &Choice); //"%*c"是吸收回车的,因为后面会输入字母类型
if (Choice >= 0 && Choice <= 6) //选择操作合法
{
switch (Choice)
{
case 0: exit(1);
case 1:
{
system("cls");
if (AddStudent()) printf("
添加成功...回车继续
");
else printf("
添加失败...回车继续
");
getchar();
getchar();
system("cls");
break;
}
case 2:
{
system("cls");
if (DelStudent()) printf("
删除成功...回车继续
");
else printf("
删除失败...回车继续
");
getchar();
getchar();
system("cls");
break;
}
case 3:
{
system("cls");
CheckStudent();
system("cls");
break;
}
case 4:
{
system("cls");
CheckClass();
system("cls");
break;
}
case 5: WriteFile();system("cls");break;
case 6: ReadFile();system("cls");break;
default:;
}
}
else
{
printf("无此功能..重新选择..回车确定
"); //选择操作非法
getchar();
system("cls"); //清屏函数
}
}
}

void PrintInterface()
{
printf(" --------------------------
");
printf("| 1、添加 |
");
printf("| |
");
printf("| 2、删除 |
");
printf("| |
");
printf("| 3、查学生成绩 |
");
printf("| |
");
printf("| 4、查班成绩表 |
");
printf("| |
");
printf("| 5、写入文本文件 |
");
printf("| |
");
printf("| 6、读取文本文件 |
");
printf("| |
");
printf("| 0、退出 |
");
printf(" --------------------------
");
printf("选择操作:");
}

int AddStudent()
{
int S_count, i, j;
printf("
添加中......
");
printf("
添加学生人数(如1、2 ……999):");
scanf("%d", &S_count);
if (Student_Count + S_count >= MAX) return 0; //超过了数组上限
for (i = Student_Count; i < Student_Count + S_count; i++)
{
printf("
第%d个学生:
", i - Student_Count + 1);
printf("
学生学号:"); scanf("%d%*c", &S[i].Num);
printf("
学生姓名:"); gets(S[i].Name);
printf("
该学生所修课程数:"); scanf("%d", &S[i].Lesson_Count);
for (j = 0; j < S[i].Lesson_Count; j++)
{
printf("
第%d门课:
", j + 1);
printf("
课程编号:"); scanf("%d%*c", &S[i].L[j].Lesson_Num);
printf("
课程名称:"); gets(S[i].L[j].Lesson_Name);
printf("
课程成绩:"); scanf("%d", &S[i].L[j].Lesson_Mark);
printf("
课程学分:"); scanf("%d", &S[i].L[j].Lesson_Credit);
if (S[i].L[j].Lesson_Mark < 60) S[i].L[j].Lesson_Credit = 0; //不及格的课程学分为0
}
}
Student_Count += S_count;
return 1;
}

int DelStudent()
{
char *D_Name;
int D_Num;
int i, j;
printf("
填写待删除学生的信息:
");
printf("
学生姓名:"); gets(D_Name);
printf("
学生学号:"); scanf("%d", &D_Num);
for (i = 0; i < Student_Count; i++)
{
if (!strcmp(S[i].Name, D_Name) && S[i].Num == D_Num)
{
printf("
找到该学生,删除中......
");
for (j = i + 1; j < Student_Count; j++)
{
S[j - 1] = S[j];
}
break;
}
}
if (i == Student_Count)
{
printf("
未找到该学生...请核对所填信息

");
return 0;
}
else
{
Student_Count--;
return 1;
}
}

void CheckStudent()
{
int C_Choice;
char C_Name[50];
int C_Num;
int i, j;
printf("
输入所查学生信息(1.姓名 \\ 2.学号)选择:");
scanf("%d%*c", &C_Choice);
printf("
查找中......
");
if (C_Choice == 1 || C_Choice == 2) //选择合法
{
if (C_Choice == 1)
{
printf("
姓名:"); gets(C_Name);
for (i = 0; i < Student_Count; i++) //全部穷举,防止同名同姓
{
if (!strcmp(S[i].Name, C_Name))
{
printf("
学号:%d姓名:%s
", S[i].Num, S[i].Name);
printf("
课程编号课程名称课程成绩课程学分
");
printf("-----------------------------------------------------
");
for (j = 0; j < S[i].Lesson_Count; j++)
{
printf("%d%s%d%d
", S[i].L[j].Lesson_Num,
S[i].L[j].Lesson_Name, S[i].L[j].Lesson_Mark,
S[i].L[j].Lesson_Credit);
printf("-----------------------------------------------------
");
}
printf("

");
}
}
}
else
{
printf("
学号:"); scanf("%d%*c", &C_Num);
for (i = 0; i < Student_Count; i++) //不用全部穷举,学号唯一
{
if (S[i].Num == C_Num)
{
printf("
学号:%d姓名:%s
", S[i].Num, S[i].Name);
printf("
课程编号课程名称课程成绩课程学分
");
printf("-----------------------------------------------------
");
for (j = 0; j < S[i].Lesson_Count; j++)
{
printf("%d%s%d%d
", S[i].L[j].Lesson_Num,
S[i].L[j].Lesson_Name, S[i].L[j].Lesson_Mark,
S[i].L[j].Lesson_Credit);
printf("-----------------------------------------------------
");
}
printf("

");
break;
}
}
}
printf("查找完毕...回车继续
");
getchar();
}
else //选择不合法
{
printf("选择错误...回车继续
");
getchar();
return;
}
}

void CheckClass()
{
int C_LNum;
double SSNum = 0, PassSNum = 0, SMark = 0;
int i, j;
printf("
请输入课程编号:");
scanf("%d%*c", &C_LNum);
printf("
查找中......

");
printf("学号姓名课程名称课程成绩课程学分
");
printf("----------------------------------------------------
");
for (i = 0; i < Student_Count; i++)
{
for (j = 0; j < S[i].Lesson_Count; j++)
{
if (S[i].L[j].Lesson_Num == C_LNum)
{
printf("%d%s%s%d%d
", S[i].Num, S[i].Name, S[i].L[j].Lesson_Name,
S[i].L[j].Lesson_Mark, S[i].L[j].Lesson_Credit);
printf("----------------------------------------------------
");
SMark += S[i].L[j].Lesson_Mark;
SSNum ++;
if (S[i].L[j].Lesson_Mark >= 60) PassSNum++;
break;
}
}
}
printf("
平均分:%.2lf及格率:%.2lf%%

", SMark / SSNum, PassSNum / SSNum * 100);
printf("
查找完毕...回车继续
");
getchar();
}

void WriteFile()
{
FILE *fp;
int i, j;
char Adr[100];
printf("
请输入写入的文件地址:

地址输入格式:例如d:\\\\Student.txt(\\\\为转义字符):");
scanf("%s%*c", Adr);
printf("
写入中......
");
if (fp = fopen(Adr,"w")) //写入文件
{
fprintf(fp,"%d
",Student_Count);
for (i = 0; i < Student_Count; i++)
{
fprintf(fp,"%d%s%d
",S[i].Num, S[i].Name,S[i].Lesson_Count);
for (j = 0; j < S[i].Lesson_Count; j++)
{
fprintf(fp,"%d%s%d%d
", S[i].L[j].Lesson_Num,
S[i].L[j].Lesson_Name,S[i].L[j].Lesson_Mark,
S[i].L[j].Lesson_Credit);
}
}
printf("
写入完成...回车继续
");
fclose(fp);
}
else
{
printf("
写入失败...回车继续
");
}
getchar();
}
void ReadFile()
{
FILE *fp;
int i, j;
char Adr[100];
printf("
请输入读取(为防止读入错误,希望与写入文件内容格式一致)的文件地址:

地址输入格式:例如d:\\\\Student.txt(\\\\为转义字符):");
scanf("%s%*c", Adr);
printf("
读取中......
");
if (fp = fopen(Adr,"r"))
{
fscanf(fp,"%d",&Student_Count);
for (i = 0; i < Student_Count; i++)
{
fscanf(fp,"%d%s%d",&S[i].Num, &S[i].Name,&S[i].Lesson_Count);
for (j = 0; j < S[i].Lesson_Count; j++)
{
fscanf(fp,"%d%s%d%d",&S[i].L[j].Lesson_Num,
&S[i].L[j].Lesson_Name,&S[i].L[j].Lesson_Mark,
&S[i].L[j].Lesson_Credit);
}
}
printf("
读取成功...回车继续
");
fclose(fp);
}
else
{
printf("
读取失败...回车继续
");
}
getchar();
}

设计要求:
成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分。在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分。也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率。
2. 提高水平
在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入。
3. 提示
在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型。
知识范围;C程序设计第三版谭浩强

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000

typedef struct Lesson  //定义课程结构体
{
    int Lesson_Num;
    char Lesson_Name[50];
    int Lesson_Mark;
    int Lesson_Credit;
}Lesson;

typedef struct Student //定义学生的结构体
{
    char Name[50];
    int Num;
    int Lesson_Count;
    Lesson L[20];
}Student;

Student S[MAX];
static int Student_Count = 0; //记录学生数的变量

void PrintInterface(); //打印界面
int AddStudent(); //添加,带返回值,提示操作成功
int DelStudent(); //删除,带返回值,提示操作成功
void CheckStudent(); //查学生成绩
void CheckClass(); //查班成绩表
void WriteFile(); //写入文本文件
void ReadFile(); //读取文本文件

void main()
{
    int Choice;
    while (1)
    {
        PrintInterface();
        scanf("%d%*c", &Choice); //"%*c"是吸收回车的,因为后面会输入字母类型
        if (Choice >= 0 && Choice <= 6) //选择操作合法
        {
            switch (Choice)
            {
                case 0: exit(1);
                case 1:
                {
                    system("cls");
                    if (AddStudent()) printf("
添加成功...回车继续
");
                    else printf("
添加失败...回车继续
");
                    getchar();
                    getchar();
                    system("cls");
                    break;
                }
                case 2:
                {
                    system("cls");
                    if (DelStudent()) printf("
删除成功...回车继续
");
                    else printf("
删除失败...回车继续
");
                    getchar();
                    getchar();
                    system("cls");
                    break;
                }
                case 3:
                {
                    system("cls");
                    CheckStudent();
                    system("cls");
                    break;
                }
                case 4:
                {
                    system("cls");
                    CheckClass();
                    system("cls");
                    break;
                }
                case 5: WriteFile();system("cls");break;
                case 6: ReadFile();system("cls");break;
                default:;
            }
        }
        else
        {
            printf("无此功能..重新选择..回车确定
"); //选择操作非法
            getchar();
            system("cls"); //清屏函数
        }
    }
}

void PrintInterface()
{
    printf(" -------------------------- 
");
    printf("| 1、添加                  |
");
    printf("|                          |
");
    printf("| 2、删除                  |
");
    printf("|                          |
");
    printf("| 3、查学生成绩            |
");
    printf("|                          |
");
    printf("| 4、查班成绩表            |
");
    printf("|                          |
");
    printf("| 5、写入文本文件          |
");
    printf("|                          |
");
    printf("| 6、读取文本文件          |
");
    printf("|                          |
");
    printf("| 0、退出                  |
");
    printf(" -------------------------- 
");
    printf("选择操作:");
}

int AddStudent()
{
    int S_count, i, j;
    printf("
添加中......
");
    printf("
添加学生人数(如1、2 ……999):");
    scanf("%d", &S_count);
    if (Student_Count + S_count >= MAX) return 0; //超过了数组上限
    for (i = Student_Count; i < Student_Count + S_count; i++)
    {
        printf("
第%d个学生:
", i - Student_Count + 1);
        printf("
学生学号:"); scanf("%d%*c", &S[i].Num);
        printf("
学生姓名:"); gets(S[i].Name);
        printf("
该学生所修课程数:"); scanf("%d", &S[i].Lesson_Count);
        for (j = 0; j < S[i].Lesson_Count; j++)
        {
            printf("
第%d门课:
", j + 1);
            printf("
课程编号:"); scanf("%d%*c", &S[i].L[j].Lesson_Num);
            printf("
课程名称:"); gets(S[i].L[j].Lesson_Name);
            printf("
课程成绩:"); scanf("%d", &S[i].L[j].Lesson_Mark);
            printf("
课程学分:"); scanf("%d", &S[i].L[j].Lesson_Credit);
            if (S[i].L[j].Lesson_Mark < 60) S[i].L[j].Lesson_Credit = 0; //不及格的课程学分为0
        }
    }
    Student_Count += S_count;
    return 1;
}

int DelStudent()
{
    char *D_Name;
    int D_Num;
    int i, j;
    printf("
填写待删除学生的信息:
");
    printf("
学生姓名:"); gets(D_Name);
    printf("
学生学号:"); scanf("%d", &D_Num);
    for (i = 0; i < Student_Count; i++)
    {
        if (!strcmp(S[i].Name, D_Name) && S[i].Num == D_Num)
        {
            printf("
找到该学生,删除中......
");
            for (j = i + 1; j < Student_Count; j++)
            {
                S[j - 1] = S[j];
            }
            break;
        }
    }
    if (i == Student_Count)
    {
        printf("
未找到该学生...请核对所填信息

");
        return 0;
    }
    else
    {
        Student_Count--;
        return 1;
    }
}

void CheckStudent()
{
    int C_Choice;
    char C_Name[50];
    int C_Num;
    int i, j;
    printf("
输入所查学生信息(1.姓名 \\ 2.学号)选择:");
    scanf("%d%*c", &C_Choice);
    printf("
查找中......
");
    if (C_Choice == 1 || C_Choice == 2) //选择合法
    {
        if (C_Choice == 1)
        {
            printf("
姓名:"); gets(C_Name);
            for (i = 0; i < Student_Count; i++) //全部穷举,防止同名同姓
            {
                if (!strcmp(S[i].Name, C_Name))
                {
                    printf("
学号:%d姓名:%s
", S[i].Num, S[i].Name);
                    printf("
课程编号课程名称课程成绩课程学分
");
                    printf("-----------------------------------------------------
");
                    for (j = 0; j < S[i].Lesson_Count; j++)
                    {
                        printf("%d%s%d%d
", S[i].L[j].Lesson_Num,
                                S[i].L[j].Lesson_Name, S[i].L[j].Lesson_Mark,
                                S[i].L[j].Lesson_Credit);
                        printf("-----------------------------------------------------
");
                    }
                    printf("

");
                }
            }
        }
        else
        {
            printf("
学号:"); scanf("%d%*c", &C_Num);
            for (i = 0; i < Student_Count; i++) //不用全部穷举,学号唯一
            {
                if (S[i].Num == C_Num)
                {
                    printf("
学号:%d姓名:%s
", S[i].Num, S[i].Name);
                    printf("
课程编号课程名称课程成绩课程学分
");
                    printf("-----------------------------------------------------
");
                    for (j = 0; j < S[i].Lesson_Count; j++)
                    {
                        printf("%d%s%d%d
", S[i].L[j].Lesson_Num,
                                S[i].L[j].Lesson_Name, S[i].L[j].Lesson_Mark,
                                S[i].L[j].Lesson_Credit);
                        printf("-----------------------------------------------------
");
                    }
                    printf("

");
                    break;
                }
            }
        }
        printf("查找完毕...回车继续
");
        getchar();
    }
    else //选择不合法
    {
        printf("选择错误...回车继续
");
        getchar();
        return;
    }
}

void CheckClass()
{
    int C_LNum;
    double SSNum = 0, PassSNum = 0, SMark = 0;
    int i, j;
    printf("
请输入课程编号:");
    scanf("%d%*c", &C_LNum);
    printf("
查找中......

");
    printf("学号姓名课程名称课程成绩课程学分
");
    printf("----------------------------------------------------
");
    for (i = 0; i < Student_Count; i++)
    {
        for (j = 0; j < S[i].Lesson_Count; j++)
        {
            if (S[i].L[j].Lesson_Num == C_LNum)
            {
                printf("%d%s%s%d%d
", S[i].Num, S[i].Name, S[i].L[j].Lesson_Name,
                                            S[i].L[j].Lesson_Mark, S[i].L[j].Lesson_Credit);
                printf("----------------------------------------------------
");
                SMark += S[i].L[j].Lesson_Mark;
                SSNum ++;
                if (S[i].L[j].Lesson_Mark >= 60) PassSNum++;
                break;
            }
        }
    }
    printf("
平均分:%.2lf及格率:%.2lf%%

", SMark / SSNum, PassSNum / SSNum * 100);
    printf("
查找完毕...回车继续
");
    getchar();
}

void WriteFile()
{
    FILE *fp;
    int i, j;
    char Adr[100];
    printf("
请输入写入的文件地址:

地址输入格式:例如d:\\\\Student.txt(\\\\为转义字符):");
    scanf("%s%*c", Adr);
    printf("
写入中......
");
    if (fp = fopen(Adr,"w")) //写入文件
    {
        fprintf(fp,"%d
",Student_Count);
        for (i = 0; i < Student_Count; i++)
        {
            fprintf(fp,"%d%s%d
",S[i].Num, S[i].Name,S[i].Lesson_Count);
            for (j = 0; j < S[i].Lesson_Count; j++)
            {
                fprintf(fp,"%d%s%d%d
", S[i].L[j].Lesson_Num,
                        S[i].L[j].Lesson_Name,S[i].L[j].Lesson_Mark,
                        S[i].L[j].Lesson_Credit);
            }
        }
        printf("
写入完成...回车继续
");
        fclose(fp);
    }
    else
    {
        printf("
写入失败...回车继续
");
    }
    getchar();
}
void ReadFile()
{
    FILE *fp;
    int i, j;
    char Adr[100];
    printf("
请输入读取(为防止读入错误,希望与写入文件内容格式一致)的文件地址:

地址输入格式:例如d:\\\\Student.txt(\\\\为转义字符):");
    scanf("%s%*c", Adr);
    printf("
读取中......
");
    if (fp = fopen(Adr,"r"))
    {
        fscanf(fp,"%d",&Student_Count);
        for (i = 0; i < Student_Count; i++)
        {
            fscanf(fp,"%d%s%d",&S[i].Num, &S[i].Name,&S[i].Lesson_Count);
            for (j = 0; j < S[i].Lesson_Count; j++)
            {
                fscanf(fp,"%d%s%d%d",&S[i].L[j].Lesson_Num,
                        &S[i].L[j].Lesson_Name,&S[i].L[j].Lesson_Mark,
                        &S[i].L[j].Lesson_Credit);
            }
        }
        printf("
读取成功...回车继续
");
        fclose(fp);
    }
    else
    {
        printf("
读取失败...回车继续
");
    }
    getchar();
}


什么都不说了,我的这个除了不能统计第(6)中各分数段学生人数外,其余功能全部实现,你自己参考一下,将最后一个功能也实现吧!
#ifndef H_STUDENT_HH
#define H_STUDENT_HH

#include "stdio.h"
#include "string.h"
#include "malloc.h"

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5 /*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6];
char name[20];
char sex[4];
float subject[numsubs];
float score;
float average;
int index;
}student;

extern int numstus; /*学生数目*/
extern student *pointer; /*指向结构体数组*/
extern int lens;

int menu_select(); /*函数声明*/
int openfile(student stu[]);
int findrecord(student stud[]);
int writetotext(student stud[]);
void welcome();
void display1();
void showtable();
void sort(student stu[]);
void deleterecord(student stu[],int i);
void addrecord(student stud[]);
void display(student stud[],int n1,int n2);
void amendrecord(student stud[]);
void count(student stud[]);
void sortnum(student stud[]);
void sortnum2(student stud[]);
void sortname(student stud[]);
void sortname2(student stud[]);
void sortcount(student stud[]);
void sortcount2(student stud[]);
void statistic(student stud[]);
void display1();

#endif

#include "stdio.h"
int menu_select()
{
char c;
printf("\n\n");
printf(" | 1. 增加学生记录 5.统计信息 |\n");
printf(" | 2. 查询学生记录 6.打开文件 |\n");
printf(" | 3. 修改学生记录 7.保存文件 |\n");
printf(" | 4. 学生纪录排序 8.显示记录 |\n");
printf(" | 0.退出系统 |\n");
printf("\n\n");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}

#include "stdio.h"
int findrecord(student stud[]) /*查找信息*/
{
char str[2];
int i,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return -1;
}
else
{
printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");
gets(str);
if(str[0]=='1') /*按学号查找*/
{
printf("请输入学号:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].number)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='2') /*按姓名查找*/
{
printf("请输入姓名:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].name)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='3') /*按名次查找*/
{
printf("请输入名次:");
scanf("%d",&num);
getchar();
for(i=0;i<=numstus;i++)
if(num==stud[i].index)
{
display(stud,i,i);
break;
}
else continue;
}
if(i>numstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}

#include"stdio.h"
int openfile(student stu[])
{
int i=0,j;
FILE *fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",&numstus);
fgetc(fp);
while(i<numstus)
{
fscanf(fp,"%s",stu[i].number);
fscanf(fp,"%s",stu[i].name);
fscanf(fp,"%s",stu[i].sex);
for(j=0;j<numsubs;j++)
fscanf(fp,"%f",&stu[i].subject[j]);
fscanf(fp,"%f",&stu[i].score);
fscanf(fp,"%f",&stu[i].average);
fscanf(fp,"%d",&stu[i].index);
i++;
}
fclose(fp);
printf("文件读取成功\n");
printf("是否显示纪录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1);
return(0);
}
#include "stdio.h"
void sort(student stud[])
{
int i,j=0;
char str[5];
student *p;
p=stud;
if(numstus==0)
{
printf("没有可供查询的记录!");
}
while(1)
{
for(i=0;;i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)\n");
printf("1.按照学号\t");
printf("2.按照姓名\t");
printf("3.按照名次\n");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortcount2(p);
else
sortcount(p);
display(stud,0,numstus-1);
}
else printf("请输入1~3");
printf("是否退出排序?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') break;
}
return;
}
}
void sortnum(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1].number,stud[j].number)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortnum2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j].number,stud[j+1].number)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1].name,stud[j].name)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j].name,stud[j+1].name)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j+1].index>stud[j].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j].index>stud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
#include"stdio.h"
void statistic(student stud[]) /*新增功能,输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[0];
if(stud[k].subject[0]>stud[i].subject[0]) k=i;
if(stud[j].subject[0]<stud[i].subject[0]) j=i;
}
average[0]=sum/numstus;
printf("\t科目A的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("\t科目A的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/
break;
case '2':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[1];
if(stud[k].subject[1]>stud[i].subject[1]) k=i;
if(stud[j].subject[1]<stud[i].subject[1]) j=i;
}
average[1]=sum/numstus;
printf("\t科目B的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("\t科目B的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/
break;
case '3':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[2];
if(stud[k].subject[2]>stud[i].subject[2]) k=i;
if(stud[j].subject[2]<stud[i].subject[2]) j=i;
}
average[2]=sum/numstus;
printf("\t科目C的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("\t科目C的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/
break;
case '4':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[3];
if(stud[k].subject[3]>stud[i].subject[3]) k=i;
if(stud[j].subject[3]<stud[i].subject[3]) j=i;
}
average[3]=sum/numstus;
printf("\t科目D的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("\t科目D的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/
break;
case '5':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[4];
if(stud[k].subject[4]>stud[i].subject[4]) k=i;
if(stud[j].subject[4]<stud[i].subject[4]) j=i;
}
average[4]=sum/numstus;
printf("\t科目E的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("\t科目E的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数\n");
}
sum=0;
getchar();
printf("是否继续进行统计?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}

#include"stdio.h"
int writetotext(student stud[]) /*将所有记录写入文件*/
{
int i=0,j;
FILE *fp;
char filename[20];
printf("输入文件名称:");
gets(filename);
fp=fopen(filename,"w");
fprintf(fp,"%d\n",numstus);
while(i<numstus)
{
fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);
for(j=0;j<numsubs;j++)
fprintf(fp,"%f ",stud[i].subject[j]);
fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);
i++;
}
fclose(fp);
printf("已成功存储!\n");
display(stud,0,numstus-1);
numstus=0;
return 0;
}

#include"stdio.h"
void welcome()
{
printf("\t*************************************************************\n");
printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");
printf("\t*************************************************************\n");

}

void showtable()
{
printf("---------------------------------------------------------------------------------------\n");
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");
printf("---------------------------------------------------------------------------------------\n");
}

void display(student stud[],int n1,int n2)
{
int i;
showtable(); /*显示表头*/
for(i=n1;i<=n2;i++)
printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud

[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud

[i].average,stud[i].index);
/*通过循环输出数据*/

}
void display1()
{
printf("\t\t本系统由计算机信息管理专业精英亲情制作\n\n");
printf("\t\t制作人:\n");
printf("\t\t\t花新昌\n");
printf("\n\n");
getchar();
}

#include"stdio.h"
#include<string.h>
void amendrecord(student stud[])
{
char str[5]; /*供用户输入*/
int i=-1,j;

if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i<0)
{
i=findrecord(stud);
if(i>=0)
{
printf("要删除这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{

printf("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;j<numsubs;j++)
{
scanf("%f",&stud[i].subject[j]);
stud[i].score+=stud[i].subject[j];
}
getchar();
stud[i].average=stud[i].score/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改?(y/n)\n");
gets(str);
if(str[0]=='y'||str[0]=='Y')
i=-1;
else i=1;
}
}

void deleterecord(student stu[],int i) /*删除信息*/
{
int j;

while(i>=0)
{
for(j=i;j<numstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!\n");

}
}

void count(student stud[])
{
int i,j;
for(i=0;i<numstus;i++)
{
stud[i].index=1;
for(j=0;j<numstus;j++)
if(stud[j].score>stud[i].score)
stud[i].index++;
}
}

#include "stdio.h"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\n");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}

printf("请输入增加的学生信息条目数:");
scanf("%d",&num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstus>lens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf("请输入学生信息:\n");
for(;i<numstus;i++)
{
getchar();
printf("请输入学号:");
gets(pointer[i].number);
printf("请输入姓名:");
gets(pointer[i].name);
printf("请输入性别(男/女 1/0):");
gets(pointer[i].sex);
if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");
else strcpy(pointer[i].sex,"男");
printf("请输入各科成绩:(按ABCDE的顺序):");
stud[i].score=0;
for(j=0;j<numsubs;j++)
{
scanf("%f",&stud[i].subject[j]); /*计算总分*/
stud[i].score+=stud[i].subject[j];
}
stud[i].average=stud[i].score/numsubs; /*计算平均分*/
}
count(stud); /*附名次*/
display(stud,0,numstus-1);
getchar();
}
#include "stdio.h"
int numstus;
int lens;
student *pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /*分配内存*/
numstus=0;
welcome(); /*欢迎界面*/
while(i>0)
{
i=menu_select(); /*控制菜单*/
switch(i)
{
case 1:addrecord(pointer);break; /*增加学生信息*/
case 2:findrecord(pointer);break; /*查询学生信息*/
case 3:amendrecord(pointer);break; /*修改学生信息*/
case 4:sort(pointer);break; /*学生信息排序*/
case 5:statistic(pointer);break; /*统计信息*/
case 6:openfile(pointer);break; /*打开文件*/
case 7:writetotext(pointer);break; /*保存文件*/
case 8:display(pointer,0,numstus-1);break; /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /*退出系统*/
default:printf("请输入数字0~8:\n");i=1; /*输入错误*/
}
}
printf("\t\t欢迎再次使用本系统。\n\n");
display1();
}

#include<iostream>
#include<string>
#include<vector>
using namespace std;

class student
{
public:
student(int , string ,int ,int ,int );
string getName(){return _name;};
int getID(){return _ID;};
void setID(int i){_ID=i;};
void setName(string);
void setClass(int c){_class=c;};
void setMath(int m){_math=m;_total=_math+_english;};
void setEnglish(int e){_english=e;_total=_math+_english;}
void print();

static int _stNum;
private:
int _ID;
string _name;
int _class;
int _math;
int _english;
int _total;
};
int student::_stNum=0;
student::student(int id, string name, int iclass, int ma, int en)
{
_ID=id;
_name=name;
_class=iclass;
_math=ma;
_english=en;
_total=_math+_english;
_stNum++;
};

void student::setName(string s)
{
_name=s;
};

void student::print()
{

cout<<_ID
<<"\t"<< _name
<<"\t"<<_class
<<"\t"<<_math
<<"\t"<<_english
<<"\t"<<_total <<endl;

}

void printMenu(void);
void printHead(void);
void printTail(int);

void main()
{
int tmp_ID;
string tmp_name;
int tmp_class;
int tmp_math;
int tmp_english;
int order=0;
vector<student> stvec;

printMenu();
cin>>order;

while(order!=5)
{
switch(order)
{
case 1:
if (stvec.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl<<endl;
printMenu();
cin>>order;
break;
}
else
{
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
printHead();
for(;iter!=iter_end;iter++)
{

(*iter).print();
}
printTail(stvec.size());
printMenu();
cin>>order;

break;
}

case 2:
cout<<"Insert-->ID:";
cin>>tmp_ID;
cout<<"Insert-->Name:";
cin>>tmp_name;
cout<<"Insert-->Class:";
cin>>tmp_class;
cout<<"Insert-->Mark of Math:";
cin>>tmp_math;
cout<<"Insert-->Mark of English:";
cin>>tmp_english;
stvec.push_back(student(tmp_ID,tmp_name,tmp_class,tmp_math,tmp_english));

printMenu();
cin>>order;
break;

case 3:
{
string search_name;
bool isFind=false;
cout<<"\nOrignal_Update-->Name:";
cin>>search_name;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
isFind=true;
cout<<"New_Update-->ID:";
cin>>tmp_ID;
cout<<"New_Update-->Name:";
cin>>tmp_name;
cout<<"New_Update-->Class:";
cin>>tmp_class;
cout<<"New_Update-->Mark of Math:";
cin>>tmp_math;
cout<<"New_Update-->Mark of English:";
cin>>tmp_english;

(*iter).setID(tmp_ID);
(*iter).setName(tmp_name);
(*iter).setClass(tmp_class);
(*iter).setMath(tmp_math);
(*iter).setEnglish(tmp_english);
}
}
if(!isFind)
{
cout<<"There no student named "<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}
case 4:
string search_name;
int search_ID;
int name_ID=0;
bool isFind=false;
cout<<"-----------"<<endl;
cout<<"1.Name:"<<endl;
cout<<"2.ID:"<<endl;
cout<<"-----------"<<endl;
cin>>name_ID;

if (name_ID==1)
{
cout<<"\nSearch-->name:"<<endl;
cin>>search_name;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
if(!isFind)
{
cout<<endl<<"Your search:"<<endl;
printHead();
}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student named :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}

if (name_ID==2)
{
cout<<"\nSearch-->ID:"<<endl;
cin>>search_ID;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getID()==search_ID)
{
if(!isFind)
{cout<<endl<<"Your search:"<<endl;
printHead();}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student ID :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;

}
}
}
}

void printMenu(void)
{
cout<<endl<<"*************Make**your**choice***************"<<endl;
cout<<"1. View the data"<<endl;
cout<<"2. ADD the data"<<endl;
cout<<"3. Update the data"<<endl;
cout<<"4. Search the data"<<endl;
cout<<"5. Quit"<<endl;
cout<<"********************************************"<<endl<<endl;
}

void printHead(void)
{
cout<<"-------------------------------------------------"<<endl;
cout<<"ID\tName\tClass\tMath\tEnglish\tTotal"<<endl;
}

void printTail(int i)
{
cout<<"There are total ";
if (i ==1)
{cout<< i<<" student"<<endl;}
else if(i >1)
{cout<<i<<" students"<<endl;}
cout<<"-------------------------------------------------"<<endl;
}

我发个自己写的例子给你参考一下吧,前5项功能都有,第6项功能我没细分只是按总分排序了。


怎么用C语言编一个学生成绩记录簿?
} while(index != -1);

用C语言编写一个歌唱比赛成绩统计程序
int i,Max=-1,Min=999,Score,x,y;double Sum=0,a[10],Max2=-1,Min2=999,z;printf("练习30题_6:歌星比赛评分:\\n");for(i=1;i<=10;i++){ printf("第%d位评委打分:\\n",i);scanf("%d",&Score);a[i]=Score;Sum+=Score;if(Score>Max)Max=Score;if(Score<Min)Min=Score...

用C语言编一个成绩记录簿
if (C_Choice == 1) { printf("\\n姓名:"); gets(C_Name); for (i = 0; i < Student_Count; i++) \/\/全部穷举,防止同名同姓 { if (!strcmp(S[i].Name, C_Name)) { printf("\\n学号:%d\\t姓名:%s\\n", S[i].Num, S[i].Name); printf("\\n课程编号\\t课程名称\\t课程成绩\\t课程学分...

编辑一个c语言 成绩记录薄,每个学生信息包括 学号 姓名c语言成绩...
printf("___\\n");printf("subject average NO.%d is:\\n",j+1);printf(" %10.2f\\n",stu[i].ave);} for(j=0;j<3;j++){ min=stu[0].scores[j];max=0;for(i=0;i<N;i++){ if(stu[i].scores[j]>max){ max=stu[i].scores[j];y=i;} if(stu[i].scores[j]<m...

编制一个C语言成绩记录簿
也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率。2. 提高水平 在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入。3. 提示 在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型。知识范围;C程序设计第三版谭浩强 ...

编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩...
编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或... 编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件...

c语言.记录3门课的成绩,计算平均成绩以及成绩的标准差并输出.要求必须...
int i;double avg = 0.0, sum = 0.0;for (i = 0; i < n; i++)avg += x[i];avg \/= n;printf("平均成绩为%f\\n", avg);for (i = 0; i < n; i++)sum += (x[i] - avg) * (x[i] - avg);return sqrt(sum \/ n);} int main(){ double score[3];int i;...

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩...
\/\/ 某班级学生C语言第一次正考的成绩存于数据文件score.dat中,记录了学生学号、姓名和考试成绩,bk.dat文件中记录了补考学生的学号、姓名和补考成绩,编写程序以链式存储结构实现以下要求:\/\/ 1、对该班级按成绩降序排序并统计成绩平均分及每个分数段的人数,结果写入到result.dat中。\/\/ 2、再根据...

c语言 记录成绩项目
跪求且速求要求1、2成绩输入、输出3成绩排序4添加成绩5修改成绩6删除成绩7C语言成绩是上机成绩和理论成绩8用C做... 跪求且速求 要求 1、2 成绩输入、输出 3成绩排序 4添加成绩 5修改成绩 6删除成绩 7C语言成绩是上机成绩和理论成绩 8用C做 展开

c语言课程设计:成绩记录簿,望高手帮忙!!!
编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩.具体功能如下: 1.创建信息链表并以磁盘文件保存. 2.读取磁盘文件并显示输出所有学生的成绩. 3.按学号或姓名查阅成绩. 4.修改指定姓名或学号的学生的成绩并存盘. 5.显示输出60分以下,60到79,80到89,90以上各分数段的学生信息.还望各位高手帮忙....

平江区19533109988: 用C语言编一个成绩记录簿 -
字飘博洛: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1000 typedef struct Lesson //定义课程结构体 { int Lesson_Num; char Lesson_Name[50]; int Lesson_Mark; int Lesson_Credit; }Lesson; typedef struct Student //定义学生的结构...

平江区19533109988: 编制一个C语言成绩记录簿 -
字飘博洛: 设计要求: 成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分.在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分.也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率. 2. 提高水平 在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入. 3. 提示 在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型. 知识范围;C程序设计第三版谭浩强

平江区19533109988: C语言制作成绩记录簿 -
字飘博洛: #include<stdio,h> #include<stdlib.h> struct node { char data;struct node *next;};struct node *insert(struct node *h,char c) { struct node *p,*p1,*p2;p=(struct node *)malloc(sizeof(struct node)); p->data=c;p->next=NULL; if(h==NULL)h=p; else { p1=p2=...

平江区19533109988: c语言编程《成绩记录簿》
字飘博洛: #include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; // struct student { char num[10];//学号 char name[20]; int cgrade; char neartime[10];//最近更新时间 }; typedef struct node { struct student data; struct node *next; }...

平江区19533109988: 编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩.具体功能: (1)创建信息 -
字飘博洛: 我以前做过的一个, 你看看,/* 数据描述:学号 姓名 班级 高数 英语 总分程序完成功能:(1) 浏览数据 (2) 增加数据 (3) 修改数据(4) 查询数据(按姓名,按总分) (5) 退出 */#include #include #include using namespace std;...

平江区19533109988: 成绩记录薄的程序怎么写?? 编制一个C语言成绩记录薄,每个学生信息包括:学号、姓名、C语言成绩.具体功能:⑴创建信息链表并以磁盘文件保存;⑵读取磁盘文件并显示输出所有学生的成绩;⑶按学号或姓 -
字飘博洛: /******头文件(.h)***********/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*其它说明*/ #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #include "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*...

平江区19533109988: 如何用C语言编成绩记录薄? -
字飘博洛: 先定义一个结构体(用伪代码说明了) typedef struct _STUDENTINFO { 学生的相关信息,如姓名,学号, 成绩等 struct _STUDENTINFO *next; //指向下一个学生

平江区19533109988: 编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,c语言成绩. -
字飘博洛: /*students.c*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include "students.h"struct list //结构体 {int sno;char sname[2];int sage;char sprof[2];int sclass;struct list *next; }; stud *Create(int n) {stud *p,*c,*h;p=(stud *) malloc (...

平江区19533109988: 怎样用c语言编简单的成绩查询
字飘博洛: 对于每个学生的信息,用下面的结构体存储: typedef struct {char name[30];char number[20];int grade; }student; 23个人用个结构体数组就行了. 大致流程如下:先将数据信息从键盘输入,并写到相应的文件中,文件格式自定就可以了.在查询的时候,先从键盘读入要查询的学号或者姓名,再去从文件中读数据,逐个匹配就行了.至于代码,建议还是你自己多动手写,这样才会有进步.希望对你有帮助!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网