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

合集下载

c语言成绩管理系统源代码+流程图

c语言成绩管理系统源代码+流程图

#include<stdio.h>#include<string.h>#include<stdlib.h>void frist_print(){printf("\t\t********************************\n\n"); //欢迎信息printf("\t\t\t欢迎进入学生成绩系统\n");printf("\t\t\t\t\t\t\t\t 此程序合作完成由");printf("\n\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * \n");printf("\t\t\t\t\t\t\t\t * 王杨* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 李淼鑫* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 孙天顺* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * \n");}//***********************************************************************************************************************************************************************************void menu(){printf("\n\t\t***********************************\n"); //管理菜单printf("\n\t\t==========1.录入学生成绩===========\n\t\t+\n");printf("\t\t==========2.显示学生成绩===========\n\t\t+\n");printf("\t\t==========3.查询学生成绩===========\n\t\t+\n");printf("\t\t==========4.添加学生成绩===========\n\t\t+\n");printf("\t\t==========5.修改学生成绩===========\n\t\t+\n");printf("\t\t==========6.删除学生成绩===========\n\t\t+\n");printf("\t\t==========7.清空页面===========\n\t\t+\n");printf("\t\t==========8.退出系统===========\n");printf("\n\t\t***********************************\n");printf("please choise 1--8:\t");putchar(10);}//******************************************************************************************************* ****************************************************************************struct MM // 结构体定义变量{char num[20];char name[10];float sco,sco2,sco3,sco4;int many;}mm;//******************************************************************************************************* ****************************************************************************void scanf_1() //第一次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","wb+"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入学生的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("总成绩:\t");scanf("%f",&mm.sco);printf("平时成绩:\t");scanf("%f",&mm.sco2);printf("作业成绩:\t");scanf("%f",&mm.sco3);printf("考试成绩:\t");scanf("%f",&mm.sco4);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||c h=='Y');fclose(fp);}//******************************************************************************************************* ****************************************************************************void find() //查询成绩的信息{ int a,b=0;char ch[20];FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要查询的成绩的方式\n\t1.编号 2.姓名:\n\t请选择 1 or 2 \t"); scanf("%d",&a);if(a==1){ getchar();printf("请输入学生的编号:\t");gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(mm.num,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("对不起!没有找到相关信息:\n");}else if(a==2){ printf("请输入学生的姓名:\t");getchar();gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("input error!\n");}fclose(fp);}//******************************************************************************************************* ****************************************************************************void scanf_2() //第二次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","ab"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入要添加成绩的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("成绩:\t");scanf("%f",&mm.sco);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||c h=='Y');fclose(fp);}//******************************************************************************************************* ****************************************************************************void print() //输出文档中的信息{FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");return ;}printf("编号\t姓名\t成绩\t\t学号\n");while(fread(&mm,sizeof(struct MM),1,fp)==1)printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);fclose(fp);}//******************************************************************************************************* ****************************************************************************void change(){ //修改信息的函数,定义另一个文件,把要修改的信息放到该文件中struct XX //然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名{ //把原来的文件移除;char num[20];char name[10];float sco;int many;}xx;FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do{if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要修改成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1){if((strcmp(mm.num,ch)==0)){b++;//b的值如果一直没有改变说明,没有找到相关的信息;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);getchar();printf("请输入成绩的新编号:\t");gets(xx.num);printf("请输入成绩的新姓名:\t");gets();printf("请输入成绩的新成绩:\t");scanf("%f",&xx.sco);printf("请输入成绩新学号:\t");scanf("%d",&xx.many);getchar();fwrite(&xx,sizeof(struct XX),1,fp2);}if(strcmp(mm.num,ch)!=0)fwrite(&mm,sizeof(struct MM),1,fp2);}if(b==0){printf("\t没有找到相关信息!\n");getchar();}rewind(fp); //如果要继续修改的话,要把标记返回到文件的开头;printf("是否继续修改?enter 'y' or 'n' \t");ck=getchar();fclose(fp);fclose(fp2);remove("dd.dat");rename("temp.dat","dd.dat");}while(ck=='y'||c k=='Y');if(b!=0)//如果没有找到相关信息就不能输出printf("\t修改成功:\n");}//***********************************************************************************************************************************************************************************void del(){ //删除函数(和修改很相似)FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do {if((fp=fopen("dd.dat","rb"))==NULL) //判断以读二进制的方式打开文件dd.dat,文件句柄保存到fp,fp是否为空如果为空,就是打开文件失败,否则打开文件成功{printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要删除成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1) //fread()成功的返回值就是参数里读取的数据块个数,这里就是1; sizeof中是每一项的长度,{if((strcmp(mm.num,ch)==0)) //设这两个字符串为str1,str2,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

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

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

学生成绩管理系统c语言源代码介绍学生成绩管理系统是一个能够帮助学校、教师和学生管理和查询学生成绩的软件系统。

通过该系统,教师可以录入学生的考试成绩,并进行统计和分析;学生可以查询自己的成绩和排名;学校可以通过系统生成各种报表和分析数据。

本文将介绍一个使用C语言编写的学生成绩管理系统的源代码实现。

功能设计学生成绩管理系统的功能设计可以分为以下几个主要模块:登录模块1.输入用户名和密码;2.验证用户名和密码是否匹配;3.登录成功后进入主菜单。

学生管理模块1.输入学生信息(学号、姓名、性别、年龄等);2.添加学生信息到系统中;3.删除指定学号的学生信息;4.修改指定学号的学生信息;5.查询指定学号的学生信息;6.显示所有学生的信息。

课程管理模块1.输入课程信息(课程号、课程名称、授课教师等);2.添加课程信息到系统中;3.删除指定课程号的课程信息;4.修改指定课程号的课程信息;5.查询指定课程号的课程信息;6.显示所有课程的信息。

成绩管理模块1.输入学号和课程号;2.输入成绩信息(平时成绩、期末成绩、总评成绩等);3.添加成绩信息到系统中;4.修改指定学号和课程号的成绩信息;5.查询指定学号和课程号的成绩信息;6.统计指定课程的平均成绩、最高成绩和最低成绩;7.统计指定学生的平均成绩、最高成绩和最低成绩。

数据导入与导出模块1.从文件导入学生信息和成绩信息;2.将学生信息和成绩信息导出到文件。

源代码实现以下是一个使用C语言实现的学生成绩管理系统的源代码实例:#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct {int id;char name[100];char gender[10];int age;} Student;// 定义课程结构体typedef struct {int id;char name[100];char teacher[100];} Course;// 定义成绩结构体typedef struct {int studentId;int courseId;float ordinaryGrade;float finalGrade;float totalGrade;} Grade;// 学生管理函数void addStudent(Student *students, int *studentCount) {// 添加学生信息到系统}void deleteStudent(Student *students, int *studentCount, int studentId) { // 删除指定学号的学生信息}void modifyStudent(Student *students, int studentId) {// 修改指定学号的学生信息}void queryStudent(Student *students, int studentId) {// 查询指定学号的学生信息}void displayAllStudents(Student *students, int studentCount) { // 显示所有学生的信息}// 课程管理函数void addCourse(Course *courses, int *courseCount) {// 添加课程信息到系统}void deleteCourse(Course *courses, int *courseCount, int courseId) { // 删除指定课程号的课程信息}void modifyCourse(Course *courses, int courseId) {// 修改指定课程号的课程信息}void queryCourse(Course *courses, int courseId) {// 查询指定课程号的课程信息}void displayAllCourses(Course *courses, int courseCount) {// 显示所有课程的信息}// 成绩管理函数void addGrade(Grade *grades, int *gradeCount) {// 添加成绩信息到系统}void modifyGrade(Grade *grades, int gradeCount, int studentId, int courseId) { // 修改指定学号和课程号的成绩信息}void queryGrade(Grade *grades, int gradeCount, int studentId, int courseId) { // 查询指定学号和课程号的成绩信息}void calculateCourseStatistics(Grade *grades, int gradeCount, int courseId) { // 统计指定课程的平均成绩、最高成绩和最低成绩}void calculateStudentStatistics(Grade *grades, int gradeCount, int studentId) {// 统计指定学生的平均成绩、最高成绩和最低成绩}// 数据导入与导出函数void importData() {// 从文件导入学生信息和成绩信息}void exportData() {// 将学生信息和成绩信息导出到文件}int main() {// 主程序菜单return 0;}总结学生成绩管理系统是一个非常有用的工具,可以帮助学校、教师和学生高效地管理和查询学生成绩。

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

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

