C语言链表在统计班级成绩的应用

C语言链表在统计班级成绩的应用
C语言链表在统计班级成绩的应用

【问题描述】

学期考试结束,统计某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。

【实现提示】

考试课程有:高等数学、物理、外语、C语言4门课程。

录入所有同学的成绩,对数据进行处理,输出所要求的内容,程序的功能主要包括以下几个方面:

①输入成绩

②修改记录

③删除记录

④输出成绩并按平均成绩排序,并标记平均分不及格的学生。

⑤界面提供上述功能选择。

代码#include

#include

#include

int menu=0;

typedef struct CLASS{

char name[15];

int maths;

int physics;

int english;

int c_language;

struct CLASS* next;

}linkNode;

struct AVERAGE{

char name[15];

float per_average;

struct AVERAGE* aver_next;

};

typedef struct AVERAGE* Average;

typedef linkNode* Class;

Average create_average_list(Class info_list_head);

Class add_student_info(Class head);

Class delete_student_info(Class head,char *stu_name);

void modify_student_info(Class head,char *stu_name);

void sort_average(Average);

void print_student_info(Class head);

void print_average_score(Average head);

void caculate_class_average(Class info_list_head);

void main_menu(void);

int main(void)

{

linkNode * link_list_head=NULL;

struct AVERAGE *pAver_head=NULL;

char *student_name;

while(1)

{

switch(menu){

case 0:{

main_menu();

}break;

case 1:{

link_list_head = add_student_info(link_list_head);

menu =0;

}break;

case 2:{

if(link_list_head!=NULL)

{

printf("If you want to modify student's information,please input the name: ");

scanf("%s",student_name);

}

modify_student_info(link_list_head,student_name);

menu =0;

}break;

case 3:{

if(link_list_head!=NULL)

{

printf("If you want to delete student's information,please input the name: ");

scanf("%s",student_name);

}

link_list_head=delete_student_info(link_list_head,student_name);

menu =0;

}break;

case 4:{

print_student_info(link_list_head);

menu =0;

}break;

case 5:{

pAver_head=create_average_list(link_list_head);

if(pAver_head==NULL)

{

menu =0;

break;

}

sort_average(pAver_head);

print_average_score(pAver_head);

caculate_class_average(link_list_head);

menu =0;

}break;

default:{

menu =0;

}break;

}

}

}

Average create_average_list(Class info_list_head)

{

Average aver_list_head,aNode,newNode;

Class cNode;

cNode=info_list_head->next;

if(info_list_head==NULL)

{

printf("The link list of student's information is not exist!\n");

return NULL;

}

aNode=aver_list_head=(Average)malloc(sizeof(struct AVERAGE));

aNode->aver_next=NULL;

while(cNode!=NULL)

{

newNode=(Average)malloc(sizeof(struct AVERAGE));

strcpy(newNode->name,cNode->name);

newNode->per_average=(float)(((cNode->maths)+(cNode->physics)+

(cNode->english)+(cNode->c_language))/4.0);

aNode->aver_next=newNode;

newNode->aver_next=NULL;

aNode = newNode;

cNode=cNode->next;

}

return aver_list_head;

}

Class add_student_info(Class head)

