




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生成绩管理系统一、 设计目的1、掌握对结构体、指针、文件的操作和C语言算法的应用。2、用程序实现文件记录的添加、修改、删除、排序(包括对文件记录按某个数据项排序)、查询、插入,或动态链表的建立、查找、修改、删除、插入、输出、排序,或结构体数组的输入、修改、删除、插入、输出。二、 设计过程1. 需求分析1)、系统界面需求进入系统时应当出现人性化、个性化、随性化的字符界面或图形界面,提供菜单选项,选择执行相应的功能,输入输出数据或操作成功时要有相应提示信息,此外还要提供帮助信息,如系统的功能介绍等,提供系统信息或程序信息,如作者、联系方式等。2)、系统功能需求对设计题目进行分析,可知系统主要功能可以有下面几种,而且各种功能互相组合,形成或构成新的功能。、输入功能。第一次可通过在内存中新建或创建动态链表输入学生的成绩记录和其他数据记录,且随时可以退出输入,既可在退出时可自动保存或提示保存或输入完毕后返回主菜单选择“保存文件”命令进行手动保存到硬盘,也可以在输入过程中自动保存。如果以前已经建立过动态链表且已经保存到文件中,可先载入文件(相当于打开文件、读取文件),再插入新的记录到动态链表。、插入功能。插入或添加一个学生的成绩记录到已有的动态链表中,比如载入文件后的动态链表或刚刚新建的动态链表。、查看功能。直接输出未排序或已按某数据项排序(如按总成绩从高到低排序)的动态链表中所有学生的记录到屏幕上显示。、查找功能。查找的目的可能是查看数据、修改数据或删除数据。查找的方式有精确查找和模糊查找两种。精确查找,指根据学号、姓名或其他数据项在动态链表中查找并显示一个学生的成绩记录。模糊查找,指根据学号、姓名或其他数据项的逻辑组合条件在动态链表中查找并显示符合条件的学生的成绩记录。查找的结果可以返回地址(指针)用于查看、修改或删除数据。、修改功能。根据学号、姓名或其他数据项在动态链表中查找并修改一个学生的成绩记录。、删除功能。根据学号、姓名或其他数据项在动态链表中查找并删除一个学生的成绩记录。、保存文件。将新建的或修改的动态链表的所有数据写入(或存入、存到)二进制文件中。、载入文件。相当于打开文件并读取文件中所有学生的数据(包括班级、学号、姓名、成绩等)到动态链表。、帮助功能。显示帮助信息和系统信息。、退出功能。退出系统或退出程序,可增加一个退出函数,在退出时可显示系统信息或程序信息。此外还有排序功能、统计功能和加密功能。排序功能,指可按成绩、学号或姓名排序,而成绩排序又可按单科成绩或总成绩排序。统计功能,指统计及格人数和优秀人数。加密功能,指登录系统要使用密码验证,防止别人偷窥或篡改数据。2. 概要设计在需求分析的基础上,确定系统总体框架(即系统功能结构图、系统模块结构图)。系统各个功能的详细解释。1.Create a new list of students data创建链表。输入学生的成绩和其他信息,并且自动计算总成绩和平均成绩2.Insert a student data插入记录。在动态链表中插入一个学生的成绩记录。3.Output all students data显示记录。自动按总成绩从高到低排序后显示动态链表中所有学生的成绩记录。4.Search a student data查找记录。根据学号在动态链表中查找并显示一个学生的成绩记录。5.Modify a student data修改记录。根据学号在动态链表中查找并修改一个学生的成绩记录。6.Delete a student data删除记录。根据学号在动态链表中查找并删除一个学生的成绩记录。7.Save File 保存数据。将动态链表的所有数据写入(或存入、存到)二进制文件中。8.Load File读取数据。读取文件中所有学生的数据(包括班级、学号、姓名、成绩等)到动态链表。9.Help 帮助。显示帮助信息和系统信息。0.Exit 退出。如菜单返回值为0程序结束。3. 详细设计1)、数据结构设计系统使用了结构体类型存储学生的成绩记录和其他记录。#define NUM 9 /*定义课程的数目*/struct student /* 学生的数据结构 */ char class_020; /班级int num; /学号char name20; /姓名float scoreNUM; /成绩float total; /总分float ave; /平均分struct student *next; int order; /排名stu;2)、算法结构设计系统使用了以下函数来实现系统各个模块的功能。函数名称函数功能struct student *create(void)创建链表,完成数据录入功能 void TotalScore(struct student *head) 计算每个学生的总成绩和平均成绩void IntSwap(int *pt1, int *pt2) 交换两个整型数void FloatSwap(float *pt1, float *pt2) 交换两个实型数void CharSwap(char *pt1, char *pt2) 交换两个字符串void SortScore(struct student *head) 对学生成绩排序并确定名次struct student *InsertStudent(struct student *head) 按学号插入一个结点数据void PrintScore(struct student *head) 显示所有已经建立好的节点的节点号和该节点中数据项内容void SearchStudent(struct student *head) 按学号查找并显示一个结点数据void ModifyStudent(struct student *head) 按学号查找并修改一个结点数据struct student *DeleteStudent(struct student *head) 按学号查找并删除一个结点数据void SaveFile(struct student *head) 保存数据到文件模块struct student *LoadFile(void) 加载存储在外部介质的文件到内存或导入信息模块void help()显示帮助信息和系统信息*/void PassWord()登录密码验证int menu_select(void)显示菜单并获得用户键盘输入的选项*void main()程序从主函数开始执行系统主要功能的实现过程和方法。创建链表。在界面状态下,输入1后调用struct student *create(void) 函数创建动态链表,即提示输入初始的学生信息,其中包括学生的学号、班级、姓名、和高等数学、C程序设计、大学英语、马克思、大学体育的成绩,若学号为0退出返回主菜单。学号是整型,长度要求10位而且必须是数字,班级和姓名是字符数组型而且长度为20,成绩是浮点型(输出成绩时可只输出1位小数或2位小数)。都输入完成后,系统调用void TotalScore(struct student *head) 函数计算每个学生的总成绩和平均成绩,还可以调用void SaveFile(struct student *head) 函数对指定的文件进行写操作,把输入到动态链表的所有学生信息保存到文件中。在输入记录过程中若学号输入0则返回主菜单。插入记录。在界面状态下,输入2后调用struct student *InsertStudent(struct student *head) 函数在动态链表中插入一个学生的成绩记录,并且链表结点数加1。在插入记录过程中若学号输入0则返回主菜单。显示记录。在界面状态下,输入3后先调用void SortScore(struct student *head) 函数对学生成绩排序并确定名次,而这个函数运用冒泡法进行排序,若后一结点的总成绩比前一结点的高,则调用void IntSwap(int *pt1, int *pt2) 函数交换两个整型数如学号,调用void FloatSwap(float *pt1, float *pt2) 函数交换两个实型数如成绩,调用void CharSwap(char *pt1, char *pt2) 函数交换两个字符串如班级和姓名,交换两个字符串要用到strcmp,strcpy函数,排序完毕后再调用void PrintScore(struct student *head) 函数显示所有已经建立好的节点的节点号和该节点中数据项内容,即按总成绩从高到低排序后显示动态链表中所有学生的成绩记录。输出所有记录到屏幕上显示后自动则返回主菜单。查找记录。在界面状态下,输入4后调用void SearchStudent(struct student *head)函数,即先用一个struct student类型的指针变量接收输入的学号,再与动态链表中各结点的学号一一比较,如果没有则返回失败信息,如果找到就将输出此学生全部信息到屏幕上显示出来。在查找记录过程中若学号输入0则提示找不到并返回主菜单。修改记录。在界面状态下,输入5后调用void ModifyStudent(struct student *head) 函数,即先用一个变量接受输入的学号,再与动态链表中各结点的学号一一比较,如果没有则返回失败信息,如果找到就将提示输入新的数据。在修改记录过程中若学号输入0则提示找不到并返回主菜单。删除记录。在界面状态下,输入6后调用struct student *DeleteStudent(struct student *head) 函数,即先用一个变量接收输入的学号,再与动态链表中各结点的学号一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,并且链表结点数减1。在删除记录过程中若学号输入0则提示找不到并返回主菜单。保存数据。在界面状态下,输入7后调用void SaveFile(struct student *head) 函数,先用一个文件(FILE)类型结构体的指针变量fp接收fopen(文件名,文件使用方式)函数的返回值(地址值),若打开操作失败,其返回值为NULL(即地址值为0,是一个无效的指向)。若打开操作成功,返回值为指向被打开文件的文件信息区(结构体变量)的起始地址,该返回值要立即赋值给文件类型指针变量(例:/FILE *fp)保存起来,否则fopen函数返回值的丢失会导致无法对被打开的文件进行操作。然后用fwrite(p,LEN,1,fp)函数写入一条数据直到全部保存完毕,即移动指针指向链表尾。最后使用fclose(fp)函数关闭文件。读取数据。在界面状态下,输入8后调用struct student *LoadFile(void) 加载存储在外部介质的文件到内存或导入信息模块读取文件中所有学生的数据(包括班级、学号、姓名、成绩等)到动态链表。帮助。在界面状态下,输入8后调用void help()函数,利用函数输出帮助信息和系统信息。 退出。可用一个函数exit(0)来实现,可首先提示将信息保存到文件中,释放动态创建的内存空间,再退出此程序。统计功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。以及统计及格和优秀人数,判断成绩大于等于60分的为及格,并统计人数,判断成绩大于等于80分的为优秀,并统计人数,最后显示在屏幕上。4. 代码设计新增登录密码验证,将“char password7=123456; /*定义初始密码*/”放在源代码文件的开头,将新定义函数void PassWord() 放到主函数void main()前,再在主函数中“printfn*n); /*操作界面*/”前插入“PassWord();”语句调用这个函数。/ Note:Your choice is C+ IDE/*#include iostream.h*/#include #include #include #include /*#define NULL 0*/ /*空地址*/#define LEN sizeof(struct student) /*结点的长度*/#define NUM 5 /*定义课程的数目*/char password7=123456; /*定义初始密码*/ /*高等数学 C程序设计 大学英语 马克思 大学体育*/ char subjectNUM10=math,c_prog,english,polity,sport; struct student /*声明struct student类型*/ char class_020; /*班级*/int num; /*学号*/char name20; /*姓名*/float score5; /*成绩*/float total; /*总分*/float ave; /*平均分*/struct student *next; int order; /*排名*/stu; /*定义struct student类型的变量stu*/int n,i; /*n为全局变量,统计链表的结点数*/ /*函数功能:创建链表,完成数据录入功能*/ struct student *create(void) /*函数返回值为指向struct student类型数据的地址*/ struct student *p1,*p2,*head; /*定义struct student类型的指针变量p1,p2,head*,*p1指向某一结点,p2指向p1的前一结点*/n=0; head=NULL; /*头指针head为空地址,无效指向*/p1=p2=(struct student *)malloc(LEN); /*新开辟长度为LEN的内存区并强制指针类型为struct student*/printf(1.creat a linked list to student data.n); printf(2.number:int type, class: char type20,name: char type 20, score:float type.n); printf(3.input number of student,if number is 0,stop inputing.n); printf(number:); scanf(%d,&p1-num); while(p1-num!=0) /*若为0则退出输入*/ printf(class:); scanf(%s,p1-class_0); printf(name:); scanf(%s,p1-name); printf(input math,c_prog,english,polity,sport score.n); for(i=0;iscorei); printf(*success*n); n=n+1; if(n=1) /*n=1或head=NULL*/head=p1; /*第一个结点的生成*/ else p2-next=p1; /*把新结点的地址放到当前链表的尾结点即上一节点后面*/p2=p1; /*p2保存p1原本指向的地址,使p2指向p1原来指向的节点*/ p1=(struct student *)malloc(LEN); /*p1指向新申请到的节点*/ printf(input number of student,if number is 0,stop inputing.n); printf(number:); scanf(%d,&p1-num); p2-next=NULL; /*第一个结点未生成,则分配域首字节的地址(指针)为空地址*/ return(head); /*返回链表的头地址*/ /*函数功能:计算每个学生的总成绩和平均成绩*/ void TotalScore(struct student *head) struct student *p1; p1=head; /*p1指向表头*/while (p1!= NULL) /*若不是表尾,则循环*/ p1-total=0; for (i=0;itotal+=p1-scorei; p1-ave=p1-total/ NUM; p1=p1-next; /*让p指向下一个节点*/ /*函数功能:交换两个整型数*/ void IntSwap(int *pt1, int *pt2) int temp; temp = *pt1; *pt1 = *pt2; *pt2 = temp; /*函数功能:交换两个实型数*/ void FloatSwap(float *pt1, float *pt2) float temp; temp = *pt1; *pt1 = *pt2; *pt2 = temp; /*函数功能:交换两个字符串*/ void CharSwap(char *pt1, char *pt2) char temp15; strcpy(temp, pt1); strcpy(pt1, pt2); strcpy(pt2, temp); /*函数功能:对学生成绩排序并确定名次*/ void SortScore(struct student *head) struct student *pt; int flag=0,a=0; /*flag是有没有发生过交换的标志*/ if(head=NULL) printf(nlist null!n); goto end; do flag=0; pt=head; /*若后一个节点的总成绩比前一个节点的总成绩高,则交换两个节点中的数据 注意只交换节点数据,而节点顺序不变,即节点next指针内容不进行交换*/ while(pt-next!=NULL) if (pt-next-totalpt-total) CharSwap(pt-class_0, pt-next-class_0); IntSwap(&pt-num, &pt-next-num); CharSwap(pt-name, pt-next-name); for (i=0; iscorei, &pt-next-scorei); FloatSwap(&pt-total, &pt-next-total); FloatSwap(&pt-ave, &pt-next-ave); flag=1; pt=pt-next; while(flag); /*如果flag为0,说明第一轮没有发生过交换,每一个结点的总分都比后一结点都大,退出*/ pt=head; while(pt!=NULL) a+; pt-order=a; pt=pt-next; end: printf(); /*函数功能:按学号插入一个结点数据*/ struct student *InsertStudent(struct student *head) struct student *p1,*p2,*info,*k; /*p1指向插入位置,p2是其前一结点,info指新插入记录*/ int n=0; printf(input a new record,if number is 0,exit insert.n); info=(struct student *)malloc(LEN); /*申请空间*/ if(!info) printf(nout of memory! ); /*如没有申请到,内存溢出*/ return NULL; /*返回空指针*/ printf(number:); scanf(%d,&info-num); while(info-num!=0) /*若为0则退出输入*/printf(class:); scanf(%s,info-class_0); printf(name:); scanf(%s,info-name); printf(input math,c_prog,english,polity,sport score.n); for(i=0;iscorei); TotalScore(info); info-next=NULL; /*设后继指针为空*/ p1=p2=head; /*将指针赋值给p1,p2*/ if(head=NULL)/*链表为空*/ head=info; info-next=NULL; else while(info-totaltotal)&(p1-next!=NULL) p2=p1; /*使p2指向p1刚才的结点*/ p1=p1-next; /*使p1后移一个结点*/ if(info-total=p1-total) if(head=p1) head=info; /*info作为头指针*/ info-next=p1; /*p1作为info的后继指针*/ else p2-next=info; /*p2的后继指针是info*/ info-next=p1; /*info的后继指针是p1*/ else p1-next=info; info-next=NULL; /*p1的后继指针是info,info的后继指针是空*/ k=head; while(k!=NULL) /*重新赋予排序号(排序号因为被插入新数据而改变)*/ n+; k-order=n; k=k-next; printf(nhave inserted the student!n); printf(number:); scanf(%d,&info-num); return(head); /*返回头指针*/ /*函数的功能:显示所有已经建立好的节点的节点号和该节点中数据项内容*/ void PrintScore(struct student *head) struct student *p=head; /*p指向表头*/ if(head=NULL) goto end; printf(f*All students achievement statistics and rank*n);while (p!=NULL) /*若不是表尾,则循环打印*/ printf(n class:%-20s num:%-7d name:%-20sn, p-class_0, p-num,p-name); printf(n math | c_prog | english | polity | sport n); for(i=0;iscorei); printf(n total:%-7.2f ave:%-7.2f order:%dn, p-total, p-ave,p-order); printf(n); p=p-next; /*让p指向下一个结点*/ printf(*%d students*n,n);end: printf(); /*函数功能:按学号查找并显示一个结点数据*/ void SearchStudent(struct student *head) struct student *p=head; int b; /*存放学号的变量*/ printf(inuput the sdudent number you want to find:); scanf(%d,&b); /*输入学号*/ if(head=NULL) printf(nlist null!n); goto end; while(p!=NULL)/*当记录的指针不为空时*/ if(p-num=b)/*显示找到的记录信息*/ printf(f*The student data search*n); printf(n class:%-20s num:%-7d name:%-20sn, p-class_0, p-num,p-name); printf(n math | c_prog | english | polity | sport n); for(i=0;iscorei); printf(n total:%-7.2f ave:%-7.2f order:%dn, p-total, p-ave,p-order); printf(*end*n); break; else p=p-next; /*移动指针,指向下一结点,继续查找*/ if(p=NULL) /*指针为空,说明未能找到所要的结点*/ printf(can not find the sdudent number %d !n,b); end: printf(); /*函数功能:按学号查找并修改一个结点数据*/ void ModifyStudent(struct student *head) struct student *p=head; int number; /*存放学号的变量*/ printf(inuput the sdudent number you want to modify,if number is 0,exit modify.n); printf(number:); scanf(%d,&number); if(head=NULL) printf(nList null!n); goto end; while(p!=NULL)/*当记录的指针不为空时*/ if(p-num=number) printf(inuput new data of the student.n); printf(number:); scanf(%d,&p-num); printf(class:); scanf(%s,p-class_0); printf(name:); scanf(%s,p-name); printf(input math,c_prog,english,polity,sport score.n); for(i=0;iscorei); TotalScore(p); printf(inuput the sdudent number you want to modify,if number is 0,exit modify.n); printf(number:); scanf(%d,&number); else p=p-next; /*移动指针,指向下一结点,继续查找*/ if(p=NULL) /*指针为空,说明未能找到所要的结点*/ printf(can not find the number %d!n,number); end: printf(); /*函数功能:按学号查找并删除一个结点数据*/ struct student *DeleteStudent(struct student *head) struct student *p1,*p2; int number; printf(please input the number you want to deleted:); scanf(%d,&number); if(head=NULL) /*没有数据的空链表*/ printf(nlist null!n); p1=head; /*优先级从高到低- != &*/while(number!=p1-num&p1-next!=NULL) /*p1指向的不是所要找的结点,并且后面还有结点*/ p2=p1; p1=p1-next; /*p1向后移一个结点*/ if(number=p1-num) if(p1=head) head=p1-next; /*若p1指向的是首结点,把第二个结点地址赋给head*/ else p2-next=p1-next; /*否则将下一结点地址付给前一结点地址*/ printf(number %d student have been deleted!n,number); n=n-1; else printf(can not find number %d student.n,number);/*找不到该结点*/ return(head); /*文件(FILE)类型指针调用一个文件,需要以下信息:1文件当前的读写位置。2与文件对应的内存缓冲区的地址。3文件操作方式。而这些信息是存放在缓冲文件系统为每一个文件开辟的“文件信息/区”内(为一个结构体变量),对FILE的定义是在stdio.h头文件中,由系统事先指定的。其结构如下:typedef strut short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer; unsigned ar *curp; unsigned istemp; short token; FILE ; */*函数功能:保存数据到文件模块*/ void SaveFile(struct student *head) FILE *fp; /*定义指向文件的指针*/ struct student *p; /* 定义移动指针*/ char outfile20; /*保存输出文件名*/ printf(enter outfile name,it can be any file name suffix or no suffix namesn);printf(for example D:f1score.txt or just a name:n);scanf(%s,outfile); /*fopen(文件名,文件使用方式);wb(只写)为输出打开一个二进制文件执行fopen函数有一个返回值(地址值)打开操作成功,为指向被打开文件的文件信息区(结构体变量)的起始地址。该返回值要立即赋值给文件类型指针变量(例:FILE *fp)保存起来,否则fopen函数返回值的丢失会导致无法对被/打开的文件进行操作。打开操作失败,其返回值为NULL(即地址值为0,是一个无效的指/向)。即通过fopen函数按指定的文件操作方式(wb(只写)打开指定的文件(outfile)。并将文件信息区(结构体变量)的起始地址赋值给文件指针变量fp。若打开操作失败,则fp的值为NULL,此时输出“不能打开该文件”的提示信息, */if(fp=fopen(outfile,wb)=NULL) /*为输出打开一个二进制文件,如没有则建立*/ printf(can not open file!n); return; printf(nsaving file.n); /*打开文件,提示正在保存*/ p=head; /*移动指针从头指针开始*/ while(p!=NULL) /*如p不为空*/ fwrite(p,LEN,1,fp); /*写入一条数据*/ p=p-next; /*指针后移*/ fclose(fp); /*关闭文件*/ printf(save success!n); /*显示保存成功*/ /*函数功能:加载存储在外部介质的文件到内存或导入信息模块*/ struct student *LoadFile(void) struct student *p,*q,*h=NULL; /*定义记录指针变量*/ FILE *fp; /* 定义指向文件的指针*/ char infile20; /*保存文件名*/ printf(enter outfile name,it can be any file name suffix or no suffix namesn);printf(for example D:f1score.txt or just a name:n);scanf(%s,infile); /*输入文件名*/ if(fp=fopen(infile,rb)=NULL) /*打开一个二进制文件,为读方式*/ printf(can not open file!n); /*如不能打开,返回头指针*/ return h; printf(nloading file.n); p=(struct student *)malloc(LEN); /*申请空间*/ if(!p) printf(out of memory!n); /*如没有申请到,则内存溢出*/ return h; /*返回空头指针*/ h=p; /*申请到空间,将其作为头指针*/ while(!feof(fp) /*循环读数据直到文件尾结束*/ if(1!=fread(p,LEN,1,fp) break; /*如果没读到数据,跳出循环*/ p-next=(struct student *)malloc(LEN); /*为下一个结点申请空间*/ if(!p-next) printf(out of memory!n); /*如没有申请到,则内存溢出*/ return h; q=p; /*保存当前结点的指针,作为下一结点的前驱*/ p=p-next; /*指针后移,新读入数据链到当前表尾*/ q-next=NULL; /*最后一个结点的后继指针为空*/ fclose(fp); /*关闭文件*/ printf(load success!n); return h; /*返回头指针*/ /*函数功能:显示帮助信息和系统信息*/ void help()int digit; /*由于窗口面积有限,一次只能看到几条帮助信息,故输入1只能查看功能1.2.3的帮助信息*/ printf(input 1 and look help information of Function 1.2.3.n); printf(input 2 and look help information of Function 4.5.6.n); printf(input 3 and look help information of Function 7.8.9.0.n); scanf(%d, &digit); printf(*Help*nn); switch(digit) case 1:printf(1.Create a new list of students data n); printf(Input on academic performance and other information, and n);printf(automatically calculate a total score and grade point averagenn); printf(2.Insert a student data n); printf(Insert a record of student performance to the dynamic linked list.nn);printf(3.Output all students data n); printf(Sort highest to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版三年级上册第六单元6.3《进一步认识分数》课时练(含答案)
- 数词及其在各种题型中的运用解析教案
- 坟墓81号700字7篇范文
- 早产婴儿养育知识培训课件
- 磐安中考数学试卷
- 南通如皋高二数学试卷
- 房地产交易协议注意事项
- 健身中心促销活动策划方案
- 平顶山3模数学试卷
- 2024年山东金谷集团招聘高校毕业生考试真题
- 原发性系统性淀粉样变性的护理措施课件
- 《阿房宫赋》课件 统编版高中语文必修下册
- DB54T 0498.3-2025 生态系统碳汇计量与监测体系建设技术规范 第3部分:湿地碳汇计量与监测方法
- 桥小脑角肿瘤护理查房
- 2025小学教师招聘考试试题及答案
- 2025年纪律作风测试题及答案
- 温室气体 产品碳足迹量化方法与要求 光缆
- 2025江苏苏州昆山国创投资集团有限公司第一期招聘17人笔试参考题库附带答案详解版
- 2025年建筑师考试答案-建筑师考试答案解析
- 新疆的历史文化课件
- 入场安全教育培训
评论
0/150
提交评论