C语言学生成绩管理系统源代码程序代码:#include;#include;#include;#define SIZE 3 /*定义常量SIZE便于以后的修改*/ struct student /*定义一个结构体数组存放学生的信息*/{int number; /*学号*/char name[20];/*名字*/char xueyuan[20];/*学院*/int cla;/*班级*/int score[3];/*分数*/int sum;/*总分*/int average;/*平均分*/}stu[SIZE];void menu();/*调用菜单函数*/void write();/*读入信息*/void save(int x);/*保存stud.dat文件函数*/void SaveOneStudent(int i);/*保存一个学生信息*/ void SaveAllStudent(int n);/*保存全部学生信息*/ void inturn (struct student c[]);/*用于对学生的信息按学号排序的函数*/void save2();/*将排序后的信息存入student.dat文件中*/int AddStudent(int n);/*增加学生信息*/void InputOnestudent(int i);/*输入一个同学信息*/ int DelStudent(int n);/*删除学生信息*/void ModifyStudent(int n);/*修改学生信息*/void OutputOneStudent(int i);/*查询一个学生信息*/ void SearchMenu(int n);/*查询学生信息操作*/void SearchNumber(int n);/*按学号查询学生信息*/ void SearchName(int n);/*按姓名查询学生信息*/ void SearchXueyuan(int n);/*按所在学院查询学生信息*/void SearchCla(int n);/*按所在班级查询学生信息*/ void tongji();/*学生信息统计操作*/void tongji2();/*统计不及格率操作*/void zfsc();/*总分排序操作*/void avecz();/*按平均分统计人数操作*/void avecz();/*按平均分统计人数操作*/void search();/*查找最高成绩操作*/void tongji2();/*统计不及格率操作*/void read();/*读取student.dat文件文件中学生的信息*//*主函数************************************************* ***********************************/void main(){int n=SIZE;int choice;/*用户选择变量*/printf(&quot;************************************ *******************************************\n&quo t;);printf(&quot;* *\n&quot;);printf(&quot;* Hwadee &学生成绩文件管理& Hwadee *\n&quot;);printf(&quot;* *\n&quot;);printf(&quot;*******************************************************************************\n\n\n&quot;);printf(&quot;******************************●●欢迎使用●●*********************************&quot;);while (1){menu();/*调用菜单函数形成操作界面*/printf(&quot;请选择:&quot;);scanf(&quot;%d&quot;, &choice);if ( choice==0 ){printf(&quot;\t\t\t\t谢谢使用!!!&quot;);break;}switch(choice) /*多重选择实现功能不同的功能*/ {case 1:write();inturn(stu);save(SIZE);break;case 2:AddStudent(n);break;case 3:DelStudent(n);break;case 4:ModifyStudent(n);break;case 5:SearchMenu(n);break;case 6:tongji();break;case 0:printf(&quot;\n谢谢使用!再见!\n&quot;);default:printf(&quot;\n按键错误!请重新选择!\n&quot;); }/*结束switch*/}/*结束while*/}部分程序清单/*菜单函数************************************************* ************************************/void menu(){printf(&quot;************请输入所需操作***********\n&quot;);/*选择功能菜单*/printf(&quot;************************************ *\n&quot;);printf(&quot;1.学生成绩写入及排序\n&quot;); printf(&quot;2.增加学生信息\n&quot;);printf(&quot;3.删除学生信息\n&quot;);printf(&quot;4.修改学生信息\n&quot;);printf(&quot;5.查询学生信息\n&quot;);printf(&quot;6.学生成绩统计操作\n&quot;); printf(&quot;0.退出系统\n&quot;);printf(&quot;**************************************\n&quot;);}/*写入函数*************************************************************************************/void write(){int i;/*计数变量*/for(i=0;i;m[j].number){temp=m[i];m[i]=m[j];m[j]=temp;}}printf(&quot;\n排序后的学生信息:\n\n&quot;); for(i=0;i;0&&x;59&&stu[i].average;69&&stu[i].average;79&&stu[i].average;89&&stu[i].average;stu[k].score[0])i=k;}printf(&quot;高数成绩最高学生信息如下:\n&quot;);OutputOneStudent(k);printf(&quot; 输出结束\n&quot;);printf(&quot;************************************************* *********&quot;);}if(x==2){for(i=0;i;stu[k].score[1])i=k;}printf(&quot;英语成绩最高学生信息如下:\n&quot;);OutputOneStudent(k);printf(&quot; 输出结束\n&quot;);printf(&quot;************************************************* *********&quot;);}if(x==3){for(i=0;i;stu[k].score[2])i=k;}printf(&quot;C语言成绩最高学生信息如下:\n&quot;);OutputOneStudent(k);printf(&quot; 输出结束\n&quot;);printf(&quot;************************************************* *********&quot;);}}/*统计不及格率操作************************************************* ****************************/void tongji2(){int x,i,k;printf(&quot;********************输入统计选项**********************\n&quot;); /*选择功能菜单*/ printf(&quot;统计高数成绩不及格率请按:1\n&quot;);printf(&quot;统计英语成绩不及格率请按:2\n&quot;);printf(&quot;统计C语言成绩不及格率请按:3\n&quot;);scanf(&quot;%d&quot;,&x);/*用户选择变量 */ if(x==1){for(i=0;i。

学生绩点计算系统C语言(附完整源代码)

学生绩点计算系统C语言(附完整源代码)

学生绩点计算系统C语言(附完整源代码)本文档提供了一个用于计算学生绩点的C语言程序的完整源代码。

程序简介该程序是一个学生绩点计算系统,它可以读取学生的课程成绩和学分信息,并计算出每门课程的绩点以及整个学期的绩点。

该程序可以帮助学生快速准确地计算自己的绩点,以便了解自己在学业上的表现。

源代码以下是该程序的完整源代码:include <stdio.h>int main() {int numCourses;float totalCredits = 0;float totalGradePoints = 0;printf("请输入您的课程数量:");scanf("%d", &numCourses);for (int i = 0; i < numCourses; i++) {int credits;float grade;printf("请输入第%d门课的学分:", i + 1); scanf("%d", &credits);printf("请输入第%d门课的成绩:", i + 1); scanf("%f", &grade);totalCredits += credits; totalGradePoints += credits * grade;}float gpa = totalGradePoints / totalCredits;printf("\n您的绩点为:%.2f\n", gpa);return 0;}该程序首先会要求用户输入课程数量,然后逐一询问每门课程的学分和成绩。

程序会根据用户输入的数据计算出总学分和总绩点,并最终计算出绩点(GPA),并将结果输出。

使用方法1. 运行该程序;2. 按照提示输入课程数量;3. 按照提示逐一输入每门课程的学分和成绩;4. 程序将会输出您的绩点(GPA)。

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

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

