您的位置:

小成绩管理系统c语言,小成绩管理系统c语言报告

本文目录一览:

C语言成绩管理系统

#include "stdio.h"

struct stu{

int sid,score;

char g;

};

void scorein(struct stu *p,int n){

int i,t;

for(i=0;in;i++){

scanf("%d%d",p[i].sid,p[i].score);

p[i].g = (t=p[i].score)89  t101 ? 'A' : t79  t90 ? 'B' : t69  t80 ? 'C' : t59  t70 ? 'D' : 'E';

}

}

int sum(struct stu *p,int n){

int s=0;

while(n--)

s+=p++-score;

return s;

}

void dssort(struct stu *p,int n){

int i,j,k;

struct stu t;

printf("\nSTUID\tSCORE\tCLASS\n=====================\n");

for(i=0;in;i++){

for(k=i,j=k+1;jn;j++)

if(p[k].scorep[j].score)

k=j;

if(k!=i)

t=p[k],p[k]=p[i],p[i]=t;

printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g);

}

}

void idsort(struct stu *p,int n){

int i,j,k;

struct stu t;

printf("\nSTUID\tSCORE\tCLASS\n=====================\n");

for(i=0;in;i++){

for(k=i,j=k+1;jn;j++)

if(p[k].sidp[j].sid)

k=j;

if(k!=i)

t=p[k],p[k]=p[i],p[i]=t;

printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g);

}

}

void query(struct stu *p,int n){

int id;

printf("\nPlease enter ID(int)...\n");

scanf("%d",id);

while(id-p-sid  n)

p++,n--;

if(n=0){

printf("STUID\tSCORE\tCLASS\n=====================\n");

printf("%d\t%d\t%c\n\n",p-sid,p-score,p-g);

}

else

printf("No find!\n\n");

}

void level(struct stu *p,int n){

int d[5],i;

char s[5][7]={"优秀","良好","中等","及格","不及格"};

printf("统计信息如下:\n");

for(i=0;i5;d[i++]=0);

for(i=0;in;i++,d[p++-g-'A']++);

for(i=0;i5;i++)

printf("%6s:\t%d\t%.2f%%\n",s[i],d[i],d[i]/(n+0.0)*100);

}

void outinfo(struct stu *p,int n){

int i;

printf("\nSTUID\tSCORE\n=============\n");

for(i=0;in;i++)

printf("%d\t%d\n",p[i].sid,p[i].score);

}

int main(int argc,char *argv[]){

int n,s;

struct stu a[30];

printf("Please enter n(int 0n31)...\n");

if(scanf("%d",n)!=1 || n1 || n30){

printf("Input error, exit...\n");

return 0;

}

scorein(a,n);//输入

dssort(a,n);//分数降序

idsort(a,n);//学号升序

query(a,n);//查询

level(a,n);//等级和百分比

outinfo(a,n);//输出各位学生信息

printf("总分: %d",s=sum(a,n));

printf("   平均分:   %.2f\n",s/(n+0.0));

return 0;

}

运行样例:

用C语言编程实现一个简单的学生成绩管理系统

#include stdio.h

#include stdlib.h

#include string.h

#includememory.h

typedef struct student

{

char num[16];

char name[20];

float score[4];

struct student *next;

} stu;

stu *head;         // 链头指针

stu* create() // 创建链表,从文件读取信息 

{

    printf("Reading student information:\n");

stu *p=NULL; // 指针,指向个待插入的结点

stu *q=NULL; // 指针,用于在其后插入结点

head = NULL; // 一开始链表为空

FILE * r =fopen("input.dat","r"); 

p = (stu*)malloc(sizeof(stu));

while(fscanf(r,"%s%s%f%f%f",p-num,p-name,p-score[0],p-score[1],p-score[2])!=EOF)

{

        p-score[3]=(p-score[0]+p-score[1]+p-score[2])/3.0;

        fprintf(stdout,"%s\t%s\t%g\t%g\t%g\t%.2f\n",p-num,p-name,p-score[0],p-score[1],p-score[2],p-score[3]);

        p-next=NULL;

if (head == NULL) // head为空,要插入第一个

        {

    head = p;

        }        // 结点,让头指针指向结点p

else

        { // 否则不是头结点,应将p结点

q-next = p; // 插入到q结点的后面

}

        q = p; // q指向当前最后一个结点

        p = (stu*)malloc(sizeof(stu));

}

    fclose(r);

if (head != NULL)

    {

    q-next = NULL; // 让q所指的最后一个结点的指针域为空说明这已是链尾了

}

    return head; // 返回头指针

}

 

