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

作者&投稿:墨非 (若有异议请与网页底部的电邮联系)
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("

");
printf(" | 1. 增加学生记录 5.统计信息 |
");
printf(" | 2. 查询学生记录 6.打开文件 |
");
printf(" | 3. 修改学生记录 7.保存文件 |
");
printf(" | 4. 学生纪录排序 8.显示记录 |
");
printf(" | 0.退出系统 |
");
printf("

");
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("没有可被查找的记录
");
return -1;
}
else
{
printf("以何种方式查找?
1.学号2.姓名3.名次
");
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("没有查找所要的信息。
");
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("无法打开该文件
");
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("文件读取成功
");
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("(直接输入回车则结束查询操作)
");
printf("1.按照学号");
printf("2.按照姓名");
printf("3.按照名次
");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:
");
printf("1.升序排列");
printf("2.降序排列
");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:
");
printf("1.升序排列");
printf("2.降序排列
");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:
");
printf("1.升序排列");
printf("2.降序排列
");
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"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("没有可被查找的记录
");
else
{
while(1)
{
printf("下面将统计考试成绩
");
printf("请选择你要统计哪科的成绩 1.A2.B3.C4.D5.E
");
c1=getchar();
printf("一共有个%d记录
",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("科目A的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("科目A的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("科目A的平均分是 %5.2f
",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("科目B的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("科目B的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("科目B的平均分是 %5.2f
",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("科目C的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("科目C的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("科目C的平均分是 %5.2f
",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("科目D的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("科目D的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("科目D的平均分是 %5.2f
",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("科目E的最高分:
"); /*最高分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("科目E的最低分是:
"); /*最低分*/
printf("学号:%s 姓名:%s 分数:%.2f
",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("科目E的平均分是 %5.2f
",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数
");
}
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
",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("已成功存储!
");
display(stud,0,numstus-1);
numstus=0;
return 0;
}

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

}


void showtable()
{
printf("---------------------------------------------------------------------------------------
");
printf("学号姓名性别ABCDE总分平均分名次
");
printf("---------------------------------------------------------------------------------------
");
}


void display(student stud[],int n1,int n2)
{
int i;
showtable(); /*显示表头*/
for(i=n1;i<=n2;i++)
printf("%s%s%s%.2f%.2f%.2f%.2f%.2f%.2f%.2f%d
",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("本系统由计应精英一组亲情制作

");
printf("制作人员列表: (按比划)
");
printf("王庆斌张威
李智周在峰
杨凯胡杨
");
printf("

");
getchar();
}

#include"head.h"
#include
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("下面请重新输入学生的信息:
");
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)
");
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("删除成功!
");


}
}

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 "head.h"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/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("请输入学生信息:
");
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 "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(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:
");i=1; /*输入错误*/
}
}
printf("欢迎再次使用本系统。

");
display1();
}


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

代码如下:
#include#include#include#include#includetypedef struct examinee //考生信息结构{ char examno[20]; //准考证号char name[10]; //姓名char sex[4]; //性别short age; //年龄char examtype[10]; //报考科目}ElemType;
typedef struct Node //定义链表结点{ElemType data; //数据域struct Node *next; //指针域 }Node,*List,*position;
List make_empty( List L ); //创建一个带头结点的空表int is_empty( List L ); //测试链表是否是空表int is_last( position p, List L ); //测试当前位置是否是表尾position make_node( position p,int n ); //创建结点并输入考生信息void put_information( position p ); //是否输出该考生信息 void put_name_information( List L ); //输出姓名为xx的考生信息int put_pos_information( position p ); //输出该地址考生信息 void link_to_tail( List L, position p ); //将结点连接到表尾 int ciculation_make(); //循环创建考生信息 int judge_put_all(); //是否输出所有考生信息void put_all(List L); //输出所有考生信息。position find( List L ); //查找第一个姓名为xx的元素并返回位置position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置//int judge_delete_val(); //询问是否删除考生数据int delete_val( List L ); //删除指定考生信息并输出其信息void menu(List L); //菜单函数 List L;//position p;
intmain( void ) {List L = NULL; //定义头结点指针position p = NULL; //定义表工作指针L = make_empty( L ); //创建空表printf("★★考生报名管理程序★★
----------------------------------------
");menu(L);return 0;}
//创建一个带头结点的空表Listmake_empty( List L){L = ( List ) malloc (sizeof( Node ));if(NULL == L){printf("内存分配失败");exit( 1 );}L->next = NULL;//printf("空表创建成功。
");return L;}
//创建结点并输入考生信息positionmake_node( position p ,int n){if(n) //n为1是创建结点并输入,n为0是修改{p = ( position ) malloc ( sizeof ( Node ));p->next = NULL ;}printf("请输入考生准考证号:");gets(p->data.examno);printf("请输入考生姓名:");gets(p->data.name);do{printf("请输入考生性别,只能输入“男”或者“女”:");gets(p->data.sex);}while( 0 != strcmp( p->data.sex, "男" ) && 0 != strcmp( p->data.sex, "女" )); //判断性别是否有误printf("请输入考生年龄:");scanf("%hd",&p->data.age);getchar(); //如果把这句删掉,就“无法执行”下面的报考类别/*下面的do while用来判断报考类别是否输入有误*/do{printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");gets(p->data.examtype);}while( 0 != strcmp( "英语", p->data.examtype ) && 0 != strcmp( "数学", p->data.examtype ) && 0 != strcmp( "数据结构", p->data.examtype ));if(n){printf("报名成功
");}else{printf("修改成功
");}return p;}
//前插法; voidlink_to_tail( List L, position p){p->next = L->next;L->next = p;}
//查找第一个姓名为xx的元素并返回位置positionfind( List L ){position p = L->next;char name[10];printf("请输入你要查找的考生姓名:");gets(name);while( p != NULL && 0 != strcmp( p->data.name , name)){p=p->next;}return p;}//测试链表是否是空表intis_empty( List L ){return L->next == NULL;}//测试当前位置是否是表尾intis_last( position p, List L ){return p->next == NULL;}//输出姓名为xx的考生信息voidput_name_information( List L ){position p = find(L);if(p!=NULL){printf("您要查找的考生信息:
");printf("准考证号:%s姓名:%s性别:%s年龄:%hd报考科目:%s

",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);}else{printf("没有您要找的学生。
");}}//循环创建考生信息 intciculation_make(){int n = 2;do{printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);return n;}
//是否输出考生信息 voidput_information( position p ){int n=2;do{printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);if(n){printf("准考证号:%s姓名:%s性别:%s年龄:%hd报考科目:%s
",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);}}
//是否输出所有考生信息 int judge_put_all(){int n = 2;do{printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);return n;}
//输出所有考生信息voidput_all(List L){if(L->next == NULL){printf("现无考生报名!
");}else{position p=L->next;while( p != NULL ){printf("准考证号:%s姓名:%s性别:%s年龄:%hd报考科目:%s
",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);p=p->next;}}//getchar();}
//询问是否删除考生数据intjudge_delete_val(){int n = 2;
do{printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");scanf("%d",&n);getchar();}while( n != 0 && n != 1);return n;}
//查找第一个姓名为xx的元素并返回其直接前驱的位置positionfind_previous( List L ){position q = L;position p = L->next;char name[10];printf("请输入你要查找的考生姓名:");gets(name);while( p != NULL && 0 != strcmp( p->data.name , name)){q=p;p=p->next;}if( p != NULL ){return q;}elsereturn p;}
//删除指定考生信息并输出其信息intdelete_val(List L){int n=2;position q=NULL;position p=find_previous( L ); //返回考生信息地址if( NULL == p ){printf("你要删除的考生不存在
");return 0;}else{q = p->next;p->next = q->next;printf("删除成功。
删除的考生信息为:
");printf("准考证号:%s姓名:%s性别:%s年龄:%hd报考科目:%s
",q->data.examno,q->data.name,q->data.sex,q->data.age,q->data.examtype);free(q);return 1;}
}
//输出该地址考试信息 intput_pos_information( position p ){if(p != NULL ){printf("准考证号:%s姓名:%s性别:%s年龄:%hd报考科目:%s

",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);return 1;}else{printf("没有您要查找的学生。");return 0;}} //菜单函数voidmenu(List L){printf(" a. 考生报名入口
");printf(" b. 查询考生信息
");printf(" c. 修改考生信息
");printf(" d. 删除考生信息
");printf(" e. 全部考生信息
");printf(" f. 程序作者信息
");printf(" g. 退出程序
");char n='h';while(n != 'g'){do //确定正确输入{printf("请通过字母序号选择功能:");n = getchar();getchar();putchar('
');if( n 'g'){printf("错误的字母序号。
");}}while( n 'g' );switch (n){case 'a':{printf("请输入报名考生信息:
");position p = make_node( p, 1 ); //创建新结点link_to_tail( L, p ); //将新结点连接到表上put_information( p ); //是否输出该考生信息putchar('
');}break;
case 'b':{put_name_information( L );putchar('
');}break;
case 'c':{int n=0;position p = NULL;printf("您正在进行修改操作。
");p = find(L);n = put_pos_information( p );if(n){make_node( p , 0 );put_information( p ); //是否输出该考生信息}putchar('
');}break;
case 'd':{printf("您正在进行删除操作。
");delete_val( L );putchar('
');}break;
case 'e':{put_all( L );putchar('
');}break;
case 'f':{printf(" 修改日期 版本号 修改人 修改内容
");printf(" --------------------------------------------------------
");printf(" 2018.6.19 v2.0 陈百川 增加主菜单
");printf(" 2018.6.23 v3.0 陈百川 增加生成文件功能

");printf(" 该版本号为v2.0
");putchar('
');}break;
default:break;}}printf(" 感谢本次使用,祝您生活愉快。");getch(); }

扩展资料:C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
参考资料:百度百科——C语言

/*首次使用,新建score.in文件,在里面打入0
可用程序
#include<stdio.h>
FILE *fin
main()
{
fin=fopen("score.in","r");
fprintf(fin,"0");
return 0;
}
完成
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.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;sum<i;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;r<n;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;con<i;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;
}
//求采纳

#include#include#include#include#include#defineMAX80voidinput();voidsort();voiddisplay();voidinsert();voiddel();voidaverage();voidfind();;voidread();;voidaverage();voidmodify();intnow_no=0;structstudent{intno;charname[20];charsex[4];floatscore1;floatscore2;floatscore3;floatsort;floatave;floatsum;};voidaverage()/*求平均数*/{inti;for(i=0;i

我这里有一份完整的学生信息管理系统源代码,限于知道篇幅,这里先粘贴出定义声明部分代码,以及运行结果截图。

详细内容私信联系~~

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
#define status int
 
#define NAME 30 /*各类名称字数上限*/
#define STU 100 /*学生人数上限*/
#define SUB 10 /*课程数上限*/
 
#define PASS 60 /*及格分数下限(含)*/
#define LA 85 /*A级别分数下限(含)*/
#define LB 70 /*B级别分数下限(含)*/
#define LC 60 /*C级别分数下限(含)*/
#define LD 0 /*D级别分数下限(含)*/
 
typedef struct record {
    float score; /*成绩分数*/
    char level; /*成绩分数段*/
} record;
 
typedef struct student {
    int id; /*id*/
    int no; /*学号*/
    char name[NAME]; /*姓名*/
    record scores[SUB]; /*各门课成绩分数*/
    float totalScore; /*总分*/
    float averageScore; /*平均分*/
    char totalLevel; /*总分数段*/
    int ranking; /*名次*/
} student;
 
char subject[SUB][NAME]; /*课程名称*/
 
 
/**********************以下为函数声明**********************/
status initProgram (student stu[], int *stuNum, int *subNum, int mode); /*初始化,含测试、程序写定课程、自定义课程3种模式*/
void initResult (student stu[], int *stuNum, int *subNum, int mode); /*判断初始化结果*/
status inputTestStuInfo (student stu[], int *stuNum, int *subNum); /*测试数据*/
status defSubject (int *subNum, char subject[SUB][NAME]); /*自定义各门课程*/
 
int stuInfoEmpty (student stu[], int stuNum); /*学生信息判空*/
status stuInfoEmptyOp (student stu[], int stuNum); /*学生为空时的处理*/
int noRepeated (student stu[], int stuNum, int no); /*学号判重*/
 
status printInputStuInfoheader (int subNum); /*输出录入学生信息之表头*/
status inputStuInfo (student stu[], int *stuNum, int subNum, int stuIndex, int ismod); /*录入单个学生信息*/
status inputAllStuInfo (student stu[], int *stuNum, int subNum); /*录入全部学生信息*/
 
char getScoreLevel (float score); /*计算分数段*/
status calcStuInfo (student stu[], int stuIndex, int subNum); /*计算处理单个学生信息*/
status calcAllStuInfo (student stu[], int stuNum, int subNum); /*计算处理全部学生信息*/
 
status printStuInfoheader (int subNum, int inclRanking); /*输出学生信息之表头*/
status printStuInfo (student stu[], int stuIndex, int subNum, int inclRanking); /*输出单个学生信息*/
status printAllStuInfo (student stu[], int stuNum, int subNum, int inclRanking); /*输出全部学生信息*/
 
int compareStuInfo (student stu[], int stuNum, int rsIndex[], int inclNo, int no, int inclName, char name[]); /*按学号、姓名查找学生信息,返回结果个数*/
status findStuInfo (student stu[], int stuNum, int subNum); /*查找符合条件的学生信息并输出*/
 
status deleteStuInfoByIndex (student stu[], int *stuNum, int subNum, int stuIndex); /*删除指定位置的学生信息*/
status delStuInfo (student stu[], int *stuNum, int subNum); /*删除学生信息*/
 
status modifyStuInfoByIndex (student stu[], int *stuNum, int subNum, int stuIndex); /*修改指定位置的学生信息*/
status modStuInfo (student stu[], int *stuNum, int subNum); /*修改学生信息*/
 
status descSortAndRanking (student stu[], int stuNum, int subNum); /*按总分降序排列并录入名次*/
 
status printStatistics (student stu[], int stuNum, int subNum); /*输出统计数据*/
 
int getCommand (void); /*输入命令编号*/
status printMenuText (void); /*打印菜单文本*/
status runMeun (student stu[], int *stuNum, int subNum); /*运行菜单*/
status pressAnykeyToContinue (void);  /*按任意键继续*/
/**********************以上为函数声明**********************/

主界面

输入学生信息

输入学生信息-失败

输出学生信息

查找学生信息

删除学生信息

修改学生信息

修改学生信息-成功

按成绩降序排列并输出名次

输出统计数据



为什么要1000行? 这简单的系统 讲道理500行都够呛

哇...0分...
采纳我的吧。。


c语言学生管理系统学生成绩管理系统 功能: 每个学生信息为一个记录,包...
float sum; \/*总成绩*\/}stu[100];int n; \/*声明一个全局变量*\/void main() \/*主函数即用户的操作界面*\/{ system("color 1E"); \/*设计文本颜色*\/ int b,flag=0; \/*声明局部变量*\/ while(1) \/*循环输出以下信息*\/ { printf("\\n\\t\\t\\t欢迎来到学生成绩管理系统!\\n"); printf("\\n\\t\\...

c语言编学生成绩管理
某班学生成绩管理,包括以下功能:1.从键盘输入包括学号、姓名、各门课程成绩,并将其保存在磁盘文件student里2.打开文件后,计算每个人的总分和平均分,排序并保存3.具有在文件中进行... 某班学生成绩管理,包括以下功能:1.从键盘输入包括学号、姓名、各门课程成绩,并将其保存在磁盘文件student里2.打开文件后,计算...

用C语言编写一个简单的学生成绩管理的程序
start: printf("\\n\\t\\t\\t欢迎使用学生成绩管理系统\\n");\/*一下为功能选择模块*\/ do { printf("\\n\\t\\t\\t\\t1.录入学员信息\\n\\t\\t\\t\\t2.显示学员信息\\n\\t\\t\\t\\t3.成绩排序信息\\n\\t\\t\\t\\t4.添加学员信息\\n\\t\\t\\t\\t5.删除学员信息\\n\\t\\t\\t\\t6.修改学员信息\\n\\t\\t\\t\\t...

求c语言程序成绩管理系统代码。各路大哥大姐帮帮忙。谢谢
需求说明:用C语言设计并编写一个学生信息管理系统,要求至少存放10名学生的信息。每个学生必须有的信息有:序号、姓名、成绩1、成绩2。按照下面的要求完成程序,其中函数名已经给定,... 需求说明:用C语言设计并编写一个学生信息管理系统,要求至少存放10名学生的信息。每个学生必须有的信息有:序号、姓名、成绩1、成绩2...

c语言 学生管理系统设计
include <stdio.h> include <string.h> include <stdlib.h> define MAX 1000 \/*定义学生成绩信息结构*\/ struct stu { char id[8];char name[8];double Chinese;double Math;double English;double average;double total;};\/*学生结构数组,用于存储学生成绩信息*\/ struct stu students[MAX];\/*...

c语言课程设计之学生成绩管理系统设计的程序
printf("您好,欢迎使用学生成绩管理系统\\n\\n因为您是第一次使用,请输入科目名称(三科)\\n\\n");p=fopen("c:\\\\kemu.txt","w");printf("输入课程1名称:");scanf("%s",frist[0].name);fprintf(p,"%s\\n",frist[0].name);printf("输入课程2名称:");scanf("%s",frist[1].name);fpr...

C语言 学生成绩系统 C++
printf("\\n\\t\\t\\t 使用学生管理系统1.0\\n\\n\\t\\t\\t\\t\\t---景炎中学计算机组WJQ\\n");printf("***MENU***\\n");printf("\\t\\t\\t1. 输入学生成绩记录 Enter the record\\n"); \/*输入学生成绩记录*\/ printf("\\t\\t\\t2. 显示 Print the record\\n"); \/*显示*\/ printf...

学生成绩管理系统(C语言)
int score[NUM_SUBJECT]; \/*各门学科成绩*\/ float total; \/*总分*\/ float average; \/*平均分*\/ int order; \/*名次*\/ }STUDENT;int REC_NUM=0; \/*学生记录数*\/ char*subject[]={"数学","电脑","物理","电工学"};char*menu[]={"***MENU***","1. Enter ne...

c语言编写一个成绩管理系统
start: printf("\\n\\t\\t\\t欢迎使用学生成绩管理系统\\n");\/*一下为功能选择模块*\/ do { printf("\\n\\t\\t\\t\\t1.录入学员信息\\n\\t\\t\\t\\t2.显示学员信息\\n\\t\\t\\t\\t3.成绩排序信息\\n\\t\\t\\t\\t4.添加学员信息\\n\\t\\t\\t\\t5.删除学员信息\\n\\t\\t\\t\\t6.修改学员信息\\n\\t\\t\\t\\t...

编程如何用C语言编写一个学生成绩管理系统程序
2018-04-27 用C语言编程实现一个简单的学生成绩管理系统 4 2012-07-23 怎样用c语言编写一个学生成绩管理系统 4 2015-01-15 怎么用c语言编写一个学生成绩管理系统啊?急…… 2 2009-07-21 用C语言写个学生成绩管理系统程序 2013-06-16 用C语言编写一个学生管理系统。 227 2015-07-14 用C语言编程...

大同市13724043045: C语言学生成绩管理系统 求源代码 要求如下 -
苍美六神: 我来回答 以下是平均分 最高分 总分的代码..../* Note:Your choice is C IDE */ #include "stdio.h" void main() { int n=1, j,chi,eng,mat,sum,ave,most=0; printf("请输入班级人数"); scanf("%d",&j); do{ printf("请输入三门成绩,语文 ...

大同市13724043045: 用C语言编写一个学生成绩管理系统. -
苍美六神: #include<stdio.h> #include<stdlib.h> #include<malloc.h> #define A 10 //线性表初始分配量 #define B 10 //线性表每次增量量 #define C 2 typedef struct { int no; //学号 char name[10]; //姓名 float score[3]; //三门课的成绩 }Student; typedef struct ...

大同市13724043045: 用c语言编写的学生成绩管理系统. 学生成绩管理系统要求实现如下功能:(1)录入学生基本信息,包含:学生 -
苍美六神: #include "stdio.h" /*I/O函数*/ #include "string.h" /*字符串函数*/ #include "stdlib.h" #define N 100 /*定义常数*/ typedef struct student {int order;char num[11];char name[10];char sex[3];int score[3];float avr; }STU; void fin();/*成绩录...

大同市13724043045: 基于C语言的学生成绩管理系统
苍美六神: DOS界面的学生管理系统,可以保存文件(以便下次修改),功能齐全.源代码如下(原创) #include "stdafx.h" #include "stdio.h" #include "string.h" #include "stdlib.h" #define DR 100struct days { int year; int mon; int day; }; struct ...

大同市13724043045: c语言编写学生成绩管理系统 -
苍美六神: #include <stdio.h> void main() { /*输入资料*/ int student[5][4],i; for (i=0; i<=4; i++); scanf("%d,%d,%d \n",student[i][0],student[i][1],student[i][2],student[i][3]) /*平均分*/ for (i=0; i<=4; i++); printf("%f",(float)((student[i][1]+student[i][2]+student[i][3]...

大同市13724043045: 用C语言编写学生成绩管理系统
苍美六神: #include<stdio.h> #include<malloc.h> #define NULL 0 #define LEN sizeof(struct student) #define s_in &p1->lesson.lesson_1,&p1->lesson.lesson_2,&p1->lesson.lesson_3,&p1->lesson.lesson_4 #define s_ou p1->lesson.lesson_1,p1->lesson....

大同市13724043045: 学生成绩管理系统(C语言,文件和数组) -
苍美六神: #include #include #include #include #include #include #include #include using namespace std; /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; }; /*声明学生数组及学生数量*/ ...

大同市13724043045: 用C语言写一个成绩管理系统 -
苍美六神: #include /* 1.根据学生信息定义一个结构体类型,再说明一个该结构体类型的数组.*/ struct stu_info{char stuNo[10];/* No */char stuName[30];/* Name */float stuScore[3];/* the three scores */float aveScore; /* average score */float totalScore; ...

大同市13724043045: 用C语言做一个学生成绩管理系统 输入学生人数,录入学生成绩 -
苍美六神: #include <algorithm>

大同市13724043045: C语言编写学生成绩管理系统
苍美六神: #include "stdio.h" /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; }; /*声明学生数组及学生数量*/ struct Student students[1000]; int num=0; /*求平均值*/ float Avg(struct ...

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