学生成绩管理系统c语言代码-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include<stdio.h>#include<dos.h>#define N sizeof(struct STH)#define GESHI "%-10ld%-10s%-5s%-4d/%-2d/%-4d%-12s%-12s%s\n"#define PRINTF "学号姓名性别生日系别班级家庭住址\n" struct STH* readfile();/*声明*/int insert(struct STH**);int n=0;struct dt{int year; /*全局变量*/int month;int day;};struct STH{long num; /*学号不能以0开头*/char name[9];char sex[5];struct dt birth;char xi[20];char ban[20];char add[30];struct STH* next;}*head;/*输入模块*/input_message(){char ch;int flag=1;do{if(insert(&head)!=0)n++; /*计数*/elseprintf("\n有相同的的学号!"); printf("\n是否继续(y/n)");getchar();scanf("%c",&ch);if(ch=='y'||ch=='Y'){printf("\n继续!");getch();flag=1;/*标志程序不结束*/ }elseflag=0;}while(flag==1);save_message();printf("按任意键继续...");getch();}/*insert()模块*/ /*被输入和插入模块所调用*/int insert(struct STH**h){struct STH *p,*p0;p=(struct STH*)malloc(N);printf("\n请输入学号:");scanf("%ld",&p->num);printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入性别:");getchar(); /*取走上一个留下来得‘\n’*/scanf("%s",p->sex);printf("\n请输入生日(年月日,用回车隔开):\n");scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day); printf("\n请输入系别:");scanf("%s",p->xi);printf("\n请输入班级:");scanf("%s",p->ban);printf("\n请输入家庭住址:");scanf("%s",p->add);p->next=NULL;if(*h==NULL){*h=p;return 1;}p0=*h;if(p0->num>p->num){p->next=p0;*h=p;return 1;}while(p0->next!=NULL&&p0->next->num<p->num) p0=p0->next;if(p0->next==NULL){p0->next=p;return 1;}else if(p0->next->num==p->num){free(p); /*有相同数据输入失败*/return 0;}else{p->next=p0->next;p0->next=p;return 1;}}/*读文件模块*/ /*读文件模块中创建了一个新的链表,其返回值为新链表的头指针*/struct STH *readfile(){FILE *fp;struct STH *p,*p0;char ch;int i;if((fp=fopen("STH.txt","r"))==NULL){printf("\n不能读取文件!\n");return NULL;} /*注意要该*/head=p=p0=(struct STH *)malloc(N);fscanf(fp,"%d",&n);fscanf(fp,"%c",&ch); /*为了使学号和信息个数分开加入一个‘/’*/fscanf(fp,"%ld%s%s%d%d%d%s%s%s",&p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);p->next=NULL;i=1; /*如果只有一个数时跳出*/if(n!=1){do{p=(struct STH *)malloc(N);fscanf(fp,"%ld%s%s%d%d%d%s%s%s",&p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add);p0->next=p;p0=p;i++;}while(i<n);p0->next=NULL;}fclose(fp);return head;}/*插入模块*/insert_message(){struct STH *p;int flag=1;char ch;head=readfile();do{if(insert(&head)!=0){n++;save_message();printf("");} /*计数*/else{printf("\n添加失败!\n有相同的的学号!"); save_message();getch();}printf("\n是否继续(y/n)");ch=getchar();if(ch=='y'||ch=='Y'){printf("\n继续!");flag=1;/*标志程序不结束*/ }elseflag=0;}while(flag==1);printf("\n按任意键继续...");getch();}/*修改模块*/renew_message(){struct STH *p;int i,flag=1;long num;p=head=readfile();if(head==NULL){printf("读文件有误!");}else{printf("\n请按输入要修改的学生的学号:");scanf("%ld",&num);for(i=0;i<n;i++){if(p->num==num){p->num=num;printf("\n已找到要%ld号学生的信息!\n",num);printf("原姓名为%s 要修改为:\n",p->name);scanf("%s",p->name);printf("原性别为%s 要修改为:\n",p->sex);scanf("%s",p->sex);printf("原生日为%d/%d/%d 要修改为:\n",p->birth.year,p->birth.month,p->birth.day);scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day); printf("原系别为%s 要修改为:\n",p->xi);scanf("%s",p->xi);printf("原班级为%s 要修改为:\n",p->ban);scanf("%s",p->ban);printf("原家庭住址为%s 要修改为:\n",p->add);scanf("%s",p->add);printf("你所更改后的信息为:\n");printf(PRINTF);printf(GESHI,p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);printf("\n按任意键退出!\n");getch();flag=1;break;}elsep=p->next;}if(flag!=1)printf("无此人信息!\n");elsesave_message();getch();}}/*删除模块*/delete_message(){int flag;long num;char ch;struct STH*p,*p0;p0=p=head=readfile();if(head==NULL){printf("文件读取出错!");getch();}else{printf("请输入要删除学生的学号:\n"); scanf("%ld",&num);if(p0->num==num){head=p0->next;free(p0);flag=1;n--; /*学生数减一*/}p=p0->next;while(p!=NULL){if(p->num==num){p0->next=p->next;free(p);flag=1;n--;}else{p0=p;p=p->next;}}if(p->next==NULL)flag=0;if(flag==1){printf("\n永久删除%ld号学生的信息( y/n)",num);getchar();ch=getchar();if(ch=='y'||ch=='Y')save_message();else{printf("\n撤消删除!"); getch();}}elseprintf("\n删除失败!"); getch();}}/*查询模块*/inquire_message(){int i,flag=0;long num;struct STH *p;p=head=readfile();if(head==NULL){printf("文件读取出错!"); getch();}else{printf("请输入要查询学生的学号:\n");scanf("%ld",&num);for(i=0;i<n;i++){if(p->num==num){printf("\n信息已找到:\n");getch();clrscr();printf("**********************************FOUND**************** *****************\n");printf("------------------------------------------------------------------------\n\n");printf(PRINTF);printf(GESHI,p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);printf("\n------------------------------------------------------------------------\n");printf("***********************************END***************** *****************\n");flag=1;break;}elsep=p->next;}if(flag==0)printf("\n无此人信息!");elseprintf("\n显示完毕!\按任意键返回主菜单......");getch();}}/*显示模块*/output_message(){int i=0;struct STH*p;p=head=readfile();if(head==NULL){printf("文件读取出错!");getch();}else{clrscr();printf("\n************************************STUDENT************** **********************\n");printf("-------------------------------------------------------------------------------\n");printf(PRINTF);while(i<n){printf(GESHI,p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);p=p->next;i++;}printf("-------------------------------------------------------------------------------\n");printf("**************************************END***************** *********************\n");printf("\n显示完毕!\n共%d条信息.\n按任意键返回主菜单......",n);getch();}}/*存档模块*/save_message(){FILE *fp;int i;struct STH*p;p=head;if((fp=fopen("STH.txt","w"))==NULL){printf("读文件错误!!");exit(0);}fprintf(fp,"%d",n);fprintf(fp,"%c",'/'); /*注意要该*/for(i=0;i<n;i++){fprintf(fp,"%ld %s %s %d %d %d %s %s %s ",p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add);p=p->next;}fclose(fp);printf("\n信息已经保存在STH.txt文件中!");getch();}/*主函数*/void main(void){int choice;char ch;FILE *fp;struct date d;getdate(&d);if((fp=fopen("STH.txt","r"))==NULL){fp=fopen("STH.txt","w");fprintf(fp,"%d",0);fclose(fp);}else{fscanf(fp,"%d",&n);fclose(fp);}clrscr();printf("制作人:通工0501 李艺凡");printf("\n\n\n");printf(" ************************************************** \n" );printf(" 欢迎进入学生户籍系统 \n\n");printf(" 1 创建记录\n");printf(" 2 添加记录\n");printf(" 3 查找记录\n");printf(" 4 删除记录\n");printf(" 5 修改记录\n");printf(" 6 显示全部信息\n");printf(" 0 退出程序\n");printf(" ************************************************** \n" );printf(" %d年%d月%d日",d.da_year,d.da_mon,d.da_day);printf(" \n 请选择(0-6):");scanf("%d",&choice);if(n==0) /*记录为空时不让其进行其他操作*/{while(choice<0||choice>1){printf("记录为空,无法操作此项!");printf("请重新输入:(0或1)\n");scanf("%d",&choice);}}else{while(choice<0||choice>6){printf("输入有误!\n 请重新输入:\n");scanf("%d",&choice);}}do{switch(choice){case 1:input_message();break;case 2:insert_message();break;case 3:inquire_message();break;case 4:delete_message();break;case 5:renew_message();break;case 6:output_message();break;case 0:break;}printf("\n按任意键返回主菜单!");getchar();ch='y';if(ch=='Y'||ch=='y'){clrscr();printf("制作人:通工0501 李艺凡");printf("\n\n\n");printf(" ************************************************** \n");printf(" 欢迎进入学生户籍系统 \n\n");printf(" 1 创建记录\n");printf(" 2 添加记录\n");printf(" 3 查找记录\n");printf(" 4 删除记录\n");printf(" 5 修改记录\n");printf(" 6 显示全部信息\n");printf(" 0 退出程序\n");printf(" ************************************************** \n");printf(" %d年%d月%d日",d.da_year,d.da_mon,d.da_day);printf(" \n 请选择(0-6):");scanf("%d",&choice);}}while(choice!=0);printf("以上信息已经保存在STH.txt中!\n");}。

C语言程序设计学生成绩管理系统源码

