家谱标准管理专业系统设计.doc
《家谱标准管理专业系统设计.doc》由会员分享,可在线阅读,更多相关《家谱标准管理专业系统设计.doc(40页珍藏版)》请在咨信网上搜索。
《软件综合设计》 家谱管理系统 院 系: 计算机科学技术学院二系 班 级: 计11 – 2班 姓 名: 刘文秀(15) 合 作 者: 姜雪(05) 、岳奉宜(33) 指引教师: 薛曼玲 年 12 月 01 日 《软件综合设计》任务书 一、题目:家谱管理系统 二、设计规定 (1)刘文秀(组长)、姜雪和岳奉宜构成课程设计小组。 (2)小构成员分工协作完毕。规定每个成员有自己相对独立模块,,同步要理解其她成员完毕内容。 (3)查阅有关资料,自学详细课题中涉及到新知识。 (4)采用构造化、模块化程序设计办法设计,功能要完善,界面美观。 (5)所设计系统应有菜单、动画和音乐。 (6)按规定写出课程设计报告,并于设计结束后1周内提交。其重要内容涉及:封皮、课程设计任务书,指引教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序调试与测试、总结与体会、结束语、程序清单(带中文注释)、参照文献等。报告一律用A4纸打印,正文中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。1级标题中文字体为黑体,西文字体为Time New Roma,采用三号字;段落为居中、段前18磅、段后12磅、行距采用“固定值”18磅,首行缩进:无,段中不分页,与下段同页。仅一级标题上目录。 三、课程设计工作量 由于是设计小组团结协作完毕设计任务,普通每人程序量在400行有效程序行以上,不得抄袭。 四、课程设计工作筹划 12月2日,指引教师授课,学生依照题目准备资料,需求分析; 12月3日,设计小组进行总体方案设计和任务分工; 12月4日~12月10日,每人完毕自己承担程序模块并通过独立编译; 12月11日~12日,将各模块集成为一种完整系统,并录入足够数据进行调试运营; 12月13日,验收、开始撰写课程设计报告; 12月18日前,提交课程设计报告和软件。 指引教师签章: 教研室主任签章 指引教师评语与成绩 指引教师评语: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指引教师签章 年 月 日 目 录 第1章 概述 1 1.1 课题研究目和技术发呈现状 1 1.2 课题研究重要内容 1 1.3 课题研究难点 1 第2章 需求分析 2 2.1 性能需求 2 2.2 功能需求 2 第3章 可行性分析 2 3.1 经济可行性分析 2 3.2 技术可行性分析 2 第4章 概要设计 3 4.1 程序设计基本思想 3 4.2 总体功能模块图 3 4.3有关应用技术 3 第5章 详细设计 4 5.1日期信息合法性检查 4 5.2 添加成员孩子模块 5 5.3 添加成员兄弟模块 8 5.4 按照出生日期对家谱排序 9 5.5 由兄弟、孩子二叉树生成家谱文献 12 5.6 按照姓名、出生日期查找家谱成员 13 第6章 调试分析与测试成果 14 6.1 测试办法 14 6.2 测试过程 14 6.3 测试结论 15 第7章 结束语 19 参照文献 20 附 录 20 第1章 概述 1.1 课题研究目和技术发呈现状 本《家谱管理系统》是以电子家谱形式记载父系家族世袭、人物为中心。电子能精确记录家族成员出生卒年,以及生活地点、家庭成员等信息。普通状况下是不会浮现信息丢失状况。更不需要紧张老式家谱随着年代久远笔迹不清晰,有破损等状况浮现。因此本课题研究目是让人们不但可以非常容易记录家族状况,并且能清晰理解本家族信息,使用起来非常以便。既有计算机技术足以支撑电子家谱开发。家谱科学管理不但有助于民族文化和地方文化发展,并且有其自身积极意义。例如本电子家谱是运用Visval C++ 6.0开发完毕。电子家谱浮现无疑让家谱焕然一新,但是老式家谱更能凸显出历史韵味,文化内涵。这是电子家谱所不可以代替,电子家谱不也许成为文物。开发人员应当清晰结识到这一点。 1.2 课题研究重要内容 家谱,又称族谱、祖谱、宗谱等。一种以表谱形式,记载一种以血缘关系为主题家族世系繁衍。本课题研究重要内容是以电子家谱形式记录、查询父系家族历史信息为重要内容。 1.3 课题研究难点 建立输入文献以存储最初家谱中各成员信息,以及可以对修改后家谱存盘以备后来使用。顾客界面设计不够完美。功能上设计难度很大。 第2章 需求分析 2.1 性能需求 系统核心是运用对话框连接和文本解决来存储和修改家族管理系统信息联系,其中每一种动作都也许影响到其她功能。使用以便,易于传播,数据共享等性能。易于维护。 2.2 功能需求 ² 建立输入文献以存储最初家谱中各成员信息。 ² 成员信息中均应包括如下内容: 姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)也可附加其他信息、但不是必须。 ² 能对修改后家谱存盘以备后来使用。 ² 能从文献中读出已有家谱,形成树状关系。 ² 家谱建立好之后,以图形方式显示出来。 ² 显示第n代所有人信息。 ² 按照姓名查询,输出成员信息(涉及其本人、爸爸、孩子信息)。 ² 按照出生日期查询成员名单。 ² 输入两人姓名,拟定其关系。 ² 某人添加孩子。 ² 删除某人(若其尚有后裔,则一并删除)。 ² 修改某人信息。 ² 按出生日期对家谱中所有人排序。 ² 打开一家谱时,若家谱中某人生日在打开家谱那一天,应给出提示 。 第3章 可行性分析 3.1 经济可行性分析 对系统开发规模进行估算属此软件项目属于小规模软件开发。因此开发人员三到五人即可。开发,维护等成本相对较低。因此从经济可行性分析角度来看此《家谱管理系统》适于开发。 3.2 技术可行性分析 依照软件系统功能、性能规定各项约束条件从技术角度实现系统可行性。家谱信息以树形式一次读入内存,而个人各种资料虽然当前条目不多,但随着程序升级,后来也许越来越大。我把树形构造和个人信息记录文档分为两个文献保存在外存中,一种文献串行化记录家谱树构造化信息,保持少量个人信息作为辨认标志;另一种文档保存完整个人信息。索引时,以树形中少量信息为根据在另一种文献中找到所有个人信息资料。 第4章 概要设计 4.1 程序设计基本思想 《家谱管理系统》总体设计思路是先为程序搭建好一种人构造框架,家庭成员之间关系,用树形构造(家族树)表达,这是本《家谱管理系统》逻辑构造。依照MFC特点,采用CfamilytreeDlg类实现顾客窗口界面指令对于家谱各种操作。有文献控制和家谱控制两大模块,按生日查找、删除成员、文献输入输出、修改成员信息、按名字查找、成员关系显示、按代数显示等各种操作。然后再依照需求分析逐渐增强程序功能和性能。 4.2 总体功能模块图 4.3有关应用技术 1.定义“家谱”类型 2.用构造Date存储日期 3.用构造QuickSortNode存储迅速排序数组值(为迅速排序而设) 4.依照家谱特点,采用孩子-兄弟二叉树链表表达法(链表基本单位为以构造PersonNode表达结点),各种操作以COperationFamilytree类来实现。 5.依照MFC特点,采用CfamilytreeDlg类实现顾客窗口界面指令对于家谱各种操作。 第5章 详细设计 5.1日期信息合法性检查 图5-1 日期信息合法性检查 Int COperationFamilytree::ReadNode(FILE *fp,Person &T,char* parentname) { //本函数从文献fp中读取信息到结点T中,并读取结点爸爸名字到字符数组parentname中 //分别读取结点值,为:姓名,出生日期(年,月,日),婚否,地址,健在否,(如过世,尚有死亡日期) fscanf(fp,"%s%d%d%d%d%s%d",T->info.name,&T->info.birthday.year,&T->info.birthday.month, &T->info.birthday.day,&T->info.marry,T->info.addr,&T->info.live); if(T->info.live==0) fscanf(fp,"%d%d%d",&T->info.deathday.year,&T->info.deathday.month, &T->info.deathday.day); fscanf(fp,"%s",parentname); if(!IsDateValid(T->info.birthday)) //出生日期合法性检查 return FILE_DATA_NOT_PRACTICAL; if(T->info.live==0) //若过世,死亡日期合法性检查 if(!IsDateValid(T->info.deathday)) return FILE_DATA_NOT_PRACTICAL; return OK; } 5.2 添加成员孩子模块 图5-2 添加成员孩子流程图 Int COperationFamilytree::CreateFamilytree(CString filename) { //本函数建立一新家谱 DestroyFamilytree(); //建立一新家谱之前,清空原有家谱 FILE* fp; if((fp=fopen(filename,"r"))==0) //打开文献filename return READ_FILE_ERROR; T=new PersonNode; //定义根结点 if(!T) return NOT_ENOUGH_MEMORY; T->child=0; T->sibling=0; T->parent=0; Person parentT,temp; //定义两个暂时结点 char parentname[MAX_CHARNUM]; //定义一种暂时字符串数组 //读取根结点值,(姓名,出生日期(年,月,日),婚否,地址,健在否,(如过世,尚有死亡日期)) int result; result=ReadNode(fp,T,parentname); if(result==FILE_DATA_NOT_PRACTICAL){ delete T; //若不合法,删除申请堆空间 T=0; return result; } if(strcmp(T->info.name,parentname)==0){ //根结点名字与其爸爸名字相似,阐明为空树 delete T; T=0; return PEDIGREE_EMPTY; } temp=new PersonNode; //申请一结点 if(!temp){ //申请失败 DestroyFamilytree(); //释放申请空间 return NOT_ENOUGH_MEMORY; } result=ReadNode(fp,temp,parentname); while(strcmp(temp->info.name,parentname)&&strcmp(temp->info.name,"end")){ //读取信息结束条件是两个人名字同为end if(result==FILE_DATA_NOT_PRACTICAL){ //若数据不合法,释放已申请空间,然后返回 delete temp; DestroyFamilytree(); return result; } parentT=0; Find(T,parentT,parentname); //找到parentname所在结点parentT if(parentT){ //如果parentT存在,阐明parentname在家谱中 //并且parentname为temp爸爸 int cmp; cmp=CompareDate(temp->info.birthday,parentT->info.birthday); if(cmp<0){ //若孩子出生日期比爸爸大,则不对 delete temp; DestroyFamilytree(); return FILE_DATA_NOT_PRACTICAL; } temp->child=temp->sibling=0; temp->parent=parentT; //temp父指针指向parentT; if(parentT->child){ //parentname已有孩子 InsertSibling(parentT->child,temp); }//if else //parentname无孩子,则temp应为 parentT->child=temp; //parentname第一种孩子 }//if else{ //parentT不存在,阐明家谱中不存在parentname此人 DestroyFamilytree(); //返回出错信息 return FILE_DATA_ERROR; } temp=new PersonNode; //申请一结点 if(!temp){ //申请失败 DestroyFamilytree(); //释放申请空间 return NOT_ENOUGH_MEMORY; } result=ReadNode(fp,temp,parentname); //继续读取数据 }//while if(temp) delete temp; fclose(fp); return OK; } 5.3 添加成员兄弟模块 图5-3 添加成员兄弟模块 void SaveNode(FILE *fp,Person &pNode) { //本函数向文献fp中存取一结点pNode char ch='\n'; if(pNode){ fprintf(fp,"%s %d %d %d %d %s %d ",pNode->info.name,pNode->info.birthday.year, pNode->info.birthday.month,pNode->info.birthday.day,pNode->info.marry, pNode->info.addr,pNode->info.live); if(pNode->info.live==0) fprintf(fp," %d %d %d ",pNode->info.deathday.year,pNode->info.deathday.month, pNode->info.deathday.day); if(pNode->parent) //家谱结束 fprintf(fp," %s ",pNode->parent->info.name); else fprintf(fp," %s","-1"); fprintf(fp," %c",ch); } } int COperationFamilytree::SaveFamilytree(CString filename) { //本函数保存家谱到文献filename中 FILE* fp; if((fp=fopen(filename,"w"))==0) //打开文献filename return WRITE_FILE_ERROR; PreOrderTraverse(fp,T,SaveNode); //从根结点开始存储家谱数据 //置家谱数据结束标记(一结点名字与其父结点名字同为end) fprintf(fp,"%s %d %d %d %d %s %d %s","end",1999,12, 2,1,"end",1,"end"); fclose(fp); return OK; } void COperationFamilytree::PreOrderTraverse(FILE* fp,Person &T,void (__cdecl *Visit)(FILE* fp,Person &)) { //本函数把所有以T结点为根结点结点值存到文献fp中 if(T){ (*Visit)(fp,T); PreOrderTraverse(fp,T->child,Visit); PreOrderTraverse(fp,T->sibling,Visit); } } 5.4 按照出生日期对家谱排序 void CFamilytreeDlg::OnFamilytreeSort() { // TODO:Add your command handler code here RefreshList(); QuickSortNode* order; int totalNums=0; operFamilytree.GetPersonNums(operFamilytree.GetRoot(),totalNums); order=new QuickSortNode[totalNums+1]; if(!order){ AfxMessageBox("内存局限性!"); return; } AfxMessageBox("排序后成果请见下部列表。"); operFamilytree.SortByBirthday(order); for(int i=1;i<totalNums+1;i++) DisplayInListCtrl(order[i].oneself); delete []order; } void COperationFamilytree::SortByBirthday(QuickSortNode *order) { //本函数对顺序表order以出生日期大小排序 int totalNums=0; QuickSortNode* startaddr=order; startaddr++; GetPersonNums(T,totalNums); CopyInfoFromBiTreeToArray(T,startaddr); QuickSort(order,1,totalNums); } int COperationFamilytree::Partition(QuickSortNode *order,int low,int high) { //本函数供QuickSort函数调用 //互换顺序表order中从low到high记录,便枢轴记录到位,并返回其所在位置,此时 //在它之前(后)记录均不大(小)于它 order[0]=order[low]; //用子表第一种记录做枢轴记录 Date pivotkey=order[low].birthday; //枢轴记录核心字 while(low<high){ //从表两端交替地向中间扫描 while(low<high&&(CompareDate(order[high].birthday,pivotkey)==1 ||CompareDate(order[high].birthday,pivotkey)==0)) --high; order[low]=order[high]; //将比枢轴记录小记录移到低端 order[low].birthday=order[high].birthday; //枢轴记录到位 order[low].oneself=order[high].oneself; while(low<high&&(CompareDate(order[low].birthday,pivotkey)==-1 ||CompareDate(order[low].birthday,pivotkey)==0)) ++low; order[high]=order[low]; //将比枢轴记录大记录移到高品位 } order[low]=order[0]; //枢轴记录到位 return low; //返回枢轴位置 } void COperationFamilytree::QuickSort(QuickSortNode *order,int low,int high) { //本函数对顺序表order[low...high]作迅速排序 int pivotloc; if(low<high){ //长度不不大于1 pivotloc=Partition(order,low,high); //将order[low...high]一分为二 QuickSort(order,low,pivotloc-1); //对低子表递归排序,pivotloc是枢轴位置 QuickSort(order,pivotloc+1,high); //对高子表递归排序 } } void COperationFamilytree::GetPersonNums(Person&T,int& personNums) { //本函数返回以T为根结点所有结点数,并把成果存入personNums中 //初始值personNums必要为0 if(T){ personNums++; GetPersonNums(T->child,personNums); //递归调用 GetPersonNums(T->sibling,personNums); } } void COperationFamilytree::CopyInfoFromBiTreeToArray(Person &T,QuickSortNode *&order) { //本函数先序遍历以T为根结点所有结点,并把每一种结点出生日期信息及其指针值 //依次存入顺序表order中 if(T){ (*order).birthday=T->info.birthday; (*order).oneself=T; order++; CopyInfoFromBiTreeToArray(T->child,order); CopyInfoFromBiTreeToArray(T->sibling,order); } } 5.5 由兄弟、孩子二叉树生成家谱文献 void SaveNode(FILE *fp,Person &pNode) { //本函数向文献fp中存取一结点pNode char ch='\n'; if(pNode){ fprintf(fp,"%s %d %d %d %d %s %d",pNode->info.name,pNode->info.birthday.year, pNode->info.birthday.month,pNode->info.birthday.day,pNode->info.marry, pNode->info.addr,pNode->info.live); if(pNode->info.live==0) fprintf(fp," %d %d %d ",pNode->info.deathday.year,pNode->info.deathday.month, pNode->info.deathday.day); if(pNode->parent) //家谱结束 fprintf(fp," %s ",pNode->parent->info.name); else fprintf(fp," %s","-1"); fprintf(fp," %c",ch); } } int COperationFamilytree::SaveFamilytree(CString filename) { //本函数保存家谱到文献filename中 FILE* fp; if((fp=fopen(filename,"w"))==0) //打开文献filename return WRITE_FILE_ERROR; PreOrderTraverse(fp,T,SaveNode); //从根结点开始存储家谱数据 //置家谱数据结束标记(一结点名字与其父结点名字同为end) fprintf(fp,"%s %d %d %d %d %s %d %s","end",1999,12, 2,1,"end",1,"end"); fclose(fp); return OK; } void COperationFamilytree::PreOrderTraverse(FILE* fp,Person &T,void (__cdecl *Visit)(FILE* fp,Person &)) { //本函数把所有以T结点为根结点结点值存到文献fp中 if(T){ (*Visit)(fp,T); PreOrderTraverse(fp,T->child,Visit); PreOrderTraverse(fp,T->sibling,Visit); } } 5.6 按照姓名、出生日期查找家谱成员 void COperationFamilytree::Find(Person& T,Person& Tname,char* name) { //本函数以T为根结点开始,搜索结点信息中名字等于name结点 if(T){ //如果T存在 if(strcmp(T->info.name,name)==0) //T结点姓名和name相似,把T结点指针传给Tname Tname=T; else{ Find(T->sibling,Tname,name); //对T兄弟递归搜索 Find(T->child,Tname,name); //对T孩子递归搜索 } } } void COperationFamilytree::Find(Person &T,Person*& Tname,int month,int day) { //本函数以T为根结点开始,搜索结点信息中生日等于month,day结点, //并把所有符合条件结点指针值存入以Tname为起始地址地址数组中 if(T){ //如果T存在 if(T->info.birthday.month==month&& T->info.birthday.day==day){ //T结点生日与所给相似,把T结点指针传给Tname,同步Tname指针迈进 *Tname=T; Tname++; } else{ Find(T->sibling,Tname,month,day); //对T兄弟递归搜索 Find(T->child,Tname,month,day); //对T孩子递归搜索 } } } 第6章 调试分析与测试成果 6.1 测试办法 该课程设计只有一种重要类,即对孩子——兄弟二叉树操作类。该类重要涉及文献读取函数、创立孩子——兄弟二叉树函数、在树中查找函数、遍历函数以及对树中结点进行加入、删除、修改函数。由于树存储构造特殊性,故编制这些算法时大量使用了递归,虽然这样做也许会减少程序执行效率,但程序易读性较强。 6.2 测试过程 在调试时,遇到几种问题如下: (1)建立树时,由于新申请结点孩子指针、兄弟指针、及双亲指针均未赋空值。而在后来函数中对树进行递归操作时均以这些指针值中一种或几种与否为空作为递归结束条件。从而导致调用这些函数时浮现系统保护异常(使用了不安全指针)。 (2)刚开始删除结点时,只考虑到删除其自身结点状况,而删除其孩子结点状况未考虑到,故在删除某些结点时使树浮现了“断链”现象。故在程序代码中对删除某一结点进行操作时,一方面要判断此结点与否有孩子及兄弟,然后进行相应操作。 (3)刚开始进行程序概要设计时,曾考虑到用控制台下文本方式作为程序界面,实际操作后发现并不抱负。一方面字符形式界面和谐性较差,另一方面显示整个家谱树信息时不以便。故考虑用VC++中MFC类自带树型控件显示家谱层次,而用列表控件显示家谱中信息。用后效果不错。 6.3 测试结论 (1)按下按钮“打开家谱”,打开一种家谱文献(*.ftf) (2)按下按钮“新建家谱”,新建一种家谱文献(*.ftf) (3)按下按钮“保存家谱”,将修改过家谱保存 (4)按下按钮“另存家谱”,将修改过家谱另存为一种家谱文献(*.ftf) (5)按下按钮“删除该人”,将树型控件中选中成员及其后裔删除 (6)按下按钮“增长孩子”,给树型控件中选中成员增长一种孩子 (7)按下按钮“更改资料”,更改树型控件中选中成员资料 (8)按下按钮“按照姓名查找”,将家谱中特定名字成员信息显示在列表控件中 (9)按下按钮“拟定两人关系”,将家谱中某两人关系显示出来 (10)按下按钮“出生日期排序”,将家谱中所有成员按出生日期排序并显示在列表控件中 (11)按下按钮“按照生日查找”,将家谱中特定日期出生成员信息显示在列表控件中 (12)选取菜单项目“关于”,显示该程序版权信息 (13)选取菜单项目“退出”,结束该程序运营 第7章 结束语 通过这次大作业,体会很深刻,将始终以来学到东西都运用到事实上来,学以致用,对所学知识有了更深刻理解,同步还发现了许多平时在课本上没有碰见过问题,增进了自己对知识渴望,碰见了问题,就但愿可以通过查找课外书来解决它们。刚接触题目时候,自己就有了一定想法,觉得这个程序做起来是问题不大,但到了自己真正开始编程时候却发现远远没有想象中那么简朴,诸多细节问题没有预想到,诸多关系解决想得过于简朴,以至于实行起来遇到了很大困难,花了大量时间。同步尚有一种比较深刻体会就是要尽量多在源码上作注释,此前编某些功能简朴程序,总能很清晰每个函数和每个变量作用,但到了做这个大作业,由于分开了各个功能板块去实现,诸多时候是做了背面就忘了前面,日后意识到这个问题,便开始在编程时加入注释,并且是越详细越好,这样做了后来,诸多时候需要查看自己本来写源代码,也可以很以便地理解了,跟上了思路,也以便后来维护。 关于这个程序缺陷方面,由于自己花时间不是诸多,再加上知识有限,编写出来界面不够和谐,在功能上还是有不完善地方,譬如说各项数据记录还没有弄,数据存储还不够抱负等等。 对于这个程序改进,我自己还是有不少想法。一方面是需要加强数据存储这方面知识,使自己编写出来程序能以一种原则格式存储下来,以便后来其他程序读取。 总来说,通过这次作业,收获还是挺多,也发现了不少问题,并给自己后来学习指引了方向,懂得自己缺少哪方面知识,需要补充哪些知识等等。自己将会以这次作业为契机,看更多编程方面书籍,不断充实自己知识库。 参照文献 《数据构造(C语言版)》——清华大学出版社——严蔚敏、吴伟民编著 《C至Visual C++程序设计语言》——科学出版社——蔡常丰、林小苹编著 《Microsoft Visual C++ 6.0 高手速成》——兵器工业出版社——步行者工作室编著 《C++程序设计》——清华大学出版社——谭浩强编著 附 录 源程序文献名清单: Familytree.cpp& Familytree.h——主程序实现单元 FileOpenAndSaveDlg.cpp& FileOpenAndSaveDlg.h——文献输入输出实现单元 OperationFamilytree.cpp& OperationFamilytree.h——家谱操作实现单元 StdAfx.cpp& StdAfx.h &Resourse.h——MFC类实现及资源头文献 Familytree.rc& Familytree.rc2& Familytree.ico——资源文献 AddInfoDlg- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家谱 标准 管理 专业 系统 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文