当前位置:首页 > 代码 > 正文

c语言成绩管理系统源代码(c语言程序设计成绩管理系统源代码)

admin 发布:2022-12-19 18:42 152


本篇文章给大家谈谈c语言成绩管理系统源代码,以及c语言程序设计成绩管理系统源代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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");

}

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

用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语言版数据结构题目“学生成绩管理系统”代码?

头文件:student.h

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#includestdio.h

#includestdlib.h

#includeconio.h

#includestring.h

#define INITIAL_SIZE 100

#define INCR_SIZE 50

#define NUM_SUBJECT 5

struct student_info

{

char number[15];

char name[20];

char gender[4];

float score[NUM_SUBJECT];

float sum;

float average;

int index;

};

typedef struct student_info StuInfo;

extern int numStus;

extern StuInfo* records;

extern char savedTag;

extern int arraySize;

extern char* subject[];

void handle_menu(void);

int menu_select(void);

void addRecord(void);

void modifyRecord(void);

void display(void);

void queryInfo(void);

void removeRecord(void);

void sortInfo(void);

int saveRecords(void);

int loadRecords(void);

void newRecords(void);

void quit(void);

void showTable(void);

int findRecord(char* target,int targetType,int from);

int getIndex(float sum);

void copyRecord(StuInfo* src,StuInfo* dest);

#endif // H_STUDENT_HH

各个文件:

主界面student.c

#include "student.h"

int numStus=0;

StuInfo *records=NULL;

char savedTag=0;

int arraySize;

char* subject[]={"语文","数学","英语","物理","化学"};

int main()

{

records=(StuInfo*)malloc(sizeof(StuInfo)*INITIAL_SIZE);

if(records==NULL)

{

printf("momory fail!");

exit(-1);

}

arraySize=INITIAL_SIZE;

printf("\n");

printf("\t****************************************\n");

printf("\t* 这是一个 *\n");

printf("\t* 学生成绩管理程序 *\n");

printf("\t* 可以多学生成绩进行管理 *\n");

printf("\t* 欢迎使用管理程序 *\n");

printf("\t****************************************\n");

printf("\n");

handle_menu();

}

void handle_menu(void)

{

for( ; ; ){

switch(menu_select())

{

case 0:

addRecord();

break;

case 1:

modifyRecord();

break;

case 2:

display();

break;

case 3:

queryInfo();

break;

case 4:

removeRecord();

break;

case 5:

sortInfo();

break;

case 6:

saveRecords();

break;

case 7:

loadRecords();

break;

case 8:

newRecords();

break;

case 9:

quit();

}

}

}

int menu_select()

{

char s[2];

int cn=0;

printf("\n");

printf("\t0. 增加学生信息\n");

printf("\t1. 修改学生信息\n");

printf("\t2. 显示学生信息\n");

printf("\t3. 查询学生信息\n");

printf("\t4. 删除学生信息\n");

printf("\t5. 对学生信息进行排序\n");

printf("\t6. 保存学生信息至记录文件\n");

printf("\t7. 从记录文件读取学生信息\n");

printf("\t8. 新建学生信息文件\n");

printf("\t9. 结束运行\n");

printf("\n\t左边数字对应功能选择,请选择0-9: ");

for(; ;)

{

gets(s);

cn=atoi(s);

if(cn==0(strcmp(s,"0")!=0)) cn=11;

if(cn0||cn9) printf("\n\t输入错误,重选0-9: ");

else break;

}

return cn;

}

void newRecords(void)

{

char str[5];

if(numStus!=0)

{

if(savedTag==1)

{

printf("现在已经有记录,选择处理已有记录的方法。\n");

printf("是否保存原来的记录?(Y/N)");

gets(str);

if(str[0]!='n'str[0]!='N')

saveRecords();

}

}

numStus=0;

addRecord();

}

void quit(void)

