学生成绩管理系统源代码 (数据结构与算法课设)C语言版
学生成绩管理系统源代码-(数据结构与算法课设)C语言版汇编

运行前需在功程里新建个ni.txt.内容如下7004 sun 98.0 89.0 97.0 94.7 284.0 005 li 98.0 48.0 78.0 74.7 224.0 002 zhao 98.0 78.0 59.0 78.3 235.0 006 zhou 89.0 97.0 86.0 90.7 272.0 003 qian 78.0 98.0 89.0 88.3 265.0 001 chen 59.0 60.0 98.0 68.3 205.0 007 wu 57.0 76.0 87.0 73.3 220.0代码# include <stdio.h> //使程序包含头文件<stdio.h># include <stdlib.h> //使程序包含头文件<stdlib.h># include <string.h> //使程序包含头文件<string.h># define SIZE 50 //定义常量SIZE来控制数组的长度void input_num(struct Student stud[], int n, int i); //声明学号输入函数void input_name(struct Student stud[], int n, int i); //声明姓名输入函数void input_score(struct Student stud[], int n, int i); //声明成绩输入函数void output_stu(struct Student stud[], int n, int i); //声明输出函数void stat_stu(struct Student stud[], int n, int o); //声明统计函数float class_avr(struct Student stud[], int n, int o); //声明排序函数void chenji_stu(struct Student stud[], int n, int o);void desc_stu(struct Student stud[], int n, int o); //声明降序函数int find_stu(struct Student stud[], int n); //声明查找函数void delete_stu(struct Student stud[], int n, int y); //声明删除函数void amend_stu(struct Student stud[], int n, int y); //声明修改函数void write_text(struct Student stud[], int n); //声明保存文件函数int add_text(struct Student stud[], int n); //声明读取文件函数struct Student /*声明结构体*/ {char num[10];char name[20];float score[5];};void main() /*主函数,是程序的入口*/{struct Student stu[SIZE]; //定义一个结构数组int count = 0; //定义整型变量count用来存放学生信息的个数,初始化为0int choice; //定义choice用于存放用户对主菜单的选择 int a; //用于接收主选单中scanf()函数的返回值 char judge; //用于帮助判断输入的选择是否正确int flag_main; //用于判断主菜单用户输入的选择是否有误 int stat_choice = 0; //定义stat_choice用于用户对统计项目的选择,初始化为0int flag_stat; //用于接收scanf()函数的返回值int flag_find; //定义flag_find用于接收查寻函数的返回值char man_choice; //定义man_choice用于接收用户对是否进行修改删除的选择int con_choice; //定义con_choice用于接收用户对修改或删除的选择char sign_main; //定义sign_main接收用户对是否离开程序的选择char sign_input; //定义sign_main接收用户对是否继续输入的选择int i; //定义i,j作为控制循环的变量while (1) //形成一个死循环{system("color 71"); //设置输出显示颜色/*输出主选菜单*/printf("\n============================欢迎使用班级成绩管理系统============================\n\n");printf("==============================请选择您要使用的功能==============================\n\n");printf("\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-\n");printf("\t\t★※★\t\t 1:班级成绩录入★※★\n\n");printf("\t\t★※★\t\t 2:班级成绩显示★※★\n\n");printf("\t\t★※★\t\t 3:班级成绩统计★※★\n\n");printf("\t\t★※★\t\t 4:班级成绩查询★※★\n\n");printf("\t\t★※★\t\t 5:班级成绩修改★※★\n\n");printf("\t\t★※★\t\t 6:班级成绩表★※★\n\n");printf("\t\t★※★\t\t 7:班级成绩存档★※★\n\n");printf("\t\t★※★\t\t 8:班级成绩读入★※★\n\n");printf("\t\t★※★\t\t 0:退出★※★\n\n");printf("\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-");printf("======================================================================= =========");/*输入对菜单的选择*/do{flag_main = 0;printf("\n\t\t\t 请您选择需要的操作(0-6):");fflush(stdin);a = scanf("%d%c", &choice, &judge);if (a<2 || judge != '\n'){printf("\n\t\t\t 您的选择有误,请重新输入!\n");flag_main--;}}while (flag_main < 0);printf("\n\t\t\t ");system("pause"); //令屏幕暂停待输入任意键后恢复运行 system("cls"); //清屏system("color 71"); //设置输出显示颜色switch (choice) //把用户对主菜单的选择作为switch结构的判断条件{case (1):printf("\n\t\t请录入学生信息:\n");i=0; //循环前对i清零do{if (count+i == 50){break;}input_num(stu, count, i); //输入学号input_name(stu, count, i); //输入姓名input_score(stu, count, i); //录入成绩及总成绩平均成绩i++; //每录入一个学员信息i加1printf("\n\t\t还需要继续录入吗?(Y/N)"); /*产生是否继续录入的条件*/fflush(stdin);sign_input = getchar();}while(sign_input == 'y' || sign_input== 'Y' ); //判断count=count+i; //计算出本次录入后总的已录入成员个数printf("\t\t");break;case (2):/* printf("\n显示班级成绩信息:\n");printf("--------------------------------------------------------------------------------");printf("学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩"); /*格式化输出提示信息*/printf(" 学生信息表\n");*/printf(" ==================\n\n");printf("┏━━━━━━┳━━━━━━━━┳━━━┳━━━┳━━━┳━━━┳━━━━━┓\n");printf("┃学号┃姓名┃数据库┃算法┃ C语言┃总成绩┃平均成绩┃\n");printf("┣━━━━━━╋━━━━━━━━╋━━━╋━━━╋━━━╋━━━╋━━━━━┫\n");for (i = 0; i < count; i++) /*循环输出学员信息*/{output_stu(stu, count, i); //输出单个学员信息}printf("┗━━━━━━┻━━━━━━━━┻━━━┻━━━┻━━━┻━━━┻━━━━━┛\n");break;case (3):while (stat_choice != 4) /*循环统计直到用户选择退出结束*/{printf("\t\t0:数据库\n");printf("\t\t1:算法\n");printf("\t\t2:C语言\n");printf("\t\t3:平均成绩\n");printf("\t\t4:结束统计\n");printf("\n\n请选择成绩统计的项目");fflush(stdin);flag_stat = scanf("%d%c", &stat_choice, &a); /*接收用户选择并返回值给flag_stat*/if (flag_stat == 2 && a == '\n') /*如果成功接收用户选择则根据选择进行统计若选择有误提示重新输入*/{if (stat_choice == 0) /*根据选择0进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 1) /*根据选择1进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 2) /*根据选择2进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 3) /*根据选择3进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 4) /*选择4则break循环退出*/{break;}else /*其它错误选择提示重新输入*/{printf("\n您的输入有误,请重新输入!");}}else /*若没成功接收用户选择则提示重新输入*/{printf("\n您的输入有误,请重新输入!");}}stat_choice =getchar(); //每次循环结束stat_choice归0printf("\n");break;case (4):flag_find = find_stu(stu, count); //实现用户的查找功能/*根据查找函数的返回值为用户显示查找的信息*/if (flag_find > 0) /*返回值大于0,用户选择的是姓名查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, flag_find-1);printf("\n--------------------------------------------------------------------------------");}else if (flag_find == 0) /*查找失败返回失败信息*/{printf("\n对不起没有找到您的成绩!\n");}else /*返回值大于0,用户选择的是学号查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, -flag_find-1);printf("\n--------------------------------------------------------------------------------");}break;case (5):flag_find = find_stu(stu, count); //实现用户的查找功能/*根据查找函数的返回值为用户显示查找的信息*/if (flag_find > 0) /*返回值大于0,用户选择的是姓名查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, flag_find-1);printf("\n--------------------------------------------------------------------------------");}else if (flag_find == 0) /*查找失败返回失败信息*/{printf("\n对不起没有找到您的成绩!\n");}else /*返回值大于0,用户选择的是学号查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, -flag_find-1);printf("\n--------------------------------------------------------------------------------");}if (flag_find != 0) /*查找成功的情况下用户可选择修改或删除操作*/{fflush(stdin);man_choice = getchar(); /*接收用户选择是否进行下一步操作*/while (man_choice) /*判断用户的选择*/{printf("\t\t1:修改\n");printf("\t\t2:删除\n");printf("\t\t3:退出\n");printf("\n请选择您的操作");fflush(stdin);scanf("%d",&con_choice); /*用于接收用户选择的操作*//*根据用户的选择完成用户选择的操作*/if (con_choice == 1) /*进行修改操作*/{amend_stu(stu, count, flag_find);}else if (con_choice == 2) /*进行删除操作,一旦删除则无法再进行修改*/{delete_stu(stu, count, flag_find);count--;printf("\n删除成功!\n");break;}else if (con_choice == 3) /*选择4则break循环退出*/{break;}else /*用户输入错误信息返回用户选择有误*/{printf("您的选择有误!\n");}stat_choice = 0; //每次循环结束stat_choice归0}}//修改删除操作结束printf("\n");break;case (7):printf("\t\t\t将学生成绩信息存盘:\n\n\n");write_text(stu, count); /*循环写入数据*/printf("\t\t\t");break;case (8):printf("\t\t\t从文件载入学生信息:\n\n\n");count = add_text(stu, count); /*读入文件信息*/break;case (6):printf("\t\t\t学生成绩排名信息:\n");chenji_stu(stu, count, stat_choice);/*读入文件信息*/printf("\t\t\t");break;case (0):printf("\n\t\t\t确定您真的要退出吗?(y/n)"); /*提醒用户是否退出并接收选择*/fflush(stdin);sign_main = getchar();if (sign_main == 'y' || sign_main == 'Y') /*若用户确定退出则返回退出信息*/{printf("\n\n\n\n\t\t\t谢谢使用本软件!\n\n\n\n\n");exit(0); //退出主程序}printf("\n\t\t\t");break;default: //提示用户输入错误printf("\n\t\t\t您的输入有误,请重新输入!\n\n\t\t\t");}system("pause"); //令屏幕暂停待输入任意键后恢复运行system("cls"); //清屏system("color 71"); //设置输出屏幕颜色}}/*************************************************************************** 功能:从键盘输入正确学号依次存放入stu[n].num中参数:参数struct Student stud[ ]代表结构体数组首地址,n代表已有成员个数,i代表本次录入的第i个学号。
C语言课程设计 学生成绩管理系统 源代码