void sort(stu **head,int n)      

{

    FILE *w=NULL;

    if(n==0)

    {

       w = fopen("sortByMath.dat","w");

    }

    else if(n==1)

    {

       w = fopen("sortByEnglish.dat","w");

    }

    else if(n==2)

    {

       w = fopen("sortByComputer.dat","w");

    }

    else if(n==3)

    {

       w = fopen("sortByAvg.dat","w");

    }

    stu *q,*t,*p;    

    stu * new_head = new stu;

    new_head-next=*head;

    p=new_head;

    t=NULL;

    while(t!=new_head-next)

    {

        p=new_head;

        q=p-next;

        while(q-next!=t)   

        {

            if((p-next-score[n])  (q-next-score[n])) 

            {

                p-next=q-next;    

                q-next=q-next-next;    

                p-next-next=q;    

            }

            p=p-next;

            q=p-next;

        }

        t=q;

    }

    *head = new_head-next;

    

    

    p = *head;

    q = p-next;

    printf("学号\t姓名\t数学\t英语\t计算机\t平均成绩\n");

    int grade = 1; 

    while(p!=NULL)

    {

        fprintf(w,"%s\t%s\t%g\t%g\t%g\t%.2f\t%d\n",

        p-num,p-name,p-score[0],p-score[1],p-score[2],p-score[3],grade);

        fprintf(stdout,"%s\t%s\t%g\t%g\t%g\t%.2f\t%d\n",

        p-num,p-name,p-score[0],p-score[1],p-score[2],p-score[3],grade);

        if(q!=NULL  q-score[3]  p-score[3]) grade += 1;

        p=p-next;

        if(q!=NULL) q=q-next;

    }

    printf("\n");

    fclose(w);

void count(stu* head)

{

    float cnt[4][8];

    int i,j;

    for(i=0;i4;i++)

    {

        for(j=0;j8;j++)

        {

            if(j!=2)cnt[i][j]=0;

            else cnt[i][j]=100;

        }

    }

    stu* r=head;

    while(r!=NULL)

    {

        r=r-next;

    }

}

int  main( ) 

{

   head=create();

   printf("Sorting by average score:\n");

   sort(head,3);

   

   system("pause");

   return 0;

}

用C语言编写一个学生成绩管理系统

// testzhidao4.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include stdio.h

#include stdlib.h

#include string.h

#include malloc.h

struct Student //学生结构体

{

char name[20]; //名字

char sex[10]; //性别

char zuanye[20]; //专业

char code[13]; //学号

char department[20]; //学院

char degree[20]; //学历

};

struct node

{

struct Student data;

struct node *next;

};

//---------------------------------------------------------------------------------

void print_menu(void) // 打印总菜单

{

printf(" |--------------------------------------------------|\n");

printf(" | 总 菜 单 : |\n");

printf(" |--------------------------------------------------|\n");

printf(" | 1--增加一个学生信息 | 5--删除一个学生信息 |\n");

printf(" | 2--显示一个学生信息 | 6--统计功能 |\n");

printf(" | 3--显示一个班级信息 | 7--结束 |\n");

printf(" | 4--修改一个学生信息 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");

printf(" |--------------------------------------------------|\n");

}

void print_menu4(void ) //打印修改功能

{

printf(" |--------------------------------------------------|\n");

printf(" | 修 改 功 能 : |\n");

printf(" |--------------------------------------------------|\n");

printf(" | 1--修改名字 | 5--修改学院 |\n");

printf(" | 2--修改性别 | 6--修改专业 |\n");

printf(" | 3--修改学号 | 7--不作修改 |\n");

printf(" | 4--修改学历 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");

printf(" |--------------------------------------------------|\n");

printf("再次选择选项 :");

}

void print_static_function_menu(void) //打印统计功能

{

printf(" |--------------------------------------------------|\n");

printf(" | 统 计 功 能 : |\n");

printf(" |--------------------------------------------------|\n");

printf(" | 1.男/女人数 | 3.一个专业人数 |\n");

printf(" | 2.一个班级人数 | 4.结束 |\n");

printf(" |--------------------------------------------------|\n");

printf("请选择选项:\n");

}

int compareCode(char a[],char b[]) //比较 判断是否是同一个班级

{

for(int i=0;i9;i++)

if(a[i]!=b[i]) break;

if(i==9) return 1;

else return 0;

}

//-------------------------------------------------------------------------------------

void main() //主函数从这里开始

{

system("color 3");

printf("\n\n\n");

printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");

printf(" \3\3\3\3\3\3\3\3\3\3 学 生 证 管 理 程 序 \3\3\3\3\3\3\3\3\n");

printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");

printf(" \3\3\3\3\3\3 作者: \3\3\3\3\3\3\3\n");

printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");

int choice;

struct node *studentlist=(struct node*)malloc(sizeof(struct node)); //学生链表头 //////////////////////////////////////////////////////////

studentlist-next=NULL;

struct node *temp=NULL;

struct node *p=(struct node*)malloc(sizeof(struct node));

char tempcode[13]; //临时学号

char tempclass[11]; //临时班级

char tempzuanye[20];//临时专业

int count=0;

int choice6,count_male,count_female;

const int sizeStu=sizeof(struct Student);

struct Student data;

FILE *fp;

if((fp=fopen("d:\\学生证管理程序.dat","rb"))==NULL)

{

fp=fopen("d:\\学生证管理程序.dat","wb");

}

fclose(fp);

fp=fopen("d:\\学生证管理程序.dat","rb");

while(fread(data,sizeStu,1,fp)==1)

{

p-data=data;

p-next=NULL;

if(studentlist==NULL)

studentlist=p;

else

{ temp=studentlist;

while(temp-next!=NULL){temp=temp-next;}

temp-next=p;

}

p=(struct node*)malloc(sizeof(struct node));

}

fclose(fp);

print_menu(); //打印菜单

scanf("%d",choice); //读进选项

while(choice!=7) //未遇到结束键

{

switch(choice)

{

//----------------------------------------------------------------

//选项1,增加学生学生证信息

case 1: //输入一个学生信息

p=(node*) malloc(sizeof(node));

printf("\n请输入姓名:");

scanf("%s",p-data.name);

printf("\n请输入性别(男/女):");

scanf("%s",p-data.sex);

printf("\n请输入学号(12位):");

scanf("%s",p-data.code);

printf("\n请输入学制(本科生/研究生):");

scanf("%s",p-data.degree);

printf("\n请输入学院:");

scanf("%s",p-data.department);

printf("\n请输入专业:");

scanf("%s",p-data.zuanye);

p-next=NULL;

//----------------------------------------------------------链表连接

if(studentlist==NULL) { studentlist=p; studentlist-next=NULL;}

else {

temp=studentlist;

while(temp-next!=NULL) ////////////////////

{

temp=temp-next;

}

temp-next=p;

p-next=NULL;

}

break;

//---------------------------------------------------------------------

//选项2,显示给定学生学生证信息

case 2: printf("\n请输入学生学号(12位数):");

scanf("%s",tempcode);

temp=studentlist;

while(temp!=NULL) //寻找响应的学生

{

if(strcmp(tempcode,temp-data.code)==0) break;

temp=temp-next;

}

if(temp==NULL) printf("\n不能找到该学生信息.\n");

else {

printf("------------------------------------------------\n");

printf("姓名: %s\n",temp-data.name);

printf("性别: %s\n",temp-data.sex);

printf("学号: %s\n",temp-data.code);

printf("学历: %s\n",temp-data.degree);

printf("学院: %s\n",temp-data.department);

printf("专业: %s\n",temp-data.zuanye);

printf("------------------------------------------------\n\n");

}

break;

//-----------------------------------------------------------------

//选项3,显示给定班级的学生信息

case 3:printf("\n请输入班级号 :"); //输入班级号

scanf("%s",tempclass);

while(strlen(tempclass)10) //班级号位数小于10时,重新输入

{

printf("错误的班级号,请重新输入:");

scanf("%s",tempclass);

}

count=0; //班级学生数

temp=studentlist;

while(temp!=NULL) //检索链表,并打印相应学生的学生证信息

{

if(compareCode(tempclass,temp-data.code)) {//打印属于这个班级的学生

printf("-----------------------------------------------\n");

printf("姓名: %s\n",temp-data.name);

printf("性别: %s\n",temp-data.sex);

printf("学号: %s\n",temp-data.code);

printf("学历: %s\n",temp-data.degree);

printf("学院: %s\n",temp-data.department);

printf("专业: %s\n",temp-data.zuanye);

printf("-----------------------------------------------\n");

count++;

}

temp=temp-next;

}

if(count==0) printf("该班级还未有成员.\n");

break;

//-------------------------------------------------------------------

//选项4,修改给定学生的信息

case 4: printf("请输入要作修改的学生证号:");

scanf("%s",tempcode);

temp=studentlist;

while(temp!=NULL) //寻找响应的学生

{

if(strcmp(tempcode,temp-data.code)==0) break;

temp=temp-next;

}

if(temp==NULL) printf("\n找不到相应学生的信息.\n");//找不到相应的学生

else {

int choice2;

print_menu4();

scanf("%d",choice2);

while(choice2!=7)

{

switch(choice2)

{

case 1:printf("修改名字:"); //修改名字

scanf("%s",temp-data.name);

break;

case 2:printf("修改性别:");//修改性别

scanf("%s",temp-data.sex);

break;

case 3:printf("修改学号:");//修改学号

scanf("%s",temp-data.code);

break;

case 4:printf("修改学历 :"); //修改学历

scanf("%s",temp-data.degree);

break;

case 5:printf("修改学院:"); //修改学院

scanf("%s",temp-data.department);

case 6:printf("修改专业:");//修改专业

scanf("%s",temp-data.zuanye);

break;

default: break;

}

printf("请选择选项:");

scanf("%d",choice2); //再次选择菜单选项

}

}

break;

//----------------------------------------------------------------

//选项5,删除给定学号的学生

case 5: printf("\n输入学号 :"); //输入学号

scanf("%s", tempcode);

temp=studentlist;

p=temp;

while(temp!=NULL) //寻找相应的学生

{

if(strcmp(tempcode,temp-data.code)==0) break;

p=temp;

temp=temp-next;

}

if(temp==NULL) printf("\n找不到该学生信息.\n"); //找不到

else if(temp==studentlist) {studentlist=temp-next; free(temp);}

else {

p-next=temp-next;//找到时删除

free(temp);

}

break;

//------------------------------------------------------------------

//选项6,统计功能

case 6: print_static_function_menu();

scanf("%d",choice6);//选择菜单选项

while(choice6!=4)

{

switch(choice6)

{

//选项1,统计男女个数

case 1:temp=studentlist;

count_male=0; //男生数

count_female=0; //女生数

while(temp!=NULL) //检索链表查找

{

if(strcmp(temp-data.sex,"男")==0) count_male++;

if(strcmp(temp-data.sex,"女")==0) count_female++;

temp=temp-next;

}

printf("男: %d\n",count_male);

printf("女: %d\n",count_female);

break;

//选项2,统计给定班级的人数

case 2:printf("请输入班级号:");

scanf("%s",tempclass); //给定班级

temp=studentlist;

count=0;

while(temp!=NULL) //检索链表查找

{

if(compareCode(temp-data.code,tempclass)==1) count++;

temp=temp-next;

}

printf("%s班级总人数为: %d\n",tempclass,count);

break;

case 3:printf("请输入专业:");

scanf("%s",tempzuanye); //给定专业

temp=studentlist;

count=0;

while(temp!=NULL) //检索链表查找

{

if(strcmp(temp-data.zuanye,tempzuanye)==0) count++;

temp=temp-next;

}

printf("%s专业总人数为: %d\n",tempzuanye,count);

break;

//缺省项

default: break;

}

printf("请选择选项:");

scanf("%d",choice6);

}

break;

//-----------------------------------------------------------------

default:free(p); break;

}

if((fp=fopen("d:\\学生证管理程序.dat","wb"))==NULL)

{

printf("文件无法打开!");

return;

}

p=studentlist;

while(p)

{

fwrite(p-data,sizeStu,1,fp);

p=p-next;

}

fclose(fp);

print_menu( );//打印菜单 进入循环

scanf("%d",choice);

}

}

用C语言编写一个简单的成绩管理系统

(ps:没有自己编译过)

//我写 C++比较多

#include stdio.h

#include stdlib.h

#include string.h

#include conio.h

#define TOTAL_STUD 1000

typedef struct stud {

char name[20];

int score;

} students[TOTAL_STUD],sorted[TOTAL_STUD];

void delstud (int i) {

students[i].name = "无效学生";

students[i].score = -999;

return;

}

#define show(listname,i) printf("%04d    %s    %d\n",i,listname[i].name,listname[i].score);

int cmpfunc (const void * a, const void * b)

{

return ( *(stud*)a.score - *(stud*)b.score );

} // 本段代码修改自此处

void run(int menu) {

switch (menu) {

case 1:

char uname[20];

int uid,uscore;

printf("请输入学生姓名:");

scanf("%s",uname);

printf("\n 请输入学生学号:");

scanf("%d",uid);

printf("\n 请输入学生成绩:");

scanf("%d",uscore);

students[uid].name = uname;

students[uid].score = uscore;

printf("\n\n插入成功!\n\n");

break;

case 2:

int delid;

printf("要删除谁?学号?");

scanf("%d",delid);

delstud(delid);

break;

case 3:

for (int i = 0; i TOTAL_STUD; i++) {

strcpy(sorted[i].name,students[i].name);

sorted[i].score=students[i].score;

}

qsort(sorted,TOTAL_STUD,sizeof(stud),cmpfunc);

printf("学号 姓名 分数\n");

for (int i = 0; i TOTAL_STUD; i++) {

if (sorted[i].score -900) show(sorted,i);

}

break;

case 4:

for (int i = 0; i TOTAL_STUD; i++) {

if (students[i].score -900) show(students,i);

}

break;

case 5:

int delid;

printf("要查询谁?学号?");

scanf("%d",delid);

show(students,delid);

break;

default:

printf("-- %d 无此功能。请重试。--",menu);

}

return;

}

int main() {

int key = -1;

for (int i = 0; i TOTAL_STUD; i++) {

delstud(i);

}

while (key != 0) {

printf("---成绩管理系统 V0.9 ---\n 请选择:\n1 -- 录入\n2 -- 删除\n3 -- 排序输出\n4 -- 不排序输出\n5 -- 查询\n0 -- 退出");

key=getch()-48;

if (key0) run(key);

else {

printf("谢谢使用!再见!");

return 0;

}

}

return 0;

}

c语言成绩管理系统

#includestdio.h

#includestdlib.h

#includestring.h

#define N 10

struct student

{

    char  num[5];

    char name[20];

    int  score;

};

struct student stu[N] = { { "1","张三",90 },{ "2","李四",87 },{ "3","王五",76 },{ "4","赵六",67 },{ "5","刘七",56 } };

int count = 5;

void insert(int i)   //输入学生具体信息的函数

{

    printf("第%d个学生的姓名:", i + 1);

    scanf("%s", stu[i].name);

    printf("\n");

    printf("第%d个学生的分数:", i + 1);

    scanf("%d", stu[i].score);

    printf("\n");

    count++;

    sprintf(stu[i].num,"%d",count);

}

void input()     //输入数据的函数

{

    system("color 3e");

    void menu();

    void insert(int i);

    int i, j, k, l, r;

    printf("您想输入几个学生的信息? (1-%d) [ ]\b\b", N - 5);

    scanf("%d", j);

    r = 5 + j;

    for (i = 5; ir; i++)

    {

        printf("\n输入第%d个学生的信息。\n", i + 1);

        insert(i);

    }

    do

    {

        printf("返回菜单请按1! [ ]\b\b");

        scanf("%d", k);

        if (k == 1)

        {

            system("cls");

            menu();

        }

        else

            l = 0;

    } while (l == 0);

}

void search()        //查询成绩的函数

{

    void menu();

    void printf_one(int k);

    struct student s;

    int i, k, w0, w1, w2;

    do

    {

        printf("请选择查找的类别:  1.姓名   2.学号   [ ]\b\b");

        scanf("%d", w1);

        if (w11 || w12)

        {

            printf("输入错误!请重新输入!\n");

            w2 = 1;

        }

        else

            w2 = 0;

    } while (w2 == 1);

    if (w1 == 1)  //按姓名查找

    {

        do

        {

            k = -1;

            do

            {

                printf("\n请输入您想查找的学生的姓名!\nName:");

                scanf("%s", s.name);

                for (i = 0; i5; i++)

                    if (strcmp(s.name, stu[i].name) == 0)

                    {

                        k = i;

                        s = stu[i];

                    }

                if (k == -1)  //没有找到

                {

                    int o;

                    printf("\n\n没有这个学生的信息!\n");

                    printf("What do you want to do?\n\t1.继续   2.返回菜单  [ ]\b\b");

                    scanf("%d", o);

                    if (o == 1)

                    {

                        system("cls");

                        search();   //继续查找

                    }

                    else

                    {

                        system("cls");

                        menu();   //返回菜单

                    }

                }

            } while (k == -1);

            system("cls");

            printf_one(k);     //查找到以后输出这个学生的信息

            printf("\nWhat do you want to do?\n\t1.继续   2.返回菜单   [ ]\b\b");

            scanf("%d", w0);

        } while (w0 == 1);

        system("cls");

        menu();   //不在查找时返回菜单

    }

    else    //按学号查找

    {

        do

        {

            k = -1;

            do

            {

                printf("\n请输入您想查找的学生的学号!\nNum:");

                scanf("%s", s.num);

                for (i = 0; i5; i++)

                    if (strcmp(s.num, stu[i].num) == 0)  //找到了

                    {

                        k = i;

                        s = stu[i];

                    }

                if (k == -1)    //没有找到

                {

                    int o;

                    printf("\n\n没有这个学生的信息!\n");

                    printf("What do you want to do?\n\t1.继续   2.返回菜单  [ ]\b\b");

                    scanf("%d", o);

                    if (o == 1)

                    {

                        system("cls");

                        search();  // 继续查找

                    }

                    else

                    {

                        system("cls");

                        menu();    //返回菜单

                    }

                }

            } while (k == -1);

            system("cls");

            printf_one(k);   //找到后输出这个学生的信息

            printf("\nWhat do you want to do?\n\t1.继续  2.返回菜单   [ ]\b\b");

            scanf("%d", w0);

        } while (w0 == 1);

        system("cls");

        menu();     //不在查找时返回菜单

    }

}

void xiugai()     //修改学生信息的函数

{

    void menu();

    void printf_one(int k);

    void xiugai_2();

    struct student s;

    int i,n,k,w0=1,w1,w2=0,o;

    do

    {

        k=-1;

        do

        {

            printf("\n请输入您想要修改的学生的姓名!Name:");

            scanf("%s",s.name);

            for(i=0;i5;i++)

            if(strcmp(s.name,stu[i].name) == 0)  //与其中一个学生匹配

            {

                k = i;

                s = stu[i];

            }

            if(k == -1)   // 没有找到输入的学生

            {                

                printf("\n\n没有这个学生的信息!\n");

                printf("What do you want to do?\n\t1.继续  2.返回菜单  [ ]\b\b");

                scanf("%d",o);

                if(o == 1)

                {

                    system("cls");

                    //xiugai();    //继续修改

                }

                else

                {

                    system("cls");

                    menu();    //返回菜单

                }

            }

        }while(k == -1);

        system("cls");

        printf("修改这个学生的分数:");

        scanf("%d", stu[k].score);

        printf("\n");

        printf_one(k);   //输出这个学生的信息

        printf("\nWhat do you want to do?\n\t1.继续  2.返回菜单  [ ]\b\b");

        scanf("%d", o);

        if (o != 1)

        {

            system("cls");

            menu();    //返回菜单

        }

    }while(1);

}

void printf_all()       //输出所有学生成绩的函数

{

    void menu();

    system("color 4e");

    int i, j, k;

    for (i = 0; iN; i++)

    {

        printf("学号:%s    姓名:%s    分数:%d\n", stu[i].num, stu[i].name, stu[i].score);

    }

    do

    {

        printf("返回菜单请按1  [ ]\b\b");

        scanf("%d", j);

        if (j == 1)

        {

            system("cls");

            menu();

        }

        else

        {

            k = 0;

        }

    } while (k == 0);

}

void printf_one(int k)  //输出某一个学生的信息的函数

{

    printf("学号: %s    姓名: %s   分数: %d", stu[k].num, stu[k].name, stu[k].score);

}

void Exit()   //退出系统的函数

{

    exit(0);

}

void menu()       //菜单函数

{

    system("color 2e");

    printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");

    printf("\n");

    int n, m;

    do

    {

        puts("\t\t********************菜单*********************");

        puts("\t\t*********************************************");

        puts("\t\t**************学生学籍管理系统***************");

        puts("\t\t*********************************************");

        puts("\t\t*********************************************");

        puts("\t\t*******        1--输入数据               ****");

        puts("\t\t*******        2--查询成绩               ****");

        puts("\t\t*******        3--修改成绩               ****");

        puts("\t\t*******        4--输出所有学生成绩       ****");

        puts("\t\t*******        5--统计及格和优秀的人数   ****");

        puts("\t\t*******        6--输出所有不及格学生的成绩 **");

        puts("\t\t*******        7--输出所有优秀学生姓名和成绩*");

        puts("\t\t*******        8--退出系统               ****");

        puts("\t\t*********************************************");

        printf("请选择服务种类(1~8): [ ]\b\b");

        scanf("%d", n);

        if (n1 || n8)

        {

            system("cls");

            printf("选择错误! 请重新选择!\n");

            m = 1;

        }

        else

        {

            m = 0;

        }

    } while (m == 1);

    switch (n)

    {

    case 1: system("cls"); input(); break;

    case 2: system("cls"); search(); break;

    case 3: system("cls"); xiugai(); break;

    case 4: system("cls"); printf_all(); break;

        //    case 5: system("cls"); tongji(); break;

        //    case 6: system("cls"); printf_all_bujige() break;

        //    case 7: system("cls"); printf_all_youxiu() break;

    case 8: Exit(); break;

    }

}

int main()

{

    menu();

    return 0;

}

C语言 学生成绩管理系统?

附录* 综合实例——学生成绩查询系统

这是一个用c语言编写的小软件——学生成绩查询系统,同学们可以将其作为一个综合实例,对其进行仔细的阅读和研究,体验编程处理问题的过程,加深对编程语言的理解,提高处理问题的综合能力。

1、程序的功能:

1)可以根据用户输入的输入、输出文件名,读入学生成绩,完成数据的初始化。