{

char str[5];

if(savedTag==1)

{

printf("是否保存原来的记录? (Y/N)");

gets(str);

if(str[0]!='n'str[0]!='N')

saveRecords();

}

free(records);

exit(0);

}

排序模块sort.c

#include"student.h"

void sortInfo(void)

{

char str[5];

int i,j;

StuInfo tmps;

if(numStus==0)

{

printf("没有可供排序的记录!");

return;

}

printf("请输入您希望进行的排序方式:\n");

printf("1.按学号进行升序排序\n");

printf("2.按学号进行降序排序\n");

printf("3.按名称进行升序排序\n");

printf("4.按名称进行降序排序\n");

printf("5.按名次进行升序排序\n");

printf("6.按名次进行降序排序\n");

printf("7.按错了,我并不想进行排序\n");

gets(str);

if(str[0]'1'||str[0]'6')return;

for(i=0;inumStus-1;i++)

{

for(j=i+1;jnumStus;j++)

{

if((str[0]=='1' strcmp(records[i].number,

records[j].number)0)||

(str[0]=='2' strcmp(records[i].number,

records[j].number)0)||

(str[0]=='3' strcmp(records[i].name,

records[j].name)0)||

(str[0]=='4' strcmp(records[i].name,

records[j].name)0)||

(str[0]=='5'

records[i].indexrecords[j].index)||

(str[0]=='6'

records[i].indexrecords[j].index))

{

copyRecord(records[i],tmps);

copyRecord(records[j],records[i]);

copyRecord(tmps,records[j]);

}

}

}

printf("排序已经完成\n");

savedTag=1;

}

保存数据模块:

save_load.c

#include "student.h"

int saveRecords()

{

FILE *fp;

char fname[30];

if(numStus==0)

{

printf("没有记录可存");

return -1;

}

printf("请输入要存的文件名(直接回车选择文件stu_info):");

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"stu_info");

if((fp=fopen(fname,"wb"))==NULL)

{

printf("不能存入文件!\n");

return -1;

}

printf("\n存文件…\n");

fwrite(records,sizeof(StuInfo)*numStus,1,fp);

fclose(fp);

printf("%d条件记录已经存入文件,请继续操作。\n",numStus);

savedTag = 0;

return 0;

}

int loadRecords(void)

{

FILE *fp;

char fname[30];

char str[5];

if(numStus!=0savedTag==0)

{

printf("请选择您是要覆盖现有记录(Y),还是将");

printf("读取的记录添加到现有记录之后(n)?\n");

printf("直接按回车则覆盖现有记录\n");

gets(str);

if(str[0]=='n'||str[0]=='N')

{//将读取的记录添加到现有记录之后

savedTag=1;

}

else

{

if(savedTag==1)

{//覆盖现有记录

printf("读取文件将会更改原来的记录,");

printf("是否保存原来的记录?(Y/n)");

gets(str);

if(str[0]!='n' str[0]!='N')

saveRecords();

}

numStus=0;

}

}

printf("请输入要读取的文件名(直接按回车选择文件stu_info):");

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"stu_info");

if((fp=fopen(fname,"rb"))==NULL)

{

printf("打不开文件!请重新选接\n");

return -1;

}

printf("\n取文件…\n");

while(!feof(fp))

{

//现在的数组空间不足,需要重新申请空间

if(numStus=arraySize)

{

records=realloc(records,(arraySize+

INCR_SIZE)*sizeof(StuInfo));

if(records==NULL)

{

printf("memory failed!");

exit(-1);

}

arraySize=arraySize+INCR_SIZE;

}

if(fread(records[numStus],

sizeof(StuInfo),1,fp)!=1)break;

//按照addRecord函数的方法,更新名次

records[numStus].index=

getIndex(records[numStus].sum);numStus++;

}

fclose(fp);

printf("现在共有%d条记录。",numStus);

return 0;

}

查询模块:

que_remv_modi.c

#include "student.h"

int findRecord(char* target,int targetType,int from)

