C++-通讯录管理系统_第1页
C++-通讯录管理系统_第2页
C++-通讯录管理系统_第3页
C++-通讯录管理系统_第4页
C++-通讯录管理系统_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学生大作业课程名称:面向对象程序设计(C++)班级:B04学院:信息管理学院2012~2013学年第1学期

项目名称项目名称:通讯录管理系统班级:11信息与计算科学姓名学号:华荣军(0113039)余津先(0113040)叶维拥(0113033)完成时间:2013年1月13号星期日指导教师:杨勇日期:2013年1月13日一、需求分析1.1开发背景当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的原因。计算机的最大好处在于利用它能进行信息处理。使用计算机进行信息控制,不仅提高了工作效率,而且大大地提高了其安全性。尤其对于复杂的信息管理,计算机能充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。随着市场经济的发展和人民生活水平的提高,随着科学技术的发展,计算机领域不断取得新的研究成果。计算机在代替和延伸脑力劳动方面发挥越来越重要的作用,不仅在工业方面而且在日常生活中也越来越离不开计算机。一个学校、企业、单位的通讯录管理系统是一项重要工作。计算机管理通信档案,日常办公,实现现代化办公,分析通信现状通过强大的查询和索检高效地索检出数据,提高办事效率。管理系统是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以人事劳资管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如效率低,保密性差,另外时间一长对于查找、更新和维护都带来了不少困难。另外通讯录在当今的日常生活工作中的应用也是十分普及的。每个人都有可能拥有大量的通讯录资料信息,当前大家一般都用手工来记录所有的通讯录信息。随着时代的进步与发展,人们的联系信息与联系方式变得复杂而多样化,通讯录信息的大量增加,导致管理这些信息资料就成了问题。直接操作来查找、添加、删除和修改这些信息,由于信息数据繁多,工作量十分巨大,查找、编辑都十分困难,而且极易出错,容易造成资料的混乱与者丢失。在各种手机,商务通内设的电话簿尽管携带方便但却又存在“记录量少,界面小,浏览不方便,记录数据信息不全面”的缺点。有些人利用Word或Excel编制通讯录信息,虽然数据比较全面,信息也比较充足,可是查找极其不便,维护起来也麻烦。所以利用C++编程技术,在计算机中建立一个通讯录资料管理系统十分必要。使通讯录资料管理工作规范化、系统化、程序化,避免资料管理中的混乱,提高信息处理的速度和准确性,能够及时、准确、有效地查询、删除和修改通讯录的信息情况。1.2待开发的软件系统系统名称:通讯录管理系统。任务提出者:余津先,华荣军,叶维拥。开发者:余津先,华荣军,叶维拥。用户:所有对通讯录信息管理有需求的人群。1.3项目目标项目的主要目标是开发一个面向个人的通讯录信息管理系统。它能实现个人对通讯录信息的处理,亦即对联系人和联系人群组信息的处理,比如显示、添加、删除、查询、修改等操作。项目具体的功能要求是:通讯信息以文本或二进制的形式存储在文件中,联系人可根据用户需求分为若干群组,每个群组可以使用不同文件,要求能添加、删除或修改联系人记录(姓名,手机,家电,邮箱,群组等),在修改或删除之前需要用户进一步确认,确认无误后再进行操作,一个联系人仅可以存在一个群组之中,删除联系人信息可以仅删除一项也可删除整个联系人信息。还可以添加、删除联系人群组或对群组改名,在删除群组后,该群组中的联系人自动设为无群组的联系人,通讯录按联系人姓名排序。增加查询功能,查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示。1.4运行环境软件环境:运行在Windows软件环境下,如WindowsXP/Windows2000/Win2003。硬件环境:IBM兼容机、IntelPentiumIII800/AMDK7以上处理器、128M以上,486或更高档PC台式机,笔记本电脑;运行时占用内存:大于128MB,安装所需硬盘:大于1G,打印机:可选。二、程序分析2.1技术要点与程序流程图:2.1.1主函数流程图主函数:main()通讯录系统主界面功能:对各个类的成员函数的调用通过设定switch()函数,实现选择功能运用。通过break退出程序。2通讯录修改1通讯录添加按服务需求选择相应功能(0~7)0退出系统7帮助6初始化通讯录5通讯录显示2通讯录修改1通讯录添加按服务需求选择相应功能(0~7)0退出系统7帮助6初始化通讯录5通讯录显示4通讯录查询3通讯录删除进入相应功能的子系统开始进入通讯录管理系统选择界面2.1.2功能项一:通讯录添加流程图函数:1、Addtongxuezu()联系人添加入同学组2、Addqinrenzu()联系人添加亲人组3、Addjiaoshizu()联系人添加入教师组4、Addwumingzu()联系人添加入无名组功能:通过调用上面函数实现联系人的添加。1、通过设定switch()函数,实现选择群组功能运用。2、使用fopen(),fwrite(),rewind()等文件函数新建四个不同的文件并将联系人信息写入四个不同的文件。3、各个群组的联系人不能重复,使用!feof()函数实现对每个文件的遍历查询是否该联系人已经存在。4、通过goto语句返回上一层。功能一:功能一:1.通讯录添加流程图进入子功能选择界面进入子功能选择界面4.无名组3.4.无名组3.教师组2.亲人组1.同学组中文名:中文名:英文名:电话号码:QQ:E-mail:家庭住址:2.1.3功能二:通讯录修改流程图函数:1、Modify();修改联系人信息2、Modifytongxuezu()修改同学组联系人信息3、Modifyqinrenzu()修改亲人组联系人信息4、Modifyjiaoshizu()修改教师组联系人信息5、Modifywumingzu()修改无名组联系人信息功能:通过调用上面函数实现联系人的修改。1、通过设定switch()函数,实现选择群组功能运用。2、运用fopen(),fwrite()等文件函数将联系人信息从文件读取写入。3、通过goto语句返回上一层。功能二功能二:2.通讯录修改流程图4.无名组3.教师组2.亲人组1.4.无名组3.教师组2.亲人组1.同学组进入子功能选择界面1.按群组修改1.按群组修改2.修改联系人英文名:英文名:电话号码:QQ:E-mail:家庭住址:输入新信息中文名不可修改输入新信息中文名不可修改按空格该项不修改输入新信息中文名不可修改按空格该项不修改2.1.4功能三:通讯录删除流程图函数:1、Del()删除联系人信息2、Deltongxuezu()删除同学组3、Delqinrenzu()删除亲人组4、Deljiaoshizu()删除教师组功能:通过调用以上函数实现通讯录的删除功能1、通过设定switch()函数,实现选择功能运用。2、运用fopen(),fwrite(),rewind()等文件函数将联系人信息从文件读取写。3、运用strcmp()、!feof()与文件函数共同查找姓名,strcpy()实现数据的暂存。4、删除的联系人各项信息以“#”的形式覆盖。5、通过goto语句返回上一层。功能三功能三:3.通讯录删除流程图进入子功能选择界面进入子功能选择界面2.删除联系人2.删除联系人1.删除群组输入中文名3.删除教师组输入中文名3.删除教师组2.删除亲人组1.删除同学组以“以“#”覆盖被删除联系人的信息删除指定联系人的信息删除该组所有联系人的信息删除指定联系人的信息删除该组所有联系人的信息删除后的信息放入无名组2.1.5功能四:通讯录查询流程图函数:1、Search()精确查询(中文名查询)(在基类中以虚基函数)Search()粗略查询(英文名首字母查询)(在派生类中)功能:通过调用以上函数实现对通讯录的查询1、通过设定switch()函数,实现选择功能运用。2、运用strcmp()、!feof()等函数共同查找姓名,strcpy()实现数据的暂存。3、!feof()等函数对四个文件进行遍历,查询该联系人,无此联系人输出无此联系人的提示。4、运用fopen(),fwrite(),rewind()等文件函数将联系人信息从文件读取。5、通过goto语句返回上一层。功能四功能四:4.通讯录查询流程图以首字母排序中文名:英文名:电话号码:QQ:E-mail:以首字母排序中文名:英文名:电话号码:QQ:E-mail:家庭住址中文名:英文名:电话号码:QQ:E-mail:家庭住址输出指定联系人信息输出数所有符合要求的联系人信息2.英文名首字母粗略查询1.中文名精确查询进入子功能选择界面2.1.6功能五:通讯录显示流程图函数:1、voidShow()显示通讯录所有联系人的信息2、Showtongxuezu()显示同学组所有联系人的信息3、Showqinrenzu()显示亲人组所有联系人的信息4、Showjiaoshizu()显示教师组所有联系人的信息5、Showwumingzu()显示无名组所有联系人的信息功能:通过调用以上函数实现通讯录联系人的显示1、通过设定switch()函数,实现选择功能运用。2、运用!feof()等函数对文件进行遍历3、运用结构数组sort[]存储各个文件的联系人信息,并进行排序。功能五:1.通讯录显示流程图4功能五:1.通讯录显示流程图进入子功能选择界面进入子功能选择界面2.2.显示所有联系人1.按群组显示3.显示教师组2.3.显示教师组2.显示亲人组1.显示同学组以英文名首字母排序显示该组所有联系人信息并排序以英文名首字母排序显示该组所有联系人信息并排序中文名:电话号码:QQ:E-mail:家庭住址:2.1.7功能六:初始化通讯录流程图函数:InitAll()初始化通讯录全部数据功能:通过调用上面函数实现初始化通讯录1、运用fopen()“wb”打开文件清除文件内的内容,fclose()关闭函数。2、通过goto语句返回上一层。功能六功能六:6.初始化通讯录流程图确定初始化通讯录?(Y确定初始化通讯录?(Y或N)90()NYNY初始化通讯录失败初始化通讯录失败初始化通讯录成功2.1.8功能七:帮助流程图函数:1、Index()检索 2、About()关于版权功能:通过调用以上函数了解该系统的使用方法及版权1、cout的充分利用,以文字告诉使用者该系统的不完善性和实用性。功能七:7.帮助流程图功能七:7.帮助流程图进入子功能选择界面进入子功能选择界面2.版权2.版权1.检索2.1.9功能八:退出函数:Exit()退出通讯录管理系统功能:通过调用上面函数实现退出通讯录管理系统1、cout提示信息,正在退出系统。2、break跳出switch()退出系统。2.2通讯录管理系统项目任务书2.2.1基本功能要求1、通讯信息以文本或二进制的形式存储在文件中。2、联系人可根据用户需求分为若干群组,每个群组可以使用不同文件,要求能添加、删除或修改联系人记录(姓名,手机,家电,邮箱,群组等)。3、在修改或删除之前需要用户进一步确认,确认无误后再进行操作4、一个联系人仅可以存在一个群组之中,修改联系人信息可以仅修改一项也可修改整个联系人信息。还可以添加、删除联系人群组。5、在删除群组后,该群组中的联系人自动设为无群组的联系人。6、通讯录按联系人姓名排序。增加查询功能,查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示。2.2.2组员分工安排。华荣军:1、程序方面:通讯录添加函数、通讯录修改函数、初始化通讯录函数及各组员所写函数的组装。2、报告方面:报告第二部分程序分析及各组员所写报告的组合排版。余津先:1、程序方面:通讯录查询函数、通讯录显示函数。2、报告方面:报告第一部分需求分析、第三部分技术路线及个人感想。叶维拥:1、程序方面:通讯录删除函数、帮助函数、退出函数。2、报告方面:报告第四部分工程进度、报告第五部分测试分析及个人感想。三、技术路线3.1项目总体方案3.1.1采用的软件及开发平台在WindowsXP、Win7或Win8的环境下,采用的是Microsoft公司的VisualC++作为开发平台。利用面向对象的思想实现一个个人通讯录的管理系统,具体使用了:体现OOP的抽象、封装、继承、多态4种关键技术构造了基于人们生活状况的习惯建立的个人信息联系网,使一个人的联系网更加方便,快捷,清晰。3.1.2总体方案1、设置一个person的结构体,里面含有联系人的记录,分别为中文名、英文名、电话号码、QQ、E-mail以及家庭住址。2、设置一个基类contactperson(联系人),它的保护成员是一个person的结构体,再由这个基类派生出一个派生类group(联系人群组)。3、我们可以在此基础之上设立一个通讯录管理操作系统界面。4、我们建立了联系人和联系人群组的管理操作系统。5、我们通过主函数对两个类的成员函数实现管理。实现添加联系人的英文姓名,中文姓名,电话,QQ、E-mail以及家庭住址到各个联系人群组,联系人信息的修改、删除、显示和精确查询;实现分群组对各联系人群组记录的修改,显示,粗略查询,删除以及其它功能:初始化,检索,关于版权,退出。综上所述详细的概括:结构体包含联系人的所有记录:中文名、英文名、电话号码、QQ、E-mail以及家庭住址。2、基类contactperson中把结构体person的所有内容作为它的保护成员,亦即定义成personp来实现。同时设定Addtongxuezu、Modify、Del、Show、Search等函数实现添加联系人记录、修改、删除、显示、精确查询等功能。3、派生类group(联系人群组),我们设定Modifytongxuezu、Showqinrenzu、Deltongxuezu、Search、InitAll等函数实现联系人群组的相关记录修改、删除、粗略查询、显示、初始化等功能。派生类:group派生类:group成员函数:Modifytongxuezu() Modifyqinrenzu() Modifyjiaoshizu()Modifywumingzu()Showtongxuezu()Showqinrenzu()Showjiaoshizu()Showwumingzu()Deltongxuezu()Delqinrenzu() Deljiaoshizu()Search() InitAll()结构体:结构体:person包含信息:ename(英文名)、cname(中文名)、phone(电话号码)qq(QQ)、email(E-mail)、address(家庭住址)基类:基类:contactperson保护成员:personp成员函数:Addtongxuezu()、Addqinrenzu()、Addjiaoshizu()、Addwumingzu()、Modify()、Del()virtualSearch()、Show()3.2详细设计1、通过将联系人的各项记录设置成一个结构体,这样在定义基类person的保护对象时就可以直接定义成personp,这样在基类contactpeson和派生类group进行相关操作时能全部调用到结构体里的所有记录2、(1)基类contactpesond的保护对象为结构体person的所有内容;(2)同时在contactpesond类里定义了一系列的函数:Addtongxuezu()、Addqinrenzu()、Addjiaoshizu()、Addwumingzu()、Modify()、Del()、Show()、Search()用来实现各项功能;(3)intAddtongxuezu():首先输入准备添加进同学组的联系人记录中的中文名字,通过打开同学组、亲人组、教师组以及无名组联系人的文件,将此中文姓名与各文件记录里的中文姓名相比较。如果strcmp函数匹配一致,则跳出并显示该联系人数据已经存在,并询问是否输入其他联系人的记录,此做法一是为了防止一个联系人信息被屡次存储,占用存储空间,二是避免同名的人存储,使得查询的重复项太大,降低了查询效率。每添加完一个联系人记录,则把它写进同学组的文件中。并通过返回值来决定是否继续输入还是返回主界面。(4)intAddqinrenzu():首先输入准备添加进亲人组的联系人记录中的中文名字,其它的操作和添加进同学组时的操作一样,每添加完一个联系人记录,则把它写进亲人组的文件中。并通过返回值来决定是否继续输入还是返回主界面。(5)intAddjiaoshizu():首先输入准备添加进教师组的联系人记录中的中文名字,其它的操作和添加进同学组时的操作一样,每添加完一个联系人记录,则把它写进教师组的文件中。并通过返回值来决定是否继续输入还是返回主界面。(6)intAddwumingzu():首先输入准备添加进无名组的联系人记录中的中文名字,其它的操作和添加进同学组时的操作一样,每添加完一个联系人记录,则把它写进无名组的文件中。并通过返回值来决定是否继续输入还是返回主界面。(7)intModify():首先输入想要修改的联系人的中文名,然后逐个文件地找该联系人的记录,如果中文名在所有文件中匹配不上,则显示该联系人不存在,并询问是否继续输入进行修改。如果有相匹配的,则在屏幕上显示出该联系人的所有信息记录,并询问是否确定要修改该联系人的记录来避免一些失误性的修改的发生,充分体现大众化和人性化的特征。如果确定是要进行修改,则会逐项信息的进行显示出来,如果需要修改(其中中文名是不可修改项)则输入新值,否则可以直接按回车键。最后通过返回值来确定继续修改还是返回主界面。(8)intDel():首先输入想要删除的联系人的中文名,然后逐个文件地找该联系人的记录,如果中文名在所有文件中匹配不上,则显示该联系人不存在,并询问是否继续输入进行删除。如果有相匹配的,则在屏幕上显示出该联系人的所有信息记录,并询问是否确定要删除该联系人的记录来避免一些失误性的删除的发生,充分体现大众化和人性化的特征。通过对需要删除的联系人的记录用“#”来覆盖,已达到删除该联系人所有记录的目的。最后通过返回值来确定继续删除还是返回主界面。(9)voidShow():通过打开各联系人群组的文件,用一个person新建的结构体来存放里面的所有记录,最后通过排序的方法来将所有记录按英文名的字典顺序来依次显示出来。最后可以按任意键返回主界面。(10)virtualintSearch():该函数为精确查询,将它设置成虚基类是想利用C++的多态性,因为派生类group里也有一个Search函数,最后通过指针来调用。首先输入想要查询的联系人的中文名,然后逐个文件地找该联系人的记录,如果中文名在所有文件中匹配不上,则显示该联系人不存在,并询问是否返回原查询界面进行查询。如果有相匹配的,则在屏幕上显示出该联系人的所有信息记录。最后通过返回值来确定继续删除还是返回主界面。3、(1)在group类里定义了一系列的函数:Modifytongxuezu()、Modifyqinrenzu()、Modifyjiaoshizu()、Modifywumingzu()、Showtongxuezu()、Showqinrenzu()、Showjiaoshizu()、Showwumingzu()、Deltongxuezu()、Delqinrenzu()、Deljiaoshizu()、Search()、InitAll()、Index()、About()、Exit(),用来实现各项功能。(2)intModifytongxuezu():首先打开同学组联系人的文件,如果文件为空,则显示该组记录为空,然后可以按任意键返回主界面。否则先输入想要修改的联系人的中文名,如果该联系人中文名在该文件中得不到匹配,则显示该联系人不存在,并询问是否继续输入进行修改。如果找到相关记录,则在屏幕上显示该联系人的所有记录,并询问是否确定要修改该联系人的记录来避免一些失误性的修改的发生,充分体现大众化和人性化的特征。如果确定是要进行修改,则会逐项信息的进行显示出来,如果需要修改(其中中文名是不可修改项)则输入新值,否则可以直接按回车键。最后通过返回值来确定继续修改还是返回主界面。(3)intModifyqinrenzu():首先打开亲人组联系人的文件,如果文件为空,则显示该组记录为空,然后可以按任意键返回主界面。否则先输入想要修改的联系人的中文名,如果该联系人中文名在该文件中得不到匹配,则显示该联系人不存在,并询问是否继续输入进行修改。如果找到相关记录,其它操作和在同学组修改的一样。最后通过返回值来确定继续修改还是返回主界面。(4)intModifyjiaoshizu():首先打开教师组联系人的文件,如果文件为空,则显示该组记录为空,然后可以按任意键返回主界面。否则先输入想要修改的联系人的中文名,如果该联系人中文名在该文件中得不到匹配,则显示该联系人不存在,并询问是否继续输入进行修改。如果找到相关记录,其它操作和在同学组修改的一样。最后通过返回值来确定继续修改还是返回主界面。(5)intModifywumingzu():首先打开无名组联系人的文件,如果文件为空,则显示该组记录为空,然后可以按任意键返回主界面。否则先输入想要修改的联系人的中文名,如果该联系人中文名在该文件中得不到匹配,则显示该联系人不存在,并询问是否继续输入进行修改。如果找到相关记录,其它操作和在同学组修改的一样。最后通过返回值来确定继续修改还是返回主界面。(6)voidShowtongxuezu():通过打开同学组的文件,用一个person新建的结构体来存放里面的所有记录,最后通过排序的方法来将所有记录按英文名的字典顺序来依次显示出来。最后可以按任意键返回主界面。(7)voidShowqinrenzu():通过打开亲人组的文件,用一个person新建的结构体来存放里面的所有记录,最后通过排序的方法来将所有记录按英文名的字典顺序来依次显示出来。最后可以按任意键返回主界面。(8)voidShowjiaoshizu():通过打开教师组的文件,用一个person新建的结构体来存放里面的所有记录,最后通过排序的方法来将所有记录按英文名的字典顺序来依次显示出来。最后可以按任意键返回主界面。(9)voidShowwumingzu():通过打开无名组的文件,用一个person新建的结构体来存放里面的所有记录,最后通过排序的方法来将所有记录按英文名的字典顺序来依次显示出来。最后可以按任意键返回主界面。(10)intDeltongxuezu():首先打开同学组联系人的文件,如果文件为空,则显示该组记录为空,然后可以按任意键返回主界面。否则用一个person新建的结构体来存放里面的所有记录,并询问是否确定要删除该联系人群组的所有记录来避免一些失误性的删除的发生,充分体现大众化和人性化的特征。如果确定,则将会把该群组所有联系人信息全部删掉,并写进无名组中。最后可以按任意键返回主界面。(11)intDelqinrenzu():首先打开亲人组联系人的文件,如果文件为空,则显示该组记录为空,然后可以按任意键返回主界面。否则用一个person新建的结构体来存放里面的所有记录,并询问是否确定要删除该联系人群组的所有记录来避免一些失误性的删除的发生,充分体现大众化和人性化的特征。如果确定,则将会把该群组所有联系人信息全部删掉,并写进无名组中。最后可以按任意键返回主界面。(12)intDeljiaoshizu():首先打开教师组联系人的文件,如果文件为空,则显示该组记录为空,然后可以按任意键返回主界面。否则用一个person新建的结构体来存放里面的所有记录,并询问是否确定要删除该联系人群组的所有记录来避免一些失误性的删除的发生,充分体现大众化和人性化的特征。如果确定,则将会把该群组所有联系人信息全部删掉,并写进无名组中。最后可以按任意键返回主界面。(13)intSearch():该函数为粗略查询,将它设置成虚基类是想利用C++的多态性,因为基类contactperson里也有一个Search函数,最后通过指针来调用。首先输入想要查询的联系人的英文名的首字母,然后逐个文件地找该联系人的记录,如果英文名德首字母在所有文件中匹配不上,则显示通讯录中没有该字母开头的联系人,并询问是否返回原查询界面进行查询。如果有相匹配的,则在屏幕上显示出所有以该字母开头的英文名的所有联系人信息记录。最后通过返回值来确定继续删除还是返回主界面。(14)voidInitAll():首先显示初始化会初始化全部信息数据,并询问是否确定要进行初始化来避免一些失误性的初始化的发生,充分体现大众化和人性化的特征。如果确定,则将会把该通讯录所有联系人信息全部初始化。否则显示初始化不成功,最后可以按任意键返回主界面。(15)voidIndex():显示出检索系统繁忙,请稍后再检索,并可以按任意键返回主界面。(16)voidAbout():显示出该通讯录管理系统的版权相关情况,并可以按任意键返回主界面。(17)voidExit():实现该通讯录管理系统的退出功能,显示系统正在退出,按任意键即会结束所有操作。四、工程进度工程进度表工程情况日期计划完成的工作实际完成情况工作中的收获(想法)2012—12—30构思出整体架构完成整体架构的构建对系统的整个框架应该有一个整体、系统的思维2012—12—31完成添加函数报告第一部分完成报告第一部分添加函数完成一部分很多看似简单的东西,写出来时却困难重重2013—1—1完成修改函数、查询函数、删除函数完成添加函数及一部分修改、查询函数对文件的操作还不够了解,需要多学习2013—1—2完成初始化函数帮助函数、退出函数、完成查询函数、帮助函数、退出函数及一部分删除函数对文件的操作有了一些了解,比如goto语句和在读文件之后最好加一句fread(…),以防多读一次2013—1—12完成显示函数和报告第二部分完成修改函数、初始化函数、删除函数及显示函数在做显示函数时需要用到排序,需要用一个person新建的结构体数组来存放原有的记录2013—1—13完成报告其余部分完成所有任务团队精神真的很重要,而且“实践是检验真理的唯一标准”五、测试分析5.1阶段性测试5.1.1通讯录添加阶段性测试5.1.2通讯录修改阶段性测试5.1.3通讯录删除阶段性测试5.1.4通讯录查询阶段性测试5.1.5通讯录显示阶段性测试5.1.6初始化通讯录阶段性测试5.2总体测试在程序基本设计好的时候,我们对整个程序进行了一次比较系统的测试,对各个系统的主要功能也都用数据进行了检测,以确保程序的正确性,同时希望程序能够完成对通讯录信息的1.通讯录添加2.通讯录修改3.通讯录删除4.通讯录查询5.通讯录显示6.初始化通讯录(慎用)7.帮助8.退出系统此次测试是在2013年1月12日晚上进行的、以下是这次测试的具体结果:运行该程序,首先进入的是通讯录信息管理系统的主界面,该界面给出了各个系统功能的介绍,并提示使用者该如何进入功能操作系统。5.2.1通讯录添加功能测试通过系统主界面选择功能键1,进入群组文件管理子系统,同样系统界面给出了提示操作的选择项,根据选择项,我们选择了以1号功能为例对系统进行了测试。测试结果如下图所示,依次输入联系人的相关信息,通过该系统就能对该联系人的信息进行统一输入。1、通过选择1,进入通讯录添加界面,按要求添加联系人1.1选择1,进入通讯录同学组信息输入界面得到以下的通讯录同学组信息输入成功界面1.2选择2进入通讯录亲人组信息输入界面得到以下通讯录亲人组信息输入成功界面1.3选择3,进入通讯录教师组信息输入界面得到以下通讯录教师组信息输入成功界面1.4选择4,进入通讯录无名组信息输入界面得到以下通讯录无名组信息输入成功界面1.0选择0返回主界面进行其他操作5.2.2通讯录修改功能测试2、通过选择2,进入通讯录修改界面,按要求修改2.1选择1,进入按群组修改通讯录联系人界面2.1.1选择1,进入同学组联系人修改界面得到以下联系人修改成功界面其他的选择后的结果类似以上结果2.2选择2,进入修改联系人界面得到以下信息是否修改界面与用户修改的界面2.0选择0,返回主界面5.2.3通讯录删除功能测试选择3,进入通讯录删除界面,按要求进行删除联系人操作3.1选择1,进入通讯录删除选择界面3.1.1选择1,根据用户需求删除同学组里面的联系人信息选择其他选项得到类似结果3.2选择2,进入删除联系人界面得到以下界面3.0选择0,返回主界面5.2.4通讯录查询功能测试选择4,进入通讯录查询界面4.1选择1,进入中文名精确查询界面得到查找的联系人的信息的界面如下其他的查询界面类似4.0选择0,返回主界面5.2.5通讯录显示功能测试5选择5,进入通讯录显示界面5.1选择1,得到按群组显示联系人的信息界面5.1.1选择1,显示同学组里的联系人信息其他的选项类似5.2,选择2,得到所有联系人的信息的界面5.0选择0,返回主界面5.2.6初始化通讯测试6、选择6,进入初始化通讯录界面5.2.7帮助功能测试7、选择7,进入帮助,得到通讯录管理系统界面7.2进入版权界面5.2.8退出通讯管理系统测试0.选择0,得到通讯录管理系统退出界面六、个人小结6.1余津先个人小结这次的大作业,真的让我受益匪浅。不管是课程知识上的学习运用,还是处理事情上的收获,我觉得自己已经在这个过程中汲取了很多,也成长了不少。其实刚开始接触大作业,我并没有抱着很简单、很容易的态度,尽管对自己来说,平常的一些编程都没有太大的问题。可事情来得比我想象中还要难得多,起初我跟其他组员都认为,只要把主函数写出来,也就是把主界面的框架弄出来,其他一切操作就都可以比较容易地写出来。可是看着题目的功能要求,我们在第一步的时候就被卡住了好久。因为里面不仅仅是有联系人的操作,还有关于群组的操作,里面的关系错综复杂。这就要求我们不能只是以平常写函数的那种想法去思考,而是从整体去考虑,从“系统”去把握。然后就是好多看起来很简单的操作,在经过思考和实际操作时才知道困难重重,比如我们通讯录里的四个群组都需要相对应地建一个文件,然后在文件中进行联系人和联系人群组的添加、修改、查询、删除等操作。还有就是在如何运用我们所学的知识上也遇到了困难,像虚基类的多态、继承等关系。总之我觉得一切都得从整体去考虑,得对整个流程有个系统的掌握。然后在其他方面,我觉得自己也成长了不少。比如好多在我自己脑海里觉得可以行得通的东西,毫无差错,但是当自己把它写出来经运行时才发现错误一大堆。然后在调试的过程中,就需要自己调动各方面的学习能力来解决,问同学、看参考书、上网查资料、自己不断调试改正错误,而我就是在这各个方面不断地充实自己。而且我也强烈地感受到了团队的力量,因为我和其他组员都是进行分工合作,每个人完成一些操作的函数,然后再发到一个人那里进行汇总修改;而且像实验报告也是一样,每个人完成一些内容,然后再进行汇总排版。然后在这些过程中,我们组员之间就会一起讨论自己的想法,一起探讨更好的方法,一起相互鼓励,最终才有了之后的成果。或许这次的大作业花掉了自己好多的时间和精力,但我只想说我真的无悔,因为重要的就是这个过程,只有经历过了这一个个磨练,自己才能在不断充实自己后涅槃。人生其实就像在编一个个大作业,从什么都不懂到有了想法,从有了想法到把它实践出来,从发现错误再到不断调试、修改、前进这过程中有迷惘,有无知,也有过失落想放弃,可陪伴你的是你的团队,是你的成长与成熟!很多东西经历过了,才会知道最终值不值得,可是最关键的还是享受这个过程,难道不是吗?!6.2叶维拥个人小结通过完成本次面向对象程序设计的任务,既复习了以前的旧知识,又学到了一些新的知识;增强了我们用所学知识去解决具体问题的能力,使我熟练和掌握了这学期所学的有关visualc++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力,培养了我们独立思考问题和解决问题的能力。当然,此次任务的完成,也体现出同学之间的团结精神。所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。“实践是检验真理的唯一标准”。没有实践,就不会发现和深刻体会它的真实所在。只有通过检验的真理,在自己的心里,才会认可它的真实性。面向对象程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。理论的拥有并不能代表我们的实力和能力,一切的事件和其成功都是理论和实践的结合。总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。整体地评价这次课程设计,我认为收获很大。6.3华荣军个人小结这次大作业说实话从组队到完成,实在是不容易,刚开始我以为很容易就能写出来可是现实总是残酷的。我是负责写最主要的几个函数的,这几个函数写不出来这个程序也就写不出来!第一天我上网找了很多的资料,基本上什么搜索引擎都用过了,从中也学会了很多搜索的技巧。后来参考了上学期写过的c语言系统,了解了文件的用法,加上和队友讨论很久才讨论出的整体构架,我在经历心烦意乱的一整天,在30号晚上熬夜把通讯录添加函数写出来了,此时我因为一整天对着电脑,眼睛都已经花了。不过因为写出了添加函数还是“痛并快乐着”睡着了。写出添加函数后,给后面队友写函数打下了基础,队友也开始写函数了,并且都比较顺利,途中遇到问题我们相互讨论,在错中找对,在对中找错,不断地测试数据,将问题一一解决。全部函数写完后,他们都将函数发给了我,我又仔细的分析他们的算法,改正其中的小问题,不断地检验算法的正确性,经历了一个多星期,终于将程序组装完成了,看着我们写了两个多星期的程序,我真的特别高兴。用了整整一天的时间将队友写得报告排版,现在在这最后写着我的感想,回顾之前的种种艰辛,熬过夜,不想写过,生过气。而今看着完成的程序,心里有着莫名的骄傲!经过这次大作业我真正的感受到了C++的魅力,它能让一个人一天天的对着而不生厌烦。这次大作业中,我学会了很多课堂上没有学过的写法,查到过好多有关C++的知识,让我对C++有了全新的认识,对文件的掌握也更加牢固了。同时也体验到了网络的强大,网络就是一个百科平台,资料应有尽有,而从包罗万象的资料中寻找自己所修要的资料也渐渐地锻炼了我的洞察力。总而言之,通过这次大作业,我发现我的潜力还是很大的,同时危机感也是蛮重的,在这之前,我是没有自己认真写过这么长的系统的,总认为自己没有能力,非常没有把握,只是想到网上找些完好的程序,可是当压迫感来临时,