2)可以查询指定学生的成绩,可以是指定科目的成绩,也可以是全部科目的成绩。

3)友好退出。

2、使用说明:

1)将输入文件放到指定的目录下(即../student/)

图1

2)启动管理程序student.exe

3)在程序的使用界面,首先输入输入文件名和输出文件名,完成程序的初始化,操作如下图所示

图2

然后,按照按照提示,输入学生姓名和需要程序的成绩(此软件暂时只设置了五成成绩,同学们可以按照需要扩展)科目代码,也可以输入查询所有成绩的代码。程序成绩,如下图所示

图3

4)输入代码“q”退出程序。

3、程序代码

#include

#include

#include

FILE *f1,*f2;

char file1[20],file2[20],name[200][20],name1[15];

int n,m,data[200][10];

void init(){

int i,j;

char ch=' ';

printf("%20c欢迎使用班级成绩管理系统\n\n",ch);

printf("请输入输入和输出文件名(中间用一个空格隔开):\n");

scanf("%s %s",file1,file2);// 1)该条语句的功能是什么?

f1=fopen(file1,"r");

f2=fopen(file2,"w");

fscanf(f1,"%d%d",n,m); // 2)该条语句的功能是什么?

for(i=1;i=n;i++)

{

fscanf(f1,"%s",name[i]); // 3)该条语句的功能是什么?

data[i][0]=0; // 4)该条语句的功能是什么?没有这条语句可不可以?

for(j=1;j=m;j++)

{

fscanf(f1,"%d",data[i][j]);

data[i][0]+=data[i][j]; // 5)该条语句的功能是什么?

}

}

fprintf(f2,"name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n ");

for(i=1;i=n;i++)

{

fprintf(f2,"%s\t",name[i]);

for(j=1;j=m;j++)

fprintf(f2,"%d\t",data[i][j]);

fprintf(f2,"%d\n",data[i][0]);

}

fclose(f1);// 6)问什么可以在这关闭输入文件?

fclose(f2);

}