{

int i;

for (i=from;inumStus;i++)

{

if (( targetType==0 strcmp(target,records[i].number)==0)||

(targetType==1 strcmp (target,records[i].name)==0 )||

(targetType==2 atoi(target)==records[i].index))

return i;

}

return -1;

}

void queryInfo (void)

{

char str[5];

char target[20];

int type;

int count;

int i,j;

if (numStus==0)

{

printf ("没有可供查询的记录!");

return;

}

while(1)

{

printf ("请输入查询的方式:(直接输入回车则结束查询)\n");

printf ("1. 按学号\n");

printf ("2.按姓名\n");

printf ("3.按名次\n");

gets(str);

if (strlen(str)==0)

break;

if (str[0]=='1')

{ printf ("请输入欲查询的学生的学号:");

gets(target);

type=0;

}

else if (str[0]=='2')

{

printf("请输入欲查询的学生的姓名:");

gets(target);

type=1;

}

else

{

printf ("请输入欲查询的学生的名次:");

gets(target);

type=2;

}

i= findRecord(target,type,0);

if(i==1)

{

//打印查询到的学生的成绩

showTable();

}

count = 0;

while (i !=-1)

{

count++;

printf("%s\t%s\t%s",records[i].number,

records[i].name,records[i].gender);

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

printf ("\t%.lf",records[i].score[j]);

printf ("\t%.lf\t%.lf\t%d\n",

records[i].sum,records[i].average,

records[i].index);

i = findRecord(target,type,i+1);

}

if (count==0)

printf ("没有符合条件的学生!\n");

else

printf ("一共找到了%d名学生的信息 \n\n",count);

}

}

/**********************

*删除指定的记录

***********************/

void removeRecord(void)

{char str[5];

char target[20];

int type;

int i,j;

int tmpi;

if(numStus==0)

{printf("没有可供删除的记录!");

return;

}

while(1)

{

printf("请输入如何找到欲删除的记录的方式;");

printf("(直接输入回车则结果移除操作)\n");

printf("1.按学号\n");

printf("2.按姓名\n");

printf("3.按名次\n");

gets(str);

if(strlen(str)==0)break;

if(str[0]=='1')

{printf("请输入学生的学号;");

gets(target);

type=0;

}

else if(str[0]=='2')

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

gets(target);

type=1;

}

else

{printf("请输入学生的名次;");

gets(target);

type=2;

}

i=findRecord(target,type,0);

if(i==-1) printf("没有符合条件的学生!\n");

while (i!=-1)

{showTable();

printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender);

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

printf("\t%.1f",records[i].score[j]);

printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index);

printf("确定要删除这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{numStus--;

tmpi=records[i].index;

//将后面的记录前移

for(j=i;jnumStus;j++)

{

copyRecord(records[j+1],records[j]);

}

//将名次排在被删记录后面的记录名次减1

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

{if(records[j].indextmpi)

records[j].index--;

}}

//去下一个符合条件的记录

i=findRecord(target,type,i+1);

}}

savedTag = 1;

}

/********************************************

* 将src指向的一条记录复制给dest指向的记录

*********************************************/

void copyRecord(StuInfo* src, StuInfo* dest)

{

int j;

strcpy(dest-number,src-number);

strcpy(dest-name,src-name);

strcpy(dest-gender,src-gender);

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

{

dest-score[j] = src-score[j];

}

dest-sum = src-sum;

dest-average = src-average;

dest-index = src-index;

}

/*********************************

* 修改指定学生的信息

**********************************/

void modifyRecord(void)