C语言程序设计学生成绩管理系统源码
CompositorByTotalMark();
break;
case 11:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit(1);
break;
default:
break;
}
DisplayMenu();/*递归调用*/
}
/************************************
void DisplayInfoBystudentName(void);
void DisplayInfoBystudentNumber(void);
void DisplayOneNode(struct STUDENT *t);
void InsertOneNode(struct STUDENT *t);
}
fclose(fp);
}
/************************************
函数功能:显示菜单,根据用户的输入
完成相应的功能
************************************/
void DisplayMenu(void)
{
STUDENT *p;
printf("-------请选择相应功能------------\n\n");
void CompositorByTotalMark(void);/*按总成绩排序*/
int choose;/*用于接受用户的选择*/
/*主函数*/
int main()
{
CreateHeadLink();
ReadInfoFormFile();
DisplayMenu();

学生成绩管理系统C语言课程设计源代码

学生成绩管理系统C语言课程设计源代码

#include<stdio.h>#include<string.h>#include<math.h>#include<conio.h>#include<stdlib.h>struct chengji /* 成绩结构体*/ {int point;char subject[20];};struct student /* 学生结构体*/ { int w;char name[20];int number;struct chengji cheng[30];float sum;float average;}stu[40];void pjun(); /*按平均分排序*/void pfen(); /*按总分排序*/ void addnew(); /*录入学生成绩*/void pall(); /*显示所有成绩*/ void check(); /*查询菜单*/ void pnum(); /*按学号排序*/ void pjing(); /*精确查找*//****************************************************************************** *************************//*主菜单*/main(){char choose;while(1){printf("\n\t\t**************************************");printf("\n\t\t* 欢迎使用成绩管理系统*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 录入学生成绩*");printf("\n\t\t* 2. 查询学生成绩*");printf("\n\t\t* 3. 清屏*");printf("\n\t\t* 0. 退出程序*");printf("\n\t\t* *");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': addnew(); break;case '2': check(); break;case '3': system("cls"); break;case '0': exit(0); break;default: printf("输入错误,请从新输入!\n\n");}}}/****************************************************************************** **********************//*录入学生成绩*/void addnew(){int n,m,i,p;float sum;float average;FILE *file;sum=0.00000;average=0.00000;if((file=fopen("c:\\student.dat","rb"))==NULL){file = fopen("c:\\student.dat", "wb+"); /* 创建一个文件*/}printf("请输入需要录入的学生人数: ");scanf("%d",&n);for(i=0;i<n;i++){printf("输入第%d个同学信息:\n",i+1);printf("姓名:");scanf("%s",&stu[i].name);printf("学号:");scanf("%d",&stu[i].number);printf("输入科目个数:");scanf("%d",&m);stu[i].w=m;printf("按科目(回车)成绩(回车)……的顺序输入:\n"); /* 录入成绩*/for(p=0;p<m;p++){scanf("%s",&stu[i].cheng[p].subject);scanf("%d",&stu[i].cheng[p].point);stu[i].sum=stu[i].sum+stu[i].cheng[p].point;stu[i].average=stu[i].sum/m;}/* printf("总分%f , 平均分%f\n ",stu[i].sum,stu[i].average);*/fwrite(&stu[i],sizeof(stu),1,file); /* 把stu写入文件*/}fclose(file); /* 关闭文件*/fflush(stdin);system("cls");}/****************************************************************************** **********************//*查询菜单*/void check(){while(1){ char choose;printf("\n\t\t**************************************");printf("\n\t\t* 查询菜单*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 按学号排列*");printf("\n\t\t* 2. 按总分排列*");printf("\n\t\t* 3. 按平均分排列*");printf("\n\t\t* 4. 精确查询*");printf("\n\t\t* 5. 显示所有学生成绩*");printf("\n\t\t* 6. 清屏*");printf("\n\t\t* 0. 返回*");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': pnum(); break;case '2': pfen(); break;case '3': pjun(); break;case '4': pjing(); break;case '5': pall(); break;case '6': system("cls"); break;case '0': main(); break;}}}/****************************************************************************** **********************//*显示所有成绩*/void pall(){int i=0,m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error!!\n");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0)/* 循环整个文件*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++)/*显示各科成绩*/{printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);}/****************************************************************************** *************************//*按学号排序*/void pnum(){ FILE *file;int j;int i=0;int n=0;int m=0;struct student bm; /*创建一个‘中间’结构体,用于交换*/if((file=fopen("c:\\student.dat","rb"))==NULL) /* 打开文件*/ { printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].number>stu[i+1].number) /*对比学号,对换stu*/{ bm=stu[i]; /*交换位置*/stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++)/* 交换后从新排序*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*按总分排序*/void pfen(){ FILE *file;int j;int i=0;int n=0;int m;struct student bm;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].sum<stu[i+1].sum){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n"); /*显示到屏幕*/printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/*******************************************************************************************************//*按平均分排序*/void pjun(){ FILE *file;int j;struct student bm;int i=0;int n=0;int m;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].average<stu[i+1].average){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*精确查找*/void pjing(){int n;int i=0;int m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}printf("请输入要查询的学生的学号:");scanf("%d",&n);getchar();fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){ if(n==stu[i].number) /*输出对应的学号的学生成绩*/{printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}break;}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);fflush(stdin);}/******************************************结束*******************************************************/。

学生成绩管理系统(C语言源码)

学生成绩管理系统(C语言源码)

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define N 1000 /*链表导入数组的长度,可以说是记录数*/#define LEN sizeof(struct student) /*用LEN代替结构体的长度*/#define IFORM "%s%s%d%d%d%d%d" /*输入数据的格式*/#define IFORM2 p1->number,p1->name,&p1->grade[0],&p1->grade[1],&p1->grade[2],&p1->grade[3],&p1->grad e[4] /*输入数据存放到链表的格式*/#define OFORM "%s %s %d %d %d %d %d" /*将数据输出到文件的格式*/#define OFORM1 "%-10s %-6s %-4d %-4d %-4d %-4d %-4d"/*将数据打印到屏幕上的格式*/#define OFORM2 p1->number,p1->name,p1->grade[0],p1->grade[1],p1->grade[2],p1->grade[3],p1->grade[4] /*输出引用结构体得格式*/#define SINFO "请输入学号、姓名、大学英语、高等数学、线性代数、政治、计算机导论\n" /*输入数据的提示符*/#define SINFO2 "学号\t 姓名大学英语高等数学线性代数政治计算机导论\n" /*打印在屏幕上的各数据项的属性*/struct student{char number[12];char name[10];int grade[5];struct student * next;}; /*定义存放学生基本信息的结构体*/FILE *fp; /*定义文件的指针*/int open=0; /*用于表示是否有文件处于打开状态*/struct student * head; /*定义链表的头*/struct student * p1,* p2; /*定义用于链表输入输出的两个变量*/char name[100],ch; /*name用于存放打开的文件名,ch用于销毁回车符。

成绩管理系统C语言_附完整源码

成绩管理系统C语言_附完整源码
成绩管理系统 C 语言_完整版
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "time.h" #define N 80 void menu(); struct student { int id; //学号 char name[50]; //姓名 int grade; //成绩 int Num; }stu[N],del; void Add(FILE *fp) { int i=0; char c[3]; int num; stu->Num = 0; for(i=0;i<30;i++) { printf("添加学生信息:\n"); printf("学号:"); scanf("%d",&stu[i].id); printf("姓名:"); scanf("%s",stu[i].name); printf("成绩:"); scanf("%d",&stu[i].grade); printf("是否继续输入学生信息<Y | N>: "); scanf("%s",&c); fprintf(fp,"%d\t%s\t%d\r\n",stu[i].id,stu[i].name,stu[i].grade); stu->Num++; num++;
ห้องสมุดไป่ตู้
if(!strcmp(c,"N") || !strcmp(c,"n")) { system("cls"); menu(); } } if(!strcmp(c,"N") || !strcmp(c,"n")) { system("cls"); menu(); } } void Search() { int i; int choice; int n,m; char name[50]; printf("1.按顺序查找\n"); printf("2.按姓名查找\n"); printf("3.显示所有学生\n"); printf("请选择:"); scanf("%d",&choice); if(choice==1) { loop: printf("查询 n-m 名学生的成绩,"); printf("请输入 n:"); scanf("%d",&n); printf("请输入 m:"); scanf("%d",&m); printf("学号\t 姓名\t 成绩\n"); for(i=0;i<stu->Num;i++) { if(i+1>=n&&i+1<=m) { printf("%d\t%s\t%d\r\n",stu[i].id,stu[i].name,stu[i].grade); } } }

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)学生成绩管理系统C语言(附完整源代码)课程设计报告学生成绩管理系统院系:专业:班级:完成日期: 2009年1月03日设计题目:学生成绩管理系统目录1、题目描述2、算法设计/设计思想3、结构框图、各模块的功能描述4、主体思想:5、程序的,,,流程图6、源代码1.题目描述设计一个简单的学生成绩管理系统,要求有简单的界面,程序段要分清模块,该程序应该:(1)输入学生成绩,求总分,平均分,以及排序。

(2)查询学生单科成绩,总分和平均成绩;(3)添加、修改学生成绩具有下列功能:(4)实现保存与查看功能2.算法设计/设计思想利用二维数组——定义stu[][]存储学生学号、各科成绩,总分,平均分,名次,利用文件来存储,读取数据。

详细合作是::负责inputx(),print1(),input();:卖力文件的储备和读取,main(),System(),Idea()和各挪用函数之间的连;:卖力find1(),find2(),find3(),find31(),Find();:负责del(),add(),change1(),Change();前期调试由小组配合卖力。

3.结构框图、各模块的功能描述3.1建立成就表3.1.1 input()功用是输退学生的信息,便于当前的查询、欣赏。

3.2增加3.2.1 add( )功用是向inputy()增加新的内容。

3.3.2 chance( )对单科成绩进行修改。

3.3查询3.3.1可根据学号,科目,名次,进行查询。

3.3.2查询内容包孕:该学生的各课成就、、均匀分。

3.4删除3.4.1能够输退学号删除一逻辑学生的一课成就。

3.5浏览成绩单3.5.1通过此print1()可以查看所有学生的各课成绩、总分、平均分和名次。

3.6文件()3.6.1保存以上所输入的信息以达到既是关闭窗口信息也不会丢失信息的目的。

3.6.2随时打开,修改文件。

3.7.退出功用是退出主菜单退出系意见评述功能菜单统输入增加及改查找功用退出功用菜单成就功用查输排查找学学添修某某生生加改XXX某成成就绩科绩绩绩成就按按按名学科次号目查查查找找找四、主体思想:1、斟酌到此步伐量大代码多,以是用函数挪用,分几小我去完成。

学生成绩管理系统(数据结构C语言版源代码)

学生成绩管理系统(数据结构C语言版源代码)

