学生成绩管理系统数据结构
数据结构学生成绩管理系统

#include<stdio.h>#include<malloc.h>#include<conio.h>#define ERROR 0#define OK 1#define OVERFLOW -1#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct Stu{char name[20];//姓名char stuno[10];//学号int age;//年龄int score1;//语文成绩int score2;//数学成绩int score3;//英语成绩}ElemType;typedef struct LIST{ElemType *elem;int length;//顺序表长度int listsize;//链表最大值}List;int init(List *L)//构造一个空的线性表L{L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L->elem)exit(OVERFLOW);L->length=0;L->listsize=LIST_INIT_SIZE;return OK;}int ListLength(List *L){return L->length;}int Insert_SqList(List *La,int i,ElemType x){ElemType *p,*q,*newbase;if(i<1||i>La->length+1)return ERROR;if(La->length>=La->listsize){newbase=(ElemType*)realloc(La->elem,(La->listsize+LISTINCREMENT)*sizeof(ElemTyp e));if(!newbase)exit(OVERFLOW);La->elem=newbase;La->listsize+=LISTINCREMENT;}q=&(La->elem[i-1]);for(p=&(La->elem[La->length-1]);p>=q;--p)*(p+1)=*p;*q=x;++La->length;return OK;}void printList(List *L){int i;for(i=0;i<L->length;i++){printf("第%d个学生的信息:\n",i+1);printf("%s,%s,%d,%d,%d,%d",L->elem[i].name,L->elem[i].stuno,L->elem[i].age,L->elem[i] .score1,L->elem[i].score2,L->elem[i].score3);printf("\n");}}int Delete_SqList(List *La,int i,ElemType *x){ElemType *p,*q;if(i<1||i>La->length)return ERROR;p=&(La->elem[i-1]);x=p;q=La->elem+La->length-1;for(++p;p<=q;++p)*(p-1)=*p;--La->length;return OK;}void main(){int i,w,n;int j=1;List list;ElemType stuck;init(&list);printf("请输入要建立学生信息的长度:\n",n);scanf("%d",&n);for(i=1;i<=n;i++){printf("请输入第%d个学生的信息\n",i);printf("输入第%d个学生的姓名:\n",i);scanf("%s",list.elem[i-1].name);printf(请输入第%d个学生的学号:\n",i);scanf("%s",list.elem[i-1].stuno);printf("请输入第%d个学生的年龄:\n",i);scanf("%d",&list.elem[i-1].age);printf("请输入第%d个学生的语文成绩:\n",i);scanf("%d",&list.elem[i-1].score1);printf("请输入第%d个学生的数学成绩:\n",i);scanf("%d",&list.elem[i-1].score2);printf("请输入第%d个学生的英语成绩:\n",i);scanf("%d",&list.elem[i-1].score3);list.length++;}printList(&list);。
(2023)数据结构课设报告学生成绩管理系统(一)

(2023)数据结构课设报告学生成绩管理系统(一)数据结构课设报告学生成绩管理系统一、背景介绍为了方便教师管理学生的成绩,提高数据处理的效率和准确性,我们团队开发了一款可以管理学生成绩的系统。
二、需求分析•教师可以登录系统,并进行学生信息的录入、修改、查询和删除。
•教师可以录入、修改、查询和删除学生的成绩。
•学生也可以登录系统,并查看自己的成绩。
•教师和学生的密码需要进行加密存储,并能够找回密码。
三、设计方案1. 数据结构设计我们采用链表的数据结构,实现学生信息和成绩的存储。
- 学生信息:学号、姓名、密码。
- 学生成绩:科目、成绩。
2. 模块划分•登录模块:实现教师和学生的登录、密码加密和找回密码。
•学生信息管理模块:实现学生信息的录入、修改、查询和删除。
•成绩管理模块:实现成绩的录入、修改、查询和删除。
•学生成绩查询模块:实现学生查看自己成绩的功能。
3. 界面设计我们采用Java Swing库实现图形化界面,美观易用。
四、开发过程1. 环境配置我们使用Java语言进行开发,并采用MySQL数据库存储数据。
开发工具为Eclipse和Navicat。
2. 实现过程在开发过程中,我们分别完成了登录模块、学生信息管理模块、成绩管理模块和学生成绩查询模块。
同时,我们进行了严格的测试和优化,保证了系统的稳定性和用户体验。
五、总结通过本次课设,我们学习到了如何设计、实现一款简单的大型软件。
同时,我们也深入理解了数据结构的应用和开发过程中需要注意的问题。
未来,我们将继续学习和提升自己的技术水平,为社会创造更多有用的产品。
六、存在的问题和改进计划1. 学生信息和成绩输入需要更为便捷目前的输入方式需要逐一输入每个学生的信息以及成绩,如果要录入多个学生的信息,效率不高。
我们计划实现批量导入的功能,可以通过Excel表格导入学生信息和成绩。
2. 安全性还需要更高的保障目前我们只是简单使用密码加密保护了教师和学生的账户信息,如果系统被攻击者入侵,那么所有的账户信息和成绩信息都会暴露,对学生隐私和数据安全造成极大威胁。
学生成绩管理系统(数据结构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 ;}。
学生成绩管理系统数据库表结构说明