{

char str[5];

char target[20];

int type;

int i,j;

int tmpi;

float sum,mark;

int count=0; // 总分大于sum的人数

if(numStus==0)

{

printf("没有可供修改的记录!");

return;

}

while(1) {

printf("请输入如何找到欲修改的记录的方式: ");

printf(" (直接输入回车则结束移除操作) \n");

printf("1. 按学号\n ");

printf("2. 按姓名\n ");

printf("3. 按名次\n ");

gets(str);

if(strlen(str)==0) break;

if(str[0]=='1')

{

printf("请输入该学生的学号: ");

gets(target);

type=0;

} else if(str[0]=='1')

{

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

gets(target);

type=1;

} else

{

printf("请输入该学生的名次: ");

gets(target);

type=2;

}

i=findRecord(target,type,0);

if(i==-1) printf("没有符合条件的学生! \n");

while(i != -1)

{

showTable();

printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender);

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

printf("\t%.1f",records[i].score[j]);

printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index);

printf("确定要修改这个学生的信息吗?(y/n)");

gets(str);

if (str[0]=='y' || str[0]=='Y')

{

tmpi=records[i].index;

printf("下面请输入该学生的信息: \n");

printf("请输入学号: ");

gets(records[i].number);

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

gets(records[i].name);

printf("请输入性别 (0为女,1为男): ");

gets(str);

if (str[0]=='0')

strcpy(records[i].gender," 女 ");

else

strcpy(records[i].gender," 男 ");

sum=0;

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

{

printf("请输入%s成绩: ",subject[j]);

gets(str);

mark=(float)atof(str);

records[i].score[j]=mark;

sum+=mark;

}

records[i].sum=sum;

records[i].average=sum/NUM_SUBJECT;

// 将原来名次排被修改记录之后,而其sum小于等于

// 修改后记录的sum的记录的名次减1

// 将原来名次排在被修改记录之前或相同,而其sum

// 大于修改后记录的sum的记录的名次增1

count = 0;

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

{

if(j==i) continue;

if(records[j].indextmpi records[j].sumsum)

records[j].index--;

else if(records[j].index=tmpi records[j].sumsum)

records[j].index++;

if (records[j].sumsum)

count++;

}

records[i].index=count+1;

}

i=findRecord(target,type,i+1);

}

}

savedTag = 1;

}

增加学生信息模块:

add_disp.c

#include "student.h"

void showTable(void)

{

int j;

printf("学号\t姓名\t性别");

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

printf("\t%s",subject[j]);

printf("\t总分\t平均分\t名次\n");

}

void display(void)

{

int i,j;

if(numStus==0)

{

printf("没有可供显示的记录!");

return;

}

showTable();

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

{

printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender);

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

printf("\t%.1f",records[i].score[j]);

printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index);

if(i%20==0i!=0)

{

printf("输入任一字符后继续...\n");

getch();

printf("\n");

showTable();

}

}

}

int getIndex(float sum)

{

int i;

int count=0;

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

{

if(records[i].sumsum)

{

records[i].index++;

}

else if(records[i].sumsum)

{

count++;

}

}

return count+1;

}

void addRecord(void)

{

char str[10];

int i,j;

float mark,sum;

if(numStus==0)

printf("原来没有记录,现在建立新表\n");

else

printf("下面在当前表的末尾增加新的信息\n");

while(1)

{

printf("你将要添加一组信息,确定吗?(Y/N)");

gets(str);

if (str[0]=='n' || str[0]=='N')

break;

if(numStus=arraySize)

{

records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));

if(records == NULL)

{

printf("memory failed!");

exit(-1);

}

arraySize=arraySize+INCR_SIZE;

}

printf("请输入学号:");

gets(records[numStus].number);

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

gets(records[numStus].name);

printf("请输入性别(0为女,1为男):");

gets(str);

if(str[0]=='0')

strcpy(records[numStus].gender,"女");

else

strcpy(records[numStus].gender,"男");

sum=0;

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

{

printf("请输入%s成绩:",subject[j]);

gets(str);

mark=(float)atof(str);

records[numStus].score[j]=mark;

sum+=mark;

}

records[numStus].sum=sum;

records[numStus].average=sum/NUM_SUBJECT;

records[numStus].index=getIndex(sum);

numStus++;

}