学生成绩管理系统(数据结构C语言版源代码)-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include<stdio.h>#include<string.h>#include<stdlib.h>struct students{char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *next; /*用与构建连表指向下一结点*/};FILE *fp; /*定义全局变量fp*/void Revisemenu();/*修改菜单*/void Sortmenu();/*排序菜单*/void menu();/*主菜单*/void secret();/*安全验证*/struct students * Input();/*新建学生信息*/void fprint(struct students *head);/*将信息导入文件可追加*/void fprint_(struct students *head);/*将信息导入文件并覆盖*/void Browse(struct students *head);/*浏览全部学生信息*/struct students * create(struct students *head,int *n);/*从tushu_list中读取数据构建链表*/void FindofNum(struct students *head);/*按学号查询学生信息*/void FindofNname(struct students *head);/*按姓名查询学生信息*/void SortEnglish(struct students * head);/*按英语成绩排序*/void SortJava(struct students * head);/*按Java成绩排序*/void SortSjjg(struct students * head);/*按数据结构成绩排序*/void SortSzdl(struct students * head);/*按数字逻辑电路成绩排序*/void SortJsj(struct students * head);/*按计算机组成原理成绩排序*/struct students * Delete(struct students * head,char m[15]);/*按学号删除学生成绩信息*/struct students * Revise();/*修改学生信息(按编号修改)*//*主菜单*/void menu(){printf("\n\n");printf("***************************************************\n");printf(" 学生成绩管理系统 \n");printf("---------------------------------------------------\n");printf(" 1-添加新同学 2-浏览学生信息 \n");printf(" 3-按学号查询 4-按姓名查询 \n");printf(" 5-按成绩排序 6-修改学生信息 \n");printf(" 7-删除学生信息 0-退出系统 \n");printf("---------------------------------------------------\n");printf("___________________________________________________\n");}/*排序菜单*/void Sortmenu(){printf("\n\n");printf("***************************************************\n");printf(" 按成绩排序 \n");printf(" 1-大学英语 2-JAVA编程 \n");printf(" 3-数据结构 4-数字逻辑电路 \n");printf(" 5-计算机组成原理 0-返回上级菜单 \n");printf("***************************************************\n");}/*修改菜单*/void Revisemenu(){printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" 1--修改学生姓名 2--修改学生学号 \n");printf(" 3--修改学生性别 4--修改英语成绩 \n");printf(" 5--修改JAVA成绩 6--修改数据结构 \n");printf(" 7--修改数字电路 8--修改计算计 \n");printf(" 0--返回上级菜单 \n");printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");}/*安全验证*/void secret(){char a[20];printf("**欢迎来到学生信息管理系统,进入系统前请先进行密码验证---");printf(" ");do{gets(a); /*输入密码*/system("cls"); /*调用库函数清屏*/printf("对不起!您输入的密码有误,请重新输入---");}while(strcmp(a,"0605")!=0); /*单一密码"0605"*/system("cls");}/*新建学生信息*/struct students * Input(){struct students *p1,*p2,*head; /*建立辅助结点及头结点*/char Name;int n=0,x;printf("\n请按对应项输入学生信息以#结束:\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机组成原理\n");p1=(struct students *)malloc(sizeof(struct students));head=p2=p1;do{ /*使用do while语句输入学生信息*/scanf("%s",&p1->Name);if(strcmp(p1->Name,"#")==0)break; /*判断结束符*/elsescanf("%s%s%lf%lf%lf%lf%lf",p1->Num,p1->Sex,&p1->English,&p1->Java,&p1->Sjjg,&p1->Szdl,&p1->Jsj);Name='#';p1=(struct students *)malloc(sizeof(struct students));p2->next=p1;p2=p1;n++;}while(1);p1->next=NULL;printf("学生信息输入结束!\n");getchar();printf("是否保存学生信息(1.是/2.否):");scanf("%d",&x);if(x==1)fprint(head); /*调用函数保存至文件*/elseprintf("\n文件没有被保存!\n");return head; /*返回头指针*/}/*将信息导入文件可追加*/void fprint(struct students *head){struct students *p1;if((fp=fopen("students_list.txt","a"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1->next!=NULL;p1=p1->next) /*遍历*/fprintf(fp,"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", p1->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/printf("\n学生信息已成功保存到文件 students_list.txt 中!\n");getchar();}/*将信息导入文件并覆盖*/void fprint_(struct students *head){struct students *p1;if((fp=fopen("students_list.txt","w"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1!=NULL;p1=p1->next) /*遍历*/fprintf(fp,"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", p1->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/;getchar();}/*浏览全部学生信息*/void Browse(struct students *head){char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/if((fp=fopen("students_list.txt","a+"))==NULL){printf("File open error!\n");exit(0);}printf("-------------------------------------------------------------\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(!feof(fp))/*读取并输出*/{fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",Name,Num,Sex,&English,&Java,&Sjjg,&Sz dl,&Jsj);printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",Name,Num,Sex,English,Java,Sjjg,Szdl,Jsj);};if(fclose(fp)){printf("Can not close the file!\n");exit(0);}}/*从tushu_list中读取数据构建链表*/struct students * create(struct students * head,int *n){FILE *fp;struct students*p,*p1,*p2;if((fp=fopen("students_list.txt","a+"))==NULL){printf("File open error!\n");exit(0);}while(!feof(fp)){(*n)++;p=(struct students *)malloc(sizeof(struct students));fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",p->Name,p->Num,p->Sex,&p->English,&p->Java,&p->Sjjg,&p->Szdl,&p->Jsj);if(head==NULL){head=p;p1=p;}else{p1->next=p;p2=p1;p1=p;}}p2->next=NULL;free(p);(*n)--;fclose(fp);return head;}/*按姓名查询学生信息*/void FindofName(struct students *head){int i=0,n=0;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生姓名:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Name,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到名为“%s”的学生信息!\n",b);}/*按学号查询学生信息*/void FindofNum(struct students *head){int i=0,n;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生学号:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Num,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到学号为“%s”学生信息!\n",b);}/*按英语成绩排序*/void SortEnglish(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double English;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;English=p->English; /*将链表中第一个成绩赋给English*/while(p!=NULL){if((p->English)>English)/*比较*/English=p->English;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->English==English){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->English==English){ /*分数相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按英语成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按JAVA成绩排序*/void SortJava(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Java;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Java=p->Java; /*将链表中第一个成绩赋给Java*/while(p!=NULL){if((p->Java)>Java)/*比较*/Java=p->Java;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Java==Java){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Java==Java){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按Java成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数据结构排序*/void SortSjjg(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Sjjg;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Sjjg=p->Sjjg; /*将链表中第一个成绩赋给Sjjg*/while(p!=NULL){if((p->Sjjg)>Sjjg)/*比较*/Sjjg=p->Sjjg;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Sjjg==Sjjg){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Sjjg==Sjjg){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按数据结构成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数字电路排序*/void SortSzdl(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Szdl;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Szdl=p->Szdl; /*将链表中第一个成绩赋给Szdl*/while(p!=NULL){if((p->Szdl)>Szdl)/*比较*/Szdl=p->Szdl;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Szdl==Szdl){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Szdl==Szdl){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按数字电路成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按计算机组成原理排序*/void SortJsj(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Jsj;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Jsj=p->Jsj; /*将链表中第一个成绩赋给Jsj*/while(p!=NULL){if((p->Jsj)>Jsj)/*比较*/Jsj=p->Jsj;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Jsj==Jsj){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Jsj==Jsj){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按学号删除学生成绩信息*/struct students * Delete(struct students * head,char m[15]){struct students *ptr1,*ptr2;int n;printf("\n所有学生信息如下:\n");Browse(head);printf("\n请输入想要删除的学生学号:");scanf("%s",m);head=create(head,&n);if(head==NULL){printf("无学生信息!\n");return head;}if((strcmp(head->Num,m)==0)&&head!=NULL){ptr2=head;head=head->next;free(ptr2);}if(strcmp(head->Num,m)!=0){ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(strcmp(ptr2->Num,m)==0){ptr1->next=ptr2->next;free(ptr2);}elseptr1=ptr2;ptr2=ptr1->next;}}fprint_(head);printf("\n学号为' %s '学生信息已被删除,并保存至文件!\n",m);return head;}/*修改学生信息(按编号修改)*/struct students * Revise(){int n=0,t;char num[10];char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *head=NULL;struct students *p;printf("\n所有学生信息如下:\n");Browse(head);head=create(head,&n);printf("\n输入需要修改的学生的学号:");scanf("%s",num);p=head;while(head!=NULL){if(strcmp(p->Num,num)==0){system("cls");Revisemenu();printf("编号为%s的学生信息如下:\n",num);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);while(1){printf("请选择需要修改的信息:");scanf("%d",&t);switch(t){case 1:printf("请输入新姓名:");scanf("%s",Name);strcpy(p->Name,Name);break;case 2:printf("请输入新学号:");scanf("%s",&Num);strcpy(p->Num,Num);break;case 3:printf("请输入新性别:");scanf("%s",Sex);strcpy(p->Sex,Sex);break;case 4:printf("请输入新英语成绩:");scanf("%lf",&English);p->English=English;break;case 5:printf("请输入新Java成绩:");scanf("%lf",&Java);p->Java=Java;break;case 6:printf("请输入新数据结构成绩:");scanf("%lf",&Sjjg);p->Sjjg=Sjjg;break;case 7:printf("请输入新数字电路成绩:");scanf("%lf",&Szdl);p->Szdl=Szdl;break;case 8:printf("请输入新计算机组成原理成绩:");scanf("%lf",&Jsj);p->Jsj=Jsj;break;case 0:system("cls");menu();goto lab;break;default:printf("对不起,输入有误!");break;}}}elsep=p->next;}lab:fprint_(head);printf("修改完成,并储存至文件!\n");return head;}/*主函数*/void main(){int choice,ch;char m[15];struct students *head=NULL;secret();menu();while(1){printf("请输入选项:");scanf("%d",&choice);switch(choice){case 1:Input();break;case 2:system("cls");menu();Browse(head);break;case 3:system("cls");menu();FindofNum(head);break;case 4:system("cls");menu();FindofName(head);break;case 5:system("cls");Sortmenu();do{printf("请输入您的选择:");scanf("%d",&ch);switch(ch){case 1:system("cls");Sortmenu();SortEnglish(head);break;case 2:system("cls");Sortmenu();SortJava(head);break;case 3:system("cls");Sortmenu();SortSjjg(head);break;case 4:system("cls");Sortmenu();SortSzdl(head);break;case 5:system("cls");Sortmenu();SortJsj(head);break;}}while(ch!=0);system("cls");menu();break;case 6:system("cls");menu();Revise();break;case 7:system("cls");menu();head=Delete(head,m);break;case 0:system("cls");printf("\t\t欢迎下次再来!");exit(0);default:printf("对不起,输入有误!");break;}}return ;}。

学生录入成绩C语言代码,学生成绩管理系统C语言源代码.doc

学生录入成绩C语言代码,学生成绩管理系统C语言源代码.doc

学⽣录⼊成绩C语⾔代码,学⽣成绩管理系统C语⾔源代码.doc 学⽣成绩管理系统C语⾔源代码#include"stdio.h"#include#include#include"process.h"#include"ctype.h"typedef struct{char num[10];char name[10];int c;int math;int English;double aver;}Student;Student stu[99];int shuru(Student stud[],int n)/*输⼊若⼲条记录*/{int i=0;char sign,x[10];double a=0.0;while(sign!='n'&&sign!='N'){printf("输⼊学⽣学号:");scanf("%s",stu[n+i].num);printf("输⼊学⽣姓名:");scanf("%s",stu[n+i].name);printf("输⼊学⽣的C、数学、英语");scanf("%d%d%d",&stu[n+i].c,&stu[n+i].math,&stu[n+i].English);a=1.0*(stu[n+i].c+stu[n+i].math+stu[n+i].English/3);stu[n+i].aver=a;gets(x); /*清除多余的输⼊*/printf("是否继续输⼊?(Y/N):\n");scanf("%c",&sign);i++;}return(n+i);}void xianshi(Student stud[],int n) /*显⽰所有记录*/{int i ;printf("----------------------------------------------------------\n"); /*格式头*/printf("学号 姓名 C 数学 英语 平均成绩 \n");printf("----------------------------------------------------------\n");for(i=0;i{printf("%-10s%-10s%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].c,stu[i].math,stu[i].English,stu[i].aver); }}void xiugai(Student stud[],int n) /*修改*/{int i=0,choice=1;char x[10];while(choice!=0){printf("请输⼊您要修改的学⽣的学号:\n");scanf("%s",x);for(i=0;;i++){if(strcmp(stu[i].num,x)==0)break;}printf("请选择您要修改的内容:\n");printf(" ---------------------- \n");printf("| 姓名 请按 1 |\n");printf("| c 请按 2 |\n");printf("| 数学分数 请按 3 |\n");printf("| 英语分数 请按 4 |\n"); printf("| 退出 请按 0|\n"); printf("+-----。

