C语言学生成绩管理系统源程序
- 格式:doc
- 大小:71.50 KB
- 文档页数:13
学生成绩管理系统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;}总结学生成绩管理系统是一个非常有用的工具,可以帮助学校、教师和学生高效地管理和查询学生成绩。
让结局不留遗憾,让过程更加完美。
#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 *headint *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 * headchar 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=0x;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->Nump1->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->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->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->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->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"NameNum&English&Java&Sjjg&Szdl&Jsj);printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"NameNumSexEnglishJavaSjjgSzdlJsj);};if(fclose(fp)){printf("Can not close the file!\n");exit(0);}}/*从tushu_list中读取数据构建链表*/struct students * create(struct students * headint *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->Namep->Nump->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=0n=0;char b[20];struct students *p;head=create(head&n);p=head;printf("\n请输入要查询的学生姓名:");scanf("%s"b);while(p!=NULL){if(strcmp(p->Nameb)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到名为"%s"的学生信息!\n"b);}/*按学号查询学生信息*/void FindofNum(struct students *head){int i=0n;char b[20];struct students *p;head=create(head&n);p=head;printf("\n请输入要查询的学生学号:");scanf("%s"b);while(p!=NULL){if(strcmp(p->Numb)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/ printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按学号删除学生成绩信息*/struct students * Delete(struct students * headchar 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->Numm)==0)&&head!=NULL){ptr2=head;head=head->next;free(ptr2);}if(strcmp(head->Numm)!=0){ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(strcmp(ptr2->Numm)==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=0t;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->Numnum)==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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);while(1){printf("请选择需要修改的信息:");scanf("%d"&t);switch(t){case 1:printf("请输入新姓名:");scanf("%s"Name);strcpy(p->NameName);break;case 2:printf("请输入新学号:");scanf("%s"&Num);strcpy(p->NumNum);break;case 3:printf("请输入新性别:");scanf("%s"Sex);strcpy(p->SexSex);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 choicech;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(headm);break;case 0:system("cls");printf("\t\t欢迎下次再来!");exit(0);default:printf("对不起输入有误!");break;}}return ;}。
C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。
h"#include"string。
h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数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—>);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。
《学生成绩管理系统》-蕲宥1C++程序设计源程序: ---------------- 《学生成绩管理系统》#in clude<iostream.h>#in clude<stri ng.h>#i nclude <process.h>#include<cstring> //数组比较头文件#include <fstream.h>〃文件的输入输出#i nclude <stdio.h>int time=0;char n ame_[20];class CPerson 〃 ---- CPerson 基类 成员:IDNo Name Addr Tel{public:char IDNo[30];char Name[30];char Addr[30];char Tel[30];};class CStudent:public CPerson//----CStudent 类--继承自 CPerson 成员:StudNo MathEnglish {public:char StudNo[30];double Math;double En glish;double Average;};class CClass// --------- CClass 类 成员:CClassName CStudent{private:char CCIassName[30];CStude nt* stu[50];public:CClass();~CCIass();void CreateClass(); //void OutClassName();〃 输出班级名字void NewAStu(); //1.创建学生信息void chan ge(); //3.修改学生信息void del(); 〃4.删除学生信息void writei n(); // 文件写入void writeout(); // 文件读出void writei no(); // 文件另存为void writeouto(); //打开其他文件void fin d(); //6.查询学生信息 };Averagevoid back()〃----------------------- // 屈9频函数{cout<<"\t\t\t 执行成功!"<<endl;system("pause"); // 任意键继续system("cls"); // 清除屏幕}void back_ no(){system("pause"); // 任意键继续system("cls"); // 清除屏幕}void title()// -------------{system("cls");cout<<" -------------- 学生信息管理程序----------- \n您现在的位置:\t主菜单-->";}void CCIass::writein()〃 ------- 保存文件{ofstream SaveFile("myfile.txt");SaveFile<<CCIassName<<"\t"<<time<<e ndl;for(i nt i=0;i<time;i++){SaveFile<<stu[i]->IDNo<<"\t"<<stu[i]->Name<<"\t"<<stu[i]->Addr<<"\t"<<stu[i]->Tel<<"\t"<<stu[i]->StudNo<<"\t"<<stu[i]->Math<<"\t"<<stu[i]->E nglish<<"\t"<<stu[i]->Average<<e ndl;}SaveFile.close();ofstream Save(n ame_);Save<<CClassName<<"\t"<<time<<e ndl;for(i nt j=O;j<time;j++){Save<<stu[j]->IDNo<<"\t"<<stu[j]->Name<<"\t"<<stu[j]->Addr<<"\t"<<stu[j]->Tel<<"\t"<<stu[j]->StudNo<<"\t"<<stu[j]->Math<<"\t"<<stu[j]->E nglish<<"\t"<<stu[j]->Average<<e ndl;}2Save.close();}void CCIass::writeino()〃 ----------- 文件另存为{char choice[30];ofstream fop;ifstream fip;cout<<"文件已默认保存了!\t现在需要另存为?(Y/N)"<<endl;cin> >choice;while(strcmp(choice,"Y")==0||strcmp(choice,"y")==0){cout<<"请输入文件名称:\t"<<endl;cin»n ame_;strcat (n ame_, ".txt ");fop.ope n(n ame_);fop<<CCIassName<<"\t"<<time<<e ndl;for(i nt i=0;i<time;i++){fop<<stu[i]->IDNo<<"\t"<<stu[i]->Name<<"\t"<<stu[i]->Addr<<"\t"<<stu[i]->Tel<<"\t"<<stu[i]->StudNo<<"\t"<<stu[i]->Math<<"\t"<<stu[i]->E nglish<<"\t"<<stu[i]->Average<<e ndl;}fip.close();cout<<"另存为"<<name_<<"成功!"<<endl;back_ no ();return;}while(strcmp(choice," n")==0||strcmp(choice,"N")==0){back_ no ();return;}while(strcmp(choice,"Y")!=0||strcmp(choice,"y")!=0){cout<<"输入错误!"<<endl;back_ no ();return;}}3void CCIass::writeout()〃 -------{int i=0;char c[30];FILE *fp;if((fp=fope n( "myfile.txt","r"))==NULL){cout<<"ca nn't ope n the file\n";exit(0);}fsca nf(fp,"%s%d",c, &time);strcpy(CClassName,c);while(i<time){fsca nf(fp,"%s%s%s%s%s%lf%lf%lf',stu[i]->IDNo,stu[i]->Name,stu[i]->Addr, &stu[i]->Tel,stu[i]->StudNo, &stu[i]->Math, &stu[i]->E nglish, &stu[i]->Average);i++;}fclose(fp); /* 关闭文件*/cout<<"恭喜你!成功读取班级信息!\n";}void CClass::writeouto() // ----------------------- 打开其他文件{int i=0;char c[30];FILE *fp;fstream _file;ofstream fop;ifstream fip;cout<<"请输入文件名称:\t"<<endl;cin»n ame_;strcat( name_, ".txt "); // 创建文件名ifstream fin(n ame_);_file.ope n(n ame_,ios::i n);while(!_file){cout<<name_<<"没有被创建\n";cout<<"请输入文件名称:\t"<<endl;cin»n ame_;}if((fp=fope n(n ame_,"r"))==NULL){cout<<"ca nn't ope n the file\n";4exit(O);}fsca nf(fp,"%s%d",c, &time);strcpy(CCIassName,c);while(i<time){fsca nf(fp,"%s%s%s%s%s%lf%lf%lf',stu[i]->IDNo,stu[i]->Name,stu[i]->Addr, &stu[i]->Tel,stu[i]->StudNo,&stu[i]->Math, &stu[i]->E nglish, &stu[i]->Average);i++;}fclose(fp); /* 关闭文件*/cout<<"恭喜你!成功读取班级信息!\n";}CCIass::CCIass()〃--------{for(i nt i=0;i<50;i++){stu[i]=new CStude nt();}}CCIass::~CCIass()〃-------{for(i nt i=0;i<50;i++){delete stu[i];}}void CCIass::CreateClass()〃 ------- 创建班级{char choice[30];char *c;char cn ame[30];cout<<" -------------- 学生信息管理程序----------- "<<endl;cout<<"1、创建班级"<<endl<<"2、读取班级信息"<<endl<<"3、退出程序"<<endl;cout<<"请选择:";cin> >choice;for(i nt o=0;o<100;o++){while(strcmp(choice,"1")==0){system("cls");5cout<<" -------------- 学生信息管理程序----------- "<<endl; 6cout<<"请输入班级名称:";c=new char[];cin> >c;strcpy(CCIassName,c);return;}while(strcmp(choice,"2")==0){system("cls");title();cout<<"\n1、打开上次的文件"<<endl<<"2、打开其他文件"<<endl<<"\n 请选择:";cin»cn ame;for(i nt k=0;k<100;k++){while(strcmp(c name,"1")==0){writeout();return;}while(strcmp(c name,"2")==0){writeouto();return;}cout<<"请在1〜2中选择:";cin»cn ame;}}while(strcmp(choice,"0")==0)exit(0);cout<<"请在1〜2中选择:";cin> >choice;}}void CCIass::NewAStu()〃------- 0.创建学生{cout<<"->输入学生信息\n";cout<<"请输入身份证号码(18位):\t\t";cin>>stu[time]->IDNo; // ---------- 检验身份证位数while(stu[time]->IDNo[18]!='\0'){cout<<"Data Error!\n 请输入18 位身份证号码:\t\t";cin >>stu[time]->IDNo;}cout<<"请输入姓名:\t\t";7cin> >stu[time]->Name;cout<<"请输入住址:\t\t";cin> >stu[time]->Addr;cout<<"请输入电话号码:\t\t";cin> >stu[time]->Tel;cout<<"请输入学号(12位):\t\t";cin >>stu[time]->StudNo;for(int o=0;o<1000;o++){while(stu[time]->StudNo[12]!='\0') // ---------- 检验学号位数{cout<<"Data Error!'n 请输入12 位学号:\t\t\t";cin >>stu[time]->StudNo;}for(int i=0;i<time;i++) // ------------------ 检验是否重复{if(strcmp(stu[i]->StudNo,stu[time]->StudNo)==0){cout<<"Data Error!'n学号重复:请重新输入:\n"; cin >>stu[time]->StudNo;}}}cout<<"请输入数学成绩:\t\t";cin> >stu[time]->Math;while(stu[time]->Math<0||stu[time]->Math>100){cout<<"Data Error!\n 请重新输入一个分数(0~100):\t";cin> >stu[time]->Math;}cout<<"请输入英语成绩:\t\t";cin> >stu[time]->E nglish;while(stu[time]->E nglish<O||stu[time]->E nglish>100){cout<<"Data Error!\n 请重新输入一个分数(0~100):\t"; cin> >stu[time]->E nglish;}stu[time]->Average=(stu[time]->Math+stu[time]->E nglish)/2; back();}void CCIass::OutClassName()〃------- 2.打印班级名称{int fen shu; char temp[30];8double temp_;for(i nt cha nge=0;cha nge<time;cha nge++){fen shu=cha nge;for(i nt j=cha nge;j<time;j++)if(strcmp(stu[j]->StudNo,stu[fe nshu]->StudNo)<0)fen shu=j;strcpy(temp,stu[fe nshu]->Addr); strcpy(stu[fe nshu]->Addr,stu[cha nge]->Addr);strcpy(stu[change]->Addr,temp); /* 地址*/ strcpy(temp,stu[fe nshu]->StudNo);strcpy(stu[fe nshu]->StudNo,stu[cha nge]->StudNo); strcpy(stu[change]->StudNo,temp); /*身份证*/ strcpy(temp,stu[fe nshu]->Name);strcpy(stu[fe nshu]->Name,stu[cha nge]->Name); strcpy(stu[change]->Name,temp); /* 姓名*/ strcpy(temp,stu[fe nshu]->Tel);strcpy(stu[fe nshu]->Tel,stu[cha nge]->Tel); strcpy(stu[change]->Tel,temp); /* 电话*/strcpy(temp,stu[fe nshu]->IDNo);strcpy(stu[fe nshu]->IDNo,stu[cha nge]->IDNo); strcpy(stu[change]->IDNo,temp); /* 学号*/temp_=stu[fe nshu]->Math;stu[fe nshu]->Math=stu[cha nge]->Math; stu[change]->Math=temp_; /* 数学*/ temp_=stu[fenshu]->E nglish;stu[fe nshu]->E nglish=stu[cha nge]->E nglish; stu[change]->English=temp_; /* 英语*/temp_=stu[fe nshu]->Average;stu[fe nshu]->Average=stu[cha nge]->Average; stu[change]->Average=temp_; /* 平均分*/}〃------------------------------------cout<<"\n 班级名称:"<<CCIassName<<"\t"<<"人数:"<<time<<endl<<endl;平均分"<<endl; cout<<" 学号身份证号码姓名住址电话数学英语for(i nt i=0;i<time;i++){cout<<stu[i]->StudNo<<""<<stu[i]->IDNo<<""<<stu[i]->Name<<""<<stu[i]->Addr<<""<<stu[i]->Tel<<"\t"<<stu[i]->Math<<"\t"<<stu[i]->E nglish <<"\t"<<stu[i]->Average<<e ndl;}910back_ no();}void CCIass::change()〃 ------- 3.修改学生的信息 {char str[30];int i,had=0;char *a;char x[30];if(time!=0){cout<<"请输入您要修改学生的学号 /名字:"; cin> >str; for(i=0;i<50;i++) if(strcmp(stu[i]->StudNo,str)==0||strcmp(stu[i]->Name,str)==0) { :"<<"\t"<<stu[i]->IDNo<<e ndl :"<<"\t"<<stu[i]->Name<<e ndl :"<<"\t"<<stu[i]->Addr<<e ndl :"<<"\t"<<stu[i]->Tel<<e ndl :"<<"\t"<<stu[i]->StudNo<<e ndl :"<<"\t"<<stu[i]->Math :"<<"\t"<<stu[i]->E nglish :"<<"\t"<<stu[i]->Average<<e ndl<<e ndl cout<<"1、修改地址"<<endl; cout<<"2、修改电话号码 cout<<"3、修改数学成绩 cout<<"4、修改英语成绩 cout<<"0、返回"<<endl; cout<<"请选择操作:"; cin> >x; for(i nt k=0;k<100;k++) { while(strcmp(x,"1")==0) { cout<<"请输入新的地址:" a=new char[]; cin> >a; strcpy(stu[i]_>Addr,a); back(); return; } while(strcmp(x,"2")==0) { cout<<"请输入新的电话号码 cout<<"\t"<<"身份证号码 <<"\t"<<" 姓名 <<"\t"<<" 住址 <<"\t"<<" 电话 <<"\t"<<" 学号 <<"\t"<<" 数学成绩 <<"\t"<<" 英语成绩 <<"\t"<<" 平均分 "<<e ndl; "<<e ndl; had=1;cin> >stu[i]_>Tel;back();return;}while(strcmp(x,"3")==0){cout<<"请输入新的数学成绩:";cin >>stu[i]->Math;while(stu[i]->Math>100||stu[i]->Math<0){cout<<"请重新输入0~100:";cin»stu[i]->Math;}stu[i]->Average=(stu[i]->Math+stu[i]->E nglish)/2; back();return;}while(strcmp(x,"4")==0){cout<<"请输入新的英语成绩:";cin> >stu[i]->E nglish;while(stu[i]->E nglish>100||stu[i]->E nglish<0){cout<<"请重新输入0~100:";cin»stu[i]->English;};stu[i]->Average=(stu[i]->Math+stu[i]->E nglish)/2; back();return;}cout<<"请在1〜4中选择:";cin> >x;}}if(had==O){cout<<"对不起!没有查询到"<<str<<"的信息!"<<endl; back_ no();}}}void CCIass::del()〃-------- 4.删除学生的信息{char str[30];int i,had=0;if(time!=0){cout<<"请输入您要删除的学号 cin> >str;for(i=0;i<50;i++)if(strcmp(stu[i]->StudNo,str)==0)had=1;cout<<"第"<<i+l<<"位学生:"<<endl;cout<<"\t"<<"身份证号码:"<<"\t"<<stu[i]->IDNo<<endl"<<"\t"<<stu[i]->Name<<e ndl "<<"\t"<<stu[i]->Addr<<e ndl "<<"\t"<<stu[i]->Tel<<e ndl "<<"\t"<<stu[i]->StudNo<<e ndl "<<"\t"<<stu[i]->Math<<e ndl "<<"\t"<<stu[i]->E nglish<<e ndl "<<"\t"<<stu[i]->Average<<e ndl<<e ndl;for(i nt j=i;j<=time-1;j++)strcpy(stu[j]->IDNo,stu[j+1]->IDNo); strcpy(stu[j]->Name,stu[j+1]->Name);strcpy(stu[j]->Addr,stu[j+1]->Addr); strcpy(stu[j]->Tel,stu[j+1]->Tel);strcpy(stu[j]->StudNo,stu[j+1]->StudNo); stu[j]->Math=stu[j+1]->Math;stu[j]->E nglish=stu[j+1]->E nglish;stu[j]->Average=stu[j+1]->Average; }back();time=time-1;}if(had==0){cout<<"对不起!没有查询到"<<str<<"的信息!"<<endl; back_ no();}}}void CClass::find()// ------------- 6.查询学生的信息{char str[30];cout<<"请输入您要查询学生的姓名/学号/身份证号码/电话号码:\t";cin> >str;for(i nt i=0;i<time;i++) { <<"\t"<<"姓名 <<"\t"<<"住址 <<"\t"<<"电话 <<"\t"<<" 学号 <<"\t"<<" 数学成绩 <<"\t"<<" 英语成绩<<"\t"<<" 平均分if(strcmp(stu[i]-〉Name,str)==0||strcmp(stu[i]->IDNo,str)==0||strcmp(stu[i]->StudNo,str)==0||strcmp(stu[i]-> Tel,str)==O){cout<<"\n\t"<<"身份证号码:"<<"\t"<<stu[i]->IDNo<<endl"<<"\t"<<stu[i]->Name<<e ndl "<<"\t"<<stu[i]->Addr<<e ndl "<<"\t"<<stu[i]->Tel<<e ndl "<<"\t"<<stu[i]->StudNo<<e ndl "<<"\t"<<stu[i]->Math "<<"\t"<<stu[i]->E nglish "<<"\t"<<stu[i]->Average<<e ndl<<e ndl;back_ no (); return;cout<<"对不起!没有查询到"<<str<<"的信息!"<<endl;back_ no();}void main()〃 -------- main 主函数{system("ver");CClass ClassRoom; char select ion[ 30];ClassRoom.CreateClass();system("cls");for(int o=0;o<1000;o++) {ClassRoom.writei n();cout<<" ------------- 学生信息管理程序 -----------"<<endl;cout<<"1、添加学生信息"<<endl<<"2、显示学生信息"<<endl <<"3、修改学生信息"<<endl <<"4、删除学生信息"<<endl <<"5、保存学生信息"<<endl <<"6、查询学生信息"<<endl <<"0、退出程序"<<endl<<"请选择:"; cin> >selecti on; if(strcmp(selectio n,"1")==0){title();cout<<"1.添加学生信息"<<endl; ClassRoom.NewAStu(); time=time+1;}else if(strcmp(selectio n,"2")==0)title();cout<<"2.打印学生信息"<<endl;if(time==0){cout<<"\n\n\t\t\t 暂时没有记录!"<<endl; back_ no();}else{ClassRoom.OutClassName ();}}else if(strcmp(selectio n,"3")==0)<<"\t"<<"<<"\t"<<"<<"\t"<<"<<"\t"<<" <<"\t"<<" <<"\t"<<" <<"\t"<<" 姓名 住址 电话 学号 数学成绩 英语成绩平均分{title();cout<<"3.修改学生信息"<<endl;ClassRoom.cha nge();}else if(strcmp(selectio n,"4")==0) {title();cout<<"4.删除学生信息"<<endl;ClassRoom.del();}else if(strcmp(selectio n,"5")==0){title();cout<<"5.保存学生信息"<<endl;ClassRoom.writei no();}else if(strcmp(selectio n,"6")==0){title();cout<<"6.查询学生信息"<<endl;ClassRoom.fi nd();}else if(strcmp(selectio n,"0")==0){exit(0);}else{system("cls");cout<<"请在0〜6中选择:\n";。
在TC环境下吧,界面是一片的黑。
可以实现成绩的录入、查询、排序、物理删除、永久删除……记不太清楚了,当时我们的报告要求手写的,也没留下什么电子资料。
C语言还是很好学很好用的,希望对大家有帮助!#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct student{int id;char name[10];int age;char sex[10];char birthady[20];char address[50];char tel[15];char E_mail[30];}st[50];int i=0;void shuru() {char a;do{printf("\ninput num:");scanf("%d",&st[i].id);fflush(stdin);printf("\ninput name:");gets(st[i].name);printf("\ninput age:");scanf("%d",&st[i].age);fflush(stdin);printf("\ninput sex:");gets(st[i].sex);fflush(stdin);printf("\ninput birth:");gets(st[i].birthady);fflush(stdin);printf("\ninput address:");gets(st[i].address);printf("\ninput tell:");scanf("%s",&st[i].tel);printf("\ninput E_mail:");scanf("%s",&st[i].E_mail);printf("\nWhether input another student's information ?(y/n)");fflush(stdin);a=getchar();i++;}while(a=='y' && i<=50);}void xianshi(){int j;printf("======================XUESHENGXINXIGUANLIXITONG=============================\n");printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");for(j=0;j<i;j++)printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].address,st[j].tel,st[j].E_mail);printf("============================================ZHI ZUO REN:sunqi=========\n");}void clearscreen(){getchar();system("cls");}void paixu(){int j,k;int temp;for(j=0;j<i;j++){for(k=0;k<i-1-j;k++){if(st[k].age<st[k+1].age){temp=st[k].age;st[k].age=st[k+1].age;st[k+1].age=temp;}}}xianshi();}void chazhao(){int m=0;char name[20],b;do{printf("\ninput name of student:");fflush(stdin);gets(name);for(m=0;m<20;m++){if(strcmp(name,st[m].name)==0){printf("\n\tThe student is found in %d\n",m+1);break;}}if(m>=20)printf("\n\tCan not find this student\n");else{printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].address,st[m].tel,st[m].E_mail); }printf("\nFind another student?(y/n)");fflush(stdin);b=getchar();}while(b=='y');}void shanchu(){char name[20],c;int a,b;do{printf("\nInput the name of delet student:\n");fflush(stdin);gets(name);for(a=0;a<i;a++){if(strcmp(name,st[a].name)==0)break;}for(b=a;b<i;b++)st[b]=st[b+1];if(a>i)printf("\tCan not find this student\n");else{i--;xianshi();}printf("\nContinue delet a student?(y/n) ");fflush(stdin);c=getchar();}while(c=='y');}void charu(){shuru();paixu();}void main(){int change;do{system("cls");printf("*****************XUESHENG XINXI GUANLIXITONG *****************\n"); printf(" 1: shuru xuesheng xingxi\n");printf(" 2: xianshi xuesheng xinxi\n");printf(" 3: chazhao xuesheng xinxi\n");printf(" 4: shanchu xuesheng xinxi\n");printf(" 5: charu xuesheng xinxi\n");printf(" 6: paixu xuesheng xinxi\n");printf(" 7: tuichu chengxu\n");printf("***************************************************************\n"); fflush(stdin);printf("shuru gongneng xuanxiang:");scanf("%d",&change);switch(change){case 1:shuru(); break;case 2:xianshi(); break;case 3:chazhao(); break;case 4:shanchu(); break; case 5:charu(); break; case 6:paixu();break; case 7:break;}getch();}while(change!=7); }。
C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。
为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。
本文将介绍该系统的源代码,并对其进行详细的解释和讲解。
二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。
1、2、编一程序,能计算每个学生的总分和平均分。
3、编一程序,能按输入要求打印各门课程的最高分和最低分的同学。
4、编一程序,能将五个学生的成绩按总分进行降序排序。
5、编一程序,能删除一个学生的记录;6、编一程序,能增加一个学生的记录;建立一个菜单模式的学生信息管理系统,完成功能如下:一、建立主菜单*****学生信息管理系统*****1、输入学生信息2、输出学生信息3、计算每个同学成绩的总分与平均分4、对学生成绩进行排序5、输出每门功课最高分的同学信息6、输出每门功课最低分的同学信息7、退出系统主菜单界面:二、将综合练习一中的程序改写为子程序并能通过主菜单进行调用。
先上图开发环境windows 7,vc 6.0 开始贴代码:/*************** 张海山* 10软件2班* 安庆职业技术学院* QQ:136533295******************/#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include"string.h"typedef struct lode{int id;char name[20];char sex[10];int score[4];struct lode *next;}lode,*linklist;linklist input(linklist head)//输入学生信息{char cmd='y';int t,i,l;char name[10];char sex[2];int score[3]={0};//int sum;linklist p;while(cmd=='y'||cmd=='Y'){p=(linklist)malloc(sizeof(lode));printf("请输入学生的编号\n");fflush(stdin);scanf("%d",&t);p->id=t;printf("请输入学生的姓名:\n");fflush(stdin);scanf("%s",p->name);/* l=strlen(p->name);p->sex[l]='\0';/* for(i=0;i<l;i++){p->name[i]=name[i];}*/printf("请输入学生的性别:\n");fflush(stdin);scanf("%s",p->sex);/* l=strlen(p->sex);p->sex[l]='\0';/* for(i=0;i<l;i++){p->sex[i]=sex[i];}*/fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&score[0]);p->score[0]=score[0];fflush(stdin);scanf("%d",&score[1]);p->score[1]=score[1];fflush(stdin);scanf("%d",&score[2]);p->score[2]=score[2];fflush(stdin);p->next=head->next;head->next=p;printf("是否继续(y)&返回主菜单(n) y&n\n");fflush(stdin);scanf("%c",&cmd);}return head;}linklist print(linklist head){linklist p;int i=1;p=head->next;printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");while(p!=NULL){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);p=p->next;/*if(p==NULL)break;printf("%d\n",i);*/}//printf("%d\n",i);//printf("i=%d\n",i);return 0;}void avg(linklist head){int sum=0;double avg=0;linklist p;p=head->next;while(p!=NULL){sum=0;sum=p->score[1]+p->score[2]+p->score[0];avg=sum/3;printf("%s的总分为:%d\t平均分为:%.2lf\n",p->name,sum,avg);p=p->next;}}void maxmin(linklist head){linklist p;intmax1=0,max1index,min1=head->next->score[0],min1index,max2=0,max2index,min2=head->nex t->score[1],min2index,max3=0,max3index,min3=head->next->score[2],min3index;p=head->next;while(p!=NULL){if(max1<(p->score[0])){max1=p->score[0];max1index=p->id;}if(min1>=(p->score[0])){min1=p->score[0];min1index=p->id;}if(max2<(p->score[1])){max2=p->score[1];max2index=p->id;}if(min2>=(p->score[1])){min2=p->score[1];min2index=p->id;}if(max3<(p->score[2])){max3=p->score[2];max3index=p->id;}if(min3>=(p->score[2])){min3=p->score[2];min3index=p->id;}p=p->next;}printf("英语:\n");p=head->next;while(p!=NULL){if((p->id)==max1index)printf("英语最高分为:%d\t姓名为:%s\n",p->score[0],p->name);if((p->id)==min1index)printf("英语最低分为:%d\t姓名为:%s\n",p->score[0],p->name);p=p->next;}printf("数学:\n");p=head->next;while(p!=NULL){if((p->id)==max2index)printf("数学最高分为:%d\t姓名为:%s\n",p->score[1],p->name);if((p->id)==min2index)printf("数学最低分为:%d\t姓名为:%s\n",p->score[1],p->name);p=p->next;}printf("语文:\n");p=head->next;while(p!=NULL){if((p->id)==max3index)printf("语文最高分为:%d\t姓名为:%s\n",p->score[2],p->name);if((p->id)==min3index)printf("语文最低分为:%d\t姓名为:%s\n",p->score[2],p->name);p=p->next;}}void rank(linklist head){linklist p;int i=0,j,k,n=0;int sum[100];p=head->next;while(p!=NULL){n++;sum[i]=p->score[1]+p->score[2]+p->score[0];i++;p=p->next;}printf("n=%d\n",n);for(i=1;i<6;i++){for(j=0;j<6-i;j++)if(sum[j]<sum[j+1]){k=sum[j];sum[j]=sum[j+1];sum[j+1]=k;}}printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");for(i=0;i<n;i++){p=head->next;while(p!=NULL){if(sum[i]==(p->score[1]+p->score[2]+p->score[0])){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);break;}p=p->next;}}}void add(linklist head){linklist p,q;p=head;q=(linklist)malloc(sizeof(lode));printf("请输入要插入学生的序号:\n");fflush(stdin);scanf("%d",&q->id);fflush(stdin);printf("请输入学生的姓名:\n");scanf("%s",q->name);fflush(stdin);printf("请输入学生性别:\n");scanf("%s",q->sex);fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&q->score[0]);fflush(stdin);scanf("%d",&q->score[1]);fflush(stdin);scanf("%d",&q->score[2]);fflush(stdin);q->next=NULL;while(p->next!=NULL){p=p->next;}p->next=q;//p->next=NULL;}void del(linklist head){linklist p,temp;int j;p=head->next;temp=head;printf("请输入要删除学生记录的序号:\n");scanf("%d",&j);while(p!=NULL){if(p->id!=j){p=p->next;temp=temp->next;}else{temp->next=p->next;free(p);break;}}}void main(){int cmd;linklist head;head=(linklist)malloc(sizeof(lode));head->next=NULL;do{printf("\n\n |***************学生成绩管理程序***************|\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 主菜单|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 请输入选择项目:|\n");printf(" | |\n");printf(" | 1、输入学生成绩|\n");printf(" | |\n");printf(" | 2、输出学生成绩|\n");printf(" | |\n");printf(" | 3、计算总成绩、平均成绩|\n");printf(" | |\n");printf(" | 4、求最高分、最低分|\n");printf(" | |\n");printf(" | 5、排序|\n");printf(" | |\n");printf(" | 6、增加记录|\n");printf(" | |\n");printf(" | 7、删除记录|\n");printf(" | |\n");printf(" | 0、退出系统|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");scanf("%d",&cmd);switch(cmd){case 0:break; //退出系统case 1: input(head);break; //输入学生信息case 2: print(head);break; //输出学生信息case 3: avg(head);break; //求总成绩、平均数case 4: maxmin(head);break; //最高分case 5: rank(head);break; //排序case 6: add(head);break; //增加记录case 7: del(head);break; //删除记录default :printf("您输入错误!\n");}}while(cmd!=0);}因为是C语言版的要严格按照样子输入哦要不然就会出现不可预料的结果。
附录程序#include"stdio.h"#include<stdlib.h>#include<string.h>#include"process.h"#include"ctype.h"typedef struct{char num[10];char name[10];int chinese;int math;int english;int dianlu;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("输入学生的语文、数学、英语、电路分数:");scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu); a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4;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("学号姓名语文数学英语电路平均成绩\n");printf("----------------------------------------------------------\n");for(i=0;i<n;i++){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].chinese,st u[i].math,stu[i].english,stu[i].dianlu,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("| 语文请按2 |\n");printf("| 数学分数请按3 |\n");printf("| 英语分数请按4 |\n");printf("| 电路请按5 |\n");printf("| 退出请按0|\n");printf("+----------------------+\n");printf("请输入您的选择:");scanf("%d", &choice);switch(choice){case 0:break;case 1:printf("请输入新姓名:");scanf("%s", stu[i].name);break;case 2:printf("请输入新的语文分数:");scanf("%d", &stu[i].chinese);break;case 3:printf("请输入新的数学分数:");scanf("%d",&stu[i].math);break;case 4:printf("请输入新的英语分数:");scanf("%d", &stu[i].english);break;case 5:printf("请输入新的电路分数:");scanf("%d", &stu[i].dianlu);break;default:printf("\n无效选项!");break;} break;}return;}int shanchu(Student stud[],int n) /*按姓名查找,删除一条记录*/ { char s[20];int i;int j;i=0;printf("输入要删除记录的姓名:");scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n) i++;if(i==n){printf("not find!\n");return(n); }for(j=i;j<n-1;j++) /*删除操作*/{strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j].name,stu[j+1].name);stu[j].chinese=stu[j+1].chinese;stu[j].math=stu[j+1].math;stu[j].english=stu[j+1].english;stu[j].dianlu=stu[j+1].dianlu;stu[j].aver=stu[j+1].aver;}printf("Delete Successed!\n");return(n-1);}void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个记录*/{ char s[20];int i=0;printf("输入姓名:");scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("not find!\n"); /*输入失败信息*/return; }printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/printf("语文高数英语电路平均成绩是:%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver);}void chaxun_pingjun(Student stud[],int n) /*按平均成绩查找并显示一个记录*/{ double s;int i=0;printf("输入平均成绩:");scanf("%lf",&s);while(stu[i].aver!=s && i<n) i++;if(i==n){ printf("not find!\n"); /*输入失败信息*/return;}printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/printf("他的姓名是:%s\n",stu[i].name);printf("他的语文、数学、英语、电路分数是:%d %d %d %d \n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu);}void paixu_xuehao(Student stud[],int n) /*按学号排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){ strcpy(t,stud[j].num);strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j+1].num,t);strcpy(x,stud[j].name);strcpy(stud[j].name,stud[j+1].name);strcpy(stud[j+1].name,x);y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;}return;}void paixu_pingjun(Student stud[],int n) /*按平均成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].aver>stu[j+1].aver){ y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_chinese(Student stud[],int n) /*按语文成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].chinese>stu[j+1].chinese){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_english(Student stud[],int n) /*按英语成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].english>stu[j+1].english){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_math(Student stud[],int n) /*按数学成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].math>stu[j+1].math){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_dianlu(Student stud[],int n) /*按电路成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].dianlu>stu[j+1].dianlu){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void tongji(Student stud[],int n)//按分数段统计人数{ int i,j,a,max,min,k,l,q,p,w;k=0,l=0,p=0,q=0,w=0;printf("你想统计哪科成绩: 1语文2数学3英语4电路5平均\n");scanf("%d",&j);printf("input 2 score:\n");scanf("%d%d",&max,&min);if(max<min){a=max;max=min;min=a;}if(j==1){for(i=0;i<99;i++){if(stu[i].chinese>min&&stu[i].chinese<max) k++;}printf("分数段的人数为:%d",k);}else if(j==2){for(i=0;i<99;i++){if(stu[i].math>min&&stu[i].math<max) l++;}printf("分数段的人数为:%d",l);}else if(j==3){for(i=0;i<99;i++){if(stu[i].english>min&&stu[i].english<max) p++;}printf("分数段的人数为:%d",p);}else if(j==4){for(i=0;i<99;i++){if(stu[i].dianlu>min&&stu[i].dianlu<max)w++;}printf("分数段的人数为:%d",w);}else if(j==5){for(i=0;i<99;i++){if(stu[i].aver>min&&stu[i].aver<max) q++;}printf("分数段的人数为:%d",q);}return;}int wenjian2(Student stud[],int n) /*从文件中读入数据*/{ int i=0,num;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/printf("\t\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/{fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chinese,&stu[n+i]. math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver);i++;}n+=num;fclose(fp); /*关闭文件*/printf("\t\t\tSuccessed!\n");printf("\t\t\t");system("pause");return(n);}void wenjian1(Student stud[],int n) /*将所有记录写入文件*/{int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("Input the filename:");/*输入文件名*/scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{printf("cann't open the file\n");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].en glish,stu[i].dianlu,stu[i].aver);i++;}fclose(fp); /*关闭文件*/printf("Successed!\n"); /*返回成功信息*/}int menu() /*菜单函数*/{int c;do{printf("\t\t****学生信息管理系统菜单****\n");printf("\t\t 1. 编辑\n");printf("\t\t 2. 显示\n");printf("\t\t 3. 查询\n");printf("\t\t 4. 排序\n");printf("\t\t 5. 统计\n");printf("\t\t 6. 文件\n");printf("\t\t 0. 退出\n");printf("************************************************************\n");printf("\t\t\t请选择(0-6):");scanf("%d",&c);}while(c<0||c>6);return(c-0); /*返回选择*/}int bianji(){printf("\t\t 1. 录入\n");printf("\t\t 2 .修改\n");printf("\t\t 3. 删除\n");printf("\t\t 按其它数字键退出\n");int i;scanf("%d",&i);return i;}int chaxun(){printf("\t\t 1. 按姓名查询\n");printf("\t\t 2 .按平均成绩查询\n");printf("\t\t 按其它数字键退出\n");int i;scanf("%d",&i);return i;}int paixu(){printf("\t\t 1. 按学号\n");printf("\t\t 2 .按语文成绩\n");printf("\t\t 3 .按数学成绩\n");printf("\t\t 4 .按英语成绩\n");printf("\t\t 5 .按电路成绩\n");printf("\t\t 6 .按平均成绩\n");printf("\t\t按其它数字键退出\n");int i;scanf("%d",&i);return i;}int wenjian(){printf("\t\t 1. 从文件中读入数据\n");printf("\t\t 2 .将所有记录写入文件\n");printf("\t\t 按其它数字键退出\n");int i;scanf("%d",&i);return i;}void main() /*主函数*/{int n=0;for(;;){for(;;){switch(menu()){case 1: switch(bianji()){case 1:n=shuru(stu,n);xianshi(stu,n); break;case 2:xiugai(stu ,n);xianshi(stu,n); break;case 3:shanchu(stu ,n);xianshi(stu,n); break;} break;case 2:xianshi(stu,n);break;case 3:switch(chaxun()){case 1:chaxun_xingming(stu,n);break;case 2:chaxun_pingjun(stu ,n);break;} break;case 4: switch(paixu()){case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ;case 2:paixu_chinese(stu ,n);xianshi(stu,n);break;case 3:paixu_math(stu ,n);xianshi(stu,n); break;case 4:paixu_english(stu ,n);xianshi(stu,n); break;case 5:paixu_dianlu(stu ,n);xianshi(stu,n); break;case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break;} break;case 5:tongji(stu,n);break;case 6:switch(wenjian()){case 1:n=wenjian2(stu,n);break;case 2:wenjian1(stu ,n);break;} break;case 0:exit(0); /*结束程序*/}}}}。