printf("现在一共有%d条信息\n",numStus);

savedTag=1;

}

void dispaly(void)

{

int i ,j;

if(numStus==0)

{

printf("没有可供显示的记录!");

return;

}

showTable();

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

{

printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender);

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

printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index);

if(i%20==0i!=0)

{

printf("输入任一字符后继续...\n");

getch();

printf("\n\n");

showTable();

}

}}

可能有帮助。

c语言程序学生成绩管理系统源代码

头文件:::

#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 "head.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 "head.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(inumstus)

{

printf("没有查找所要的信息。\n");

return -1;

}

return i;

}

}

#include"head.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(inumstus)

{

fscanf(fp,"%s",stu[i].number);

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

fscanf(fp,"%s",stu[i].sex);

for(j=0;jnumsubs;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 "head.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;inumstus;i++)

for(j=0;jnumstus-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;inumstus;i++)

for(j=0;jnumstus-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;inumstus;i++)

for(j=0;jnumstus-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;inumstus;i++)

for(j=0;jnumstus-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;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[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;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include"head.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;inumstus;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;inumstus;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;inumstus;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;inumstus;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;inumstus;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"head.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(inumstus)

{

fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;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"head.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\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");

printf("\n\n");

getchar();

}

#include"head.h"

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用户输入*/

int i=-1,j;

if(numstus==0) /*没有记录返回*/

printf("没有可供修改的记录!");

while(i0)

{

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;jnumsubs;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;jnumstus;j++)

stu[j]=stu[j+1];

numstus--;

printf("删除成功!\n");

}

}

void count(student stud[])

{

int i,j;

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

{

stud[i].index=1;

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

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include "head.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(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

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

for(;inumstus;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;jnumsubs;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 "head.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(i0)

{

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();

}

自己一改就能用,给我加分哈!

C语言学生成绩管理系统代码

typedef struct student{

char name[MAX];

int num[MAX];

char sex[MAX];

int chinese;

int mathematic;

int english;

int computer;

struct student *next;

}

程序代码:

//原始密码是123456

#include"stdio.h"

#include"stddef.h"

#include"stddef.h"

#include"string.h"

#define MAX 10

typedef struct student{ /*定义结构体*/

char name[MAX]; /*姓名*/

int num[MAX]; /* 学号*/

char sex[MAX]; /*性别*/

int chinese; /*语文*/

int mathematic; /* 数学*/

int english; /*英语*/

int computer; /*计算机*/

struct student *next; /*结构体指针*/

}stu;

stu *head; /*头指针*/

void print() /*显示或打印函数*/

{

system("cls");

printf("\t\t\tScore Manage System\n"); /*成绩管理系统*/

printf("1Enter Record\t"); /*输入数据*/

printf("2Display\t"); /*显示*/

printf("3Insert\t"); /*插入数据*/

printf("4Quest\t"); /*访问数据*/

printf("5Update\t"); /*以前数据*/

printf("6Save\t"); /*保留数据*/

printf("7Fresh\t"); /*更新数据*/

printf("8Chinese Average\t"); /*语文平均成绩*/

printf("9Math Average\t"); /*数学平均成绩*/

printf("10English Average\t"); /*英语平均成绩*/

printf("11Computer Average\t"); /*计算机平均成绩*/

printf("12Quit\t\n"); /*退出*/

}

void cin(stu *p1) /*输入相关数据的函数*/

{ printf("Enter name:\n");

scanf("%s",p1-name);

printf("Enter num:\n");

scanf("%d",p1-num);

printf("Enter sex:\n");

scanf("%s",p1-sex);

printf("Enter score:\n");

printf("Enter chinese:\n");

scanf("%d",p1-chinese);

printf("Enter math:\n");

scanf("%d",p1-mathematic);

printf("Enter English:\n");

scanf("%d",p1-english);

printf("Enter Computer:\n");

scanf("%d",p1-computer);

}

stu *cindata() /*其他数据是否继续输入的函数*/

{ stu *p1,*p2;

int i=1;

char ch;

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

head=p1;

while(i)

{

cin(p1);

printf("Do you Want to Continue?yes or no"); /*是否继续输入数据*/

ch=getchar();

ch=getchar();

if(ch=='n'||ch=='N')

{ i=0;

p1-next=NULL;

}

else

{ p2=p1;

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

p2-next=p1;

}

}

return(p1-next);

}

stu *lookdata(stu *p1) /*查看数据的函数*/

{

while(p1!=NULL)

{ printf("Num:%d\t",p1-num);

printf("Name:%s\t",p1-name);

printf("Sex:%s\t",p1-sex);

printf("\n");

printf("Chinese:%d\t",p1-chinese);

printf("Math:%d\t",p1-mathematic);

printf("English:%d\t",p1-english);

printf("Computer:%d\t",p1-computer);

printf("\n");

p1=p1-next;

}

return p1;

}

void insert() /*通过比较学号来插入数据的函数*/

{ stu *p1,*p3,*p2;

char ch;

p1=head;

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

p3-next=NULL;

if(head==NULL){ head=p3; return;}

cin(p3);

while(p1!=NULL(p1-nump3-num)) /*通过学号的比较来插入*/

{ p2=p1;p1=p1-next;}

if(p2==head) {p3-next=head; head=p3; return;}

p3-next=p1;

p2-next=p3;

}

find(stu *p2) /*通过姓名查找查看数据的函数*/

{ char name[20];

int b=0;

printf("Enter the name of the student you want to find:"); /*通过姓名查看*/

scanf("%s",name);

while(p2!=NULL)

{if(strcmp(name,p2-name)==0)

{

printf("The data you want has be found\n");

printf(" Name:%s\t",p2-name);

printf("Num:%d\t",p2-num);

printf("sex%s\t",p2-sex);

printf("\n");

printf("Chinese:%d\t",p2-chinese);

printf("Math:%d\t",p2-mathematic);

printf("English:%d\t",p2-english);

printf("Computer:%d\t",p2-computer);

printf("\n");

b=1;

}

else if(b==0)

printf("sorry not find data!");

p2=p2-next;

}

if(b==1)

{

print();

printf("Find one\n");}

else

{print();

printf("Not find\n");

}

}

void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("not data!");

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-chinese;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-chinese)

max=p1-chinese;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-chinese)

min=p1-chinese;

}

printf("Chinese Average:%f",aver);

printf("Chinese Max:%f",max);

printf("Chinese Min:%f",min);

}