{

linkNode *pTail =NULL,*pNew=NULL;

int cnt;

int len;

if(head==NULL)

{

pTail =head = (Class)malloc(sizeof(struct CLASS));

pTail->next=NULL;

}

else

{

pTail = (Class)malloc(sizeof(struct CLASS));

pTail =head;

}

printf("please input student's number of people: ");

scanf("%d",&len);

while( pTail !=NULL)

{

if(pTail->next==NULL)

{

for(cnt=0;cnt

{

pNew = (linkNode *)malloc(sizeof(struct CLASS));

printf("please input student's name ande score in correct order by :\n");

printf("name math physical English C_language\n");

scanf("%s %d %d %d %d",pNew->name ,& pNew->maths,

& pNew->physics,&pNew->english,& pNew ->c_language);

pNew->next=NULL;

pTail->next=pNew;

pTail = pNew;

}

printf("add student's information successfully!\n");

return head;

}

pTail =pTail ->next;

}

}

Class delete_student_info(Class head,char *stu_name)

{

Class pNode=NULL,temp=NULL;

pNode = head->next;

if( head==NULL)

{

printf("The link list of student's information is not exist!\n");

return NULL;

}

else

{

while(pNode!=NULL)

{

if(strcmp(pNode->name,stu_name)==0)

{

if(pNode==head->next)

{

if(pNode->next==NULL)

{

head->next=pNode->next;

printf("delete student's information successfully!\n");

return NULL;

}

head->next=pNode->next;

printf("delete student's information successfully!\n");

return head;

}

else if(pNode->next==NULL)

{

temp->next=NULL;

printf("delete student's information successfully!\n");

return head;

}

else

{

temp->next=pNode->next;

printf("delete student's information successfully!\n");

return head;

}

}

else if(pNode->next==NULL)

{

printf("System not found student's information by your input it just\n");

return head;

}

temp=pNode;

pNode= pNode->next;

}

}

}

void modify_student_info(Class head,char *stu_name)

{

Class cNode;

cNode=head->next;

if(head==NULL)

{

printf("The link list of student's information is not exist!\n");

return;

}

while(cNode!=NULL)

{

if(strcmp(cNode->name,stu_name)==0)

{

printf("please input you need to modify student's information in correct order by :\n");

printf("math physical English C_language\n");

scanf("%d %d %d %d",& cNode->maths,

& cNode->physics,&cNode->english,&cNode->c_language);

printf("modify student's information successfully!\n");

break;

}

else if(cNode->next==NULL)

{

printf("System not found student's information by your input it just\n");

}

cNode=cNode->next;

}

}

void sort_average(Average aver_list_head)

{

Average aNode1,aNode2;

char name_temp[10];

float aver_temp;

int cnt=0,num=0;

aNode1=aver_list_head->aver_next;

if(aver_list_head==NULL)

{

printf("The link list of score average is not exist!\n");

return;

}

while(aNode1!=NULL)

{

aNode2=aNode1;

while(aNode2!=NULL)

{

aNode2=aNode2->aver_next;

cnt++;

}

aNode2=aNode1;

for(num=0;num

{

aNode2= aNode2->aver_next;

if((aNode1->per_average)<(aNode2->per_average ))

{

strcpy(name_temp ,aNode1->name);

aver_temp = aNode1->per_average;

strcpy(aNode1->name ,aNode2->name);

aNode1->per_average = aNode2->per_average;

strcpy(aNode2->name , name_temp);

aNode2->per_average = aver_temp;

}

}

cnt=0;

aNode1=aNode1->aver_next;

}

}

void caculate_class_average(Class info_list_head)

{

Class cNode;

int maths_sum=0,physics_sum=0,english_sum=0,c_language_sum=0;

float total_people;

cNode=info_list_head->next;

if(info_list_head==NULL)

{

printf("The link list of student's information is not exist!\n");

return;

}

while(cNode!=NULL)

{

maths_sum=maths_sum+cNode->maths;

physics_sum=physics_sum+cNode->physics;

english_sum=english_sum+cNode->english;

c_language_sum=c_language_sum+cNode->c_language;

cNode=cNode->next;

total_people++;

}

printf("maths_average=%.2f physics_average=%.2f english_average=%.2f c_language_average=%.2f \n",

(float)(maths_sum/total_people),(float)(physics_sum/total_people),(float)( english_sum/total_pe ople),

(float)(c_language_sum/total_people));

}

void print_student_info(Class head)

{

linkNode *pNode = head->next;

if(head==NULL)

{

printf("The link list of student's information is not exist!\n");

return;

}

while(pNode!=NULL)

{

printf("%s %d %d %d %d\n",pNode->name,pNode->maths,pNode->physics,

pNode->english,pNode->c_language);

pNode = pNode->next;

}

}

void print_average_score(Average head)

{

Average pNode = head->aver_next;

if(head==NULL)

{

printf("The link list of student's information is not exist!\n");

return;

}

while(pNode!=NULL)

{

printf("%s %.2f",pNode->name,pNode->per_average);

if((pNode->per_average)<60.0)

printf(" fail \n");

else

printf("\n");

pNode = pNode->aver_next;

}

}

void main_menu(void)

{

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

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

printf("Main menu direction: \n");

printf("0 main menu interface\n");

printf("1 enter student's information\n");

printf("2 modify student's information\n");

printf("3 delete student's information\n");

printf("4 print student's score information\n");

printf("5 print everyone's average score and class's average score\n");

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

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

printf( "please input your choice:");

scanf("%d",&menu);

printf( "\n");

}

C语言课程设计-学生成绩管理系统-完整版

#include<> #include<> #include<> #include<> /* strcmp函数原型包含*/ #define N 100 /*定义最大学生人数为100*/ struct student /*学生结构体定义*/ { char no[11]; /*学号,10位*/ char name[10];/*姓名,3个汉字*/ char grade[10];/*班级*/ char pro[20];/*专业*/ float score[5];/*储存5门功课的成绩*/ float ave;/*储存平均分*/ int year;/*入学年*/ }stu[N]; int num; void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/ void init(); /*系统初始化函数*/ void newfile(); /*建立新的数据文件*/ void read1(); /*从数据文件中读取数据*/ void weihu(); /*维护界面函数*/ void new1(); /*新增一个学生成绩函数*/ void xiugai(); /*修改学生成绩*/ void xgcj(int); /*修改成绩*/

void delete1(); /*删除学生信息函数*/ void tongji(); /*统计界面函数*/ void tongji1(); /*计算每个学生平均分*/ void tongji2(); /*计算每门课程的平均分*/ void paixu1(); /*排序函数*/ void paino(); /*按学号排序*/ void paiave(); /*按平均分排序*/ void paidkcj(); /*按单科成绩排序*/ void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩*/ void find1(); /*查找界面函数*/ int find(char sno[]); /*按学号查找*/ int findname(char cname[]);/*按姓名查找*/ void findyear(int cyear); /*按入学年查找*/ void save(); /*保存文件*/ void stop(); /*停顿函数*/ void stop() /*停顿函数(公共函数)*/ { printf("Press Any Key To Continue...\n"); getchar(); } void output() /*输出学生成绩函数(公共函数)*/ { int i,j;

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

C 语言程序设计作业 一设计项目:学生成绩管理系统 二总体设计: 2:模块功能说明: 1 输入功能:输入学生姓名学号及成绩。 2 查看功能:输出姓名学号及各科成绩。 3 查询功能:通过学号查询学生姓名及各科成绩。 4 统计功能:统计班级学生及格率,优秀率,各个学生成绩方差等。 5 修改功能:通过输入学号修改指定学生的错误信息。 6添加功能:添加学生信息。 7删除功能:通过输入学号输入指定学生信息。 8保存功能:将学生信息保存。 9 退出系统。 3:主要函数之间的调用关系及各自功能: 主要函数的函数原型 void inputscore(void); void savescore(void); void avergescore(void); void modifyscore(void); void lookscore(void); void searchscore(void); void statistic(void); void add(void); void modify(void);

void delscore(void); void menu(void); i.在菜单界面输入1,调用函数inputscore( )实现输入学生成绩信息功能。ii.在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。 出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计 算。 iii.在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能。 iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生名单。 v.在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能vi.在菜单界面输入6,调用add()函数实现添加学生成绩。 vii.在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。 viii.在菜单界面输入8,调用savescore()函数将学生成绩信息保存。 ix.在菜单界面输入9,退出成绩管理系统。

学生成绩管理系统代码c语言编写

/* Note:Your choice is C IDE */ #include "stdio.h" #include "stdlib.h" #include "string.h" typedef struct student // 定义学生 { char name[10]; int number; char sex[2]; int math; int eglish; int clanguge; int average; } student; typedef struct unit // 定义接点 { student date; struct unit * next; } unit; unit * build() // 建立链表并返回指针 { unit *p; if ((p =(unit * )malloc( sizeof (unit))) ==NULL) { printf( "=>初始化失败!"); return 0; } else { p-> next =NULL; p-> date . number=0; // 头结点存放学生人数printf( " 初始化成功!\n" ); return p; } } void add(unit * head) // 增加学生 { unit *p,*q; int m,n =0; q=head-> next; p=(unit * )malloc( sizeof (unit)); printf( "=>请输入新生姓名!\n" ); gets(p ->date . name);fflush(stdin); printf( "=>请输入学号!\n" ); while (n ==0)

c语言成绩管理系统

C语言综合实验设计报 告 C语言成绩管理系统 班级:************ 任课教师:******** 实验老师:******** 小组成员:姓名:******** 姓名:******** 姓名:********

一、实验目的 开发一个c语言成绩管理系统来统计分析大家的c语言学习情况。本程序主要实现对大家的学号,姓名,c语言平时成绩、实验成绩、期末考试成绩,综合评价的成绩。以及通过求平均分,方差,标准差来对大家的学习情况进行分析总结。 二、设计分工说明 组长:********** 组员:****** 组员:******* 本程序开发过程,小组成员分工如下: 录入学生成绩的数据结构和名称由全体组员共同商讨确定; 学生成绩的录入和显示在屏幕上的模块由组员***完成; 学生成绩的方差的计算和排序模块由组员***完成; 学生成绩的保存函数设计和主调用函数的模块的设计由组员***完成。 三、问题概述 要实现这样一个学生成绩信息管理系统,程序的开发中应该涉及到以下的内容: 1、编写一个统一的函数来调用各功能函数; 2、处理新增学生信息的操作; 3、显示输出全部记录的信息; 4、计算学生成绩的平均值、方差和标准差的函数设计; 5、根据学生记录的某一属性对记录排序; 6、对所录入的信息的保存函数设计; 同时,还应有合适的数据变量和结构参与各功能的运算。 四、问题分析 由于信息管理系统中的数据通常是不确定的多条记录,并且我们小组成员的能力有限,所以只是选择了管理一个班级(数据有限)的程序设计。 程序设计中主要是采用了结构体的数据形式,主函数调用,文件的写入,以及子函数配合的组合设计。主要录入了本班学生的学号、姓名、平时成绩、实验成绩、期末成绩等。其中由于我们学校的学号比较长(由15位),因此用双精度实数类型(double)类型,但在输出的时候控制称“15.0lf”的形式输出;姓名为字符型(char);平时成绩、实验成绩、期末成绩等都是单精度实数类型(float)。 由于信息管理这类系统,数据通常是不确定多条记录,故本系统应采用链表的结构来维持整个数据集,同时,根据题目要求,学生成绩信息包含学号、姓名、班级、计算机、专业英语、总分等属性,各属性中,学号为整型,姓名和班级为字符串,计算机、专业英语和总分应为浮点型,对一个学生记录应设置一个结构体,同时学生记录链表应包含这样的结构体,以及指向下一条记录的指针。为了便于各功能模块对整个链表的操作,链表的头指针要定义为全局变量。 下面具体分析各功能模块操作: 新建录入函数实际上就是一个for循环和标准输入输出函数的组合,现要求输入人数,然后就是标准输入输出进行数据的输入。最后再综合算一下总评成绩。完成数据的输入。 显示信息函数实际就是for语句和标准输出函数的结合,完成对刚才录入数据的显示输出。

学生成绩分析系统

一、学生成绩分析系统 1、系统概述 学生成绩分析系统提供多角度的学生成绩统计分析,以清晰、直观的图表形式显示统计结果,并可以方便的导出数据进行传阅和存档保存。 2、功能说明 ①具有新增考试权限的用户新增一次考试。 ②对考试进行管理,包括考试的开启,考试的删除等,如果在新增考试时,对 科目设置的满分和成绩录入人员有变动,也可以在这里重新设置和修改。③开启成绩录入的考试,拥有成绩录入权限的用户看到考试时,可以为考试录 入成绩,成绩的录入可以逐个录入也可以通过Excel文件批量导入,导入成绩的模板可以在“导出成绩模板”处导出。 ④成绩录入结束后,具有考试管理权限的用户可以结束考试。结束考试时对学 生成绩进行分析汇总,生成报表形式。 ⑤不同权限的教师用户登录系统后,可以对学生成绩进行查询统计,比如:任

课教师查询统计、班主任查询统计、教务处查询统计等;学生也可以登录系统后查询自己的成绩。 ⑥一次考试结束,系统将永久保存此次学生成绩分析的结果。 2.1新增考试 用于新增一次考试,拥有新增考试权限的用户可以新增考试,具体步骤如下:?设置考试标题 通过选择考试时间,参考年级和考试类型,系统自动生成考试标题,如下图所示: 点击日期输入框,弹出日期输入控件选择考试日期;通过下来列表框选择参考年级和此次考试的类型,选择完成后,进入下一步,选择考试班级。 ?选择考试班级 班级列表根据考试标题选择的年级显示当前年级下的所有班级,如下图所示: 复选框为?的为选中的班级,选中班级可以通过鼠标单击复选框逐个选中,也可以通过“全选| 反选| 取消全部”控制日志的选中状态: ?点击“全选”选中当前页所有班级 ?点击“取消全部”取消所有选中班级 ?点击“反选”选中当前未选中的班级,取消当前选中的班级 选择完成后,进入下一步,选择考试科目。

用c语言编写一个成绩管理系统

程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单学生成绩管理系统 1、成绩录入 2、成绩查询 3、成绩统计 4、退出(2)各菜单项功能① 成绩录入:输入学生的学号、姓名及三门课的成绩;② 成绩查询:(至少一种查询方式)。 v 按学号查询学生记录。 v 查询不及格学生的记录。③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩;④退出系统:退出整个系统(即主菜单)。(3)结构体数组: #define N 30 struct student {int num; /* 定义学号*/ char name[20]; /* 定义姓名*/ float score[3]; /* 定义存贮三门课成绩的数组*/ float average; /* 定义平均成绩*/ };struct student stu[N]; /* 定义结构体数组,存贮多个学生的记录*/ . #include #include #include struct student { int num; char name[20]; float score[4]; float average; } stu[10000]; long t,max; bool unpass[1000]; FILE *fstu=fopen("stud.dat","at+"); int init() { int no,i; float s[4],ave; char nam[20]; while (!feof(fstu)) { fscanf(fstu,"%d",&no); fscanf(fstu,"%s",nam); fscanf(fstu,"%f%f%f%f",&s[1],&s[2],&s[3],&ave);

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

#include #include #include #define MAXN 100 //一个班最多的人数 #define MAXM 2 //成绩的课程门数 int R; void input(); //1.学生成绩新建 void sort(); //2.学生成绩插入 void load(); //3.学生成绩修改 void print(); //4.学生成绩删除 void total(); //5.学生成绩统计 void search(); //6.学生成绩查询 void save(); //7.学生成绩保存 void end(); //8.结束 struct student { char name[20]; //保存全班姓名 char num[12]; //保存全班学号 float score[MAXM]; //保存全班所有课程成绩 float sum; //保存全班每个人的总成绩 float avg; //保存每个人的平均成绩 }; struct student s[MAXN]; struct http { char subject[20]; //保存全班所有课程 }; struct http c[MAXM]; void main() //欢迎首界面 { int select,l; system("color fC"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); printf(" * *\n"); printf(" * *\n"); printf(" * 欢迎进入终极一班学生管理系统 *\n"); printf(" * *\n"); printf(" * ︻┳═一 cf ... *\n"); printf(" * ┈━═☆甘总管的多塔生活∝╬══→ *\n");

c语言课程设计学生成绩管理系统

目录 ——学生成绩管理程序题目要求 (2) 设计目的 (2) 总体设计 (3) 详细设计 (3) 调试与测试 (12) 源程序 (14) 总结 (30)

学生成绩管理程序 一.题目要求 1.问题描述: 对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放. 2.要求: (1)一个文件按以班为单位存储学生记录. (2)将允许的操作分为四种,以A,B ,C,D,E,F为标志: A:插入一个学生记录; B:修改学生记录; C:删除一个学生记录; D:查找一个学生记录; E:浏览学生成绩: F:退出 3.计算学生的总成绩. 4.按学号排序输出全班学生成绩表 . 二.设计目的 根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.

三.总体设计 根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块. 四.详细设计 1.主函数: 主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择. 流程图:

[程序]: //#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'); } 2.输入模块: [分析]: 单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理. 如果要存放若干学生信息就用结构体数组: void addrecord(student stud[]) { int i=0,j,num; char str[5]; if(numstus!=0) {

学生成绩综合统计表

学生成绩综合统计表

4.6 学生成绩综合统计表(一)案例背景 期末考试后,除了要统计各个分数段人数分布情况外(前面章节已经介绍了多种统计分数段的方法)可能还要统计年级和各班的及格人数与及格率,优秀人数与优秀率,以及各班里前、后若干名(如年级前20名和后20名)的人数和比例等。 本案例以某中学高一年级4个教学班100名学生的期末考试的3科成绩和总分为样本,统计全年级4个班级学生的期末考试及格人数与及格率,优秀人数与优秀率,以及各班里年级前20名和后20名的人数和比例,以便进行综合分析。同时将前20名和后20名学生的成绩在统计表中标示出来,以使得前、后20名的成绩能够在成绩表突出显示。 要实现本案例中的功能,学员应该掌握以下EXCEL技术点 ●基础知识条件格式 ●函数应用ISNUMBER函数SUM函数,LARGE函数,SMALL函数 ●综合应用函数嵌套数组公式。 最总效果展示

4.6.1创建原始数据表 Step 1创建工作簿、重名工作表 创建工作簿“综合统计表.xls”,然后将工作表重命名为“统计表”,删除多余工作表。 Step2输入原始成绩 ①在单元格A49输入表格标题:“高一年级期末考试成绩统计表”,选择你好单元格区域A49:G49,单击“合并及居中”按钮,字体、字型、字号设置为黑体加粗16号。 ②在单元格区域A50:G50输入字段名:“班级”,“学号”,“姓名”,“语文”,“数学“,“英语”和“总分“。 ③在单元格区域A51:F150输入全年级4个班100名学生的“语文”,“数学“,“英语”成绩 “=SUM(D51:F51) ”,④在单元格G51输入公式: 然后按键确认,计算出第一个学生的“总分”。 ⑤选中单元格G51,双击单元格G51右下角的填充柄即可完成其余学生“总分”的统计工作。 ⑥选中单元格区域A50:G150,按图2样式设

C语言班级成绩管理系统

学院 课程设计报告 C语言程序设计课程设计 专业电气工程及其自动化班级 姓名 学号 指导教师 年月

新能源与动力工程学院课程设计任务书课程名称:C语言程序设计课程设计指导教师(签名): 班级:姓名学号:

指导教师评语及成绩评定表 指导教师签字: 年月日

目录 一.引言........................................................ - 1 - 1.1 设计目的.......................................... - 1 - 1.2意义............................................... - 1 - 1.3内容............................................... - 1 - 1.4主要任务........................................... - 2 - 二.主要功能和功能.............................................. - 3 - 2.1主要功能........................................... - 3 - 2.2要求............................................... - 3 - 三.系统的数据需求及性能分析..................................... - 4 - 3.1 数据需求.......................................... - 4 - 3.2系统的性能分析..................................... - 4 - 四. 输入输出要求................................................ - 5 - 五.整体框架结构................................................ - 6 - 六.学生成绩业务管理图.......................................... - 7 - 七.系统概要设计................................................ - 8 - 7.1 程序的模块组成.................................... - 8 - 7.2 学生信息结构数组.................................. - 8 - 7.3 各个程序的主要功能介绍:.......................... - 9 - 八.系统详细设计................................................ - 10 - 8.1函数介绍.......................................... - 10 - 九. 调试与测试................................................. - 13 - 9.1系统调试.......................................... - 13 - 9.2系统测试.......................................... - 13 - 十.总结....................................................... - 20 - 参考文献....................................................... - 22 - 附录源代码................................................... - 23 -

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

#include /*常用的标准输入输出函数*/ #include /*access函数原型包含*/ #include /*exit函数原型包含*/ #include /*strcmp函数原型包含*/ #include #include #include #define N 100 /*最多的学生人数*/ struct student /*学生结构体定义*/ { char clas[15]; /*班级*/ char no[13]; /*学号,最多为12位*/ char name[20]; /*姓名*/ char sex[8]; /*性别*/ char addr[30]; /*地址*/ char phone[15]; /*电话*/ float score[5]; /*存储五门课成绩*/ float ave; /*平均分*/ }stu[N]; int num; void init(); void weihu(); void tongji(); void tongji1(); void tongji2(); void sort1(); void find1(); void save(); void newfile(); void read1(); void newfile(); void new1(); void delete1(); void modify(); void sortscore(); int findname(char cname[]);

C语言实现学生成绩管理系统

武汉理工大学华夏学院课程设计报告书 课程名称:数据结构 题目:用C语言实现成绩统计程序的设计 系名:信息工程系 专业班级:软件工程1121 姓名: 指导教师:黄启荃 2013 年 6月 28日

课程设计任务书 设计题目:用C语言实现成绩统计程序的设计 设计目的 1.巩固和加深课堂所学知识、学会分析研究数据对象的特性及数据的组织方法; 2.选择合适的数据的逻辑结构和存储结构以及相应操作,实现一个班的成绩统计 3. 提高程序设计能力、加强查阅、运用资料的能力、算法分析与程序设计素质培养;设计任务(在规定的时间内完成下列任务) 〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出出个人的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 〔算法提示〕可以用选择排序、冒泡排序等多种排序算法求解; 具体要完成的任务是: A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 时间安排:6月24日---28日 具体要求 1. 课程设计报告按统一通用格式书写,具体内容如下: ①设计任务与要求 ②总体方案与说明 ③软件主要模块的流程图 ④源程序清单与注释 ⑤问题分析与解决方案(包括调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想); ⑥小结与体会 附录:①源程序(必须有简单注释)②使用说明③参考资料2.每位学生应独立完成各自的任务且每天至少在设计室工作半天; 指导教师签名: 2013 年 6月 22日 教研室主任(或责任教师)签名: 2013年 6月 24日

C语言学生成绩管理系统实验报告

C语言学生成绩管理系统实验报告

HUNAN UNIVERSITY 程序设计训练 报告 题目学生成绩管理系统 学生姓名 学生学号 专业班级 指导老师 湖南大学程序设计训练报告

目录 一程序功能简介 (3) 二本人完成的主要工作 (3) 三设计方案 (3) 1)设计分析 (3) 2)模块的功能及程序分析 (4) 3)核心算法流程图 (7) 4)核心源程序模块 (8) 5)操作方法简

