




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计报告计算机程序设计基础课程设计题 目 学生信息管理系统 学生姓名 胡乔楠 学 号 0909082109 指导教师 汤哲 学 院 信息科学与工程学院 专业班级 电气0821班 完成时间 七月四号 目录第一章 项目概述1.1 问题的要求分析与描述1.2 问题的要求和限制第二章 项目设计 2.1系统程序的组成框图 2.2 : 程序的流程图2.3 详细设计第三章 调试与结果3.1调试方法3.2 测试结果(见附录A、B)第四章 工作总结附录A、B;源代码;参考文献;第一章 项目概述1.1 问题的要求分析与描述我设计一个学生信息管理系统。首先学生的信息包括:学号、姓名、年龄、性别、出生年月、家庭地址、电话号码、电子邮件、毕业学校等等。这个管理系统需要实现以下功能:1.系统以菜单的方式工作;2.实现学生信息的录入功能,学生的信息保存在文件中;3.实现学生信息的输出功能,输出功能应包括如下算法: 3_1:单个学生按学号查询功能; 3_2:单个学生按姓名查询功能; 3_2:全部学生的浏览功能; 3_3:全部学生按学号排序浏览功能;4.实现学生信息的删除和修改;1.2 问题的要求和限制1:系统要美观,有欢迎界面;2:在输入信息时要有一定的容错能力,比如年龄输入为负数或者大于150就提示有错,要求重新输入; 第二章 项目设计2.1系统程序的组成框图如下:结束先输入学生的学号,系统查询持学生,如果没有此学生,则系统自动返回。如果由此学生细心,则打印学生信息,给用户选择要修改学生的信息,并修改;先输入学生的学号,系统查询持学生,如果没有此学生,则系统自动返回。如果由此学生细心,则打印学生信息,并提示用户删除。2:系统按学好的大小打印所有学生的信息。1:系统按时间先后打印所有学生的信息。只有在学生信息录入后才能查询学生信息。可以按单个学生学好来查询,也可以按单个学生姓名来查询。其中有浏览功能1:按时间先后来浏览。2:按学号大小来浏览。1:输入学生的学号、姓名、年龄、性别、出生年月、家庭地址、电话号码、电子邮件、毕业学校等等。并保存在名为INFORMATION.TXT的文本中。 欢迎界面0:退出系统; 1:学生注册;2:学生查询; 3:学生信息修改4:学生信息删除; 2.2 : 我设计的程序,其主要流程图如下:开始 输入 假Ch1=0 假Ch1=1 真 假Ch1=2真 学生注册 真 假Ch1=3 学生查询 真 是否继续是否继续表达式二 真 假Ch1=4学生删除是否继续 假 真 学生修改是否继续 假 真 假 真是否继续 假结束 2.3 详细设计系统在visual studio c+中运行,visual studio c+支持中文并且有强大输出功能。这样就能作出美观的界面,并且制作出详细的菜单。2.3.1 编译预处理命令在开头就调用了“stdio.h”和“string.h”函数,并且定义了一个结构体数组,数组中有一百个结构体。每个结构体中有长整型,整型,字符型数组,还有指针,为以后制定链表用。定义了一个全局变量“i”。此变量来记录学生的个数。2.3.2 main函数所有的函数都写在main函数中并给他调用。Main函数中首先定义了一些整型数据,ch1、ch2、j、长整型数据“number”,字符数组“name”,文件指针。接着“printf”函数打印出一个欢迎界面。用死循环进入一个选择菜单,用户输入选项来运行系统。用“scanf”函数来给ch1赋值。接着程序就进入一个多分支if语句中。通过判断,程序运行进入相应的功能区。Ch1=0就会跳出此模块,返回上一模块。Ch1=1时,函数进入学生信息录入功能,用户输入学生的信息。在输入信息时会有容错能力。比如输入性别不是男或女,就会提示输入错误,要求用户重新输入;使用“fwrite”函数,使学生的信息保存在C盘中名为“INFORMATION.txt”的文档中。ch1=2时,函数进入学生信息查询功能。用户根据菜单输入信息进入相应的子功能。用户可以更具菜单选择相应的功能。Ch3=0,系统就会返回上一个功能。Ch3=1,系统就会按学生学号来查询学生信息,用户输入学号。若学号正确,则系统输出相应的学生信息。若错误,系统就提示用户学号错误,请重新输入。Ch3=2,系统就会按学生姓名来查询学生信息,用户输入姓名。若姓名正确,则系统输出相应的学生信息。若错误,系统就提示用户姓名错误,请重新输入。Ch3=3,系统进入学生信息浏览功能,同样有一个菜单供用户选择,1为浏览所有学生的信息。用“for”循环把所有学生的信息从文本中用“fread”函数读出来,在把所有结构体成员一一打印出来。这时调用了一个“print(int l)”函数。在主函数中,把 “i”传给 “n”。2为按学号的顺序来浏览所有学生的信息,调用“paixu(int n)”函数。主函数把“i”的值传给“n”,实现学生的信息排序,并打印出来。同样,选择为0时就返回上一级菜单。若ch1=3,系统进入删除功能模块。此时调用了“deletes(int n)”,主函数把“i”的值传给“n”,实现学生信息的删除功能。若ch1=4,系统进入修改功能模块,此时调用了“changes()”,主函数实现学生信息的修改功能。(欢迎界面、开始菜单、容错能力、单个查询功能见附录A)2.3.3 print函数“print(int l)”函数中,从主函数接收变量“i”,并把其值赋给“l”。“print(int l)”函数用“struct students *p1”,定义了一个结构体指针。接着用“printf”函数打印各个结构体的成员,“p1-num”等来表示成员。2.3.4 paixu函数 “paixu(int n)” 从主函数接收变量“i”,并把其值赋给“n”。“paixu(int n)”中定义了两个整型数据,用来作为循环时的变量。以及两个结构体数组u100和v100,一个文件指针。函数先用for循环和“fread”函数把文件中的数据读出来并赋值给u100。接着对u100来进行冒泡排序,v100作为中间变量来实现排序。排完后,把u100中的数据用“printf”函数打印出来。2.3.5 deletes 函数 “deletes(int n)”从主函数接收变量“i”,并把其值赋给“n”。“deletes(int n)”中定义了三个整型变量“j”、“k”和“chioce”,一个长整型变量“number”,一个结构体数组“struct students u100”,一个文件指针。函数先判断有没有学生信息被录入,如果没有,系统则自动返回。如果有,则要求用户输入要删除学生的学号。用“scanf”函数给“number”赋值,并判断文本中是否有此学生的信息,如果此学生的信息不存在,则系统会提示用户学生不存在,并自动返回。如果学生信息存在,则系统将打印学生的全部信息,并再一次提示用户是否要删除此学生。当用户选择1时,系统删除此学生信息,选择否时,系统将自动返回,学生信息改变。2.3.6 changes函数 “changes()”函数没有形参,直接对文件中的结构体进行修改。“changes()”函数中定义了两个文件指针“fp1”和“fp2”,一个长整型数据“number”,三个整形数据“j”“flag”“choice”。 函数先判断有没有学生信息被录入,如果没有,系统则自动返回。如果有,则要求用户输入要修改学生的学号。“fp1”指向文本“INFORMATION.txt”,“fp2”在c盘中重新建立一个文本“change.txt”。用“fread”读出文本中的学生信息。用“scanf”函数给“number”赋值,并用“for”循环来判断文本中是否有此学生的信息,如果此学生的信息不存在,则系统会提示用户学生不存在,并自动返回。如果学生信息存在,则系统将调用“print(int n)”函数打印学生的全部信息,并给用户选择要修改的具体内容。用“switch”分支语句来判断并修改用户所指定的项。不管每个结构体是否修改,都会用“fwrite”函数把读出来的结构体写进“change.txt”中。For循环终止后,再把所有的结构体从“change.txt” 中写进空的“INFORMATION.txt”中。这样就能很好的完成修改了。(其中浏览、按学号排序浏览、学生删除、学生修改的具体的执行结果见附录B) 第三章 调试与结果 3.1调试方法:visual studio c+有很好的调试与查错功能,写好代码后首先按“build”键来查错。程序会把所有错误和警告显示出来,找到程序有错的地方,参考错误的原因,仔细查看程序改写代码,确认无误后,再按“build”键。若有错误就再看错误并改写原代码。若无误就再纠正下一个错误。很多错误就是这样一个一个慢慢地解决。 调试结果分析与讨论:开始写的代码是实现学生信息录入与单个查询功能,在查询结果时,发现毕业学校的信息被重复打印到了电子邮件里面。接着就查找打印是否有错,确认无误后,结果没有变。就查找程序开始的赋值是否有错,最终发现了错误,在“scanf(“%s”,&sj. graduateschool);”中误加了“&”这个符号。修改后,打印结果正确。对所有学生的信息按照学号的顺序来浏览功能中,要用到冒泡排序法,用两个“for”循环来完成,其中的变量有固定的形式要求。并且终止条件也很严格的要求。刚开始我用了错误的算法,后来通过问老师,得到正确的方法,再经过反复的推敲,实现了排序功能。在实现修改功能中,我找不到算法,从书上的找了一个算法,书写完后,发现程序直接跳出修改的选择信息模块。经检查后发现“getchar()”这个函数出了问题,最后修改了代码,删除“getchar()”函数。得到了正确结果。主要问题及解决方法1。在书写长代码时,要用到很多“”这样的符号,有时会漏掉这个符号,导致错误;所以书写时一定要非常细心,严格按照语法来写 2.“”花括号在某些地方有很多,在修改程序或者添加程序时会很麻烦,不知道应该在哪个地方添加,或者该删除哪个“”。所以,凡是有“”的都要用“/*文字*/”来标记,以后就不用一个个找原来语句了。3。在修改过程中修改了一个变量,却没有发现其他地方的相应程序也要修改,导致查出许多错误。4。我曾经用两个指针指向同一个文件,visual studio c+并不报错,但是我的排序和修改功能一直实现不了。最后问老师,才知道一个指针只能指向同一个文件。修改了指针及相应的程序后,我的功能实现了。5. 使用冒泡排序法时,结构体的个数控制得很严格,最终发现for循环多走了一步。把“n”减一就解决了问题。3.2 测试结果:输入了学生的信息后能正确打印。有时候在字符数组里面输入整型数据时,后面的“scanf”函数就不再正确执行。把整型数据改为字符型后,就能正确运行程序了。有时候排序功不正确,是在终止结果里面出了错误。所有的程序运行数据和结果都在附录A、B中。 第四章 工作总结 这次课程设计的任务原本要求是以十个人为一组一起合作完成,但是作为一个已经选了计算机科学与技术专业的学生,应该具备很强的编程能力。为了好好锻炼自己的编程能力,我毅然决定一个人独立完成此次课程设计。 刚开始我只知道要用文件来做这个课程设计,但是我的文件那块掌握得不好,就看老师给我们讲的文件的程序。先是复习,再去写程序。按照课程设计的要求,我先定义结构体,再把所有的知识都运用上去。前四天,我把学生信息录入功能、学生信息按学号当个查询功能做好了。在按学生姓名查询的时候,要用到“#include ”这个函数。并且字符串处理函数都忘了,接着就看书把“strcmp”这个函数的功能及用法掌握。最后完成了按学生姓名查询功能。看着自己完成的程序,心中很高兴。还拿了同学的信息来做实验。当时信心大增,想着用一个星期就能完成任务。没想到后面的程序是如此的困难。因为前四天我写的程序还不长,所用到的知识和算法都还相对简单。到了浏览学生信息的哪一个功能,我就几天都实现不了了。在这之前,我编写的程序都没有用模块化编写,一个主函数就包括了上述所有的功能。我就开始编写功能函数。把排序功能全写到一个“paixu(int n)”中。我到处查阅资料,向老师请教,问同学。终于搞清楚了算法。就是用冒泡排序法。我按照这个思路去做也没有得出正确结果。一连两三天,我都找不出错误的原因,反复修改也不行。编译环境也没有报错。在找老师查看我的源代码之后,发现我用了两个文件指针指向了同一个文件,书上没有这样讲过,但也没有说这样不对。我自认为是对的,却花了我这么多时间去改他。这次教训中,我深刻的体会到。要想运用一个新知识,必须的问问老师或者在行的人是否能用,不能擅作主张。我经快修改完程序,并且调试、查错。实现了排序的功能,我当时高兴的跳起来。这就是编程中的快乐。参考文献很重要。在做修改的功能时,我找不到算法。但在一本书中,我找到类似的算法,经过反复推敲。我决定引用其中的算法。编写的函数很长,并且那段代码必须经过修改才能在我的程序中实现修改功能。因为有参考,这个功能还是相对容易实现的。最后就是删除功能了,算法了解后,就直接开始编程。找到要删除的学生,接着把所有的结构体都后移一位。但是在循环体中,哪个变量因该是多少,会不会多了一1,或者少了一个1,这需要自己去耐心调试。总体来说,变成是很麻烦的。中途我就又放弃的念头,因为那是连程序的一般都没有完成,但是一个功能就花了我几个下午的时间,却没有一点进展。还好我没有放弃,毕竟大学里面的学习机会十分宝贵。四年也只有一次这样系统的C语言编程技巧的时间。这次独立完成,对以后的学习和编程也会有很大的帮助。自己感到惭愧的是,老师教C语言的时候没有把它学得很通。在写程序的时候经常有很多与发行的错误,还有在运用一些简单的语句时,忘记了其中的格式。语法中经常有笔误,都是平时训练少,对自己要求不严格的结果。还有参考文献,虚心向别人请教。很多问题,也许看看书,问问老师之后就会迎刃而解。读程序多了之后,就会对编程很有感觉,编程的速度会提高、质量会变高、思路也会越来越清晰。附录A:欢迎界面和开始菜单:输入信息时的容错能力:学生信息的录入功能:按学号来查询学生,以及选择菜单时的容错能力:按姓名来单个查询的功能:附录B:按时间顺寻来浏览所有学生的信息:按学号的大小来浏览所有学生的信息:对学生的姓名进行修改:紧接着修改学生的年龄修改完后,查询学生的信息是否被修改:查询结果删除学生信息的功能:查看是否已经被成功删除: 以下是源代码:#include #include void printstarts()printf(*n);struct students long num; char name15; int age; char sex4; char birthdate15; char address30; char phonenumber15; char email20; char graduateschool20; struct students *next; s100,*p; /*定一个有一百个成员的结构体数组*/int i=0; /*定义一个全局变量,记录被录入学生的个数*/void print(int l);void paixu(int n);void deletes(int n);void changes(); /*先定义所有的功能函数,供主函数中调用*/ void main() int ch1,ch2,ch3,ch4,ch5,ch6,ch7,flag1=0; int flag2=0,j,choice=1; int ch0=0; long number; char name20; FILE *fp;printf(nnnnnn);printf(ttn); printf(tt 欢迎进入学生信息管理系统 n);printf(tt-n);printf(tt 胡乔楠 n);printf(tt-n);printf(tt 2009年7月3日 n);printf(ttn); /*美观的欢迎界面*/ printf(nnnn); while(1) printf(n); printf(n); printf(n); printf(tt 学生信息管理系统n); printf(tt = n); printf(tt 1.添加学生信息n); printf(tt 2.查询学生信息n); printf(tt 3.删除学生信息n); printf(tt 4.修改学生信息n); printf(tt 0.退出系统n); printf(n); printf(nnt 请按键选择功能(04):); scanf(%d,&ch1); if(ch1=0)break; else if(ch1=1) while(choice=1) fp=fopen(c:INFORMATION.txt,a+); printf(请输入学号:);scanf(%ld,&si.num); printf(请输入姓名:);scanf(%s,); printf(请输入年龄:);scanf(%d,&si.age); /*加入容错能力*/ if(si.age=150)printf(输入错误,请重新输入n); break; printf(请输入性别(男/女):); scanf(%s,si.sex); if(strcmp(si.sex,男)!=0&strcmp(si.sex,女)!=0) printf(输入错误,请重新输入n); break; printf(请输入出生日期:);scanf(%s,si.birthdate); printf(请输入家庭地址:);scanf(%s,si.address); printf(请输入电话号码:);scanf(%s,si.phonenumber); printf(请输入电子邮件:);scanf(%s,si.email); printf(请输入毕业学校:);scanf(%s,si.graduateschool); fwrite(&si,sizeof(struct students),1,fp); fclose(fp); printf(tt 添加成功!n); i+; /*输入一个学生就加一次*/ printf(n); printf(tt 是否再添加?n); printf(tt 1:添加n); printf(tt 0:不添加n); scanf(%d,&choice); if(choice=0)break; else if(choice=1)continue; else choice=2; printf(选择错误!系统自动返回n); break; /*ch1=1*/ else if(ch1=2)/*check*/ while(1) /*此处是查询功能的菜单*/ printf(tt 1.按单个学号来查询n); printf(tt 2.按学生姓名来查询n); printf(tt 3.查询所有学生信息n); printf(tt 0.返回上一级菜单n);scanf(%d,&ch2); if(ch2=0) break; else if(ch2=1) while(1) printf(tt 1.继续服务n); printf(tt 0.返回上一级菜单n); printf(nnt 请按键选择:); scanf(%d,&ch3); if(ch3=0)break; else if(ch3=1) fp=fopen(c:INFORMATION.txt,r); /*用学号来查*/ printf(请输入学号:);scanf(%ld,&number); for(j=0;ji;j+) fread(&sj,sizeof(struct students),1,fp);if(sj.num=number) flag1=1;print(j);fclose(fp);if(flag1=0)printf(号码不存在!n);break;/*if*/ /*for*/ /*ch3=1*/ elseprintf(选择错误!系统自动返回n);/*while(1)*/*ch2=1*/ else if(ch2=2)/*ch4*/ while(1) printf(tt 1.继续服务n); printf(tt 0.返回上一级菜单n); printf(nnt 请按键选择:); scanf(%d,&ch4);if(ch4=0)break;else if(ch4=1) printf(请输入名字:); /*用学生姓名来查询*/scanf(%s,name);fp=fopen(c:INFORMATION.txt,r); for(j=0;j=i;j+) fread(&sj,sizeof(struct students),1,fp); if(strcmp(name,)=0) flag2=1; printf(查询成功!n);print(j); fclose(fp); if(flag2=0)printf(名字不存在!);break;/*if*/ /*for*/ /*ch4=1*/ elseprintf(选择错误!系统自动返回n); /*3while(1)*/ /*ch2=2*/ else if(ch2=3) while(1) printf(tt 1.按时间循序来查询所有学生信息n); printf(tt 2.按学号来查询所有学生信息n); printf(tt 0.返回上一级菜单n); printf(nnt 请按键选择:); scanf(%d,&ch5);/*ch5*/if(ch5=0)break;else if(ch5=1)for(j=0;jnum,p1-name,p1-age,p1-sex,p1-birthdate,p1-address,p1-phonenumber,p1- email,p1-graduateschool);void deletes(int n) /*此处为删除函数*/ int j,k; int choice=0; long number; struct students u100; FILE *fp1; if(fp1=fopen(c:INFORMATION.txt,r)=NULL) printf(没有学生被记录,按任意键返回); getchar(); return; fp1=fopen(c:INFORMATION.txt,r); /*先赋值给uk,再拿uk进行比较*/ for(k=0;kn;k+) fread(&sk,sizeof(struct students),1,fp1); uk.num=sk.num; strcpy(,); uk.age=sk.age; strcpy(uk.sex,sk.sex); strcpy(uk.birthdate,sk.birthdate); strcpy(uk.address,sk.address); strcpy(uk.phonenumber,sk.phonenumber); strcpy(uk.email,sk.email); strcpy(uk.graduateschool,sk.graduateschool); fclose(fp1); printf(输入学号:); scanf(%ld,&number); for(k=0;kn;k+) if(uk.num=number) printf(要删除的学生信息如下n); printf(第%d 个是: 学号:%ldn姓名:%sn年龄:%dn性别:%sn出生日期:%sn家庭地址:%sn电话号码:%sn电子邮件:%sn毕业学校:%snn, k ,uk.num,,uk.age,uk.sex,uk.birthdate,uk.address,uk.phonenumber,uk.email,uk.graduateschool); printf(是否要删除?n1:是tt2:否n); scanf(%d,&choice); break; if (choice=0) /*判断是否存在*/ printf(选择错误!系统自动返回n); return; else if(choice=2) return; else if(choice=1) if(k!=n-1) for(j=k;jn-1;j+) uj.num=uj+1.num; strcpy(,uj+1.name); uj.age=uj+1.age; strcpy(uj.sex,uj+1.sex); strcpy(uj.birthdate,uj+1.birthdate); strcpy(uj.address,uj+1.address); strcpy(uj.phonenumber,uj+1.phonenumber); strcpy(uj.email,uj+1.email); strcpy(uj.graduateschool,uj+1.graduateschool); i-; /*学生删除,个数减少一个*/ else i-; fp1=fopen(c:INFORMATION.txt,r); if(j!=n-1)for(j=0;jn-1;j+) fread(&sj,sizeof(struct students),1,fp1); /*删除完后,在赋值给sk*/ sj.num=uj.num; strcpy(,); sj.age=uj.age; strcpy(sj.sex,uj.sex); strcpy(sj.birthdate,uj.birthdate); strcpy(sj.address,uj.address); strcpy(sj.phonenumber,uj.phonenumber); strcpy(sj.email,uj.email); strcpy(sj.graduateschool,uj.graduateschool);/*for*/ fclose(fp1);/*if*/ elsefread(&sj,sizeof(struct students),1,fp1); sj.num=uj.num; strcpy(,); sj.age=uj.age; strcpy(sj.sex,uj.sex); strcpy(sj.birthdate,uj.birthdate); strcpy(sj.address,uj.address); strcpy(sj.phonenumber,uj.phonenumber); strcpy(sj.email,uj.email); strcpy(sj.graduateschool,uj.graduateschool); fclose(fp1); else printf(选择错误!系统自动返回n); void paixu(int n) /*此为排序函数*/ int j,k;struct students u100,v100; FILE *fp1; fp1=fopen(c:INFORMATION.txt,r); for(k=0;kn;k+) /*先赋值给uk*/ fread(&sk,sizeof(struct students),1,fp1); uk.num=sk.num; strcpy(,); uk.age=sk.age; strcpy(uk.sex,sk.sex); strcpy(uk.birthdate,sk.birthdate); strcpy(uk.address,sk.address); strcpy(uk.phonenumber,sk.phonenumber); strcpy(uk.email,sk.email); strcpy(uk.graduateschool,sk.graduateschool); fclose(fp1); for(j=0;jn-1;j+) /*用uk进行冒泡排序,vk为中间变量*/for(k=0;kuk+1.num) vk.num=uk.num;uk.num=uk+1.num;uk+1.num=vk.num; strcpy(,);strcpy(,uk+1.name);strcpy(uk+1.name,); vk.age=uk.age;uk.age=uk+1.age;uk+1.age=vk.age; strcpy(vk.sex,uk.sex);strcpy(uk.sex,uk+1.sex);s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业管道的自动化焊接技术优化
- 工业自动化技术发展与应用研究
- 工业设计与可持续发展战略
- 工作场所运动和身体健康关系的探究及实践建议
- 工业节能的技术改造
- 工作效率提升的智能穿戴设备研究
- 工作效率提高的饮食和运动建议
- 工厂企业消防安全实务
- 工程机械设备维修与管理研究
- 工程勘查质量与安全管理手册
- GB/T 20698-200656%2甲4氯钠可溶粉剂
- 行政事业单位经济业务不相容岗位相分离控制制度模板
- GB 29837-2013火灾探测报警产品的维修保养与报废
- 统计学原理试题与答案
- (妇产科学)第十八章 女性生殖系统炎症课件
- 立式加工中心的基本操作专题培训课件
- 一例慢阻肺病人护理个案
- 建平中学自招真题解析
- 阿克苏地区生态环境准入清单
- 产品创新设计与实践完整版课件全套ppt教学教程电子教案讲义最全(最新)
- 汉字起源和发展
评论
0/150
提交评论