void maverage() /*求各学生数学平均分、最高和最低分成绩的函数*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("not data!");

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-mathematic;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-mathematic)

max=p1-mathematic;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-mathematic)

min=p1-mathematic;

}

printf("Mathe Average:%f",aver);

printf("Mathe Max:%f",max);

printf("Mathe Min:%f",min);

}

void eaverage() /*求各学生英语平均分、最高和最低分成绩的函数*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("not data!");

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-english;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-english)

max=p1-english;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-english)

min=p1-english;

}

printf("English Average:%f",aver);

printf("English Max:%f",max);

printf("English Min:%f",min);

}

void comaverage() /*求各学生计算机平均分、最高和最低分成绩的函数*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf("not data!");

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-computer;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-computer)

max=p1-computer;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-computer)

min=p1-computer;

}

printf("Computer Average:%f",aver);

printf("Computer Max:%f",max);

printf("Computer Min:%f",min);

}

update(stu *p2) /*通过姓名查找来更新数据*/

{

char name[10]; /*p2为指向结构体struct student的指针*/

int b=0;

printf("Enter The Name"); /*输入姓名*/

scanf("%s",name);

while(p2!=NULL)

{if(strcmp(name,p2-name)==0)

{

printf("Find you data\n");

scanf("Name:%s",p2-name);

scanf("Num:%s",p2-num);

scanf("Sex:%s",p2-sex);

scanf("Chinese:%d",p2-chinese);

scanf("Math:%d",p2-mathematic);

scanf("english:%d",p2-english);

scanf("Computer:%d",p2-computer);

printf("Success!");

b=1;}

else if(b==0)

printf("Sorry not Find data!");

p2=p2-next;}

if(b==0)

{print();

printf("Sorry not Find data!");

}

else

{

print();

printf("Finish!");

}

}

