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

合集下载

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

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语言版源代码)

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

#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语言学生成绩管理系统源代码

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

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

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

C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用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语言课程设计报告课题题目:学生信息管理系统班级:信卓11801姓名:**题目一. 题目: (3)二.设计目的 (3)三.总体设计 (3)四.详细设计 (7)1.动态创建链表 (9)2.排序 (10)3.查询信息 (11)4.修改学生信息 (13)6.输出所有学生的所有数据 (15)7.统计各分数段的人数 (16)五.调试与测试 (17)六.课程设计心得与体会 (24)一.题目:学生信息管理系统要求:从文件中读取原始数据,并将修改后的数据保存在一个新的文件当中。

功能:1.浏览所有学生的所有信息2.用姓名和学号查询学生的信息3.用姓名和学号修改学生的信息4.用姓名和学号删除学生5.统计各个课程分数段的人数6.统计总分和各个课程的最高分、最低分以及对应的姓名二.设计目的如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。

随着科学技术的不断提高,计算机科学日渐成熟,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。

所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。

掌握: 1.掌握动态创建链表,并实现对数据的删除,检索,修改。

1.增强工程化意识,提高c语言实践能力。

三.总体设计(1)程序源文件分为:1.student.h 包含所有的头文件以及定义2.function.cpp 实现各个函数的功能3.main.cpp 主函数4.data.txt 学生原始数据(2)主函数实现菜单的选择:使用swicth语句实现菜单的选择1.浏览学生信息2.查询学生信息3.修改学生信息4.删除学生信息5.各科成绩6.最高分最低分以及对应的姓名(3)函数包括:1.struct student * create() //用动态链表建立基础的学生信息库从文件中将学生信息读取出来2.void sort(struct student *head) //排序3.void locatename(struct student *head) //通过姓名查询信息4.void locatenum(struct student *head) //通过学号查询信息5.struct student * delname(struct student *head) //通过姓名删除学生信息6.struct student * delnum(struct student *head) //通过学号删除学生信息7.void changename(struct student *head) //通过姓名去修改学生数据8.void changenum(struct student *head) //通过学号去修改学生数据9.void filein(struct student *head) //保存到文件中10.void print(struct student *head) //打印所有学生信息11.void ABCD(struct student *head) //统计各分段的人数12.void max(struct student * head) //总分以及各个课程的最高分,最低分以及对应的姓名对于创建链表和删除学生这两个函数需要返回head创建链表时返回head:其他函数中都传入了一个参数head那么都可以访问到链表中的所有数据删除学生返回head:当删除第一个学生时,即把头给删了这时需要换头head = delname(head); head= delnum(head);其它函数使用void类型即可四.详细设计使用结构体链表实现上述要求,在头文件中定义结构体,分为数据域和指针域。

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

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

C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考) #include"stdio.h"#include”stdlib。

h"#include"string。