介 (8) 6)实验结果 (9) 8)设计体会 (11) 四附录 (12) 一、程序功能简介; 本程序作为一个学生成绩管理系统,用户能够首先使用管

理员模式初始化该系统。初始化完成之后,用户能够选择使用成绩记录人模式进入系统,对学生成绩进行记录。系统自动储存所记录的学生成绩,然后用户可根据不同需要来选择不同的功能来使用程序,其中包括成绩查询与增减,成绩排序,成绩分析等功能。 二、本人完成的主要工作; 程序设计分析,绘制程序流程图,写出大致结构算法以及各个核心算法模块,写出核心源程序,对源程序进行算法优化,对源代码进行多次试验验证其正确性,完成源代码的测试以及代码书写规范检测。 三、设计方案; 1)设计分析; 首先拿到这个题目,我就开始思考如何将这个看似简单的系统做的较为完善,而不是简简单单的学生成绩管理 系统,学生管理系统自然是这个题目的核心,从中发散思 维,我想到了几个比较细小的地方。例如:如何很好的将 程序中的功能步骤化,系统化以及便利化。基于C语言程 序的特点,我还联想到了对信息的保存问题。这些问题都 随着代码的一步一步完善而解决。管理员系统与查询系统 的选择很好的解决了这些问题。 2)模块的功能及程序说明;