save(stu *p2) /*保留数据函数*/

{

FILE *fp;

char file[10];

printf("Enter file name"); /*输入文件名*/

scanf("%s",file);

fp=fopen(file,"w");

while(p2!=NULL)

{

fprintf(fp,"%s",p2-name);

fprintf(fp,"%s",p2-num);

fprintf(fp,"%s",p2-sex);

fprintf(fp,"%d",p2-chinese);

fprintf(fp,"%d",p2-mathematic);

fprintf(fp,"%d",p2-english);

fprintf(fp,"%d",p2-computer);

p2=p2-next;

}

fclose(fp);

}

char password[7]="123456"; /*定义初始密码*/

void main() /*主函数*/

{ int choice;

stu *p2;

char s[8];

int flag=0,i; /*标志项*/

int n=3;

do{ printf("Enter password:\n");

scanf("%s",s);

if(!strcmp(s,password)) /*进行密码匹配验证*/

{ printf("PASS\n\n\n");

flag=1;

break;

}

else{

printf("Error Enter again:\n");

n--;

}

}

while(n0);

if(!flag)

{printf("you have Enter 3 times!"); /*输入密码超过了3次!!*/

exit(0); /*自动退出*/

}

/*密码验证成功后进入的界面*/

printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n"); /*操作界面*/

printf("\t\tWelcom to the Mis\n");

printf("Author:-----\tClass:------\tNum:------\n"); /*作者,班级和号码*/

printf("Adress:HG\n"); /*地址*/

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

printf("\t\tEnter OP:\n");

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

printf("==============\t\t==============\n");

printf("==============\t\t==============\n");

printf("\t\tEnter the MIS yes or no\n"); /*问进入系统与否*/

scanf("%d",choice);

if(choice=='n'||choice=='N')

exit(1);

print();

while(1)

{

printf("Enter choice:");

scanf("%d",i);

if(i1||i13)

{

printf("Enter num from 1 to 13:\n"); /*再从1-13中进行选择*/

exit(1);

}

switch(i)

{ case 1:

p2=cindata(); /*其他数据是否继续输入的函数*/

break;

case 2:

p2=lookdata(head); /*查看数据的函数*/

break;

case 3:

insert(); /*通过比较学号来插入数据的函数*/

break;

case 4:

find(head); /*通过姓名查找查看数据的函数*/

break;

case 5:

update(head); /*通过姓名查找来更新数据*/

break;

case 6:

save(head); /*保留数据函数*/

break;

case 7:

print(); /*显示或打印函数*/

break;

case 8:

caverage(); /*求各学生语文平均分、最高和最低分成绩的函数*/

break;

case 9:

maverage(); /*求各学生数学平均分、最高和最低分成绩的函数*/

break;

case 10:

eaverage(); /*求各学生英语平均分、最高和最低分成绩的函数*/

break;

case 11:

comaverage(); /*求各学生计算机平均分、最高和最低分成绩的函数*/

break;

case 12:

; /*空操作*/

case 13:

exit(1); /*退出*/

break;

}

scanf("%d",i);

}

}

c语言学生成绩管理系统1000行源代码

/*首次使用,新建score.in文件,在里面打入0

可用程序

#includestdio.h

FILE *fin

main()

{

fin=fopen("score.in","r");

fprintf(fin,"0");

return 0;

}

完成

*/

#includestdio.h

#includestdlib.h

#includeconio.h

#includewindows.h

#includetime.h

#define n 999