学生成绩管理系统数据库表结构说明1、学生表 tb_Student字段描述字段名数据类型是否主键是否为空学号StuID Char(12)是否姓名StuName varchar(8)否否性别Sex char(2)否否出生日期BirthDate datetime(8)否否籍贯Native varchar(40)否否入学时间EntranceTime datetime(8)否否政治面貌PoliticalFace Nchar(12)否否家庭住址Address Nvarchar(50)否否个人电话PerPhone Nchar(11)否否家庭电话HPhone Nchar(11)否否身份证号IDNum varchar(18)否否照片Photo varbinary(max)否否班级编号ClassID Char(9)否否宿舍编号DormitoryId Char(4)否否民族National Nchar(2)否否就业情况EmploymentStatus Nvarchar(10)否否2、班级表 tb_Class字段描述字段名数据类型是否主键是否为空班级编号ClassID char(9)是否班级名称ClassName varchar(20)否否人数Num tinyint(1)否否专业编号SpecializeID char(2)否否系部编号DepartmentID char(2)否否3、专业表 tb_Specialize字段描述字段名数据类型是否主键是否为空专业编号SpecializeID char(2)是否专业名称SpecializeName varchar(20)否否系部编号DepartmentID char(2)否否4、系部表 tb_Department字段描述字段名数据类型是否主键是否为空系部编号DepartmentID char(2)是否系部名称DepartmentName varchar(20)否否5、教师表 tb_Teacher字段描述字段名数据类型是否主键是否为空教师编号TeacherID char(10)是否姓名T eacherName varchar(8)否否性别Sex char(2)否否出生日期BirthDate datetime(8)否否政治面貌PoliticalFace varchar(8)否否籍贯Native varchar(40)否否民族National Nchar(2)否否联系电话Tephone Nchar(11)否否电子邮箱Email Varchar(50)否否身份证号IDNum varchar(18)否否照片Photo varbinary(max)否否入校时间AdmissionTime Datetime否否第一学历FirstDegree char(4)否否最高学历HighestDegree char(4)否否职务Position Narchar(8)否否备注Notes varchar(255)否是6、课程表 tb_Course字段描述字段名数据类型是否主键是否为空课程编号CourseID char(8)是否课程名称CourseName varchar(25)否否课程性质CourseNature char(10)否否学分Credits tinyint(1)否否7、用户表 tb_User字段描述字段名数据类型是否主键是否为空用户编号UserID Varchar(16)是否用户名UserName varchar(12)是否密码Pwd varchar(10)否否用户组编GroupID bit(1)否否号删除标记DeleteMarkers varchar(20)否是8、教师任课表 tb_T eacherYoung字段描述字段名数据类型是否主键是否为空教师编号TeacherID Char(10)是否课程编号CourseID char(8)是否班级编号ClassID char(9)是否学期Term tinyint(1)否否教室编号ClassroomID varchar(10)否否每周学时WeeklyHours tinyint(1)否否学期工作TermWorkload tinyint(3)否否量午别WuBie Vchar(2)否否节次JieCi Char(2)否否备注Notes varchar(255)否是9、教学计划表 tb_TeachingPlan 字段描述字段名数据类型是否主键是否为空学期Term tinyint(1)是否系部编号DepartmentID char(2)否否专业编号SpecializeID char(2)否否课程编号CourseID char(8)否否起始周StartWeek tinyint(1)否否结束周EndWeek tinyint(1)否否理论学时TheoryHours tinyint(1)否否实践学时PracticeHours tinyint(1)否否总学时SumHours tinyint(1)否否10、成绩表 tb_Tiny字段描述字段名数据类型是否主键是否为空学期Term tinyint(1)是否学号StuID char(12)否否课程编号CourseID char(8)否否考试成绩ExamGrade Tinyint(1)否否平时成绩ParTGrade Tinyint(1)期评Grade Tinyint(1)11、学生奖惩表 tb_StuRewardPun字段描述字段名数据类型是否主键是否为空自动编号RewardPunID Int(4)是否学号StuID char(12)否否奖惩性质RewardPunNature char(2)否否奖惩内容RewardPunContent varchar(40)否否奖惩原因RewardPunReason varchar(60)否否学期Term tinyint(1)否否12、教室表 tb_Classroom字段描述字段名数据类型是否主键是否为空教室编号ClassroomNum Varchar(10)是否教室类型ClassroomType varchchar(10)否否备注Notes Varchar(255)否是13、实训表 tb_Training字段描述字段名数据类型是否主键是否为空实训编号TrainingID Varchar(10)是否实训公司Training.pany Varchar(30)否否实训地点TrainingPlace Varchar(50)否否实训费用TrainingCost Char(5)否否实训时间TrainingTime Datetime否否实训情况TrainingSituation Varchar(50)否否实训人数TrainingNum vchar(max)否否备注Notes Varchar(255)否否否否14、学生——实训表 tb_StuTraining字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否学号StuNum Char(12)否否实训编号TrainingID Varchar(10)否否15、学历学位获得情况表 tb_DegreeGetSituation字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否学位获得时DegreeGetTime Datetime否否间专业方向ProDirection Varchar(20)否否学位Degree Vchar(20)否否16论文表 tb_ Paper字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否论文标题PaperTitle Vchar(100)否否性质PaperNature Varchar(20)否否发表刊物PublishAtions Varchar(20)否否发表时间PublishTime Datetime否否期号PeriodNum Char(4)否否卷号RollNum Char(4)否否字数Words Char(12)否否单位排序UnitSorting Char(10)否否作者排序AuthorSorting Char(10)否否刊物性质AtionsNature Char(10)否否17、科研项目情况 tb_KeYProjects Situation字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否科研项目KeYProjects Varchar(50)否否科研类型KeYType Varchar(20)否否结项时间JieXTime Datetime否否资助金额Grants Char(20)否否项目编号ProjectsNum Char(20)否否主持人Hoster Vchar(8)否否18、职称晋升情况 tb_ZhiCh字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否职称ZhiCh Vchar(12)否否GetZhiChTime Varchar(20)否否获得职称时间现所在单位NowUnit Varchar(30)否否备注Notes Varchar(255)否否19、参加工作访问进修情况 tb_StudyVisit字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否进修访问StudyVisitPlace Varchar(50)否否地点时间StudyTime Varchar(20)否否性质StudyNature Vchar(20)否否身份Identity Vchar(20)否否兼职情况PartTimeJob Vchar(20)否否备注Notes Varchar(255)否否20、获奖情况(荣誉称号表彰) tb_WinningSituation 字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否获奖名称WinningName Vchar(20)否否授予单位GrantUnit Varchar(20)否否授予时间GrantTime Datetime否否获奖类型WinningType Vchar(20)否否21、教学工作情况 tb_T eachJob字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否学年学期SchoolSemester Char(4)否否上课系部ClassDepartment Vchar(20)否否上课专业ClassPro Vchar(20)否否课程Course Vchar(20)否否上课班级Classroom Vchar(20)否否上课地点ClassPlace Vchar(20)否否(教室)授课类型ClassType Vchar(20)否否备注Notes Varchar(255)否否22、工作量统计字段描述字段名数据类型是否主键是否为空自动编号Automati.um Char(10)是否教师编号TeacherID Char(12)否否学年学期SchoolSemester Char(4)否否上课系部ClassDepartment Vchar(20)否否上课专业ClassPro Vchar(20)否否课程Course Vchar(20)否否上课班级Classroom Vchar(20)否否ClassPlace Vchar(20)否否上课地点(教室)授课类型ClassType Vchar(20)否否备注Notes Varchar(255)否否23、权限表字段描述字段名数据类型是否主键是否为空权限编号PerID Char (2)是否权限名称PerName Varchar(20)否否24、用户组字段描述字段名数据类型是否主键是否为空用户组编号GroupID Char(1)是否权限编号PerID Char(2)否否用户组名称GroupName Varchar(20)否否25、操作日志表字段描述字段名数据类型是否主键是否为空操作编号OperationID Int是操作ip Ip Varchar(20)否否登入时间LoginTime DateTime否否操作用户UserID Varchar(16)否否操作类型OperationType Varchar(20)否否。
数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用1. 引言1.1 学生成绩管理系统的重要性学生成绩管理系统在学校教育管理中起着至关重要的作用。
随着社会的发展和教育体制的不断完善,学生成绩管理系统已经成为学校教育管理工作中必不可少的一部分。
学生成绩管理系统可以帮助学校高效地管理学生成绩信息,及时了解学生学习情况,为学生提供个性化教学服务,提高教学质量。
学生成绩管理系统也是学校领导决策和教学评估的重要工具,能够为学校领导提供数据支持,帮助他们更好地制定学校教学方针和政策。
学生成绩管理系统在学校教育管理中扮演着重要角色,对提高教学质量、优化教育管理、促进学校发展都具有重要意义。
数据结构在学生成绩管理系统设计中的应用,将进一步提升系统的效率和可靠性,为学校教育事业的发展做出贡献。
1.2 数据结构在学生成绩管理系统中的应用引言:学生成绩管理系统是学校管理、教学工作中一个非常重要的组成部分,通过对学生成绩的记录、分析和管理,可以更好地了解学生的学习情况,为学校教学决策提供数据支持。
而在学生成绩管理系统的设计中,数据结构起着至关重要的作用。
1. 数据结构在学生成绩管理系统设计需求分析中的作用。
在设计学生成绩管理系统时,需要首先对系统需求进行分析和整理。
通过合理选择和设计数据结构,可以更好地满足系统的功能和性能要求,提高系统的效率和可靠性。
2. 数据结构在学生成绩管理系统中的具体应用。
在学生成绩管理系统中,常用的数据结构包括数组、链表、树等。
这些数据结构可以用来存储学生成绩信息,方便对成绩进行查找、修改和删除操作。
3. 学生成绩信息的存储和管理。
通过合理设计数据结构,可以有效地存储和管理大量学生成绩信息。
使用树结构可以快速查找某个学生的成绩信息,提高查询效率。
4. 成绩的排序和统计。
数据结构的设计还可以帮助实现成绩的排序和统计功能。
通过建立适当的数据结构,可以方便地对学生成绩进行排序和统计,为教师和学校提供及时准确的成绩数据。
数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用学生成绩管理系统是一种用来管理和记录学生学习成绩的软件系统。
在设计学生成绩管理系统时,合理的数据结构设计是至关重要的。
数据结构可以帮助我们组织和管理大量的学生数据,提高系统的效率和性能。
下面将详细介绍数据结构在学生成绩管理系统设计中的应用。
最重要的数据结构是数组。
数组是一种线性数据结构,可以连续存储相同类型的数据。
在学生成绩管理系统中,我们可以使用数组存储学生的基本信息,如学号、姓名、班级等。
通过数组,我们可以方便地对学生进行排序、检索和修改等操作。
数组还可以用来存储学生的成绩信息,例如每门课程的成绩,通过数组的索引快速访问学生的成绩。
树是一种非常有用的数据结构,在学生成绩管理系统中也有广泛的应用。
树是一种分层的数据结构,可以用于组织和管理具有层次结构的数据。
在学生成绩管理系统中,我们可以使用树来组织和管理学生的班级和专业信息。
每个节点可以包含班级的名称、人数、平均成绩等信息。
通过树的层级关系,我们可以方便地查询班级和专业的平均成绩。
图也是学生成绩管理系统中常用的数据结构之一。
图是一种非线性的数据结构,可以用来表示不同实体之间的关系。
在学生成绩管理系统中,我们可以使用图来表示学生与课程之间的关系,例如学生选择了哪些课程。
通过图的节点和边,我们可以方便地查询学生选择的课程和相关成绩。
在学生成绩管理系统中,还可以使用其他数据结构如队列、堆等。
队列可以用来解决学生申请加入班级的管理问题,堆可以用来快速找到最高分或最低分的学生。
数据结构在学生成绩管理系统设计中起着至关重要的作用。
合理选择和设计数据结构,可以提高系统的效率和性能,使学生成绩管理更加方便和准确。
也需要根据具体系统需求和规模进行选择和设计,以满足学生成绩管理的功能和性能要求。
学生成绩管理系统的分层DFD图