h”typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!”);return 0;}else{p—>next=NULL;p-〉date.number=0;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”=〉请输入新生姓名!\n");gets(p—>);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语言课程设计报告+学生成绩信息管理系统+源代码

实验报告一、问题陈述及其需求分析(一)问题陈述学生信息管理系统是对学生信息的基本管理,其中包括以下及模块:(1)增加一个学生的信息(需输入要增加学生的所有信息);(2)统计本班学生总人数及男女生人数。

(3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。

(4)按学号对所有学生信息排序,并输出结果;(5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。

( 二 ) 功能需求分析学生信息管理系统设计学生信息包括:学号,姓名,性别,出生年月,电话使之提供以下功能:1、系统以菜单方式工作2、建立链表并显示3、插入新的学生信息4、删除某学号的学生信息5、查找某学号的学生信息6、对学生信息排序7、统计学生人数8、输出学生信息二总体设计(一)模块依据程序的数据结构,描述该程序的层次结构,如下图:1、建立链表并显示void createlist(struct stucode **r);2、插入新的学生信息void insert(struct stucode **r);3、删除某学号的学生信息void del(struct stucode **r);4、查找某学号的学生信息void search1(struct stucode *r);5、对学生信息排序void sort(struct stucode **r);6、统计学生人数void search2(struct stucode *r);7、输出学生信息void out(struct stucode *r);(二)程序总体框架模块层次结构,只确定了模块之间的关系和函数原型,不是程序的执行步骤。

程序总体框架是该程序的总体流程图。

改程序不是顺序连续地执行全部功能,而是在某一时刻有选择地执行一种或多种功能。

因此选用菜单方式是较佳的方案,程序总体框架如下图:(三) 运行环境(软,硬件环境)硬件:CPU, 内存,主板,硬盘,显卡,键盘,显示器等等。

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

C 语言学生成绩管理系统源代码.txt 始终相信,这世间,相爱的原因有很多,但分开的理由只有一个-- 爱的还不够。

人生有四个存折:健康情感事业和金钱。

如果健康消失了,其他的存折都会过期。

/* 该源码包括11 个函数(包含main 函数)①student_new②student_del③student_edit④score_input⑤score_edit⑥browser⑦page_title (main 函数调用)⑧return_confirm (前五个函数调用)⑨search_id (第2/3/5 个函数调用)⑩sort_it (browser 函数调用)main(调用前七个函数)*//* 学生成绩管理*//*Borland C 下编译通过,调试过程中不要输入大数字*/#include <stdio.h>#include <stdlib.h>#include <conio.h> int INDEX[32];// 结构体变量struct STUDENT{int id;int age;int chinese,math,english;char name[21]; }students[32];void page_title(char *menu_item){printf(">>> 学生管理系统<<<\n\n- %s -\n\n",menu_item);}//void return_confirm(void){prin tf("\n 按任意键返回.. \n");getch();}// void student_new(void){int n;page_title(" 录入学生基本信息"); for(n=0;n<32;n++) if(students[n].id==0) break;printf(" 学号:"); scanf("%d",&students[n].id); printf(" 姓名:"); scanf("%s",&students[n].name);printf(" 年龄:"); scanf("%d",&students[n].age); return_confirm();}// ①int search_id(void){int n,i;printf(" 请输入学生学号:");scanf("%d",&i); for(n=0;n<32;n++) {if(students[n].id==i&&students[n].id!=0){printf(" 学号:%d\n",students[n].id); printf(" 姓名:%s\n",students[n].name); printf(" 年龄:%d\n",students[n].age); return n;}}printf("\n 输入错误或学号不存在.\n");return -1;}//void student_del(void){int n;page_title(" 注销学生基本信息"); if((n=search_id())!=-1) students[n].id=0; printf("\n! 该学生已注销.\n"); return_confirm();}// ③void student_edit(void){int n;page_title(" 编辑学生基本信息"); if((n=search_id())!=-1)printf("\n 请重新输入新信息:\n 学号:"); scanf("%d",&students[n].id);printf(" 姓名:"); scanf("%s",&students[n].name);printf(" 年龄:"); scanf("%d",&students[n].age);}return_confirm();}// ②void score_input(void){int s,n,t;page_title(" 录入成绩");printf("\n 请用数字键选择科目\n1- 语文2- 数学3- 英语\n"); scanf("%d",&s);for(n=0;n<32;n++){ if(students[n].id!=0) {printf(" 学号:%d 姓名:%s 成绩:",students[n].id,students[n].name); scanf("%d",&t);switch(s){case 1 : students[n].chinese=t;break;case 2 : students[n].math=t;break; case 3 : students[n].english=t;break;} }} return_confirm();}// ④void score_edit(void){ int n;page_title(" 修改成绩"); if((n=search_id())!=-1){printf(" 语文:%d 数学:%d 语:%d\n",stude nts[ n].ch in ese,stude nts[ n].math,stude nts[ n].e nglish);printf("\n 请重新输入成绩:\n 语文:");scanf("%d",&students[n].chinese);printf(" 数学:");scanf("%s",&students[n].math); printf(" 英语:"); scanf("%d",&students[n].english);}return_confirm();}// ⑤void sort_it(char nn){int n,m,p,x,t[32];for(n=0;n<32;n++){switch(nn){case '1' : t[n]=students[n].id;break;case '2' : t[n]=students[n].chinese;break;case '3' : t[n]=students[n].math;break;case '4' : t[n]=students[n].english;break;case '5't[n]=students[n].chinese+students[n].math+students[n].english;break; }} for(n=0;n<32;n++){x=0;p=-1;for(m=0;m<32;m++){if(t[m]>x){ x=t[m]; p=m;}}t[p]=-1; INDEX[n]=p;}}//void browser(void){int n,x;char k;sort_it('1');while(1) {page_title(" 浏览");printf(" 按数字键选择排序方式或按0 返回\n");printf(" 学号-1\t 姓名\t 年龄\t 语文-2\t 数学-3\t 英语-4\t 总分-5\n");for(n=0;n<32;n++){if(INDEX[n]!=-1){x=INDEX[n];printf("%d\t%s\t",students[x].id,students[x].name);printf("%d\t%d\t",students[x].age,students[x].chinese);printf("%d\t%d\t",students[x].math,students[x].english);printf("%d\n",students[x].chinese+students[x].math+students[x].english);}}k=getch();if(k<'6'&&k>'0') sort_it(k);else if(k=='0') break;else continue;}}// ⑥void main(void){menu: page_title(" 操作选单");printf(" 请用数字键选择操作\n\n");printf("1 录入学生基本信息\n2 修改学生基本信息\n");printf("3 注销学生基本信息\n\n4 录入成绩\n5 修改成绩\n\n");printf("6 浏览...\n \n0 退出\n");switch(getch()){case '1' : student_new();break;case '2' : student_edit();break;case '3' : student_del();break;case '4' : score_input();break;case '5' : score_edit();break;case '6' : browser();break;case '0' : exit(0);}goto menu;}。

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

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)
};
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);
printf ("对不起,您输入的用户名或密码有误,已被强制退出。\n");
}
struct student stu[MAX],*p;
void menu() /*主函数*/

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