void search(char na[],char num){

int i=1,j;

while((i=n)(strcmp(na,name[i])!=0))i++;

if(i=n){

switch(num){

case '1':printf("%s的语文成绩为%d!\n",na,data[i][1]);break;

case '2':printf("%s的数学成绩为%d!\n",na,data[i][2]);break;

case '3':printf("%s的英语成绩为%d!\n",na,data[i][3]);break;

case '4':printf("%s的物理成绩为%d!\n",na,data[i][4]);break;

case '5':printf("%s的化学成绩为%d!\n",na,data[i][5]);break;

case 'a':

printf("%s的各科成绩为:\n",name[i]);

printf("语文\t数学\t英语\t物理\t化学\t总成绩\n");

for(j=1;j=m;j++)

printf("%d\t",data[i][j]);

printf("%d\n",data[i][0]);

break;

default: printf("没有这种查询方式,请确认后再次输入!\n");

}

}

else printf("查无此人,请确认后再次查询!\n");

printf("\n\n");

}

main(){

init();//数据初始化

printf("数据初始化结束!\n\n");

printf("------------------------------------------------\n\n");

char na[20];

char num;

while(1){ // 7)该条语句的功能是什么?

//scanf("%s%c%c",na,num,num); // 8)此处的输入可不可以用这条语句?

printf("请输入学生的姓名和要查询成绩的科目代码(中间用一个空格隔开):\n(1 语文 2 数学 3 英语 4 物理 5 化学 a 所有科目成绩 q 退出)\n");

scanf("%s",na);

if(strcmp(na,"q")==0)break; // 9)问什么要用这条语句strcmp(na,"q")==0?

scanf("%c%c",num,num); // 10)为什么用了两次num?

search(na,num);

printf("------------------------------------------------\n\n");

printf("\n请输入新的查询:\n\n");

}

system("pause");

}

这是我以前的一个程序,你改改吧,应该很好改