FILE *fin;

main()

{

int a[n]={0},ori=0,i=0,b=0,add[n]={0},con=0,orix[n]={0},t=0,te[n]={0},TRUEt,ixi,fx,abc=0,sum,TURE,xx;

long long f[n]={0},tex[n]={0};

printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t学生成绩管理系统\n\t\t\t\t\t\t Please wait...");

Sleep(2000);system("cls");

int xp,xi;

fin=fopen("score.in","r+");

fscanf(fin,"%d",xp);

i=xp;

for(xi=1;xi=xp;xi++)

{fscanf(fin,"%d%d%d",f[xi],a[xi],te[xi]);te[xi]--;

printf("Id:%lld score:%d ranking:%d\n",f[xi],a[xi],te[xi]+1);

add[xi]=xi;orix[xi]=a[xi];

}

fclose(fin);

int TRUE1;

pe:

while(1)

{ TRUE1=1;i++;

printf("Id(输入-1:删除,输入-2:修改成绩,输入-3:删除所有内容,输入-4:保存到score.in并退出):");

scanf("%lld",f[i]);

for(sum=1;sumi;sum++)

if(f[sum]==f[i])

{system("cls");for(con=1;con=i;con++) {if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}TRUE1=0;i--;printf("Error with two same id.\n");continue;}

if(TRUE1==0)

continue;

if(f[i]==-3)

{int r;

for(r=0;rn;r++)

{

a[r]=0;ori=0;i=0;b=0;add[r]=0;con=0;orix[r]=0;t=0;te[r]=0;abc=0;

f[r]=0;tex[r]=0;

}

system("cls");

goto pe;

}

if(f[i]==-2)

{TURE=0;i--;

system("cls");

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

{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}

printf("修改学号_____________号的分数.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",f[con],a[con],te[con]+1);

scanf("%d",xx);

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

if(f[sum]==xx)

{

TURE=1;

printf("\n修改为___________.\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%d",a[sum]);

printf("\n修改成功!将在下一次输入后更新名次。\n\n");

continue;

}

if(TURE==0)

printf("No id is %d\n",xx);

continue;

}

if(f[i]==-4)

{

i--;

fin=fopen("score.in","r+");

fprintf(fin,"%d\n",i);

for(xi=1;xi=i;xi++)fprintf(fin,"%d %d %d\n",f[xi],a[xi],te[xi]+1);

for(xi=i+1;xi=xp;xi++)fprintf(fin," \n");

fclose(fin);

return 0;

}

if(f[i]==-1)

{TRUEt=0;

system("cls");

i--;

for(con=1;con=i;con++){if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}

printf("删除学号_____________号.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%lld",fx);

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

if(f[con]==fx)

{TRUEt=1;abc++;

f[con]=0;

a[con]=0;

tex[abc]=te[con];

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

if(te[ixi]te[con])

te[ixi]--;

te[con]=0;

break;}

system("cls");

for(con=1;con=i;con++){

if(a[con]==0)continue;

printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}

if(TRUE==0)

printf("No Id is %lld\n",fx);

continue;

}

system("cls");

for(con=1;coni;con++)

{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}

printf("Id:%lld score:",f[i]);

scanf("%d",ori);system("cls");

a[i]=ori;add[i]=i;orix[i]=a[i];

system("cls");

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

for(con=i;con=b;con--)

if(orix[con]orix[con-1])

{t=orix[con];orix[con]=orix[con-1];orix[con-1]=t;

t=add[con];add[con]=add[con-1];add[con-1]=t;}

for(con=1;con=i;con++) te[add[con]]=con;

for(con=1;con=abc;con++)

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

if(te[ixi]tex[con])

te[ixi]--;

if(te[i]==te[i-1])te[i]=0;

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

{if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}

}

return 0;

}

//求采纳

c语言成绩管理系统源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言程序设计成绩管理系统源代码、c语言成绩管理系统源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/18155.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载