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

合集下载

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

C语言 学生成绩管理系统源程序
int num,i,m=0;
short told;
float score[k];
char name[10],g;
head2=p4=p1=head; //p4临时指针变量
p2=(TYPE*) malloc(LEN);
printf("请输入学号: ");
scanf("%d",&num);
for(i=1;i<=N;i++)
{
if(p4->num==(unsigned)num)
num=0; //标记使程序进入出错提示
printf("******************输入y或Y继续***按任意键退出*******************\n");
g=getche();
switch(g)
{
case 'y':case 'Y':
p4=head;
i=0;
m=0;
scanf("%d",&num);
p1->num=num;
if(num<=NULL) //学号小于等于0出错
{
getchar();
printf("*********************输入错误************************\n");
char name[10]; //姓名
short old;
float score[k 学号");
printf(" 姓名");
printf(" 年龄 ");

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

学生成绩管理系统C语言源程序
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
char xueqi[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];

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

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

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

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

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

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

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

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

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

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

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

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

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

让结局不留遗憾,让过程更加完美。

#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语言编写学生成绩管理系统

#i n c l u d e<s t d i o.h> #include<string.h>#include<process.h>#include<conio.h>#define N 30#define M 3typedef struct student{char number[10];char name[20];float score[M];float aver;float total;}STU;STU stu[N];int n;void inputscore(void);void savescore(void);void avergescore(void);void total(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);void main(){short int flag=0;menu();do{flag=1;switch(getch()){case'1' : inputscore();break; /*输入成绩*/case'2' : lookscore();break; /*查看成绩*/case'3' : searchscore();break; /*查找成绩*/case'4' : statistic();break; /*成绩统计*/case'5' : modify();break; /*修改成绩*/case'6' : add();break; /*添加成绩*/case'7' : delscore();break; /*删除成绩*/case'8' : savescore();break; /*保存成绩*/case'9' :exit(0); break; /*退出程序*/default : printf("输入有误\n");}printf("按任意键继续\n");getch();menu();}while (flag==1);}void menu(void){system("cls"); //清屏printf("\n");printf(" *********欢迎进入学生会成绩管理系统**************\n");printf(" 菜单\n");printf(" 输入成绩-------------------------------------1\n");printf(" 查看成绩及成绩排序---------------------------2\n");printf(" 查询学生成绩---------------------------------3\n");printf(" 成绩统计-------------------------------------4\n");printf(" 修改成绩-------------------------------------5\n");printf(" 添加成绩-------------------------------------6\n");printf(" 删除成绩-------------------------------------7\n");printf(" 保存成绩-------------------------------------8\n");printf(" 退出系统-------------------------------------9\n");printf(" ***********************************************\n");printf(" 请输入您的选择(1~9)\n");}/***************输入各个同学的学生信息******************************/void inputscore(void){int i,j;system("cls");printf(" 已经转到输入成绩菜单\n");printf("请输入学生总数:\n");scanf("%d",&n);printf("提示:输入学号时请输入由1位大写字母和8位数字组成的学号,如P0*******\n");/*因二维表上下需对正故有此要求*/for(i=0;i<n;i++){printf("\n");printf("请输入第%d位学生的学号:\n",i+1);scanf("%s",stu[i].number);printf("姓名:\n");scanf("%s",stu[i].name);printf("请输入学生成绩:\n");printf("出勤分\t值班分\t贡献分\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);}printf(" 成功输入(按任意键继续后请输入8进行保存)\n");}/*****************计算各个同学的总分*****************************/void total(void){int i,j;for(i=0;i<n;i++){stu[i].total=0;for(j=0;j<M;j++){stu[i].total+=stu[i].score[j];}}}/*****************计算各个同学的平均分*****************************/void avergescore(void){int i,j;for(i=0;i<n;i++){stu[i].aver=0;for(j=0;j<M;j++){stu[i].aver+=stu[i].score[j];}stu[i].aver=stu[i].aver/M;}}/************查看学生成绩及根据平均分对学生进行排序*********************/ void lookscore(void){int i,j,k;STU t;total();avergescore();system("cls");printf(" 已经转到查看成绩及成绩排序菜单\n");for(i=0;i<n-1;i++){for(k=i,j=i+1;j<n;j++)if(stu[j].aver>stu[k].aver)k=j;if(k!=j){t=stu[k];stu[k]=stu[i];stu[i]=t;}}printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");for(i=0;i<n;i++){printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");}}/*****************通过输入学号查找学生成绩***************************/ void searchscore(void){char a[10];int i,j;system("cls");printf(" 已经转到查询学生成绩菜单\n");printf("请输入需查询的学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");break; /*找到该学生成绩信息后跳出for循环*/ }elseprintf("未找到该学生信息\n");}}/*******统计学生成绩信息,平均分及格率,优秀率****************/void statistic(void){STU *p=stu;int i;float count=0.0,sum=0.0;system("cls");printf(" 已经转到成绩统计菜单\n");for(i=0;i<n;i++){sum+=(p+i)->aver;}printf("该学生会平均分为%4.2f\n",sum/n); /*平均分计算*/for(i=0;i<n;i++){if((p+i)->aver>=60)count++;}printf("该学生会及格率为%4.2f%%\n",count/n*100); /*及格率计算*/count=0.0;for(i=0;i<n;i++){if((p+i)->aver>=90)count++;}printf("该学生会优秀率为%4.2f%%\n",count/n*100); /*优秀率计算*/printf("平均分低于60的学生会成员名单\n");for(i=0;i<n;i++){if(stu[i].aver<60)printf("%s\n",stu[i].name);}/*统计不及格学生名单*/}/***************修改学生成绩*****************/void modify(void){char a[10];int i,j;system("cls");printf(" 已经转到修改成绩菜单\n");printf("请输入需要修改成绩的学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");printf("请重新输入该学生的学号:\n");scanf("%%s",stu[i].number);printf("姓名:\n");scanf("%s",stu[i].name);printf("请重新输入学生成绩:\n");printf("出勤分\t值班分\t贡献分\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);/*找到该学生成绩后进行修改,跳出for循环*/ printf("修改成功\n");break;}elseprintf("请确认该学生是否为学生会学生!\n");}}/*****************添加学生成绩********************/void add(void){int a,i,j;system("cls");printf(" 已经转到添加成绩菜单\n");printf("请输入新增加的学生人数:\n");scanf("%d",&a);n=n+a;for(i=n-a;i<n;i++){printf("\n");printf("请输入第%d位学生的学号:\n",i+1);scanf("%s",stu[i].number);printf("姓名:\n");scanf("%s",stu[i].name);printf("请输入学生成绩:\n");printf("出勤分\t值班分\t贡献分\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);printf("添加成功\n");}}/*******************删除学生成绩*************************/void delscore(void){int i,j,c;char m,a[10];system("cls");printf(" 已经转到删除成绩菜单\n");printf("请输入学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t\t出勤分\t值班分\t贡献分\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");c=i;break;}elseprintf("未找到该学生信息\n");}printf("是否删除该学生成绩(y/n)\n");scanf("%s",&m);if(m=='y'){for(i=c;i<n-1;i++)stu[i]=stu[i+1]; /*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/n=n-1; /*删除该学生信息后学生总数减一*/printf("删除成绩成功\n");}elseprintf("删除成绩失败\n");}/******************保存学生成绩************************/void savescore(void){FILE *fp;int i,flag=1;char m;system("cls");printf(" 已经转到保存成绩菜单\n");puts("是否保存学生成绩(y/n)");scanf("%s",&m);if(m=='y'){if((fp=fopen("score.dat","wb"))==NULL){printf("文件打开失败\n");return;}for(i=0;i<n;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("保存失败\n");flag=0;}if(flag==1)printf("保存成功!\n");fclose(fp);}elsereturn;}。

C语言编写的学生成绩管理系统

C语言编写的学生成绩管理系统

////////////////////////////////////////////////////////////// ///////欢迎进入…………………………学校学生成绩管理系统/////// //////////////////////////////////////////////////////////////#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 3void denglu(int a);void xuanze();void inputInfo();void outputInfo();void find();void sortscore();void modify();void writetofile();void readfile();int choice;int check=0;int loop=0;int a=12;///////定义结构体struct grade{float math;float chinese;float english;float computer;float ave;};struct student{int num;char name[7];char sex[3];int age;struct grade score;};struct student stud[N];///////////////主函数//////////////void main(){printf("-----------------------------------------------------\n");printf("*********欢迎使用学生成绩管理系统********* \n");printf("*********技术支持曾强************ \n" );printf("*********联系方式QQ8148**** ******** \n" );printf("*********08641 23******** \n");printf("-----------------------------------------------------\n");denglu(a);readfile();system("cls");while(1){xuanze();scanf("%d",&choice);switch(choice){case 1: inputInfo();break;case 2: if(loop==0){printf("没有输入或导入有效数据!\n");}outputInfo(); break;case 3: find(); break;case 4: modify(); break;case 5: sortscore();break;case 6: printf("警告!导入数据将覆盖现有未保存的数据\n");printf("要继续吗?(输入1继续,输入0取消操作):");int r;scanf("%d",&r);if(r==1){readfile();break;}else{break;}case 7: writetofile();if(check==loop){printf("********数据输出成功********\n");}else{printf("********数据输出失败********\n");}break;case 8: exit(0);default: printf("请正确选择服务项目\n");}}}////////////////////登陆函数/////////////void denglu(int a){int mima,count=0;for(int i=0;i<3;i++){printf("请输入六位数密码: \n");scanf("%d",&mima);if(mima==a){printf("登陆成功 \n");break;}else{count++;switch(count){case 1: printf("对不起你输入的密码错误(还有两次机会)\n");break;case 2: printf("对不起你输入的密码错误(还有一次机会)\n");break;case 3: printf("非法用户\n");exit(0);}}}}///////////////选择函数/////////////void xuanze(){printf("-----------------------------------------------------\n");printf ("1.学生信息输入 ");printf ("2.学生信息输出 \n");printf ("3.按照学号查询 ");printf ("4.学生信息修改 \n");printf ("5.学生成绩排序 ");printf ("6.学生数据导入 \n");printf ("7.学生数据保存 ");printf ("8.退出系统\n\n");printf("-----------------------------------------------------\n");printf ("请选择操作项目(1-8):");}void inputInfo(){char cha='y';while (cha=='y'){if(loop==N){printf("达到额定学生数目\n");return;}printf("请输入学号:\n");scanf("%d",&stud[loop].num);printf("请输入年龄:\n");scanf("%d",&stud[loop].age);printf("请输入姓名:\n");scanf("%s",&stud[loop].name);printf("请输入性别:\n");scanf("%s",&stud[loop].sex);printf("请输入数学成绩:\n");scanf("%f",&stud[loop].score.math);printf("请输入语文成绩:\n");scanf("%f",&stud[loop].score.chinese);printf("请输入英语成绩:\n");scanf("%f",&stud[loop].score.english);printf("请输入计算机成绩:\n");scanf("%f",&stud[loop]puter);printf("如果要输入下一个学生信息请按'Y';结束输入请按'N':");getchar();cha=getchar();loop++;}writetofile();}//////////////////输出函数//////////void outputInfo(){for (int j=0;j<loop;j++){printf ("学生的成绩stud[%d]:\n",j);printf ("学号:");printf ("%d\n",stud[j].num);printf ("年龄:");printf ("%d\n",stud[j].age);printf ("姓名:");printf ("%s\n",stud[j].name);printf ("性别:");printf ("%s\n",stud[j].sex);printf ("数学:");printf ("%f\n",stud[j].score.math);printf ("语文:");printf ("%f\n",stud[j].score.chinese);printf ("英语:");printf ("%f\n",stud[j].score.english);printf ("计算机:");printf ("%f\n",stud[j]puter);printf ("平均:");printf("%f\n",(stud[j]puter+stud[j].score.chinese+stud[j].score.math+stud[j] .score.chinese)/4);}}//////////////////学生信息查询////////////////void find(){int findnum ;printf("请输入你要查找的学号:");scanf("%d",&findnum);for(int k=0;k<loop;k++){if((stud[k].num)==findnum){printf ("学生的成绩stud[%d]:\n",k);printf ("学号:");printf ("%d\n",stud[k].num);printf ("年龄:");printf ("%d\n",stud[k].age);printf ("姓名:");printf ("%s\n",stud[k].name);printf ("性别:");printf ("%s\n",stud[k].sex);printf ("数学:");printf ("%f\n",stud[k].score.math);printf ("语文:");printf ("%f\n",stud[k].score.chinese);printf ("英语:");printf ("%f\n",stud[k].score.english);printf ("计算机:");printf ("%f\n\n\n",stud[k]puter);printf ("平均:");printf("%f\n",(stud[k]puter+stud[k].score.chinese+stud[k].score.math+stud[k] .score.chinese)/4);}else{printf("无此学号,请确认后重新输入\n");}}}////////////////////学生信息修改/////////////////////void modify(){int modifynum ;printf("请输入你要修改的学生学号:");scanf("%d",&modifynum);for(int k=0;k<loop;k++){if((stud[k].num)==modifynum){{printf("请输入新的年龄:\n");scanf("%d",&stud[k].age);printf("请输入新的姓名:\n");scanf("%s",&stud[k].name);printf("请输入新的性别:\n");scanf("%s",&stud[k].sex);printf("请输入新的数学成绩:\n");scanf("%f",&stud[k].score.math);printf("请输入新的语文成绩:\n");scanf("%f",&stud[k].score.chinese);printf("请输入新的英语成绩:\n");scanf("%f",&stud[k].score.english);printf("请输入新的计算机成绩:\n");scanf("%f",&stud[k]puter);}writetofile();}else{printf ("对不起没有你要找的学生信息\n");}}}////////////////////信息保存//////////////////////////////void writetofile(){int c;FILE *fp;char ch='y';fp=fopen("StuInfo.txt","wb") ;if(fp==NULL){printf("\n文件创建失败\n");exit(0);}for(int w=0;w<loop;w++){c=fwrite(&stud[w],sizeof(stud[w]),1,fp);check+=c;}fclose(fp);}////////////////////信息导入//////////////////////////////void readfile(){int count=0;FILE * fptr;if((fptr=fopen("StuInfo.txt","rb"))!=NULL){printf("文件读取成功!\n");while(!feof(fptr)){fread(&stud[count],sizeof(stud[count]),1,fptr);count++;}loop=count-1;}else{printf("文件打开失败!\n");}}///////////////成绩排序///////////////////void sortscore(){readfile();int j,k;struct student temp;for(k=0;k<loop;k++){for(j=0;j<loop-j;j++)if((stud[k].score.ave)>stud[k+1].score.ave){temp=stud[k];stud[k]=stud[k+1];stud[k+1]=temp;}}printf ("学生成绩由高到低依次是:\n");printf ("\n");for (j=0;j<k;j++)printf ("第%d名:%s 成绩:%f\n",j+1,stud[loop].name,stud[loop].score.ave);printf ("\n");}。

学生成绩管理系统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语言)








printf(" ____________________________ \n"); printf(" │ ★主菜单★ │\n"); printf(" │ 0 退出系统 │\n"); printf(" │ 1 成绩录入 │\n"); printf(" │ 2 成绩修改 │\n"); printf(" │ 3 成绩查询 │\n"); printf(" │ 4 成绩汇总 │\n"); printf(" │ 5 成绩输出 │\n"); printf(" │ 6 成绩排名 │\n"); printf(" │ 7 修改密码 │\n"); printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n"); printf("请输入您的选择(0,1,2,3,4,5,6,7):"); scanf("%d",&c); switch(c){ case 1:GradeInput(&student); break; case 2:GradeCorrect(student); break; case 3:GradeInquire(student); break; case 4:GradeCollect(student); break; case 5:GradeOutput(student); break; case 6:GradePaixu(student); break; case 7:CodeCorrect(); break; case 0: printf("\n 谢谢使用!\n"); } }while(c!=0); printf("学生成绩管理系统已退出!\n"); } void GradeCode() { FILE *fp; char s[20],yhname[20],mima[20],ch; int i,j=39,flag1=0,flag2=0; do{ system("cls"); printf("\n*************************** 欢 迎 登 陆 学 生 成 绩 管 理 系 统 *****************************\n");

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

在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语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。

为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录程序#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;i nt dianlu;d ouble aver;}Student;Student stu[99];int shuru(Student stud[],int n)/*输入若干条记录*/ {i nt i=0;c har sign,x[10];d ouble 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,stu[i].m ath,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;}r eturn;}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].engli sh,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); /*结束程序*/}}}}。

相关文档
最新文档