//学生成绩管理系统//用户名:xdxy 密码:700619#include<stdio.h>#include<conio.h> /*清屏*/#include <stdlib.h> /*显示目录*/#include<string.h>#define MAX 1000void menu();void input(); /*输入数据函数*/ void sort(); /*排序数据函数*/ void display(); /*显示数据函数*/ void display1(); /*显示各科成绩函数*/ void insert(); /*插入数据函数*/ void del(); /*删除数据函数*/ void average(); /*平均值函数*/void find(); /*查找数据函数*/ void save(); /*保存数据函数*/ void read(); /*读出数据函数*/ void del_file(); /*删除文件函数*/void modify(); /*修改文件函数*/int now_no=0;struct student //定义学生信息{int no; // 学号char name[20]; //姓名char sex[4]; //性别float score1; //成绩1float score2; //成绩2float score3; //成绩3float sort; //排序成绩float ave; //平均分float sum; //总分};void main(){int h,flag1,flag2;char name[20]="xdxy",password[10]="700619";char person[20],password1[10];printf ("\t\t ******** 欢迎进入学生成绩管理系统!********\n\n");printf ("\t\t\t 用户登录\n\n");for(h=0;h!=5;){printf("\t\t\t\t 用户名:");gets(person);flag1=strcmp(person,name);printf("\t\t\t\t 密码:");gets(password1);flag2=strcmp(password,password1);if(flag1==0 && flag2==0){printf("\t\t\t\t 登陆成功!\n\n");menu();break;}else{printf ("\t\t\t 用户名或密码错误!\n\n");printf ("\t\t\t 请注意:您还剩%d次机会!\n\n",4-h);h++;}}if (h=5)printf ("对不起,您输入的用户名或密码有误,已被强制退出。
学生成绩管理系统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语言版源代码)