学生成绩管理系统的分层DFD
图数据词典
共分为三层; 第一个顶层图第二个第0层图第三个第一层图
数据词典:
数据结构: admin
描述:管理员的基本信息表
定义:admin=admin名字+密码+年龄+性别+工作+照片
名字={限3个字符以内}
密码={限10个字符以内}
数据结构:课程
描述:学校课程信息表
定义:课程=分数+教师姓名+学生姓名+课程编号+学年
学年={整数型}
分数={整数型}
数据结构:学生
描述:学生基本信息表
定义:学生=学生姓名+密码+年龄+性别+入学时间+学习课程+学院名称+照片
学生姓名={限9个字符以内}
数据流名:忘记密码
来源:判断校对
去向:用户信息表
组成={用户名+用户类型+用户信息+新密码}
备注:当用户忘记密码时可以同过验证信息修改密码
数据流名:成绩单
来源:教师
去向:学生
组成={学号+教师号+课程号+分数+学年}
备注:教师录入成绩或成绩单学生查询
数据存储:学生成绩情况
说明:存放的是每个学生的成绩情况输入数据流:各门功课的成绩情况
流出数据流:学生成绩单
数据量:由学生人数决定
存储方式:按学号生成顺序排列。
学生成绩管理系统数据流程图及数据字典