如何对学生考试成绩进行数据分析解读

一、原始分和标准分的定义 原始分是考试后直接从卷面上得到的分数。 标准分是指通过原始分转化而得到的一种地位量数,它反映考生成绩在全体考生成绩中的位置。因此,无论试题难或易,无论整体原始分偏高或偏低,整体标准分都没有什么变化。 二、标准分的计算 根据教育统计学的原理,标准分Z是原始分与平均分的离差以标准差为单位的分数,用公式表示为:Z=(X-A)/S 其中:X为该次考试中考生个人所得的原始分;A为该次考试中全体考生的平均分;S为该次考试分数的标准差。 通过转换后得到的标准分Z在一般情况下都带小数,而且会出现负值,实际使用时不太方便,所以还要对Z分数进行线性变换(T变换):T=500+100Z 这就是我们通常所说的标准分。这种标准分的平均值为500,也就是说,如果某考生的标准分为500,则该生的成绩处于此次考试的中间位置。 标准分有如下性质: ⑴平均值为0,标准差为1; ⑵分数之间等距,可以作加减运算; ⑶原始分转换为标准分是线性转换,不会改变原始分的分布形状,也不改变原来分数的位置次序。 三、使用标准分比使用原始分有什么好处? 根据教育统计学的原理,原始分转换成标准分的意义可以从下面的比较中反映出来: ⑴单个标准分能够反映考生成绩在全体考生成绩中的位置,而单个原始分则不能。 例如,某考生某科的原始成绩为85分,无法说明其这科成绩究竟如何,因为这与试题的难度有关,与总体考生的分数有关。如果某考生某科的标准分为650,即Z分数为1.5,则通过查正态分布表,查得对应的百分比为0.9332,于是我们知道,该考生的成绩超过了93.32%的考生的成绩,这就是分数解释的标准化。 ⑵不同学科的原始分不可比,而不同学科的标准分是可比的。 不同的学科,由于试题的难易程度不同,各学科的分数价值也就不同。例如某考生的语文原始成绩为80分,数学原始成绩为70分,从原始分看,其语文成绩优于数学成绩。但如果这次考试全体考生的语文原始分平均为86分,而数学原始分平均为60分,则该考生的语文成绩处于全体考生的平均水平之下,而数学成绩处于全体考生的平均水平之上,即该生的数学成绩实质上优于语文成绩。从标准分的角度来衡量,其语文标准分小于500分,而数学标准分大于500分。由于标准分代表了原始分在整体原始分中的位置,因此是可比的。 ⑶不同学科的原始分不可加,而不同学科的标准分之间具有可加性。 既然不同学科的原始分不可比,那么也就不可加。多学科成绩,只有在各科成绩的平均值相同、标准差也相同的条件下,才能相加,否则是不科学的。各学科原始分的平均值以及标准差一般都不相同,而各学科的标准分的平均值以及标准差都基本相同,因此,各科的标准分是可加的。 四、什么是增值? 教学增值就是评价时将学生原有基础一并考虑,用以比较原有基础与接受教师教育后成绩增进的幅度。增值评价分为两步:首先根据原有基础得到一个