学生成绩管理系统是一个常见的C语言入门项目,可以帮助初学者了解循环、条件控制、结构体、文件操作等基本知识。

以下是一个简单的C语言学生成绩管理系统示例,实现了查询、添加、修改和删除学生成绩等功能。

您可以修改和扩展该代码以满足您的需求:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct {int id;char name[20];float score;} Student;void display_menu();void add_student();void find_student();void edit_student();void delete_student();void save_data();void load_data();int student_count = 0;Student students[100];int main() {load_data();while (1) {display_menu();int choice;printf("请输入您的选择:");scanf("%d", &choice);switch (choice) {case 1:find_student();break;case 2:add_student();break;case 3:edit_student();break;case 4:delete_student();break;case 5:save_data();printf("数据已保存。

\n");exit(0);default:printf("无效的选项!\n");}}return 0;}void display_menu() {printf("学生成绩管理系统\n");printf("====================\n");printf("1. 查询学生成绩\n");printf("2. 添加学生成绩\n");printf("3. 修改学生成绩\n");printf("4. 删除学生成绩\n");printf("5. 退出系统\n");printf("====================\n");}void add_student() {printf("请输入学生ID:");scanf("%d", &students[student_count].id); printf("请输入学生姓名:");scanf("%s", students[student_count].name); printf("请输入学生成绩:");scanf("%f", &students[student_count].score); student_count++;printf("学生已添加成功!\n");}void find_student() {int id;printf("请输入要查询的学生ID:");scanf("%d", &id);for (int i = 0; i < student_count; ++i) {if (students[i].id == id) {printf("ID:%d, 姓名:%s, 成绩:%.2f\n", students[i].id, students[i].name, students[i].score);return;}}printf("未找到该学生。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业资料 #include #include #include void frist_print() { printf("\t\t********************************\n\n"); //欢迎信息 printf("\t\t\t欢迎进入学生成绩系统\n"); printf("\t\t\t\t\t\t\t\t 此程序合作完成由"); printf("\n\t\t\t\t\t\t\t\t * * * * \n"); printf("\t\t\t\t\t\t\t\t * * * * \n"); printf("\t\t\t\t\t\t\t\t * * * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * 淼鑫 * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * 天顺 * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * * \n"); printf("\t\t\t\t\t\t\t\t * \n");

} //*********************************************************************************************************************************************************************************** void menu() {

printf("\n\t\t***********************************\n"); //管理菜单 printf("\n\t\t==========1.录入学生成绩===========\n\t\t+\n"); printf("\t\t==========2.显示学生成绩===========\n\t\t+\n"); printf("\t\t==========3.查询学生成绩===========\n\t\t+\n"); printf("\t\t==========4.添加学生成绩===========\n\t\t+\n"); printf("\t\t==========5.修改学生成绩===========\n\t\t+\n"); printf("\t\t==========6.删除学生成绩===========\n\t\t+\n"); printf("\t\t==========7.清 空 页 面 ===========\n\t\t+\n"); printf("\t\t==========8.退 出 系 统 ===========\n"); printf("\n\t\t***********************************\n"); printf("please choise 1--8:\t"); putchar(10);

} 专业资料

//*********************************************************************************************************************************************************************************** struct MM // 结构体定义变量 { char num[20]; char name[10]; float sco,sco2,sco3,sco4; int many;

}mm; //*********************************************************************************************************************************************************************************** void scanf_1() //第一次输入信息并保存在文件中 { char ch; FILE *fp; if((fp=fopen("dd.dat","wb+"))==NULL) { printf("cannot open file\n"); exit(0); }

do { printf("请输入学生的--编号:\t"); getchar(); gets(mm.num); printf("姓名:\t"); gets(mm.name); printf("总成绩:\t"); scanf("%f",&mm.sco); printf("平时成绩:\t"); scanf("%f",&mm.sco2); printf("作业成绩:\t"); scanf("%f",&mm.sco3); printf("考试成绩:\t"); scanf("%f",&mm.sco4); printf("学号:\t"); scanf("%d",&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) { 专业资料

printf("file write error\n"); exit(0); }

printf("是否继续输入y or n ?\t"); getchar(); ch=getchar(); }while(ch=='y'||ch=='Y'); fclose(fp);

} //*********************************************************************************************************************************************************************************** void find() //查询成绩的信息 { int a,b=0; char ch[20]; FILE *fp; if((fp=fopen("dd.dat","rb"))==NULL) { printf("cannot open file\n"); exit(0); } printf("请输入要查询的成绩的式\n\t1.编号 2.姓名:\n\t请选择 1 or 2 \t"); scanf("%d",&a); if(a==1) { getchar(); printf("请输入学生的编号:\t"); gets(ch); while(fread(&mm,sizeof(struct MM),1,fp)==1) if(strcmp(mm.num,ch)==0) { b++; printf("编号\t姓名\t成绩\t\t学号\n"); printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.sco,mm.many); } if(b==0) printf("对不起!没有找到相关信息:\n"); } else if(a==2) { printf("请输入学生的姓名:\t"); getchar(); gets(ch); while(fread(&mm,sizeof(struct MM),1,fp)==1) if(strcmp(mm.name,ch)==0) { 专业资料

b++; printf("编号\t姓名\t成绩\t\t学号\n");

printf("%s\t%s\t%.3f\t\t%d\n",mm.num,mm.name,mm.sco,mm.many); } if(b==0) printf("input error!\n"); } fclose(fp); } //*********************************************************************************************************************************************************************************** void scanf_2() //第二次输入信息并保存在文件中 { char ch; FILE *fp; if((fp=fopen("dd.dat","ab"))==NULL) { printf("cannot open file\n"); exit(0); }

do { printf("请输入要添加成绩的--编号:\t"); getchar(); gets(mm.num); printf("姓名:\t"); gets(mm.name); printf("成绩:\t"); scanf("%f",&mm.sco); printf("学号:\t"); scanf("%d",&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) { printf("file write error\n"); exit(0); }

printf("是否继续输入y or n ?\t"); getchar(); ch=getchar(); }while(ch=='y'||ch=='Y'); fclose(fp);

相关文档
最新文档