C语言版简单成绩查询系统源代码

C语言版简单成绩查询系统源代码

//// main.c// xueshengchengji//// Created by lxb on 13-9-16.// Copyright (c) 2013年__MyCompanyName__. All rights reserved. //#include <stdio.h>#include "stdlib.h"#include "string.h"struct Student{char name[20];char xuehao[20];int shuxue ;int yingyu ;int Cyuyan ;};void menu(void); //老师登陆后操作界面void menu1(void);//老师登陆void menu2(void);//输入成绩界面void menu3(void);//学生凭密码登陆界面void menu4(void);//学生登陆操作业面void menu5(void);//老师修改学生成绩void menu6(void);//老师查找平均成绩void menu7(int *a,int *b);//查看分数段内的人数void menu8(void);//查询不及格的人数void menu9(void);//打印全体学生成绩void menu10(void);//老师查看单独学生成绩void menu11(void);//老师修改密码void menu12(void);//通过学号查找成绩void menu13(void);//学生修改密码void read(void);void write(void);static struct Student stu[100];static int renshu=0;static char password1[]="123456";static char password2[]="654321";FILE *p=NULL;FILE *p1=NULL;FILE *p2=NULL;FILE *p3=NULL;int main (int argc, const char * argv[]){read();printf("*********************************主菜单*****************************************\n");printf(" 1教师登陆\t\t\t\t\t2学生登陆\n");printf("\n");printf("\n");printf("*************************************************************** ****************\n");printf("请选择服务项目:");int a;scanf("%d",&a);switch (a) {case1:menu1();//laoshidenglubreak;case2:menu3();break;default:break;}return0;}void menu1()//老师登陆{ char a[20];printf("请输入您的个人密码:");scanf("%s",a);if (strcmp(a,password1)==0) {printf("密码输入正确!");menu();}else{printf("您输入的密码错误!");menu1();}}void menu()//老师登陆后操作界面{printf("请选择操作:\n");printf("1,输入学生成绩\n");printf("2,修改学生成绩\n");printf("3,查看每科的总体平均成绩\n");printf("4,查看分数段分数\n");printf("5,查询不及格人数\n");printf("6,打印全体学生成绩\n");printf("7,查找单个学生成绩\n");printf("8,修改密码\n");printf("9,保存并安全退出");printf("\n");int a;scanf("%d",&a);if (a==1) {menu2();}else if(a==2){menu5();}else if(a==3){menu6();}else if(a==4){int j,k;printf("请输入一个分数段的起始分数");scanf("%d",&j);printf("请再输入一个分数段的结束分数");scanf("%d",&k);menu7(&j,&k);}else if(a==5){menu8();}else if(a==6){menu9();}else if(a==7){menu10();}else if(a==8){printf("请输入旧密码");char b[20];scanf("%s",&b);if (strcmp(b, password1)==0) {menu11();}else {printf("密码错误");menu();}}else if(a==9){write();printf("您已经安全退出。

学生成绩管理系统C源代码

学生成绩管理系统C源代码