C语言课程设计成绩管理系统

一、课程设计的内容(1)信息维护: 要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息 (2)信息查询: 要求:查询时可实现按姓名查询、按学号查询 (3)成绩统计: 要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。 (4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分) (二)其它要求: (1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2)至少采用文本菜单界面(如果能采用图形菜单界面更好) (3)学生可自动增加新功能模块(视情况可另外加分) (4)写出课程设计报告,具体要求见相关说明文档 二、课程设计的要求与数据 1、进一步掌握和利用C语言进行程设计的能力; 2、进一步理解和运用结构化程序设计的思想和方法; 3、初步掌握开发一个小型实用系统的基本方法; 4、学会调试一个较长程序的基本方法; 5、学会利用流程图或N-S图表示算法;

6、掌握书写程序设计开发文档的能力。 三、课程设计应完成的工作 1、编写完成相应题目的程序; 2、编写课程设计报告,课程设计报告的内容应包括以下6个部分: 1) 需求分析:包括设计题目、设计要求以及系统功能需求分析; 2) 总体设计:包括系统总体设计框架和系统功能模块图; 3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程 图; 4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调 试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解 决方法及效果等,适当的包含结果截图); 5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些 地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计 的认识以及自己的建议等内容; 6) 附录:主要源程序代码,含必要的注释。 3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解 决问题、运行程序和回答教师提出的问题。 目录 1 设计目的与要求………………………………………………………………P4 2 总体设计………………………………………………………………………P4 3 详细设计………………………………………………………………………P5 3.1功能模块设计………………………………………………………………P5 3.1.1 XX功能模块(可选) …………………………………………………P5 3.1.2 YY功能模块(可选) …………………………………………………P6 3.1.3 ZZ功能模块(可选)…………………………………………………P7 3.2数据结构设计……………………………………………………………P8 4调试分析……………………………………………………………………P9 4.1结构体……………………………………………………………………P9 4.2链表………………………………………………………………………P11 5遇到的问题及解决方法分析…………………………………………………P12 6 总结……………………………………………………………………………P13 7源文件…………………………………………………………………………P13 7.1链表………………………………………………………………………P13 7.2结构体……………………………………………………………………P28 1、目的与要求 一目的:编制一程序实现对学生成绩的管理,让自己既动手又动脑,独立实