让结局不留遗憾,让过程更加完美。
#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语言学生成绩管理系统源代码程序代码:#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("************************************ *******************************************\n&quo t;);printf("* *\n");printf("* Hwadee &学生成绩文件管理& Hwadee *\n");printf("* *\n");printf("*******************************************************************************\n\n\n");printf("******************************●●欢迎使用●●*********************************");while (1){menu();/*调用菜单函数形成操作界面*/printf("请选择:");scanf("%d", &choice);if ( choice==0 ){printf("\t\t\t\t谢谢使用!!!");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("\n谢谢使用!再见!\n");default:printf("\n按键错误!请重新选择!\n"); }/*结束switch*/}/*结束while*/}部分程序清单/*菜单函数************************************************* ************************************/void menu(){printf("************请输入所需操作***********\n");/*选择功能菜单*/printf("************************************ *\n");printf("1.学生成绩写入及排序\n"); printf("2.增加学生信息\n");printf("3.删除学生信息\n");printf("4.修改学生信息\n");printf("5.查询学生信息\n");printf("6.学生成绩统计操作\n"); printf("0.退出系统\n");printf("**************************************\n");}/*写入函数*************************************************************************************/void write(){int i;/*计数变量*/for(i=0;i;m[j].number){temp=m[i];m[i]=m[j];m[j]=temp;}}printf("\n排序后的学生信息:\n\n"); 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("高数成绩最高学生信息如下:\n");OutputOneStudent(k);printf(" 输出结束\n");printf("************************************************* *********");}if(x==2){for(i=0;i;stu[k].score[1])i=k;}printf("英语成绩最高学生信息如下:\n");OutputOneStudent(k);printf(" 输出结束\n");printf("************************************************* *********");}if(x==3){for(i=0;i;stu[k].score[2])i=k;}printf("C语言成绩最高学生信息如下:\n");OutputOneStudent(k);printf(" 输出结束\n");printf("************************************************* *********");}}/*统计不及格率操作************************************************* ****************************/void tongji2(){int x,i,k;printf("********************输入统计选项**********************\n"); /*选择功能菜单*/ printf("统计高数成绩不及格率请按:1\n");printf("统计英语成绩不及格率请按:2\n");printf("统计C语言成绩不及格率请按:3\n");scanf("%d",&x);/*用户选择变量 */ if(x==1){for(i=0;i。
学生成绩管理系统c语言代码(供参考)

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。
C语言学生成绩管理系统源代码
C语⾔学⽣成绩管理系统源代码⼤学C语⾔实训课,C语⾔学⽣成绩管理系统,供⼤家参考,具体内容如下1234567 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56#include<stdio.h>#include<string.h>#include<math.h>struct student{int num;char name[20];float pingshi;float shiyan;float kaoshi;double zongping;}stu[4];void main(){void a();void b();void c();void d();void e();int n;while(n!=6){ printf("\t⼤学计算机基础成绩管理系统\n");printf("1:输⼊⼀个班学⽣⼤学计算机基础成绩记录\n");printf("2:显⽰所有成绩记录\n");printf("3:计算并输出平均成绩,均⽅差\n");printf("4:输出成绩与排名\n");printf("5:结果存⼊⽂件chengji.txt\n");printf("6:退出系统\n");printf("输⼊选项代码:");scanf("%d",&n);switch(n){case1:a();break;case2:b();break;case3:c();break;case4:d();break;case5:e();break;case6:printf("\n*******************谢谢使⽤!*******************\n");break; break;}}getchar();}/* ⼦函数*/void a() /* 输⼊⼀个班的学⽣记录*/{int i;for(i=0;i<4;i++){printf("请输⼊学号姓名平时成绩实验成绩考试成绩:");57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi);}for(i=0;i<4;i++)stu[i].zongping=0.1*stu[i].pingshi+0.3*stu[i].shiyan+0.6*stu[i].kaoshi;}void b()/* 显⽰所有记录*/{int i;printf("学号姓名平时成绩实验成绩考试成绩总评成绩\n");for(i=0;i<4;i++)printf("%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping); }void c()/* 求出全班平均成绩,显⽰均⽅差*/{int a[4]={0,1,2,3};int i,j;double total=0,pfc=0,bzc=0;double ave;for(i=0;i<4;i++){total=total+stu[i].zongping;}ave=total/4.0;printf("总评平均成绩是%f\n",ave);for(i=0;i<4;i++){pfc=pow((stu[i].zongping-ave),2)/4;}bzc=sqrt(pfc);printf("\n平⽅差是%f\n",pfc);printf("\n标准差是%f\n",bzc);}void d(){int a[4]={0,1,2,3};int i,j,temp;for(j=0;j<3;j++){for(i=0;i<3-j;i++)if(stu[a[i]].zongping>stu[a[i+1]].zongping){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}}printf("顺序为:\n");printf("学号姓名总评成绩\n");for(i=0;i<4;i++)printf("%d%10.2s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);printf("\n");}void e(){int i;FILE*fp;fp=fopen("chengji.txt","w");119120121122123124125126127128129130131132133fprintf(fp,"学号 姓名 平时成绩 实验成绩 考试成绩 总评成绩\n");for(i=0;i<4;i++)fprintf(fp,"%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping); printf("\n\n*******************恭喜,保存完成!*******************\n\n");}简单记录。
C语言程序设计-学生成绩管理系统源码
#include〈stdio.h>#include<conio。
h>#include<malloc.h>#include<string.h>struct STUDENT{char studentNumber[10];/*学生学号*/char studentName[20];/*学生姓名*/char className[20];/*班级名称*/float mark1;/*第1门成绩*/float mark2;/*第2门成绩*/float mark3;/*第3门成绩*/struct STUDENT *next;};struct STUDENT *headLink;/*链表表头指针*//*以下是函数声明*/void ReadInfoFormFile(void);/*读入信息形成文件*/void DisplayMenu(void);void CreateHeadLink(void);struct STUDENT *MallocNode(void);void GetInformation(struct STUDENT *t);void OutputInformation(void);void DisplayInfoBystudentName(void);void DisplayInfoBystudentNumber(void);void DisplayOneNode(struct STUDENT *t);void InsertOneNode(struct STUDENT *t);void DeleteNodeBystudentNumber(void);void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DisplayMarkSegment(void);/*显示各分数段的学生成绩*/ void CompositorByTotalMark(void);/*按总成绩排序*/int choose;/*用于接受用户的选择*//*主函数*/int main(){CreateHeadLink();ReadInfoFormFile();DisplayMenu();return 0;}/************************************函数功能:从文件中读学生信息到链表中************************************/void ReadInfoFormFile(void){FILE *fp;STUDENT *p;fp=fopen(”student。
c语言学生成绩信息管理系统源代码
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. 运行系统后,会出现一个菜单,根据需求选择相应的操作。
学生成绩管理系统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);}/******************************************结束*******************************************************/。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行前需在功程里新建个ni.txt.内容如下7004 sun 98.0 89.0 97.0 94.7 284.0 005 li 98.0 48.0 78.0 74.7 224.0 002 zhao 98.0 78.0 59.0 78.3 235.0 006 zhou 89.0 97.0 86.0 90.7 272.0 003 qian 78.0 98.0 89.0 88.3 265.0 001 chen 59.0 60.0 98.0 68.3 205.0 007 wu 57.0 76.0 87.0 73.3 220.0代码# include <stdio.h> //使程序包含头文件<stdio.h># include <stdlib.h> //使程序包含头文件<stdlib.h># include <string.h> //使程序包含头文件<string.h># define SIZE 50 //定义常量SIZE来控制数组的长度void input_num(struct Student stud[], int n, int i); //声明学号输入函数void input_name(struct Student stud[], int n, int i); //声明姓名输入函数void input_score(struct Student stud[], int n, int i); //声明成绩输入函数void output_stu(struct Student stud[], int n, int i); //声明输出函数void stat_stu(struct Student stud[], int n, int o); //声明统计函数float class_avr(struct Student stud[], int n, int o); //声明排序函数void chenji_stu(struct Student stud[], int n, int o);void desc_stu(struct Student stud[], int n, int o); //声明降序函数int find_stu(struct Student stud[], int n); //声明查找函数void delete_stu(struct Student stud[], int n, int y); //声明删除函数void amend_stu(struct Student stud[], int n, int y); //声明修改函数void write_text(struct Student stud[], int n); //声明保存文件函数int add_text(struct Student stud[], int n); //声明读取文件函数struct Student /*声明结构体*/ {char num[10];char name[20];float score[5];};void main() /*主函数,是程序的入口*/{struct Student stu[SIZE]; //定义一个结构数组int count = 0; //定义整型变量count用来存放学生信息的个数,初始化为0int choice; //定义choice用于存放用户对主菜单的选择 int a; //用于接收主选单中scanf()函数的返回值 char judge; //用于帮助判断输入的选择是否正确int flag_main; //用于判断主菜单用户输入的选择是否有误 int stat_choice = 0; //定义stat_choice用于用户对统计项目的选择,初始化为0int flag_stat; //用于接收scanf()函数的返回值int flag_find; //定义flag_find用于接收查寻函数的返回值char man_choice; //定义man_choice用于接收用户对是否进行修改删除的选择int con_choice; //定义con_choice用于接收用户对修改或删除的选择char sign_main; //定义sign_main接收用户对是否离开程序的选择char sign_input; //定义sign_main接收用户对是否继续输入的选择int i; //定义i,j作为控制循环的变量while (1) //形成一个死循环{system("color 71"); //设置输出显示颜色/*输出主选菜单*/printf("\n============================欢迎使用班级成绩管理系统============================\n\n");printf("==============================请选择您要使用的功能==============================\n\n");printf("\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-\n");printf("\t\t★※★\t\t 1:班级成绩录入★※★\n\n");printf("\t\t★※★\t\t 2:班级成绩显示★※★\n\n");printf("\t\t★※★\t\t 3:班级成绩统计★※★\n\n");printf("\t\t★※★\t\t 4:班级成绩查询★※★\n\n");printf("\t\t★※★\t\t 5:班级成绩修改★※★\n\n");printf("\t\t★※★\t\t 6:班级成绩表★※★\n\n");printf("\t\t★※★\t\t 7:班级成绩存档★※★\n\n");printf("\t\t★※★\t\t 8:班级成绩读入★※★\n\n");printf("\t\t★※★\t\t 0:退出★※★\n\n");printf("\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-");printf("======================================================================= =========");/*输入对菜单的选择*/do{flag_main = 0;printf("\n\t\t\t 请您选择需要的操作(0-6):");fflush(stdin);a = scanf("%d%c", &choice, &judge);if (a<2 || judge != '\n'){printf("\n\t\t\t 您的选择有误,请重新输入!\n");flag_main--;}}while (flag_main < 0);printf("\n\t\t\t ");system("pause"); //令屏幕暂停待输入任意键后恢复运行 system("cls"); //清屏system("color 71"); //设置输出显示颜色switch (choice) //把用户对主菜单的选择作为switch结构的判断条件{case (1):printf("\n\t\t请录入学生信息:\n");i=0; //循环前对i清零do{if (count+i == 50){break;}input_num(stu, count, i); //输入学号input_name(stu, count, i); //输入姓名input_score(stu, count, i); //录入成绩及总成绩平均成绩i++; //每录入一个学员信息i加1printf("\n\t\t还需要继续录入吗?(Y/N)"); /*产生是否继续录入的条件*/fflush(stdin);sign_input = getchar();}while(sign_input == 'y' || sign_input== 'Y' ); //判断count=count+i; //计算出本次录入后总的已录入成员个数printf("\t\t");break;case (2):/* printf("\n显示班级成绩信息:\n");printf("--------------------------------------------------------------------------------");printf("学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩"); /*格式化输出提示信息*/printf(" 学生信息表\n");*/printf(" ==================\n\n");printf("┏━━━━━━┳━━━━━━━━┳━━━┳━━━┳━━━┳━━━┳━━━━━┓\n");printf("┃学号┃姓名┃数据库┃算法┃ C语言┃总成绩┃平均成绩┃\n");printf("┣━━━━━━╋━━━━━━━━╋━━━╋━━━╋━━━╋━━━╋━━━━━┫\n");for (i = 0; i < count; i++) /*循环输出学员信息*/{output_stu(stu, count, i); //输出单个学员信息}printf("┗━━━━━━┻━━━━━━━━┻━━━┻━━━┻━━━┻━━━┻━━━━━┛\n");break;case (3):while (stat_choice != 4) /*循环统计直到用户选择退出结束*/{printf("\t\t0:数据库\n");printf("\t\t1:算法\n");printf("\t\t2:C语言\n");printf("\t\t3:平均成绩\n");printf("\t\t4:结束统计\n");printf("\n\n请选择成绩统计的项目");fflush(stdin);flag_stat = scanf("%d%c", &stat_choice, &a); /*接收用户选择并返回值给flag_stat*/if (flag_stat == 2 && a == '\n') /*如果成功接收用户选择则根据选择进行统计若选择有误提示重新输入*/{if (stat_choice == 0) /*根据选择0进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 1) /*根据选择1进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 2) /*根据选择2进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 3) /*根据选择3进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 4) /*选择4则break循环退出*/{break;}else /*其它错误选择提示重新输入*/{printf("\n您的输入有误,请重新输入!");}}else /*若没成功接收用户选择则提示重新输入*/{printf("\n您的输入有误,请重新输入!");}}stat_choice =getchar(); //每次循环结束stat_choice归0printf("\n");break;case (4):flag_find = find_stu(stu, count); //实现用户的查找功能/*根据查找函数的返回值为用户显示查找的信息*/if (flag_find > 0) /*返回值大于0,用户选择的是姓名查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, flag_find-1);printf("\n--------------------------------------------------------------------------------");}else if (flag_find == 0) /*查找失败返回失败信息*/{printf("\n对不起没有找到您的成绩!\n");}else /*返回值大于0,用户选择的是学号查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, -flag_find-1);printf("\n--------------------------------------------------------------------------------");}break;case (5):flag_find = find_stu(stu, count); //实现用户的查找功能/*根据查找函数的返回值为用户显示查找的信息*/if (flag_find > 0) /*返回值大于0,用户选择的是姓名查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, flag_find-1);printf("\n--------------------------------------------------------------------------------");}else if (flag_find == 0) /*查找失败返回失败信息*/{printf("\n对不起没有找到您的成绩!\n");}else /*返回值大于0,用户选择的是学号查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, -flag_find-1);printf("\n--------------------------------------------------------------------------------");}if (flag_find != 0) /*查找成功的情况下用户可选择修改或删除操作*/{fflush(stdin);man_choice = getchar(); /*接收用户选择是否进行下一步操作*/while (man_choice) /*判断用户的选择*/{printf("\t\t1:修改\n");printf("\t\t2:删除\n");printf("\t\t3:退出\n");printf("\n请选择您的操作");fflush(stdin);scanf("%d",&con_choice); /*用于接收用户选择的操作*//*根据用户的选择完成用户选择的操作*/if (con_choice == 1) /*进行修改操作*/{amend_stu(stu, count, flag_find);}else if (con_choice == 2) /*进行删除操作,一旦删除则无法再进行修改*/{delete_stu(stu, count, flag_find);count--;printf("\n删除成功!\n");break;}else if (con_choice == 3) /*选择4则break循环退出*/{break;}else /*用户输入错误信息返回用户选择有误*/{printf("您的选择有误!\n");}stat_choice = 0; //每次循环结束stat_choice归0}}//修改删除操作结束printf("\n");break;case (7):printf("\t\t\t将学生成绩信息存盘:\n\n\n");write_text(stu, count); /*循环写入数据*/printf("\t\t\t");break;case (8):printf("\t\t\t从文件载入学生信息:\n\n\n");count = add_text(stu, count); /*读入文件信息*/break;case (6):printf("\t\t\t学生成绩排名信息:\n");chenji_stu(stu, count, stat_choice);/*读入文件信息*/printf("\t\t\t");break;case (0):printf("\n\t\t\t确定您真的要退出吗?(y/n)"); /*提醒用户是否退出并接收选择*/fflush(stdin);sign_main = getchar();if (sign_main == 'y' || sign_main == 'Y') /*若用户确定退出则返回退出信息*/{printf("\n\n\n\n\t\t\t谢谢使用本软件!\n\n\n\n\n");exit(0); //退出主程序}printf("\n\t\t\t");break;default: //提示用户输入错误printf("\n\t\t\t您的输入有误,请重新输入!\n\n\t\t\t");}system("pause"); //令屏幕暂停待输入任意键后恢复运行system("cls"); //清屏system("color 71"); //设置输出屏幕颜色}}/*************************************************************************** 功能:从键盘输入正确学号依次存放入stu[n].num中参数:参数struct Student stud[ ]代表结构体数组首地址,n代表已有成员个数,i代表本次录入的第i个学号。