学生成绩管理系统C源代码搜集者:海水发布时间:06-01-27 浏览次数:23242 [大中小]#include<malloc.h>#include<stdio.h>#include<stdlib.h>#define LEN sizeof(struct scorenode)#define DEBUG#include<string.h>struct scorenode{int number;/*学号*/char name[10];/*姓名*/float yuwen;/*语文成绩*/float yingyu;/*英语成绩*/float shuxue;/*数学成绩*/struct scorenode*next;};typedef struct scorenode score;int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*//*==============================================================================================*/score*creat2311(void)/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/{score*head;score*p1,*p2,*p3,*max;int i,j;float fen;char t[10];n=0;p1=p2=p3=(score*)malloc(LEN);head=p3;/*开辟一个新单元*/printf("请输入学生资料,输0退出!\n");repeat1:printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/scanf("%d",&p1->number);while(p1->number<0){getchar();printf("输入错误,请重新输入学生学号:");scanf("%d",&p1->number);}/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/if(p1->number==0)goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/else{p3=head;if(n>0){for(i=0;i<n;i++){if(p1->number!=p3->number)p3=p3->next;else{printf("学号重复,请重输!\n");goto repeat1;/*当输入的学号已经存在,程序报错,返回前面重新输入*/}}}}printf("请输入学生姓名:");scanf("%s",&p1->name);/*输入学生姓名*/printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/scanf("%f",&p1->yuwen);while(p1->yuwen<0||p1->yuwen>100){getchar();printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/scanf("%f",&p1->yuwen);}printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/scanf("%f",&p1->yingyu);while(p1->yingyu<0||p1->yingyu>100){getchar();printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/scanf("%f",&p1->yingyu);}printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/scanf("%f",&p1->shuxue);while(p1->shuxue<0||p1->shuxue>100){getchar();printf("输入错误,请重新输入数学成绩");scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/head=NULL;while(p1->number!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(score*)malloc(LEN);printf("请输入学生资料,输0退出!\n");repeat2:printf("请输入学生学号(学号应大于0):");scanf("%d",&p1->number);/*输入学号,学号应大于0*/while(p1->number<0){getchar();printf("输入错误,请重新输入学生学号:");scanf("%d",&p1->number);}/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/if(p1->number==0)goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/else{p3=head;if(n>0){for(i=0;i<n;i++){if(p1->number!=p3->number)p3=p3->next;else{printf("学号重复,请重输!\n");goto repeat2;/*当输入的学号已经存在,程序报错,返回前面重新输入*/}}}}printf("请输入学生姓名:");scanf("%s",&p1->name);/*输入学生姓名*/printf("请输入语文成绩(0~100):");scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/while(p1->yuwen<0||p1->yuwen>100){getchar();printf("输入错误,请重新输入语文成绩");scanf("%f",&p1->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100):");scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/while(p1->yingyu<0||p1->yingyu>100){getchar();printf("输入错误,请重新输入英语成绩");scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/ printf("请输入数学成绩(0~100):");scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/while(p1->shuxue<0||p1->shuxue>100){getchar();printf("输入错误,请重新输入数学成绩");scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/}end:p1=head;p3=p1;for(i=1;i<n;i++){for(j=i+1;j<=n;j++){max=p1;p1=p1->next;if(max->number>p1->number){k=max->number;max->number=p1->number;p1->number=k;/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/strcpy(t,max->name);strcpy(max->name,p1->name);strcpy(p1->name,t);/*交换前后结点中的姓名,使之与学号相匹配*/fen=max->yuwen;max->yuwen=p1->yuwen;p1->yuwen=fen;/*交换前后结点中的语文成绩,使之与学号相匹配*/fen=max->yingyu;max->yingyu=p1->yingyu;p1->yingyu=fen;/*交换前后结点中的英语成绩,使之与学号相匹配*/fen=max->shuxue;max->shuxue=p1->shuxue;p1->shuxue=fen;/*交换前后结点中的数学成绩,使之与学号相匹配*/}}max=head;p1=head;/*重新使max,p指向链表头*/}p2->next=NULL;/*链表结尾*/printf("输入的学生数为:%d个!\n",n);return(head);}/*==============================================================================================*//*==============================================================================================*/score*load2311(score*head)/*函数load2311,功能:从文件读入学生记录*/{score*p1,*p2;int m=0;char filepn[10];FILE*fp;printf("请输入文件路径及文件名:");scanf("%s",filepn);/*输入文件路径及名称*/if((fp=fopen(filepn,"r+"))==NULL){printf("不能打开文件!\n");return0;}fscanf(fp,"考试成绩管理系统\n");fscanf(fp,"作者:周纯钢班级:信息023学号:11\n");fscanf(fp,"-----------------------------------------\n");fscanf(fp,"|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");fscanf(fp,"-----------------------------------------\n");/*读入表格域*/printf("考试成绩管理系统\n");printf("作者:周纯钢班级:信息023学号:11\n");printf("-----------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");printf("-----------------------------------------\n");/*打印表格域*/m=m+1;if(m==1){p1=(score*)malloc(LEN);/*开辟一个新单元*/fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);/*文件读入与显示*/head=NULL;do{n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(score*)malloc(LEN);/*开辟一个新单元*/fscanf(fp,"%d%s%f%f%f\n",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);/*文件读入与显示*/}while(!feof(fp));p2->next=p1;p1->next=NULL;n=n+1;}printf("-----------------------------------------\n");/*表格下线*/fclose(fp);/*结束读入,关闭文件*/return(head);}/*==============================================================================================*//*==============================================================================================*/score*add2311(score*head,score*stu)/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/{score*p0,*p1,*p2,*p3,*max;int i,j;float fen;char t[10];p3=stu=(score*)malloc(LEN);/*开辟一个新单元*/printf("\n输入要增加的学生的资料!");repeat4:printf("请输入学生学号(学号应大于0):");scanf("%d",&stu->number);/*输入学号,学号应大于0*/while(stu->number<0){getchar();printf("输入错误,请重新输入学生学号:");scanf("%d",&stu->number);}/*输入错误,重新输入学号*/ /******************************************************/if(stu->number==0)goto end2;/*当输入的学号为0时,转到末尾,结束追加*/else{p3=head;if(n>0){for(i=0;i<n;i++){if(stu->number!=p3->number)p3=p3->next;else{printf("学号重复,请重输!\n");goto repeat4;/*当输入的学号已经存在,程序报错,返回前面重新输入*/}}}}/******************************************************/printf("输入学生姓名:");scanf("%s",stu->name);/*输入学生姓名*/printf("请输入语文成绩(0~100):");scanf("%f",&stu->yuwen);/*输入语文成绩,成绩应在0-100*/while(stu->yuwen<0||stu->yuwen>100){getchar();printf("输入错误,请重新输入语文成绩");scanf("%f",&stu->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100):");scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/while(stu->yingyu<0||stu->yingyu>100){getchar();printf("输入错误,请重新输入英语成绩");scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/printf("请输入数学成绩(0~100):");scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/while(stu->shuxue<0||stu->shuxue>100){getchar();printf("输入错误,请重新输入数学成绩");scanf("%f",&stu->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/p1=head;p0=stu;if(head==NULL){head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/else/*原来链表不为空*/{if(p1->next==NULL)/*找到原来链表的末尾*/{p1->next=p0;p0->next=NULL;/*将它与新开单元相连接*/}else{while(p1->next!=NULL)/*还没找到末尾,继续找*/{p2=p1;p1=p1->next;}p1->next=p0;p0->next=NULL;}}n=n+1;p1=head;p0=stu;for(i=1;i<n;i++){for(j=i+1;j<=n;j++){max=p1;p1=p1->next;if(max->number>p1->number){k=max->number;max->number=p1->number;p1->number=k;/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/strcpy(t,max->name);strcpy(max->name,p1->name);strcpy(p1->name,t);/*交换前后结点中的姓名,使之与学号相匹配*/fen=max->yuwen;max->yuwen=p1->yuwen;p1->yuwen=fen;/*交换前后结点中的语文成绩,使之与学号相匹配*/fen=max->yingyu;max->yingyu=p1->yingyu;p1->yingyu=fen;/*交换前后结点中的英语成绩,使之与学号相匹配*/fen=max->shuxue;max->shuxue=p1->shuxue;p1->shuxue=fen;/*交换前后结点中的数学成绩,使之与学号相匹配*/}}max=head;p1=head;/*重新使max,p指向链表头*/}end2:printf("现在的学生数为:%d个!\n",n);return(head);}/*==============================================================================================*//*==============================================================================================*/score*search2311(score*head)/*函数search2311,功能:查询学生成绩*/{int number;score*p1,*p2;printf("输入要查询的学生的学号,");scanf("%d",&number);while(number!=0){if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}printf("-----------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");printf("-----------------------------------------\n");/*打印表格域*/p1=head;while(number!=p1->number&&p1->next!=NULL){p2=p1;p1=p1->next;}if(number==p1->number){printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);printf("-----------------------------------------\n");}/*打印表格域*/elseprintf("%d不存在此学生!\n",number);printf("输入要查询的学生的学号,");scanf("%d",&number);}printf("已经退出了!\n");return(head);}/*==============================================================================================*//*==============================================================================================*/score*del2311(score*head)/*函数del2311,功能:删除学生资料*/{score*p1,*p2;int number;printf("输入要删除的学生的学号(输入0时退出):");scanf("%d",&number);getchar();while(number!=0)/*输入学号为0时退出*/{if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}p1=head;while(number!=p1->number&&p1->next!=NULL)/*p1指向的不是所要找的首结点,并且后面还有结点*/{p2=p1;p1=p1->next;}/*p1后移一个结点*/if(number==p1->number)/*找到了*/{if(p1==head)head=p1->next;/*若p1指向的是首结点,把地二个结点地址赋予head*/elsep2->next=p1->next;/*否则将下一个结点地址赋给前一结点地址*/printf("删除:%d\n",number);n=n-1;}elseprintf("%d不存在此学生!\n",number);/*找不到该结点*/printf("输入要删除的学生的学号:");scanf("%d",&number);getchar();}#ifdef DEBUGprintf("已经退出了!\n");#endifprintf("现在的学生数为:%d个!\n",n);return(head);}/*==============================================================================================*//*==============================================================================================*/void print2311(score*head)/*函数print2311,功能:显示学生成绩*/{score*p;if(head==NULL){printf("\n没有任何学生资料!\n");}else{printf("%d\n",n);printf("-----------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");printf("-----------------------------------------\n");/*打印表格域*/p=head;do{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue);printf("-----------------------------------------\n");/*打印表格域*/p=p->next;}while(p!=NULL);/*打印完成了*/}}/*==============================================================================================*//*==============================================================================================*/score*statistics2311(score*head)/*函数statistics2311,功能:统计学生成绩*/{float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;score*p;int x,y=0,i=0;p=head;printf("1个人总分和平均分\t2单科平均分\t3总分最高分\t4总分最低分\n");scanf("%d",&x);getchar();switch(x)/*用switch语句实现功能选择*/{case1:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/else{printf("---------------------------------------------------------\n");printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|总分\t|平均分\t|\n");printf("---------------------------------------------------------\n");/*打印表格域*/while(p!=NULL){sum1=p->yuwen+p->yingyu+p->shuxue;/*计算个人总分*/ave1=sum1/3;/*计算个人平均分*/printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->yuwen,p->yingyu,p->shuxue,sum1,ave1);/*打印结果*/printf("---------------------------------------------------------\n");/*打印表格域*/p=p->next;}}return(head);break;case2:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/while(p!=NULL){sum1=sum1+p->yuwen;sum2=sum2+p->yingyu;sum3=sum3+p->shuxue;/*计算总分*/y=y+1;ave1=sum1/y;ave2=sum2/y;ave3=sum3/y;/*计算平均分*/p=p->next;/*使p指向下一个结点*/}printf("语文平均分是%.1f\n",ave1);printf("英语平均分是%.1f\n",ave2);printf("数学平均分是%.1f\n",ave3);/*打印结果*/return(head);break;case3:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/max=p->yuwen+p->yingyu+p->shuxue;while(i<n){i=i+1;sum1=p->yuwen+p->yingyu+p->shuxue;/*计算个人总分*/if(max<sum1)max=sum1;p=p->next;}printf("总分最高分:%.1f",max);printf("\n");return(head);break;case4:if(head==NULL){printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/while(p!=NULL){min=p->yuwen+p->yingyu+p->shuxue;while(p!=NULL){sum2=p->yuwen+p->yingyu+p->shuxue;if(min>sum2)min=sum2;p=p->next;}}printf("总分最低分:%.1f",min);printf("\n");return(head);break;default:printf("输入错误,请重试!\n");}return(head);}/*==============================================================================================*//*==============================================================================================*/save2311(score*p1)/*函数save2311,功能:保存学生的资料*/{FILE*fp;char filepn[20];/*用来存放文件保存路径以及文件名*/printf("请输入文件路径及文件名:");scanf("%s",filepn);if((fp=fopen(filepn,"w+"))==NULL){printf("不能打开文件!\n");return0;}fprintf(fp,"考试成绩管理系统\n");fprintf(fp,"作者:周纯钢班级:信息023学号:11\n");fprintf(fp,"-----------------------------------------\n");fprintf(fp,"|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");fprintf(fp,"-----------------------------------------\n");/*打印表格域*/while(p1!=NULL){fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);p1=p1->next;/*下移一个结点*/}fclose(fp);printf("文件已经保存!\n");return0;}/*==============================================================================================*//*==============================================================================================*/score*taxis2311(score*head)/*定义排序函数。

C学生成绩管理系统源代码

C学生成绩管理系统源代码