当发现网上提供的程序都不能解决问题时,才开始自己写,当自己静下心来写时,才发现,原来自己还是有那个能力的,虽然还是有好多是借鉴的网上的资料和以前写过的程序。这次大作业,让自己意识到自己所掌握的知识是远远不够的。附录一:程序代码定义的结构体和类放于“DefineStructAndClass.h”头文件进行封装处理。structperson//结构体{charename[20];/*英文名*/ charcname[20];/*中文名*/ charphone[12];/*电话号码*/ charqq[15];/*QQ*/ charemail[20];/*E-mail*/ charaddress[100];/*家庭住址*/};classcontactperson{/*联系人类*/protected: personp;public: intAddtongxuezu();//联系人添加入同学组 intAddqinrenzu();//联系人添加亲人组 intAddjiaoshizu();//联系人添加入教师组 intAddwumingzu();//联系人添加入无名组 intModify();//修改联系人信息 intDel();//删除联系人信息 voidShow(); virtualintSearch();//精确查询(中文名查询)};classgroup:publiccontactperson{//联系人分组类public: intModifytongxuezu();//修改同学组联系人信息 intModifyqinrenzu();//修改亲人组联系人信息 intModifyjiaoshizu();//修改教师组联系人信息 intModifywumingzu();//修改无名组联系人信息 voidShowtongxuezu();//显示同学组 voidShowqinrenzu();//显示亲人组 voidShowjiaoshizu();//显示教师组 voidShowwumingzu();//显示无名组 intDeltongxuezu();//删除同学组 intDelqinrenzu();//删除亲人组 intDeljiaoshizu();//删除教师组 intSearch();//粗略查询(英文名首字母查询) voidInitAll();//初始化全部数据 voidIndex();//检索 voidAbout();//关于版权 voidExit();//退出};主函数—(主菜单函数)放于“MainMenuFunction.cpp”文件进行封装。#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#defineTRUE1#defineFALSE0usingnamespacestd;#include"DefineStructAndClass.h"//主函数首页voidmain(){ groupG;contactpersonCp,*C; charselect;F:system("cls"); cout<<endl<<endl; cout<<"\t\t"<<endl <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl <<"\t\t※※"<<endl <<"\t\t※※"<<endl <<"\t\t※通迅录管理系统※"<<endl <<"\t\t※※"<<endl <<"\t\t※1.通讯录添加2.通讯录修改※"<<endl <<"\t\t※※"<<endl <<"\t\t※3.通讯录删除4.通讯录查询※"<<endl <<"\t\t※※"<<endl <<"\t\t※5.通讯录显示6.初始化通讯录(慎用)※"<<endl <<"\t\t※※"<<endl <<"\t\t※7.帮助0.退出系统※"<<endl <<"\t\t※※"<<endl <<"\t\t※※"<<endl <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl <<"\t\t"<<endl <<"\t\t请选择数字:"; cin>>select; if(select<'0'||select>'7') { system("cls"); cout<<"\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl; cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); gotoF; } switch(select) { case'1': {F1:system("cls"); cout<<"\n\n\t\t\t\t添加联系人"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.同学组"<<endl<<endl; cout<<"\t\t\t\t2.亲人组"<<endl<<endl; cout<<"\t\t\t\t3.教师组"<<endl<<endl; cout<<"\t\t\t\t4.无名组"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; cout<<"\t\t\t请选择添加入的组别:"; charselect1; cin>>select1; if(select1<'0'||select1>'4') { system("cls"); cout<<"\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl; cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); gotoF1; } switch(select1) { case'1': { if(G.Addtongxuezu()) gotoF1; gotoF; } case'2': { if(G.Addqinrenzu()) gotoF1; gotoF; } case'3': { if(G.Addjiaoshizu()) gotoF1; gotoF; } case'4': { if(G.Addwumingzu()) gotoF1; gotoF; } case'0': { gotoF; } } } case'2': {F2: system("cls"); cout<<"\n\n\n\t\t\t\t通讯录修改"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.按群组修改"<<endl<<endl; cout<<"\t\t\t\t2.修改联系人"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; charselect2; cout<<"\t\t\t\t请选择数字:"; cin>>select2; if(select2<'0'||select2>'2') { system("cls"); cout<<"\n\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl; cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); gotoF2; } switch(select2) { case'1': { charsel2; while(1) { system("cls"); cout<<"\n\n\n\t\t\t\t通讯录修改"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.修改同学组联系人"<<endl<<endl; cout<<"\t\t\t\t2.修改亲人组联系人"<<endl<<endl; cout<<"\t\t\t\t3.修改教师组联系人"<<endl<<endl; cout<<"\t\t\t\t3.修改无名组联系人"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; cout<<"\t\t\t\t请选择数字:"; cin>>sel2; if(sel2<'0'||sel2>'4') { system("cls"); cout<<"\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl;cout<<"\t\t\t**********************************"<<endl<<endl;cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl;cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); } else break; } switch(sel2) { case'1': { if(!G.Modifytongxuezu()) gotoF; } case'2': { if(!G.Modifyqinrenzu()) gotoF; } case'3': { if(!G.Modifyjiaoshizu()) gotoF; } case'4': {if(!G.Modifywumingzu()) gotoF; } case'0': { gotoF2; } } } case'2': { if(!G.Modify()) gotoF; } case'0': { gotoF; } } } case'3': {F3: system("cls"); cout<<"\n\n\n\t\t\t\t通讯录删除"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.删除群组"<<endl<<endl; cout<<"\t\t\t\t2.删除联系人"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; charselect3; cout<<"\t\t\t\t请选择数字:"; cin>>select3; if(select3<'0'||select3>'2') { system("cls"); cout<<"\n\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl; cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); gotoF3; } switch(select3) { case'1': { charsel3; while(1) { system("cls"); cout<<"\n\n\n\t\t\t\t通讯录删除"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.删除同学组"<<endl<<endl; cout<<"\t\t\t\t2.删除亲人组"<<endl<<endl; cout<<"\t\t\t\t3.删除教师组"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; cout<<"\t\t\t\t请选择数字:"; cin>>sel3; if(sel3<'0'||sel3>'3') { system("cls"); cout<<"\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl;cout<<"\t\t\t**********************************"<<endl<<endl;cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl;cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); } else break; } switch(sel3) { case'1': { if(G.Deltongxuezu()) gotoF; gotoF; } case'2': { if(G.Delqinrenzu()) gotoF; gotoF; } case'3': { if(G.Deljiaoshizu()) gotoF; gotoF; } case'4': { gotoF; } case'0': { gotoF3; } } } case'2': { if(!G.Del()) gotoF; } case'0': { gotoF; } } } case'4': {F4: system("cls"); cout<<"\n\n\n\t\t\t\t通讯录查询"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.中文名精确查询"<<endl<<endl; cout<<"\t\t\t\t2.首字母粗略查询"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; charselect4; cout<<"\t\t\t\t请选择数字:"; cin>>select4; if(select4<'0'||select4>'2') { system("cls"); cout<<"\n\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl; cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); gotoF4; } switch(select4) { case'1': { C=&Cp; if(C->Search()) gotoF4; gotoF; } case'2': { C=&G; if(C->Search()) gotoF4; gotoF; } case'0': { gotoF; } } } case'5': {F5: system("cls"); cout<<"\n\n\n\t\t\t\t通讯录显示"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.按群组显示"<<endl<<endl; cout<<"\t\t\t\t2.显示所有联系人"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; charselect5; cout<<"\t\t\t\t请选择数字:"; cin>>select5; if(select5<'0'||select5>'2') { system("cls"); cout<<"\n\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl; cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); gotoF5; } switch(select5) { case'1': { charsel5; while(1) { system("cls"); cout<<"\n\n\n\t\t\t\t通讯录显示"<<endl; cout<<"\t\t\t********************************"<<endl<<endl; cout<<"\t\t\t\t1.显示同学组"<<endl<<endl; cout<<"\t\t\t\t2.显示亲人组"<<endl<<endl; cout<<"\t\t\t\t3.显示教师组"<<endl<<endl; cout<<"\t\t\t\t4.显示无名组"<<endl<<endl; cout<<"\t\t\t\t0.返回上一层菜单"<<endl<<endl; cout<<"\t\t\t********************************"<<endl; cout<<"\t\t\t\t请选择数字:"; cin>>sel5; if(sel5<'0'||sel5>'4') { system("cls"); cout<<"\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl;cout<<"\t\t\t**********************************"<<endl<<endl;cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl;cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); } else break; } switch(sel5) { case'1': { G.Showtongxuezu(); gotoF; } case'2': { G.Showqinrenzu(); gotoF; } case'3': { G.Showjiaoshizu(); gotoF; } case'4': { G.Showwumingzu(); gotoF; } case'0': { gotoF5; } } } case'2': { G.Show(); gotoF; } case'0': { gotoF; } } } case'6': { G.InitAll(); gotoF; } case'7': { charselect7;F7: system("cls"); cout<<"\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t\t1.检索"<<endl<<endl <<"\t\t\t\t2.关于版权"<<endl<<endl <<"\t\t\t\t0.返回上一层菜单"<<endl; cout<<endl<<"\t\t\t**********************************"<<endl; cout<<"\t\t\t\t请选择数字:"; cin>>select7; if(select7<'0'||select7>'2') { system("cls"); cout<<"\n\n"<<endl; cout<<"\t\t\t\t通讯录管理系统"<<endl; cout<<"\t\t\t**********************************"<<endl<<endl; cout<<"\t\t\t你选择的数字不在选择的范围!"<<endl<<endl; cout<<"\t\t\t按任意键返回界面重新选择!"<<endl<<endl; cout<<"\t\t\t**********************************"; getch(); gotoF7; } switch(select

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论