学生成绩管理系统数据流程图及数据字典随着教育信息化的发展,学生成绩管理系统在学校中得到了广泛应用。
学生成绩管理系统是一种利用计算机技术对学生成绩进行管理和分析的系统。
本文将介绍学生成绩管理系统的数据流程图及数据字典,以帮助读者更好地理解该系统的数据处理流程和数据结构。
一、数据流程图1.1 学生成绩录入流程- 学生成绩管理员登录系统- 选择录入成绩功能- 输入学生学号和成绩信息- 确认提交1.2 学生成绩查询流程- 学生/教师登录系统- 选择查询成绩功能- 输入学生学号或姓名- 系统显示学生成绩信息1.3 学生成绩统计流程- 教师登录系统- 选择统计功能- 选择统计范围(班级/科目等)- 系统生成成绩统计报表二、数据字典2.1 学生信息表(Student)- 字段:学号(ID)、姓名(Name)、性别(Gender)、班级(Class)- 主键:学号(ID)2.2 成绩信息表(Score)- 字段:学号(ID)、科目(Subject)、成绩(Grade)- 主键:学号(ID)、科目(Subject)- 外键:学号(ID)参考学生信息表2.3 教师信息表(Teacher)- 字段:工号(ID)、姓名(Name)、科目(Subject)- 主键:工号(ID)三、数据处理流程3.1 学生成绩录入流程- 学生成绩管理员登录系统后,通过录入成绩功能将学生成绩信息存储到成绩信息表中。
- 系统会进行数据验证,确保输入的学号和科目存在且成绩符合规定范围。
- 成绩信息成功录入后,系统会生成相应的操作日志记录。
3.2 学生成绩查询流程- 学生/教师登录系统后,通过查询成绩功能可以根据学号或姓名查看学生成绩信息。
- 系统会根据输入的条件在成绩信息表中进行查询,并将查询结果显示给用户。
- 查询结果包括学号、姓名、科目、成绩等信息,方便用户了解学生成绩情况。
3.3 学生成绩统计流程- 教师登录系统后,通过统计功能可以选择不同的统计范围进行成绩统计。
数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用【摘要】学生成绩管理系统设计中的数据结构应用是十分重要的。
本文从学生成绩管理系统概述开始介绍了数据结构在系统中的存储和组织方式,以及链表、树结构和哈希表在系统中的具体应用。
通过对比和分析不同数据结构的特点和优势,可以看出数据结构在学生成绩管理系统设计中的重要性和优势所在。
未来,随着技术的不断发展,学生成绩管理系统也会迎来新的挑战和机遇,数据结构在此过程中将起到关键作用。
深入理解和灵活运用数据结构,将有助于提高学生成绩管理系统的效率和性能,为教育管理工作带来更多便利和效益。
【关键词】数据结构、学生成绩管理系统、存储、组织、链表、树结构、哈希表、重要性、优势、发展。
1. 引言1.1 数据结构在学生成绩管理系统设计中的应用数据结构在学生成绩管理系统设计中的应用是指利用各种数据结构来存储和组织学生成绩数据,以便更有效地管理和分析学生成绩信息。
在学生成绩管理系统中,使用合适的数据结构能够提高系统的效率和性能,使得数据的存储和检索更加方便和快捷。
通过合理设计和应用数据结构,可以实现对学生成绩数据的统一管理和快速查询,提高教学管理工作的效率和质量。
2. 正文2.1 学生成绩管理系统概述学生成绩管理系统是一个涉及学生个人信息、课程信息、成绩信息等多种数据的系统。
它的主要功能是帮助学校管理学生成绩信息,包括学生的平时成绩、考试成绩以及综合评价等。
学生成绩管理系统可以帮助学校更好地了解学生的学习情况,及时发现问题并进行教育干预,提高学生成绩水平和学校的教学质量。
学生成绩管理系统通常包括学生信息管理、课程信息管理、成绩信息管理等模块。
在学生信息管理模块中,学校可以录入学生的基本个人信息,包括姓名、学号、性别、班级等。
在课程信息管理模块中,学校可以录入各个课程的基本信息,包括课程名称、授课教师、上课时间等。
在成绩信息管理模块中,学校可以录入学生的各门课程的平时成绩、考试成绩以及最终成绩。
学生成绩管理系统数据库设计

学生成绩管理系统数据库设计一、引言学生成绩管理系统是现代教育系统中必不可少的一部分。
数据库作为该系统的核心组成部分,用于存储和管理学生的个人信息和学业成绩数据。
本文将介绍学生成绩管理系统数据库设计的方案,包括数据库的结构、关系和各个表的字段及其类型。
二、数据库结构学生成绩管理系统数据库包含多个表,每个表对应一个实体或关系。
以下是数据库的主要结构:1. 学生表(Student)该表存储学生的个人信息,如学生ID、姓名、年龄、性别、班级等。
表结构如下:- 学生ID(StudentID):主键,用于唯一标识学生。
- 姓名(Name):学生的姓名。
- 年龄(Age):学生的年龄。
- 性别(Gender):学生的性别。
- 班级(Class):学生所在的班级。
2. 课程表(Course)该表存储所有开设的课程信息,如课程ID、课程名称、学分等。
表结构如下:- 课程ID(CourseID):主键,用于唯一标识课程。
- 课程名称(CourseName):课程的名称。
- 学分(Credit):课程的学分。
3. 成绩表(Grade)该表存储学生的成绩信息,包括学生ID、课程ID、成绩等。
表结构如下:- 学生ID(StudentID):外键,与学生表中的学生ID相关联。
- 课程ID(CourseID):外键,与课程表中的课程ID相关联。
- 成绩(Score):学生在某一门课程中的成绩。
三、关系说明学生成绩管理系统数据库中的表之间存在以下关系:1. 学生与课程的多对多关系一个学生可以选择多门课程,而一门课程也可以被多个学生选择。
这种关系可以通过成绩表来连接学生表和课程表。
2. 学生与成绩的一对多关系一个学生可以有多门课程的成绩,而一门课程只对应一个学生的成绩。
这种关系可以通过成绩表中的学生ID字段来建立。
3. 课程与成绩的一对多关系一门课程可以有多个学生的成绩,而一个学生只对应一门课程的成绩。
这种关系可以通过成绩表中的课程ID字段来建立。
数据结构之学生成绩管理系统

数据结构之学绩管理系统学绩管理系统文档1.系统概述1.1 目的1.2 范围1.3 定义1.4 参考文献2.功能需求2.1 学生信息管理2.1.1 学生基本信息录入2.1.2 学生信息查询2.1.3 学生信息修改2.1.4 学生信息删除2.2 成绩管理2.2.1 成绩录入2.2.2 成绩查询2.2.3 成绩修改2.2.4 成绩删除2.2.5 成绩统计与分析 2.3 班级管理2.3.1 班级信息录入 2.3.2 班级信息查询 2.3.3 班级信息修改 2.3.4 班级信息删除 2.4 教师管理2.4.1 教师信息录入 2.4.2 教师信息查询 2.4.3 教师信息修改 2.4.4 教师信息删除 2.5 用户管理2.5.1 用户注册2.5.2 用户登录2.5.3 用户权限管理3.性能需求3.1 响应时间3.2 并发性能3.3 数据处理性能4.数据库设计4.1 学生信息表4.2 成绩表4.3 班级表4.4 教师表4.5 用户表5.界面设计5.1 登录界面5.2 学生信息管理界面 5.3 成绩管理界面5.4 班级管理界面5.5 教师管理界面5.6 用户管理界面6.部署架构6.1 硬件需求6.2 软件需求6.3 系统安装6.4 系统配置7.测试计划7.1 单元测试7.2 集成测试7.3 系统测试7.4 性能测试7.5 用户验收测试8.维护与支持8.1 环境要求8.2 运维手册8.3 常见问题与解决方案8.4 版本更新记录9.附件9.1 数据库设计文件9.2 界面设计文件9.3 测试报告附录:1.法律名词及注释:- 学绩管理系统:指用于管理学生的基本信息、成绩、班级和教师等相关信息的软件系统。
- 用户权限管理:指对系统中的用户进行身份验证和权限控制的机制。
- 数据库设计:指根据系统需求设计数据库表结构和数据关系的过程。
- 单元测试:指对系统中的各个独立单元(模块)进行测试的过程,以保证其功能的正确性。
- 集成测试:指将系统中各个模块组合在一起进行测试的过程,以验证系统的各个模块之间的协同工作是否正常。
学生成绩管理系统数据结构课程设计

