![[工学]C语言实训报告手机通讯录.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-2/26/21ca4eea-f49f-487e-be88-6aa86701cdbd/21ca4eea-f49f-487e-be88-6aa86701cdbd1.gif)
![[工学]C语言实训报告手机通讯录.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-2/26/21ca4eea-f49f-487e-be88-6aa86701cdbd/21ca4eea-f49f-487e-be88-6aa86701cdbd2.gif)
![[工学]C语言实训报告手机通讯录.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-2/26/21ca4eea-f49f-487e-be88-6aa86701cdbd/21ca4eea-f49f-487e-be88-6aa86701cdbd3.gif)
![[工学]C语言实训报告手机通讯录.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-2/26/21ca4eea-f49f-487e-be88-6aa86701cdbd/21ca4eea-f49f-487e-be88-6aa86701cdbd4.gif)
![[工学]C语言实训报告手机通讯录.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-2/26/21ca4eea-f49f-487e-be88-6aa86701cdbd/21ca4eea-f49f-487e-be88-6aa86701cdbd5.gif)
已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通讯录管理系统通讯录1、问题的定义根据需求,该系统所应包含的信息有以下一些:通讯录的基本信息:姓名、手机号码、电话、及家庭住址。根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:通讯录基本信息录入。各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。例如修改通讯录中张三的电话信息各种基本数据的删除。例如将“张三”的信息从通讯录中删除基于各种数据的查询。例如输入“张三”姓名,查询张三的手机号码、电话和地址。显示全部记录功能。可以查看通讯录中的全部记录。模糊查找功能。例如输入“张”,则分条显示全部姓“张”的信息,直到用户确认显示信息为用户所要找的信息,或者提示:通讯录中没有该信息。模糊删除功能:与模糊查找类似,可以只知道信息的某部分,进而查找所要删除的信息,并由用户确认是否删除。模糊修改功能:与其他模糊功能类似,可以只知道信息的某部分,进而查找所要修改的信息,并由用户确认是否修改 图1.1 通讯录功能需求2、系统设计21 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。 图2.1 通讯录系统功能模块图22 详细设计2.2.1数据结构设计 变量定义为了使各变量之间的关系更明了,采用了结构体来定义变量struct phone char name20;/*姓名*/char mobile15;/*手机号码*/char phone15;/*家庭电话*/char address50;/*家庭住址*/ struct phone *next; ;自定义函数void showmenu();/*显示功能菜单*/void creatnew()/*添加纪录函数*/void save() /*将数据写入文件函数*/void add( ) /*控制添加记录函数*/void openfile() /*输出文件到链表函数*/void show() /*显示全部记录函数*/void searchshow() /*显示查找选项函数*/tel* searchname()/*按姓名查找记录函数*/tel* searchmobile()/*按手机号码查找记录函数*/tel* searchphone()/*按家庭电话查找记录函数*/tel* searchaddress() /*按地址查找记录函数*/tel * search()/*查找记录函数*/tel* dimsearch()/*模糊查找记录函数*/void modify() /*修改记录函数*/void del() /*删除记录函数*/void fre() /* 释放链表空间函数*/void openfile();/*读取文件到链表*/2.2.2 主控main()函数执行流程开始以只读的方式打开一个数据文件将此文件的内容读出,并存入一个结构体中,关闭文件进入while(1)主循环调用函数showmenu()输出菜单输入06中的一个数值,选择相应操作输入是否为0 ?是否调用fre()函数判断键值,调用相应函数,完成相应功能结束本通讯录执行主流程如图2.2所示。它先以只读的方式打开数据文件,此文件默认为“txl.txt”,若该文件不存在,则给出提示。当打开文件操作成功后,从文件中读出全部记录,添加到结构体中,然后执行进入主循环和显示主菜单操作,输入(06)进行按键判断。当输入0时,系统会退出通讯录系统的操作。若选择1,则调用void add()函数,执行增加记录操作;若选择2,则调用void modify()函数,执行修改记录操作;若选择3,则调用tel * search()函数,执行查询记录操作;若选择4,则调用void del()函数,执行删除记录操作;若选择5,则调用void show()函数,执行显示全部记录操作;若选择6,则调用tel* dimsearch()函数,执行模糊查找操作;若选择0,则调用void save()、void fre(),函数,执行保存记录,并释放链表空间操作;若输入为06之外的值,给出选择错误的提示。2.2.3 添加记录模块程序一开始就从默认文件调用fsanf()函数读入记录(若文件存在且有记录)到结构体中。在添加每条信息时均在提示框显示有相关提示,当用户选择 0 退出添加记录时,系统会清屏并返回到主菜单供用户再次选择其他操作。 2.2.4 查询记录模块此模块包括精确查询和模糊查询两大功能。通过调用tel * search()和tel* dimsearch()实现,查询记录模块主要实现了显示结构体中所有成员信息。通过调用tel * search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示与该信息相关的记录,直到用户确认或程序到最后一条记录。2.2.5 修改记录模块此模块主要通过调用tel * search()和tel* dimsearch()实现,查询记录模块主要实现了显示结构体中所有成员信息。通过调用tel * search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示与该信息相关的记录,直到用户确认后进行修改或程序到最后一条记录。2.2.6 删除模块此模块主要通过调用tel * search()和tel* dimsearch()实现,查询记录模块主要实现了显示结构体中所有成员信息。通过调用tel * search()函数实现,系统默认为精确查找,当精确查找没有匹配是,会提示用户是否进行模糊查找,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示与该信息相关的记录,直到用户确认后进行删除或程序到最后一条记录。2.2.7 显示全部记录模块此模块主要通过调用show()函数将记录(如果有记录)全部输入到屏幕上面,否则则给出相应提示。2.2.8 模糊查询模块通过调用tel * dimsearch()函数实现,模糊查找系统会根据用户输入的相关信息,通过调用tel * dimsearch()函数分条显示与该信息相关的记录,直到用户确认该信息或到最后一条记录。3、系统实现 3.1编码3.1.1 程序预处理#include /*标准输入输出库*/#include /*界面处理库*/#include #include/*处理字符串函数库*/struct phone/*定义结构体变量*/ char name20; /*存放姓名*/char mobile15; /*存放手机号码*/char phone15; /*存放家庭电话*/char address50; /*存放家庭住址*/ struct phone *next; /*存放下一个节点的地址*/ ;void showmenu();/*显示功能菜单*/void creatnew()/*添加纪录函数*/void save() /*将数据写入文件函数*/void add( ) /*控制添加记录函数*/void openfile() /*输出文件到链表函数*/void show() /*显示全部记录函数*/void searchshow() /*显示查找选项函数*/tel* searchname()/*按姓名查找记录函数*/tel* searchmobile()/*按手机号码查找记录函数*/tel* searchphone()/*按家庭电话查找记录函数*/tel* searchaddress() /*按地址查找记录函数*/tel * search()/*查找记录函数*/tel* dimsearch()/*模糊查找记录函数*/void modify() /*修改记录函数*/void del() /*删除记录函数*/void fre() /* 释放链表空间函数*/void openfile();/*读取文件到链表*/3.1.2主函数main()main() int x,m; openfile();/*读取文件到链表*/system(color 9a);/*设置背景颜色和字体颜色*/ while(1)/*设置循环条件为真*/ showmenu();/*显示各个功能*/ fflush(stdin);/*刷新缓存区*/ printf(请作出您的选择:);scanf(%d,&x);if(x=0&x=6) switch(x) system(cls); case 1:add();break; /*添加记录函数*/ case 2:modify();break; /*修改记录函数*/ case 3:search();break; /*查找记录函数*/ case 4:del();break; /*删除记录函数*/ case 5:show();break; /*显示全部记录*/ case 6:dimsearch();break; /*模糊查找*/ case 0:fre();printf(ntt欢迎再次使用通讯录管理系统,再见!.nn);exit(0); else printf(nn选择错误,请再次选择!n); getch();3.1.3 输出菜单void showmenu() int i;for(i=0;i80;i+)printf(%c,16);printf(n);printf(tttt1:添加记录n);printf(n);printf(tttt2:修改记录n);printf(n);printf(tttt3:查找记录n);printf(n);printf(tttt4:删除记录n);printf(n);printf(tttt5:显示全部录n);printf(n);printf(tttt6:模糊查找n);printf(n);printf(tttt0:退出程序n); printf(请在0-6选择:n);for(i=0;iname); printf(ttt请输入手机号码:); scanf(%s,new-mobile); printf(ttt请输入家庭电话:); scanf(%s,new-phone); printf(ttt请输入家庭住址:); scanf(%s,new-address); p1=head; /*将头指针再次赋给变量p1*/ if(head!=NULL)/*先判断是否有记录*/ do if(strcmp(p1-mobile,new-mobile)=0|(strcmp(p1-phone,new-phone)=0) /*判断记录是否已经存在*/printf(记录已经存在n);printf(n%-20s%-15s%-15s%-50sn,p1-name,p1-mobile,p1-phone,p1-address);/*输出已存在记录*/printf(是否继续添加?1 继续添加t其他数字键重新输入n);scanf(%d,&n);/*确认是否添加记录*/if(n=1)/*确认添加*/break;else/*确认重新输入*/ goto aa;p1=p1-next; while(p1!=NULL); /*判断记录是否存在*/p1=head; /*将头指针再次赋给变量p1*/ if(head=NULL) /*检测是否为空链表*/ head=new; /*链表为空,插入的结点作为第一个结点*/ new-next=NULL; else while(p1-next!=NULL)&(strcmp(p1-name,new-name)next; if(strcmp(p1-name,new-name)0) if(head=p1) new-next=head; head=new; else p2-next=new; new-next=p1; else p1-next=new; new-next=NULL; 3.1.5修改功能void modify() /*修改记录函数*/tel *new=search(); /*调用查找函数*/ if(z=0);elseif(x=0);else if(z=0&x=0); /*根据表计量判断指针*/elseif(new=NULL) /*修改头结点数据*/ printf(请输入新纪录:n); printf(ttt请输入姓名:); scanf(%s,head-name); printf(ttt请输入手机号码:); scanf(%s,head-mobile); printf(ttt请输入家庭电话:); scanf(%s,head-phone); printf(ttt请输入家庭住址:); scanf(%s,head-address);save();else/*修改其他结点数据*/printf(请输入新纪录:n);printf(ttt请输入姓名:); scanf(%s,new-next-name); printf(ttt请输入手机号码:); scanf(%s,new-next-mobile); printf(ttt请输入家庭电话:); scanf(%s,new-next-phone); printf(ttt请输入家庭住址:); scanf(%s,new-next-address);save();printf(nn);printf(ttt按任意键继续);getch();system(cls);3.1.6查找功能tel * search() int i,j=0;tel *p1=NULL,*p2=NULL,*p=NULL;loop:searchshow();scanf(%d,&i);if(i=1&iname,p2-name)=0|(strcmp(p1-mobile,p2-mobile)=0|(strcmp(p1-phone,p2-phone)=0|(strcmp(p1-address,p2-address)=0)printf(找到记录:n);printf(%-20s%-15s%-15s%-50sn,姓名,手机号码,电话号码,家庭住址);printf(n%-20s%-15s%-15s%-50s,p1-name,p1-mobile,p1-phone,p1-address);break;p=p1;p1=p1-next;if(p1=NULL)printf(ttt电话本中无此记录!nn);printf(tt是否重新进行?按1 继续t按其他数字键模糊查找!nn); scanf(%d,&i);if(i=1)free(p2); /*释放p2的存储空间*/goto loop;else system(cls);/* 精确查找没有记录,进行模糊找找*/ p=dimsearch(); return p;3.1.7删除功能void del() /*删除记录函数*/tel * p2=search(); /*查找要删除的结点*/int i;if(z=0);elseif(x=0);else if(z=0&x=0); /*根据标记量判断删除的是否是头点*/elseif(p2=NULL)printf(nnn确实要删除吗?t按1 删除!t按其他数字保留!n);scanf(%d,&i);if(i=1)head=head-next;/*修改删除头结点的指针*/save();printf(ttt按任意键返回);getch();system(cls);else printf(nnn确实要删除吗?t按1 删除!t按其他数字保留!n);scanf(%d,&i);if(i=1)p2-next=p2-next-next;/*修改不是删除头结点的指针*/save();printf(ttt按任意键返回);getch();system(cls);3.1.8显示全部记录void show() /*显示全部记录*/tel *p1=head; if(head=NULL) /*判断是否是空链表*/ printf(nttt电话簿中没有记录,请输入纪录后,在使用本能!n);printf(ttt按任意键返回);getch();system(cls); return; printf(%-20s%-15s%-15s%-50sn,姓名,手机号码,电话号码,家庭住址); do printf(n%-20s%-15s%-15s%-50s,p1-name,p1-mobile,p1-phone,p1-address); p1=p1-next; while(p1!=NULL); printf(ttt按任意键返回);getch();system(“cls”);3.1.9模糊查找功能tel* dimsearch()/*模糊查找*/ int i,j=0,m;tel *p1=NULL,*p2=NULL,*p=NULL; searchshow();lp:scanf(%d,&i);if(i=1&iname,p2-name)|(strstr(p1-mobile,p2-mobile)|(strstr(p1-phone,p2-phone)|r(p1-address,p2-address)/*判断是否有相关信息*/printf(%-20s%-15s%-15s%-50sn,姓名,手机号码,电话号码,家庭住址);printf(%-20s%-15s%-15s%-50sn,p1-name,p1-mobile,p1-phone,p1-address);j=1;printf(是否是本条记录?按确定本条记录t按其他数字键继续);scanf(%d,&m);if(m=1)break;p=p1;p1=p1-next; printf(n); if(j=0|p1=NULL)if(j=0&p1!=NULL)printf(ttt没有找到相关记录!);z=0; if(j!=0&p1=NULL) printf(ttt没有找到其他相关记录!); x=0; if(j=0&p1=NULL) printf(ttt没有找到相关记录!); z=0;x=0; printf(nn); printf(ttt按任意键返回); getch(); system(cls); return p;32 测试与调试3.2.1 概述一般情况下,为解决一个问题所编写的程序代码较长,可能包括几百条甚至成千上万条语句。在检查并排除所有语法错误后,还会有不易发现的逻辑错误,因此要对程序进行认真仔细的测试与调试。测试是通过运行程序发现错误的过程,常见的错误有数据溢出、越界、进入死循环、语句顺序颠倒、多加“;”或少加“”等等。调试则是确定测试中找到的错误性质并改正错误的过程。测试与调试通常交替进行,即测试调试再测试再调试。能检查出尚未发现的、各种不同类型错误的测试才是成功的测试。测试程序需要测试用例,测试用例可用如下公式表示:测试用例测试数据预期结果。好的测试用例应该是用尽可能少的测试数据发现尽可能多的错误,即发现错误的概率要大。要选择合适的测试数据,使系统在运行时尽量能执行到每条语句,以测试各指令是否正确。还应分别测试输入合法数据与非法数据时,程序的运行情况,。对于合法数据,还要考虑数据的一般性与特殊性,如求最大值的问题,应测试最大值在最前面、最后面、中间某一位置的情况。测试可按模块测试、组装测试和确认测试的步骤进行。(1)模块测试就是分别对各模块进行测试的过程。在编写一个模块后应立即对其进行测试,因为这时对模块记忆深刻,而且单个模块相对较小,所以容易构造测试数据,能方便地检查和改正错误。(2)组装测试就是把所有模块(应该是通过模块测试的模块)按预先制定的计划逐步组装和测试的过程。一般情况下,各模块之间要相互传递数据和控制信息,因此组装测试的主要任务是发现模块接口中的错误。(3)确认测试是最后一个步骤,一般在将软件交付用户之前,应确认软件是否确实满足用户的要求,通常使用接近实际的用例进行测试。VS2008环境下 C序可以用以下的方法。 临时加打印语句,将所要观察的数据显示在屏幕上。 用F10和F11分别逐过程或逐语句执行程序。 用Ctrl+B组合键新建断点。 综合使用以上方法。测试程序时,用监视窗口可以随时查看变量或表达式的值,有时还可以将部分程序代码用注释符暂时括起来,缩短程序,以便压缩出错代码的范围。3.2.2 程序测试选择1 输入 asd 654 345 654 按其他数字键按0选择2选择1选择5选择3 按1 输入 王五选择4按2 输入789按1 选择5选择6按2 输入 4按其他数字键按 1选择0选择5选择2 按2,输入4按其他数字键按其他数字键按1按任意键, 选择5选择5按任意键,选择4,按2,输入4按其他数字键,按2,输入4按其他数字键按1按任意键按1 按任意键选择 54、系统维护经测试与调试确认软件无错时,开发就告一段落,这时可以交付软件供用户使用,但是在软件的使用过程中还会面临更加漫长的工作,即软件维护。一般维护的工作有:更改使用中发现的错误;为适应实际环境而对程序进行修改;为满足新的需求而对程序作必要的改进等等。5、归纳总结51 开发经验通过对本题目的开发,体会到要掌握以下几点内容。l 大程序的设计风格。按“自顶向下,逐步细化,模块化”的方法进行程序设计。l 编写主函数,并进行测试与调试。当被调函数又需要调用其他函数时,也要遵循逐步细化的原则。C语言提供丰富的库函数,编程序时要善于使用库函数,避免不必要的劳动。l 定义函数时,应选好参数的个数和数据类型。l 文件使用方法。文件使用完毕后应及时关闭。52 实训中遇到的问题及解决方法不能进行文件的操作通过看书上网找例题和解析终于能初步完成对文件的读写了。输出地图形都是黑白配,不知道怎么上色,通过百度知道通过system(color XX);XX指代颜色,颜色属性由两个十六进制数字指定 - 第一个为背景,第二个则为前景。删除第一个结点时,会误删除第二个节点,通过增加标记解决问题,显示全部数据时会显示几个“屯”字,通过调试得知,从文件读取数据时结尾少了回车。3 设计中尚存的不足之处关于这次的程序,也有很多不足的地方;没有添加更好的特色功能。以实现的程序中查询界面不够简洁;程序代码写得不够规范操作界面不够美观54 感想和心得体会通过这次实训,我感触甚深,要把所学的理论知识运用于解决实际问题不仅要付出艰辛的劳动,还得要有科学的方法和坚持不懈的努力。这次实训让我进一步理解了“编程是什么”,“如何去编程”,“编程的目的又是什么”,发现自己的知识竟是如此贫乏,顿时感到了压力的存在,从而也激发了我的学习热情。它会成为我今后不断进取、永不懈怠的动力。在实训过程中,使我良好的锻炼了自己,首先是兴趣方面,通过编写通讯录管理系统使我更加喜欢编程,使我从以前的迷茫状态中解脱出来,使我了解了编程的真正意义。我想这对我以后的人生有着很大的帮助。其次通过编写通讯录管理系统使我对写程序有了一定的思路,不像以前无从下手,使我理解了算法的意义,使我懂得了模块化思想的好处。通过编写代码,使我对书本上的知识有了更深的理解,甚至有很多不懂的问题在这过程中自然而然的理解了。在刘欣老师的悉心指导下,我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大提高,自身的注意力,耐心,和对编程的兴趣有了很大增长,使我获益匪浅。6、参考资料谭浩强C语言程序设计(第三版) 清华大学出版社7、附源代码#include#include#include#includechar filename20=E:tx123.txt;struct phone char name20;char mobile15;char phone15;char address50; struct phone *next; ;typedef struct phone tel;tel *head=NULL;int z=1,x=1; /*标记量X、Z*/void showmenu() int i;printf(n);for(i=0;i80;i+)printf(%c,16);printf(n);printf(tttt1:添加记录n);printf(n);printf(tttt2:修改记录n);printf(n);printf(tttt3:查找记录n);printf(n);printf(tttt4:删除记录n);printf(n);printf(tttt5:显示全部录n);printf(n);printf(tttt6:模糊查找n);printf(n);printf(tttt0:退出程序n); printf(请在-6选择:n);for(i=0;iname); printf(ttt请输入手机号码:); scanf(%s,new-mobile); printf(ttt请输入家庭电话:); scanf(%s,new-phone); printf(ttt请输入家庭住址:); scanf(%s,new-address); p1=head; if(head!=NULL)/*先判断是否有记录*/ do if(strcmp(p1-mobile,new-mobile)=0|(strcmp(p1-phone,new-phone)=0)printf(记录已经存在n);printf(n%-20s%-15s%-15s%-50sn,p1-name,p1-mobile,p1-phone,p1-address);printf(是否继续添加?1 继续添加t其他数字键重新输入n);scanf(%d,&n);if(n=1)break;else goto aa;p1=p1-next; while(p1!=NULL);p1=head; if(head=NULL) /*检测是否为空链表*/ head=new; /*链表为空,插入的结点作为第一个结点*/ new-next=NULL; else while(p1-next!=NULL)&(strcmp(p1-name,new-name)next; if(strcmp(p1-name,new-name)0) if(head=p1) new-next=head; head=new; else p2-next=new; new-next=p1; else p1-next=new; new-next=NULL; void save() /*将数据写入文件*/tel *p1=NULL;FILE *fp;if(fp=fopen(filename,w)=NULL)printf(不能打开文件n);return ;p1=head;for(;p1!=NULL;p1=p1-next)fprintf(fp,%stt%stt%stt%sn,p1-name,p1-mobile,p1-phone,p1-address);printf(操作完毕n);fclose(fp);void add( ) /*控制添加记录*/ int x=1; printf(开始添加纪录,在添加记录过程中按0 停止添加n); while(x!=0) do creatnew(); printf(操作完成n); break; while(1);printf(按结束添加! 按其他数字键,继续添加!n);scanf(%d,&x);if(x=0)save();system(cls); void openfile() /*输出文件到链表*/FILE *fp;tel *p1=NULL,*p2=NULL;head=NULL;if(fp=fopen(filename,r)=NULL) /*打开文件*/ /*文件不存在,表明第一次使用本电话簿*/ printf(nttt*这是一个新电话簿*n); return ;while(!feof(fp) ) /*循环读取文件数据*/ p1=(tel*)malloc (sizeof(tel); fscanf(fp,%s%s%s%sn,p1-name,p1-mobile,p1-phone,p1-address); if(head=NULL) head=p1;p1-next=NULL;p2=p1;elsep2-next=p1;p1-next=NULL;p2=p1;fclose(fp);void show() /*显示全部记录*/tel *p1=NULL; if(head=NULL) /*判断是否是空链表*/ printf(nttt电话簿中没有记录,请输入纪录后,在使用本能!n);printf(ttt按任意键返回);getch();system(cls); return; p1=head; printf(%-20s%-15s%-15s%-50sn,姓名,手机号码,电话号码,家庭住址); do /* system(color
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025商业综合体委托经营管理合同书
- 2025机械加工行业简易劳动合同协议书
- 2025年高考历史总复习攻略:高考历史图表类选择题解题方法
- 人民的名义培训
- 税收法制培训
- 版股权转让合同模板
- 租赁合同的履行及具体操作程序
- 培训开营仪式
- 采血点标准操作规程
- 小学英语人教版 (PEP)五年级上册Unit 3 What would you like Part B教案设计
- 工程造价咨询事务所有限公司操作规程和基本管理制度
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- 保险信息服务合同范本
- 老年人康乐活动-老年节庆活动组织策划
- 预防接种服务提质行动方案2-4-10
- 绿化带改停车位施工方案
- 绿化苗木组织供应及售后服务方案
- 2023-2024学年浙江省环大罗山联盟高一下学期4月期中物理试题(解析版)
- 合用变压器协议
- 护理人员岗位绩效考核评价标准
- 2024年郑州轨道工程职业学院单招职业适应性测试题库学生专用
评论
0/150
提交评论