班级成绩统计与分析

长清区教师培训模块五 班级成绩统计与分析 长清实验中学王长泉 ●主要内容: 以任务驱动的方式,通过完善“学生成绩表”中的数据,并计算出学生的总分、平均分,统计出优秀率、及格率、优秀人数、及格人数、最高分和最低分,给学生排出名次,并以等级方式显示。掌握利用EXCEL进行班级成绩统计与分析的方法。 ●快速操作技巧 1、快速得到合适列宽和行高 如果各列中数据宽度一致的话,我们可以选中各列,然后把鼠标移至列标题的右边框,待鼠标变成双向箭头时拖动至合适的宽度,这样就可以得到统一列宽的各列了。如果各列中数据宽度不一致的话,我们经常要逐列进行调整,非常麻烦。此时可以选中含有数据的各列,同样将鼠标移至其中一个列标题的右边框,当鼠标指针变成双向箭头时双击鼠标左键,可以立刻将各列的列宽设置为“最适合的列宽”,即各列宽度为恰好可以完整显示单元格数据,用这个方法也可以得到“最适合的行高”,只是要双击行标题的下边框。 2、快速移动活动单元格 经常要在数据区域的最开始和最末尾处、最左端和最右端处来回折腾吗?其实,用不着多次单击滚动条,也不用多次滚动鼠标的滚轮的。只要将鼠标指向当前单元格的下边框,当鼠标指针变为四个箭头的十字形时双击,就可以使活动单元格迅速定位于当前数据区域中当前列的最后一行。双击单元格的上边框可以到达最上一行,而双击左边框和右边框则可以分别迅速到达最左端和最右端。 3、快速选中单元格区域 选中单元格区域快速的方法是利用名称框。如果我们清楚地知道应该选择哪些区域,那么直接在编辑栏左侧的“名称框”内填写选择区域是最简便的了。比如我们要同时选中A2:D15单元格区域和H列,那么就可以在名称框内直接输入“A2:D15,H:H”,按下回车键,则这些区域就被直接选中了。 4、快速拆分窗口 为方便查看表格的不同部分,我们经常要对工作表进行垂直或水平拆分。快速拆