学生成绩管理系统数据结构课程设计学生成绩管理系统是一个用于管理学生学习成绩的软件系统。
它通常用于学校、教育机构或教师们来跟踪和记录学生的学习进展,并生成报告和分析数据。
在数据结构课程设计中,学生成绩管理系统需要设计合适的数据结构来存储和操作学生成绩数据。
在设计学生成绩管理系统时,可以使用以下数据结构:1. 数组:可以使用数组来存储学生成绩数据。
每个学生的成绩可以用一个数组元素表示,可以将学生按照学号或者其他标识符按顺序存储在数组中。
这样可以方便地通过索引来访问和修改学生成绩。
2. 链表:链表是另一种常用的数据结构,可以用于存储学生成绩数据。
每个学生的成绩可以用一个节点表示,节点可以包含学生的信息和成绩,同时包含指向下一个节点的指针。
这样可以方便地插入、删除和查找学生成绩。
3. 树:树可以用于组织学生成绩数据。
可以使用二叉搜索树或平衡二叉树来存储学生成绩,其中学生的学号或者姓名可以作为关键字。
这样可以方便地进行查找、插入和删除操作,并可支持对学生成绩进行排序。
以上是一些常用的数据结构,用于存储学生成绩管理系统的数据。
在具体的设计中,还可以根据实际需求选择其他合适的数据结构。
除了数据结构,学生成绩管理系统还可能包括其他功能,例如:1. 添加学生:可以通过输入学生的基本信息和成绩,将学生添加到系统中。
2. 删除学生:可以通过学生的学号或其他标识符,从系统中删除某个学生的信息和成绩。
3. 修改成绩:可以根据学生的学号或其他标识符,修改学生的成绩信息。
4. 查询成绩:可以根据学号、姓名或其他条件,查询学生的成绩信息。
5. 成绩统计和分析:可以对学生的成绩进行统计和分析,生成报告和图表,帮助教师或学校了解学生的学习情况。
以上只是学生成绩管理系统可能包含的一些基本功能,具体的设计和实现还需要根据实际需求和要求进行进一步的扩展和深入分析。
通过合适的数据结构和功能设计,可以实现一个高效、易用和功能完善的学生成绩管理系统。
数据结构之学生成绩管理系统

学生成绩管理系统一、试验目旳1. 通过本次课程设计中学生成绩管理系统旳题目,掌握链表等数据构造旳基本操作方面旳知识,并能灵活旳处理某些基本旳问题,加深对其性质及各项操作旳理解;2. 将所学数据构造方面旳知识与一门详细旳语言——C语言来进行实现, 感受数据构造旳强大作用, 加深理解。
二、试验规定(1)管理系统中有五个规定: 输入查找修改插入删除存储(2)输入规定: 可以通过键盘输入和文献输入两种(3)查找规定:可以根据学生号查找单个学生旳信息, 也可以遍历所有学生信息(4)修改规定: 可以根据学生号修改单个学生所有信息(5)插入规定: 可以实现头插和尾插(6)删除规定: 可以根据学生号删除单个学生信息三、存储规定: 通过链表存储所有信息四、算法旳思想与算法实现环节1. 基本思想通过链表数据类型进行基本操作, 重要有三个模块: 分别是主函数模块、重要操作函数及基本操作函数。
其中, 主函数负责其他子函数旳调用实现以及基本界面旳操作重要函数包括:void StuInput(Student *); //学生成绩管理系统旳输入函数, 由主函数调用void StuSelect(Student *); //学生成绩管理系统旳查找函数, 由主函数调用void StuAlter(Student *); //学生成绩管理系统旳修改函数, 由主函数调用void StuInsert(Student *); //学生成绩管理系统旳插入函数, 由主函数调用void StuDelect(Student *); //学生成绩管理系统旳删除函数, 由主函数调用void StuSave(Student *); //学生成绩管理系统旳存储函数, 由主函数调用基本操作函数:void StuOutput(Student *p); //输出函数int StuImport(Student *head,Student *p); //输入函数void StuInputHand(Student *head); //学生成绩管理系统旳手动输入函数, 由输入函数调用void StuInputFile(Student *head); //学生成绩管理系统旳文献输入函数, 由输入函数调用void StuSelectErg(Student *head); //学生成绩管理系统旳遍历函数, 由查找函数调用void StuSelectNumFind(Student *head); //学生成绩管理系统旳按学号查找函数, 由查找函数调用void StuSelectSubFind(Student *head); //学生成绩管理系统旳按科目查找函数, 由查找函数调用2. 实现环节首先, 分析题目规定划分实现模块, 定义基本数据类型, 诸如构造体、链表等;另一方面, 针对上述旳基本操作实现详细需要进行旳操作, 详细实现每个环节需要进行旳基本操作, 即详细编写每个小函数实现功能;最终, 编写主函数对每个实现进行按需调用, 实现操作。
学生成绩管理系统数据结构课程设计

学生成绩管理系统数据结构课程设计近年来,随着信息技术的快速发展,学生成绩管理系统在学校中得到了广泛应用。
学生成绩管理系统是一种基于数据结构的软件系统,旨在帮助学校更好地管理学生的学习成绩。
本文将介绍一个基于数据结构的学生成绩管理系统的设计。
首先,我们需要设计一个合适的数据结构来存储学生的学习成绩。
在这个系统中,我们可以使用一个二维数组来存储学生的成绩信息。
数组的行表示学生的学号,列表示不同科目的成绩。
这样,我们就可以方便地对学生成绩进行增删改查的操作。
接下来,我们需要设计一些基本的功能来实现学生成绩的管理。
首先是添加学生的成绩信息。
当学生入学时,管理员可以通过系统将学生的学号和成绩添加到数组中。
其次是删除学生的成绩信息。
当学生毕业或者转学时,管理员可以通过系统将学生的学号和成绩从数组中删除。
再次是修改学生的成绩信息。
当学生的成绩发生变化时,管理员可以通过系统修改学生的成绩。
最后是查询学生的成绩信息。
管理员可以通过系统查询学生的学号,然后系统会返回该学生的成绩信息。
除了基本的功能,我们还可以设计一些高级功能来提升学生成绩管理系统的实用性。
例如,我们可以设计一个成绩统计功能,用于统计学生的平均成绩、最高成绩和最低成绩。
这样,管理员可以更好地了解学生的学习情况。
另外,我们还可以设计一个成绩排名功能,用于按照成绩对学生进行排名。
这样,管理员可以更方便地找出成绩优秀的学生。
在实际应用中,我们还可以将学生成绩管理系统与其他系统进行集成。
例如,我们可以将学生成绩管理系统与学生信息管理系统进行集成,这样可以更方便地管理学生的学习情况。
另外,我们还可以将学生成绩管理系统与家长端进行集成,这样家长可以通过系统查看孩子的成绩情况,及时了解孩子的学习进展。
总之,学生成绩管理系统是一种基于数据结构的软件系统,可以帮助学校更好地管理学生的学习成绩。
通过合适的数据结构和功能设计,我们可以方便地对学生成绩进行增删改查的操作,并且可以提供一些高级功能来提升系统的实用性。
学生成绩管理系统数据结构课程设计