i n c l u d e<> include<>include<>include<>include<>class Person{ public:char name8;};class student:public Person lass_0<<" "<<studi.num<<" "<<<<" "<<studi.c_program<<" "<<studi.english<<" "<<studi.math<<" "<<studi.average<<endl;};}int Readstudent stud lass_0>>studi.num>>>>studi.c_program>>studi.english>>st udi.math >>studi.average;};return count ;}void Inputstudent stud lass_0;loop:cout<<"学号:";cin>>studi.num;int c=0;whilec<i{c++;ifstudi.num==studi-c.num{cout<<"你输入的学号已经存在请重新输入"<<endl;goto loop;}}cout<<"姓名:";cin>>;do{flag=0;cout<<"C++成绩:";cin>>studi.c_program;ifstudi.c_program>100 ||studi.c_program<1cout<<"请输入1-100之间的数字\n";elseflag=1;}whileflag==0;do{flag=0;cout<<"英语成绩:";cin>>studi.english;ifstudi.english>100 ||studi.english<1cout<<"请输入1-100之间的数字\n";elseflag=1;}whileflag==0;do{flag=0;cout<<"数学成绩:";cin>>studi.math;ifstudi.math>100 ||studi.math<1cout<<"请输入1-100之间的数字\n";elseflag=1;}whileflag==0;studi.average=studi.c_program+studi.english+studi.math/3;cout<<"平均分:"<<studi.average<<endl;cout<<"继续录入学生成绩y/n";cin>>sign; /输入判断/i++;}Writestud,i;}void Statisticstudent stud lass_0<<"\t"<<studi.num<<"\t"<<<<"\t"<<studi.average<<endl;system"pause";}void Lookupstudent stud 学号查找 2.按姓名查找"<<endl;cin>>p;ifp==1{system"cls"; /运行前清屏/int n=Readstud;int s;int i=0;cout<<endl<<">>>>>>>> 查找学生成绩 <<<<<<<<\n"<<endl;cout<<"请输入查找学生的学号:"<<endl;cin>>s;whilestudi.num-s=0&&i<n i++; /查找判断/ifi==n{cout<<"没有该学生的信息"<<endl; /输入失败信息/ }else{cout<<"---------------------------"<<endl;cout<<"班级:"<<studi.class_0<<endl; /输出该学生信息/ cout<<"学号:"<<studi.num<<endl;cout<<"姓名:"<<<<endl;cout<<"C++:"<<studi.c_program<<endl;cout<<"英语:"<<studi.english<<endl;cout<<"数学:"<<studi.math<<endl;cout<<"平均分:"<<studi.average<<endl;}}ifp==2{system"cls"; /运行前清屏/int m=Readstud;char t;int i=0;cout<<endl<<">>>>>>>> 查找学生成绩 <<<<<<<<\n"<<endl;cout<<"请输入查找学生的姓名:"<<endl;cin>>t;-t,==0&&i<m i++; /查找判断/ {cout<<"---------------------------"<<endl;cout<<"班级:"<<studi.class_0<<endl; /输出该学生信息/cout<<"学号:"<<studi.num<<endl;cout<<"姓名:"<<<<endl;cout<<"C++:"<<studi.c_program<<endl;cout<<"英语:"<<studi.english<<endl;cout<<"数学:"<<studi.math<<endl;cout<<"平均分:"<<studi.average<<endl;}}}void Modifystudent stud um-s=0&&i<n i++; /查找判断/ ifi==n{cout<<"没有该学生的成绩"<<endl; /输入失败信息/ }else{cout<<"----------该学生的信息----------\n"<<endl; /格式头/cout<<"班级"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"c++"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"平均分"<<endl;cout<<"---------------------------------"<<endl;cout<<studi.class_0<<"\t"<<studi.num<<"\t"<<<<"\t"<<stu di.c_program<<"\t"<<studi.english<<"\t"<<studi.math<<"\t"<<studi. average<<endl;cout<<"---------------------------------"<<endl;cout<<"请输入要修改的课程号"<<endl;cout<<"语言 2.英语 3.数学"<<endl;cin>>a;cout<<"重新输入分数"<<endl;cin>>q;ifa==1 studi.c_program=q;ifa==2studi.english=q;ifa==3studi.math=q;studi.average=studi.c_program+studi.english+studi.math/3;cout<<"----------该学生的信息----------\n"<<endl; /格式头/ cout<<"班级"<<"\t"<<"学号"<<"\t"<<"姓名"<<"\t"<<"c++"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"平均分"<<endl;cout<<"---------------------------------"<<endl;cout<<studi.class_0<<"\t"<<studi.num<<"\t"<<<<"\t"<< studi.c_program<<"\t"<<studi.english<<"\t"<<studi.math<<"\t"<<stu di.average<<endl;char c;cout<<"是否保存数据y/n"<<endl;cin>>c;ifc='n'&&c='N'Writestud,n;}}void Insertstudent stud lass_0;cout<<"学号:";cin>>studn.num;cout<<"姓名:";cin>>;cout<<"C++成绩:";cin>>studn.c_program;cout<<"英语成绩:";cin>>studn.english;cout<<"数学成绩:";cin>>studn.math;studn.average=studn.c_program+studn.english+ studn.math/3;cout<<"平均分"<<studn.average;n++;cout<<"插入成功"<<endl; /返回成功信息/cout<<"是否继续输入y/n"<<endl;cin>>s;}Writestud,n;}void Managestudent stud verage<studj+1.average{strcpyt,studj+1.class_0;strcpystudj+1.class_0,studj.class_0;strcpystudj.class_0,t;k=studj+1.num;studj+1.num=studj.num;studj.num=k;strcpyt,studj+;strcpystudj+,;,t;s=studj+1.c_program;studj+1.c_program=studj.c_program;studj.c_program=s;s=studj+1.english;studj+1.english=studj.english;studj.english=s;s=studj+1.math;studj+1.math=studj.math;s=studj+1.average;studj+1.average=studj.average;studj.average=s;}cout<<"-------------------------------------"<<endl; /格式头/ cout<<"班级"<<"\t "<<"学号"<<"\t "<<"姓名"<<"\t"<<"C++"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"平均分"<<"\t"<<"名次"<<endl;fori=0;i<n;i++ /循环输入/{studi.order=i+1;cout<<studi.class_0<<"\t"<<studi.num<<"\t"<<<<"\t"<< studi.c_program<<"\t"<<studi.english<<"\t"<<studi.math<<"\t"<<stu di.average<<"\t "<<studi.order<<endl;}Writestud,n;}void Outputstudent stud lass_0<<"\t"<<studi.num<<"\t"<<<<"\t"<<studi.c_program< <"\t "<<studi.english<<"\t " <<studi.math<<"\t"<<studi.average<<endl;}cout<<"-------------------------------------------------------------------------"<<endl;}}int menu /菜单函数/{char c;do{system"cls"; /运行前清屏/cout<<"\n"<<endl;cout<<" -----------------欢迎使用学生成绩管理系统-------------\n"<<endl;cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"<<endl;cout<<" 1输入学生成绩"<<endl;cout<<" 2显示学生成绩"<<endl;cout<<" 3查找学生成绩"<<endl;cout<<" 4修改学生成绩"<<endl;cout<<" 5插入学生成绩"<<endl;cout<<" 6排列管理成绩"<<endl;cout<<" 7显示班级学生成绩"<<endl;cout<<" 0退出本系统 " <<endl;cout<<" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ "<<endl;cout<<"请你选择0-7:"<<endl;c=getchar; /读入选择/}whilec<'0'||c>'8';returnc-'0'; /返回选择/}void main /主函数/{for;;{switchmenu /选择判断/{case 1:Inputstud;/输入学生成绩/break;case 2:Statisticstud; /输出学生统计数据/break;case 3:Lookupstud; /查找学生成绩/cout<<"\t\t\t";system"pause";break;case 4:Modifystud; /修改学生成绩/cout<<"\t\t\t";system"pause";break;case 5:Insertstud;/增加学生成绩/cout<<"\t\t\t";system"pause";break;case 6:Managestud; /按平均分对成绩记录项进行降序排序/cout<<"\t\t\t";system"pause";break;case 7:Outputstud; /显示全部学生成绩/cout<<"\t\t\t";system"pause";break;case 0:cout<<endl<<" ===========================感谢您使用学生成绩管理系统==========================\n"<<endl; /结束程序/ cout<<"\t\t\t";system"pause";exit0;}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <winsock2.h>
#define LEN sizeof(Student)
typedef struct student
{
int num;
char name[20];
if (choose==1)
{
printf("\n请输入你要查询的学生的学号,输入0退出学号查询:");
scanf("%d",&fnum);
for(;fnum;)
{
if (max_4<p->score[3]) max_4=p->score[3];
else if (min_4>p->score[3]) min_4=p->score[3];
if (max_sum<p->sum) max_sum=p->sum;
else if (min_sum>p->sum) min_sum=p->sum;
{
mid=*pm;
*pm=*p1;
*p1=mid;
px=pm->next;
pm->next=p1->next;
p1->next=px;
}
}
printf("\n排序后的成绩表为:\n");
case 8:print(head);break;
case 0:return head;
default: printf("\n\n您的输入有误!请重新输入:\n\n");break;
}
}
}
printf("\t\t#\t3.按学生语文成绩排序\t #\n");
printf("\t\t#\t4.按学生数学成绩排序\t #\n");
printf("\t\t#\t5.按学生英语成绩排序\t #\n");
printf("\t\t#\t6.按学生计算机成绩排序\t #\n");
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];
else if (min_1>p->score[0]) min_1=p->score[0];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
max_sum,min_sum,aver_sum);
}
void find(Student *head)
{
Student *p;
int choose,fnum;
char tem[20];
if (n==0) {printf("\n当前系统没有任何学生数据,您就别费劲了!\n ");return;}
p2=p1;
printf("\n请输入第%d名学生的学号,没有此学生则输入0表示结束:",n+1);
scanf("%d",&flag);
}
p2->next=NULL;
printf("\n\n");
return head;
}
Student *sort_all(Student *head)
case 3:
case 4:
case 5:
case 6:head=sort_1(head,choose);break;
case 7:print(head);sort_2(head);break;
case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;
case 6:if (pm->score[3]<p2->score[3]) pm=p2;break;
}
if (pm!=p1)
if (max_2<p->score[1]) max_2=p->score[1];
else if (min_2>p->score[1]) min_2=p->score[1];
if (max_3<p->score[2]) max_3=p->score[2];
else if (min_3>p->score[2]) min_3=p->score[2];
printf("请输入第%d名学生的计算机成绩:",n);
scanf("%d",&p1->score[3]);
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];
p2->next=p1;
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
p1->num=flag;
printf("请输入第%d名学生的姓名:",n);
scanf("%s",p1->name);
printf("请输入第%d名学生的语文成绩:",n);
printf("\t\t#\t7.单科高分及均分\t #\n");
printf("\t\t#\t8.显示当前学生成绩\t #\n");
printf("\t\t#\t0.返回上一级菜单\t #\n");
printf("\t\t# # # # # 由himpo友情提供# # # # #\n\n");
scanf("%d",&p1->score[0]);
printf("请输入第%d名学生的数学成绩:",n);
scanf("%d",&p1->score[1]);
printf("请输入第%d名学生的英语成绩:",n);
Hale Waihona Puke scanf("%d",&p1->score[2]);
void print(Student *head);
Student *sort_all(Student *head);
void find(Student *head);
Student *add_new(Student *head);
Student *cin()
{
int flag;
Student *head,*p1,*p2;
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;;)
{
printf("\n请输入您要查询学生的方式:\n\n");
printf("1、按学号查询;2、按姓名查询;0、我不查询了。\n\n");
printf("请选择:");
scanf("%d",&choose);
while(getchar()!='\n');
printf("请输入你要执行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:
case 2:
printf("英语最高分为%d,最低分为%d,平均分为%.2f\n",max_3,min_3,aver_3);
printf("计算机最高分为%d,最低分为%d,平均分为%.2f\n",max_4,min_4,aver_4);
printf("总分最高分为%d,最低分位%d,平均分为%.2f\n",
Student *sort_1(Student *head,int choose)
{
Student *p1,*p2=head->next,*pm,*px;
Student mid;
if (!p2) return head;
for(p1=p2;p1->next!=NULL;p1=p1->next)
case 2:if (pm->sum<p2->sum) pm=p2;break;
相关文档
最新文档