C语言课程设计-班级成绩管理系统 10块!

目录 第一章绪论-------------------------------------------------------- 第二章需求分析-------------------------------------------------- 2.1 程序的功能------------------------------------------ 2.2 输入输出的要求------------------------------------ 第三章概要设计-------------------------------------------------- 3.1程序的模块组成------------------------------------- 3.2学生信息结构数组---------------------------------- 3.3各个程序的功能介绍-------------------------------第四章详细设计-------------------------------------------------- 4.1总流程图---------------------------------------------- 4.2统计函数流程图-------------------------------------第五章测试-------------------------------------------------------- 5.1系统调试---------------------------------------------- 5.2结果分析----------------------------------------------第六章使用说明-------------------------------------------------- 第七章总结-------------------------------------------------------- 附录--------------------------------------------------------------------- 评分表------------------------------------------------------------------

学生成绩管理系统c语言代码(供参考)

C程序学生管理系统 以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h" #include"stdlib.h" #include"string.h" typedef struct student//定义学生 { char name[10]; int number; char sex[2]; int math; int eglish; int clanguge; int average; }student; typedef struct unit//定义接点 { student date; struct unit *next; }unit; unit* build()//建立链表并返回指针 { unit *p; if((p=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>初始化失败!"); return 0; } else {p->next=NULL; p->date.number=0;//头结点存放学生人数 printf("初始化成功!\n"); return p; } } void add(unit *head)//增加学生

{ unit *p,*q; int m,n=0; q=head->next; p=(unit*)malloc(sizeof(unit)); printf("=>请输入新生姓名!\n"); gets(p->https://www.360docs.net/doc/ab14434332.html,);fflush(stdin); printf("=>请输入学号!\n"); while(n==0) { scanf("%d",&m);fflush(stdin); if(q==NULL) n=1; while(q) { if(q->date.number==m) { printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n"); q=head->next; break; } else { q=q->next; if(q==NULL) n=1; } } } p->date.number=m; printf("=>请输入性别!\n"); gets(p->date.sex);fflush(stdin); printf("=>请输入数学成绩\n"); scanf("%d",&m);fflush(stdin); p->date.math=m; printf("=>请输入英语成绩\n"); scanf("%d",&m);fflush(stdin); p->date.eglish=m; printf("=>请输入c语言成绩\n"); scanf("%d",&m);fflush(stdin); p->date.clanguge=m; p->date.average=(p->date.math+p->date.eglish+p->date.clanguge); q=head->next; head->next=p;

相关文档
最新文档