学生成绩管理系统数据结构课程设计1. 介绍学生成绩管理系统是一种用于管理学生学业成绩的应用软件。
该系统能够帮助教师和学生方便地录入、查询和统计学生的各科成绩,以便更好地进行教学和学习工作。
本文将针对该系统的数据结构进行设计和实现。
2. 系统需求学生成绩管理系统需要满足以下功能要求:•学生信息管理:包括学生姓名、学号、专业等信息。
•课程信息管理:包括课程名称、课程编号、学分等信息。
•成绩信息管理:包括学生的各科成绩。
•信息查询:能够查询学生的个人信息、课程信息和成绩信息。
•成绩统计:能够对学生的各科成绩进行统计和分析。
3. 数据结构设计基于上述需求,我们可以设计以下数据结构:3.1 学生信息数据结构struct Student {int studentId; // 学号string name; // 姓名string major; // 专业};3.2 课程信息数据结构struct Course {int courseId; // 课程编号string name; // 课程名称int credit; // 学分};3.3 成绩信息数据结构struct Score {int studentId; // 学生学号int courseId; // 课程编号float score; // 成绩};3.4 数据存储结构设计3.4.1 学生信息存储使用数组或链表存储学生信息,可以根据学号快速查找和修改学生信息。
struct StudentNode {Student stu;StudentNode* next;};3.4.2 课程信息存储使用数组或链表存储课程信息,可以根据课程编号快速查找和修改课程信息。
struct CourseNode {Course crs;CourseNode* next;};3.4.3 成绩信息存储使用数组或链表存储成绩信息,可根据学生学号和课程编号查找和修改成绩信息。
struct ScoreNode {Score scr;ScoreNode* next;};4. 系统实现4.1 添加学生信息通过输入学生的学号、姓名和专业信息,创建一个学生结构体,并将其插入学生信息存储数据结构中。
学生成绩管理系统数据结构课程设计报告

学生成绩管理系统数据结构课程设计报告一、背景学生成绩管理系统是学校教务处常用的软件之一,旨在方便学校管理学生成绩信息。
数据结构是计算机科学中的基础课程,对于学生成绩管理系统的设计和实现有着重要意义。
本课程设计报告将针对学生成绩管理系统的数据结构设计展开讨论。
二、需求分析学生成绩管理系统需要存储学生的基本信息和成绩信息,可以进行成绩录入、查询、统计等操作。
系统需要能够高效地处理大量学生信息,并提供快速、准确的查询功能。
三、数据结构设计1. 学生信息存储为了高效地存储学生信息,可以使用链表数据结构。
每个学生信息包括学号、姓名、性别、班级等字段,可以设计一个学生结构体来存储这些信息。
链表节点可以包含一个学生结构体和指向下一个节点的指针,从而构成一个链表来存储所有学生信息。
typedef struct Student {int studentID;char name[50];char gender;char className[50];float score;struct Student* next;} Student;Student* head = NULL;2. 成绩信息存储成绩信息可以存储在一个数组中,数组的每个元素对应一个学生的成绩,可以通过学号索引到对应的成绩信息。
为了方便查询和统计,可以对成绩数组进行排序,例如按学号或成绩值排序。
float scores[1000];四、功能实现1. 成绩录入在管理系统中,可以提供成绩录入功能,输入学生的学号和成绩信息后,将成绩信息存储到成绩数组中。
2. 查询功能查询功能可以根据学生的学号或姓名查询学生的基本信息和成绩信息,可以使用链表和数组的结合来实现高效的查询功能。
3. 成绩统计系统可以根据输入的条件,如班级、科目等进行成绩统计,计算平均成绩、最高分、最低分等统计信息。
五、总结本设计报告对学生成绩管理系统的数据结构设计进行了详细讨论,包括学生信息和成绩信息的存储方式、功能实现等方面。
学生成绩管理系统数据库表结构说明

否
学号
StuID
char(12)
否
否
课程编号
CourseID
char(8)
否
否
考试成绩
ExamGrade
Tinyint(1)
否
否
平时成绩
ParTGrade
Tinyint(1)
期评
Grade
Tinyint(1)
11、学生奖惩表 tb_StuRewardPun
字段描述
字段名
数据类型
与否主键
与否为空
自动编号
字段名
数据类型
与否主键
与否为空
教师编号
TeacherID
char(10)
是
否
姓名
TeacherName
varchar(8)
否
否
性别
Sex
char(2)
否
否
出生日期
BirthDate
datetime(8)
否
否
政治面貌
PoliticalFace
varchar(8)
否
否
籍贯
Native
varchar(40)
字段描述
字段名
数据类型
与否主键
与否为空
自动编号
Automati.um
Char(10)
是
否
教师编号
TeacherID
Char(12)
否
否
职称
ZhiCh
Vchar(12)
否
否
获得职称时间
GetZhiChTime
Varchar(20)
否
否
现所在单位
NowUnit
数据结构在学生成绩管理系统设计中的应用

数据结构在学生成绩管理系统设计中的应用学生成绩管理系统是一个用于管理、存储和分析学生成绩信息的软件系统。
它可以帮助学校、教师和学生更好地了解和管理学生的学习情况。
在设计和实现学生成绩管理系统时,合理选择和应用数据结构是十分重要的,它可以影响到系统的性能、可扩展性和易用性。
学生成绩管理系统需要存储大量的学生信息和成绩数据。
常见的数据结构之一是数组,用于存储学生的个人信息,如学号、姓名、年龄等。
数组具有随机访问的特点,可以通过下标快速访问和修改元素,非常适合存储大量学生的信息。
除了个人信息,学生成绩管理系统还需要存储学生成绩数据。
成绩数据通常是一个二维矩阵,其中行表示学生,列表示科目。
在这种情况下,可以使用二维数组来存储成绩数据。
二维数组可以通过行和列的下标来访问和修改元素,非常适合存储和处理学生成绩数据。
另一个常见的数据结构是链表。
链表可以用来存储学生间的关系,如同班同学、上下级关系等。
链表具有插入和删除元素的高效性,可以方便地修改学生间的关系。
链表还可以用来实现成绩的按序排列,方便教师和学生查看和比较成绩。
树是另一个重要的数据结构,在学生成绩管理系统中也有广泛的应用。
可以使用二叉搜索树来存储学生的成绩和排名信息。
二叉搜索树具有按序存储和快速查找的特点,可以方便地根据成绩或排名查找特定学生的信息。
树还可以用来表示学生的课程关系和成绩趋势分析等。
图是一种复杂的数据结构,也可以用于学生成绩管理系统的设计中。
可以使用有向图来表示学生之间的关系网络,如上级、同学、老师和学生之间的关系等。
有向图可以用来模拟学生之间的互动过程,方便教师和学生之间的交流和合作。
还可以使用栈和队列等数据结构,来实现学生成绩管理系统中的一些功能,如成绩的计算和统计、学生成绩的导入和导出等。
数据结构在学生成绩管理系统设计中的应用非常广泛。
合理选择和应用适当的数据结构可以提高系统的性能和效率,方便教职工和学生的使用和管理。
在设计学生成绩管理系统时,要根据系统的需求和功能,选择合适的数据结构,并结合具体情况进行合理的设计和实现。
学生成绩管理系统的分层DFD图

学生成绩管理系统的分层DFD图数据词典
共分为三层; 第一个顶层图第二个第0层图第三个第一层图
数据词典:
数据结构:admin
描述:管理员的基本信息表
定义:admin=admin名字+密码+年龄+性别+工作+照片
名字={限3个字符以内}
密码={限10个字符以内}
数据结构:课程
描述:学校课程信息表
定义:课程=分数+教师姓名+学生姓名+课程编号+学年
学年={整数型}
分数={整数型}
数据结构:学生
描述:学生基本信息表
定义:学生=学生姓名+密码+年龄+性别+入学时间+学习课程+学院名称+照片学生姓名={限9个字符以内}
数据流名:忘记密码
来源:判断校对
去向:用户信息表
组成={用户名+用户类型+用户信息+新密码}
备注:当用户忘记密码时可以同过验证信息修改密码
数据流名:成绩单
来源:教师
去向:学生
组成={学号+教师号+课程号+分数+学年}
备注:教师录入成绩或成绩单学生查询
数据存储:学生成绩情况
说明:存放的是每个学生的成绩情况
输入数据流:各门功课的成绩情况
流出数据流:学生成绩单
数据量:由学生人数决定
存储方式:按学号生成顺序排列。
数据结构与算法课程设计 学生成绩管理系统

数据结构与算法课程设计学生成绩管理系统学生成绩管理系统是一种用于管理学生的课程成绩和相关信息的软件系统。
该系统旨在帮助学校、教师和学生更好地管理和了解学生的学术表现。
下面是一个标准格式的文本,详细描述了学生成绩管理系统的功能和特点。
一、系统概述学生成绩管理系统是基于数据结构与算法课程设计的一个软件系统。
该系统通过使用合适的数据结构和算法,实现了对学生课程成绩的管理和统计分析。
系统具有用户友好的界面和丰富的功能,能够满足学校、教师和学生的需求。
二、系统功能1. 学生信息管理:系统可以记录学生的基本信息,包括学号、姓名、性别、年级等。
教师和管理员可以通过系统添加、修改和删除学生信息。
2. 课程管理:系统可以管理学校开设的各门课程,包括课程名称、授课教师、学分等信息。
教师和管理员可以在系统中添加、修改和删除课程信息。
3. 成绩录入:教师可以通过系统录入学生的课程成绩。
系统会自动计算每门课程的平均成绩和总评成绩,并将成绩与学生的个人信息进行关联。
4. 成绩查询:学生和教师可以通过系统查询学生的课程成绩。
学生可以查看自己的成绩,教师可以查看所教授课程的学生成绩。
查询结果可以按照学生、课程、成绩等进行排序和筛选。
5. 统计分析:系统可以对学生的课程成绩进行统计分析。
教师和管理员可以查看学生的平均成绩、最高成绩、最低成绩等统计信息,并生成相应的报表。
6. 数据备份与恢复:系统支持对学生信息和成绩数据进行备份和恢复。
管理员可以定期备份数据,以防止数据丢失或损坏。
7. 用户权限管理:系统具有不同的用户角色,包括学生、教师和管理员。
每个用户角色有不同的权限,保证了系统的安全性和数据的保密性。
三、系统特点1. 高效性:系统使用了合适的数据结构和算法,能够快速处理大量的学生信息和成绩数据,提高了系统的响应速度和处理效率。
2. 可扩展性:系统具有良好的可扩展性,可以根据实际需求进行功能的扩展和定制。
例如,可以添加更多的统计分析功能,或者与其他系统进行集成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
洛阳理工学院课程设计报告课程名称数据结构课程设计设计题目学生成绩管理系统专业计算机科学与技术课程设计任务书设计题目:学生成绩管理系统设计内容与要求:编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。
程序运行时显示一个简单的菜单,例如:(1)信息输入(INPUT)(2)总分统计(COUNT)(3)总分排序(SORT)(4)查询(QUERY)其中:(1)对4个学生的信息进行输入;(2)对每个学生的3门课程统计总分;(3)对4个学生的总分按降序排序并显示出来;(4)查询输入一个学号后,显示出该学生的有关信息;课程设计评语成绩:指导教师:_______________年月日目录一.问题描述 (2)二.基本要求 (2)三.数据结构 (2)四.总体设计 (3)1.结构图 (3)2.流程图 (3)五.详细设计 (5)1.录入模块 (5)2.浏览模块 (5)3.排序模块 (5)4.查找模块 (5)六.测试与调试 (5)七.源程序清单 (9)一.问题描述编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
二.基本要求建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。
程序运行时显示一个简单的菜单,例如:(1)信息输入(INPUT)(2)总分统计(COUNT)(3)总分排序(SORT)(4)查询(QUERY)其中:(1)对4个学生的信息进行输入;(2)对每个学生的3门课程统计总分;(3)对4个学生的总分按降序排序并显示出来;(4)查询输入一个学号后,显示出该学生的有关信息;三.数据结构struct student{char num[10];/*学号*/char name[20];/*姓名*/int fgrade;/*佛学成绩*/int cgrade;/*C语言成绩*/int egrade;/*英语成绩*/int total;/*总分*/}st[100];四.总体设计1.结构图2.流程图2.1录入函数图4.22.2 排序函数2.3 查询函数2.4 按学号查询函数图4.3 图4.42.5 按姓名查询函数(同上)五.详细设计1.录入模块定义一个结构struct student和数组st[N]用来储存N个学生的所有信息(学号st[i].num、姓名st[i].name、佛学成绩st[i].fgrade、C语言成绩st[i].cgrade、英语成绩st[i].egrade)。
通过for循环输入所有学生信息。
用printf语句提示需要输入的内容,接着用scanf语句输入相应内容。
输入完毕后套用保存函数save(m)将所输入的信息写入指定文件。
2.浏览模块声明整形变量i和count,其中记录输出的学生序数,count用来接收调用浏览函数时所传递过来的实参,将其值传递给导出函数load(m),使得导出的学生人数与浏览的学生人数保持一致。
通过调用load函数后(即给em数组赋值),用for循环输出每一个学生的各种信息。
3.排序模块声明整形变量i,j和结构体变量struct student temp,用for循环实现排序功能,利用冒泡法,以st[i].total<st[j].total为条件进行排序。
最后用printf输出排序结果。
4.查找模块声明整型变量k,先用printf语句显示查询菜单,用scanf输入选择的查询方式的代号,用switch(k)进入所选择的具体查询函数,包括学号查询,姓名查询两种方式。
学号查询中,用scanf语句输入需要查询的学号,并赋值给num。
用for循环,循环主体判断em[i].num中是否有输入的学号。
如果有,用printf语句输出与学号相对应的该学生的所有信息,再跳出循环。
按姓名查询与此方法类似,不再叙述。
六.测试与调试1.运行程序,进入主菜单图6.1 主菜单2.输入数字“1”,创建学生信息图6.2 输入职工信息3.输入数字“2”,浏览学生信息图6.3 浏览职工信息4.输入数字“3”,按总分排序图6.4 按总分排序5.输入数字“4”,查询学生信息5.1 选择查询方式“1”图6.5 按学号查询5.2 选择查询方式“2”图6.6 按姓名查询七.源程序清单#include <stdio.h>#include <stdlib.h>#include <string.h>struct student{char num[10];/*学号*/char name[20];/*姓名*/int fgrade;/*佛学成绩*/int cgrade;/*C语言成绩*/int egrade;/*英语成绩*/int total;/*总分*/}st[100];void menu();void input();void save(int m);void save();void display();void search();void search_num();void search_name();void sort_total();int load();/*定义各函数*/int m;void main(){menu();int n=0,flag;char a;do{printf("请选择你需要操作的步骤(1--4):\n");scanf("%d",&n);if(n>=0&&n<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf("\n ◆◆◆输入学生信息◆◆◆\n");printf("\n");input();break;case 2:printf("\n ◆◆◆浏览学生信息◆◆◆\n");printf("\n");display();break;case 3:printf("\n ◆◆◆按总分排序◆◆◆\n");printf("\n");sort_total();break;case 4:printf("\n ◆◆◆查询学生信息◆◆◆\n");printf("\n");search();break;case 0:exit(0);break;default:break;}getchar();printf("\n");printf("是否继续运行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("请再次选择你需要操作的步骤(1--4):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void menu() /*菜单函数*/{printf(" **************欢迎进入学生信息管理系统**************\n");printf(" 1.录入学生信息\n");printf(" 2.浏览学生信息\n");printf(" 3.按总分排序\n");printf(" 4.查询学生信息\n");printf(" 0.退出\n");printf(" **********************谢谢使用**********************\n");printf("\n");printf("\n");}void input() /*输入学生信息并保存*/{int i;printf("请输入需要创建信息的学生人数(1--10):\n");scanf("%d",&m);for(i=0;i<m;i++){printf("请输入学号:");scanf("%s",st[i].num);printf("请输入姓名:");scanf("%s",st[i].name);printf("请输入佛学成绩:");scanf("%d",&st[i].fgrade);printf("请输入C语言成绩:");scanf("%d",&st[i].cgrade);printf("请输入英语成绩:");scanf("%d",&st[i].egrade);st[i].total=st[i].fgrade+st[i].cgrade+st[i].egrade;/*信息输入已经完成*/}save(m);return;/*返回主界面*/}void display()/*浏览学生信息*/{int i;int count=0;m=load();printf("\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");/*输出学生信息*/ for(i=0;i<m+count;i++){printf("\n%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egr ade,st[i].total);}}void sort_total() /*按总分排序*/{int i,j;struct student temp; /*声明结构体变量*/printf("\t学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");for(i=0;i<m;i++)/*对数据进行排序*/{for(j=i+1;j<m;j++)if(st[i].total<st[j].total){temp=st[i];st[i]= st[j];st[j]=temp;}printf("\n\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egrade ,st[i].total);}}void search() /*查询函数*/{int k; /*定义局部变量*/m=load();printf("\n按学号查询请按1,\t按姓名查询请按2\n");printf("\n请输入查询方式:");scanf("%d",&k);switch(k)/*查询方式的选择*/{case 1:search_num();break;/*按学号查询*/case 2:search_name();break;/*按姓名查询*/}printf("\nPress any key to enter menu......");getchar();return; /*返回主界面*/}void search_num()/*(1)按学号查找*/{int i;char temp[30];printf("\n 请输入要查找的学号:");scanf("%s",temp);for( i=0;i<m;i++){if(strcmp(temp,st[i].num)==0){printf("\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");printf("\n%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egr ade,st[i].total);}}}void search_name()/*(2)按姓名查找*/{int i;char temp[30];printf("\n 请输入要查找的姓名:");scanf("%s",temp);for( i=0;i<m;i++){if(strcmp(temp,st[i].name)==0){printf("\n学号\t姓名\t佛学成绩\tC语言成绩\t英语成绩\t总分\n");printf("\n%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n",st[i].num,st[i].name,st[i].fgrade,st[i].cgrade,st[i].egr ade,st[i].total);}}}int load() /*导入函数*/{FILE*fp;int n=0;if((fp=fopen("student_list","rb"))==NULL){printf("cannot open file\n");exit(0);}else{do{fread(&st[n],sizeof(struct student),1,fp);n++;}while(feof(fp)==0);}fclose(fp);return(n-1);}void save(int m)/*保存文件函数*/{int i;FILE*fp;if((fp=fopen("student_list","wb"))==NULL)/*创建文件并判断是否能打开*/ {printf("cannot open file\n");exit(0);}for(i=0;i<m;i++)/*将内存中学生的信息输出到磁盘文件中去*/if(fwrite(&st[i],sizeof(struct student),1,fp)!=1)printf("file write error\n");fclose(fp);}。