vc++ 图书管理系统课程设计报告.doc_第1页
vc++ 图书管理系统课程设计报告.doc_第2页
vc++ 图书管理系统课程设计报告.doc_第3页
vc++ 图书管理系统课程设计报告.doc_第4页
vc++ 图书管理系统课程设计报告.doc_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

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

文档简介

一 系统分析阶段一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。一个最典型的手工处理还书过程就是:读者将要借的书和借阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借阅证放在一个小格栏里,并在借阅证和每本书贴的借阅条上填写借阅信息。这样借书过程就完成了。还书时,读者将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息,这样还书过程就完成了。以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。本次 课程设计题目:“图书管理系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。同时对整个系统的分析、设计过程给出一个完整论证。图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。本系统的设计主要从以下几方面做起:系统业务流程分析、系统的功能设计、系统的数据库结构设计、系统输入/输出设计等。作这些工作需对数据库知识有足够认识,并深入的了解VC+6.0的使用和管理系统的相关知识。 二 需求分析阶段需求分析是在于要弄清用户对开发的数据库应用系统的确切要求。Visual C+ 数据库设计的第一步是明确数据库的目的和如何使用。也就是说需要从数据库中得到哪些信息。明确目的之后,就可以确定您需要保存哪些主题的信息(表),以及每个主题需要保存哪些信息(表中字段)。要设计一个有效的数据库,必须用系统工程的观点来考虑问题。在系统分析阶段,设计者和用户双方要密切合作,共同收集和分析数据管理中信息的内容和用户对处理的要求。根据系统分析,图书管理系统的要求如下 :(1)需求分析: 能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除; 能够实现对读者档案的查询和编辑管理; 能够进行罚款功能; 能够进行借阅历史的查询功能;(2)系统性能要求: 系统安全、可靠; 功能齐全; 操作方便、界面友好; 易于维护和扩充。(3)系统的功能分析:密码设置:每个操作员均有自己的密码,可以防止非本系统人员进入本系统;又因每个人的权限不一致,故可以防止越权操作。资料维护:为了存放图书、读者档案的全部数据,本系统将每一本图书和每位读者的信息进行管理。系统维护包括对各种表记录的修改、删除、添加等操作。系统查询:可以按图书编号、借阅证编号等相关信息进行查询系统管理:进行员工管理、数据备份和数据恢复。报表统计:包括统计图书信息、读者信息、借阅信息和罚款信息等。其它操作:包括修改密码、添加用户、页面设置等2.1系统功能模块图书管理系统需要实现的功能主要有四大块:“日常工作管理”、“基本资料维护”、“查询”、和“系统管理”模块。其中日常工作管理和基本资料维护是整个系统的核心。2.1.1 功能的实现:1“日常工作”模块:(1) 借书处理:主要功能是记录借阅证编号和图书编号,进行借书过程。在数据库中插入一条借书记录,该记录包括读者ID、图书ID、借出日期、还书期限、操作员姓名。(2) 还书处理:主要功能是输入借阅证编号、图书ID,在借阅登记表中找到相应的记录,将该记录的相应数据插入到还书记录中,同时将借书记录删除,并保存在借阅历史记录表中。(3) 缴纳罚金:输入读者ID,显示该读者的姓名、图书编号、罚款金额和罚款原因,如果读者交纳了罚金,则将借阅登记表的允许借阅标志置为“Y”。删除罚款记录表中该读者对应的记录,将这一条记录同时插入到罚款历史记录表中。2“基本资料维护”模块:(1)图书资料维护:包括新书的入库,以及现有书籍资料的修改和删除。(2)读者资料维护:包括新会员的资料入库,以及现有会员资料的修改和删除3“查询”模块:(1)图书资料查询:根据相应的图书信息对所有书籍进行所需查询。此查询包括:图书分类、图书编号、图书名称、作者、出版社。(2)读者资料查询:根据相应的读者资料进行所需查询。 借阅证编号、读者姓名、身份证编号以及止借标志。(3)借阅历史记录查询:根据相应的借阅信息进行所需查询。此查询包括:借阅证编号、图书编号、借书日期、还书日期。(4)罚款历史记录查询:根据相应的罚款信息进行所需查询。此查询包括:借阅证编号、罚款日期、罚款原因。2.1.2 模块框架图图书管理系统数据恢复 系统管理查 询基本资料维护日常工作系统登录借书处理还书处理缴纳罚金罚款历史维护借阅历史维护读者资料查询图书资料查询图书资料维护读者资料维护图2-1 模块框架图2.2系统数据分析通过对图书管理系统的分析,可以得出该系统涉及三个实体:读者、图书、工作人员。通过对各实体数据关系的整理,我们可以画出如下ER图: 读者借阅还书管理员还书图 书图2-2 系统E-R图这些实体涉及的数据项有:读者:借阅证编号、姓名、身份证号、最大借书数、止借标志。图书:图书编号、图书名称、作者、出版社、价格、库存量。工作人员:员工编号、员工姓名、员工性别、身份证号、登陆密码。实体之间的联系涉及的数据项有:借阅信息表:借阅证编号,图书编号1,图书编号2,图书编号3,借书日期1,借书日期2,借书日期3,操作员姓名。罚款信息表:借阅证编号,读者姓名,图书编号,图书名称,罚款原因,罚款金额,罚款日期,操作员姓名。三 设计阶段3.1概要设计3.1.1系统数据库设计1图书信息数据表图书信息数据表的主要功能在于新书入库以及保存在库图书的主要信息和相关信息,包括:图书编号、图书名称、作者、出版社、单价以及库存量字段名称字段类型字段大小索引必须填写BOOK_ID文本30有(无重复)是BOOK_NAME文本50是CLASS文本20是AUTHOR文本30是PRESS文本50是PRICE数字是2.读者信息数据表读者信息数据表的主要功能是新读者的注册以及保存已注册的读者相关信息。它包括:借阅证编号、读者姓名、读者身份证号、和止借标志。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是NAME文本8是ID_CARD文本20是FLAG_BORROW数字长整型是读者编号字段为主关键字段,读者姓名字段、身份证号字段、最大借书数字段和止借标志字段分别记录读者的借阅证编号、读者姓名、读者的身份证号、最大借书数和止借标志信息;3.员工信息数据表员工信息数据表的主要功能是新员工的注册以及保存已注册员工的相关信息。它包括:员工编号、员工姓名、员工身份证号和登录密码。字段名称字段类型字段大小索引必须填写CLERK_ID文本30有(无重复)是NAME文本8是ID_CARD文本20是PASSWORD文本30是员工编号字段为主关键字段,姓名字段、性别字段、身份证号字段、登录密码字段分别记录读者的员工编号、员工姓名、员工性别、员工的身份证号以及登录密码。4.借书登记信息数据表借书登记信息数据表的主要功能是进行有关借阅图书过程中信息的处理它包括:借阅证编号、图书编号、借阅时间、和员工姓名。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是BOOK_ID文本30是BORROW_DATE1日期是CLERK_NAME文本30是 5.借阅历史信息数据表借阅历史信息数据表的主要功能是对借阅历史的信息进行查询。它包括:借阅证编号、读者姓名、图书编号、图书名称、借阅时间、归还时间借书操作员姓名、还书操作员姓名和备注。6罚款信息数据表罚款信息数据表的主要功能是读者因不正常还书而被罚款的记录。它包括:借阅证编号、读者姓名、图书编号、图书名称、借阅时间、 罚款金额、罚款日期和操作员姓名。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是NAME文本30是BOOK_ID文本30是BOOK_NAME文本30是AMOUNT数字20是FINE_DATE日期是CLERK_NAME文本30是7.罚款历史信息数据表罚款历史信息数据表的主要功能是对某位读者罚款历史的信息进行查询。它包括: 借阅证编号、读者姓名、图书编号、图书名称、 罚款金额、罚款日期和解止日期。字段名称字段类型字段大小索引必须填写READER_ID文本30有(无重复)是NAME文本30是BOOK_ID文本30是BOOK_NAME文本30是AMOUNT数字20是FINE_DATE日期是OK_DATE文本30是8.图书分类信息数据表图书分类信息数据表的主要功能是对图书进行分类。它包括:分类编号和类名字段名称字段类型字段大小索引必须填写CLASS_ID文本30有(无重复)是CLASS_NAME文本30是3.2 详细设计3.2.1数据信息1“图书资料维护”模块:要进行图书资料的维护就必须有图书的相关信息:如:图书的分类、图书的编号、图书的名称、图书的作者、图书出版社以及图书的库存量。新的图书,都要进行新书入库,将新书的各项信息输入图书资料维护信息数据表中,从而图书资料维护信息数据表将会更新,新书入库过程完成。在进行图书分类信息的时候,字段就相应比较少了,只需要描述某本图书在所有图书中的类型就完全可以了,这个信息将提供给工作人员进行借书登记时信息的一个依据。在图书修改信息中,每本现有的图书将会出现丢失或严重损坏,从而导致该类图书无法再进行借阅,那么就要进行删除或修改图书的库存量。2.“读者资料维护”模块:要进行读者资料的维护就必须有读者的相关信息:如:读者所使用的借阅证编号、读者的姓名、读者的身份证号以及止借标志。新的读者,都要进行信息登记,将新会员的各项信息输入读者资料维护信息数据表中,从而读者资料维护信息数据表将会更新,更新后新的会员就可以借阅图书了。在进行只需要描述某本图书在所有图书中的类型就完全可以了,这个信息将提供给工作人员进行借书登记时信息的一个依据。在图书修改信息中,每本现有的图书将会出现丢失或严重损坏,从而导致该类图书无法再进行借阅,那么就要进行删除或修改图书的库存量。1系统功能流程图用户登录退出系统调用数据库?Y/N系统主界面图3-1 系统功能流程图2“图书资料维护”数据流图 图3-2 “图书资料维护”数据流图3“读者资料维护”数据流图图3-3 “读者资料维护”数据流图四 设计思想4.1“资料维护”模块设计:本模块包括两个方面:图书资料维护和读者资料维护。一、“图书资料维护”:其实现的功能是对新书的录入、现有书目的修改、删除以及保存,同时为了便于用户查看书目,使用了MFSlexGrid控件显示出网格数据。打开“图书资料维护模块”对话框(CBookDlg)时,调用SetButtonState()(设置按钮状态)、SetTextState()(设置文本编辑框状态)、DisplayRecord()( 数据显示)函数,将对话框初始化,然后可以进行相关的操作。添加书目时有两种情况,一是要添加的图书是新书,二是书库中已存在此类书籍。实现此功能的程序流程图如下:开始输入相应数据查找数据库判断书名/作者调用Edit函数库存增加调用AddNew添加新记录更新记录集更新记录集结束图4-1 “图书资料维护”数据流程图 在这里,图书的添加、修改和删除操作都与前面的用户资料维护功能一样,分别调用CRrecordSet提供的AddNew、Edit、Delete成员函数,可方便的实现对数据库的操作,此模块可以实现图书维护的基本功能。在查看图书基本资料的时候需要用到Crecordset提供的几个成员函数,用来在记录集中滚动,如下所示: void MoveNext( );/前进一个记录 void MovePrev( );/后退一个记录 void MoveFirst( );/滚动到记录集中的第一个记录 void MoveLast( );/滚动到记录集中的最后一个记录当图书信息被添加、修改以及删除后,在保存的同时,数据库将会自动更新。系统调用void shuixin(),重画网格。代码如下:if(m_rsDataSet.IsBOF() m_MSFGrid.SetCols(7);m_MSFGrid.SetRows (m_rsDataSet.GetRecordCount()+1);m_MSFGrid.SetColWidth(-1,2360); /定义网格的表头m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(1);m_MSFGrid.SetText(图书编号);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(2);m_MSFGrid.SetText(图书名称);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(3);m_MSFGrid.SetText(作者);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(4);m_MSFGrid.SetText(出版社);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(5);m_MSFGrid.SetText(单价);return; m_rsDataSet.MoveFirst();/画网格while (!m_rsDataSet.IsEOF() m_rsDataSet.MoveNext();m_rsDataSet.GetRecordCount();m_MSFGrid.SetCols(7); m_MSFGrid.SetRows (m_rsDataSet.GetRecordCount()+1); m_MSFGrid.SetColWidth(-1,2360); /定义网格的表头 m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(1);m_MSFGrid.SetText(图书编号);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(2);m_MSFGrid.SetText(图书名称);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(3);m_MSFGrid.SetText(作者);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(4);m_MSFGrid.SetText(出版社);m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(5);m_MSFGrid.SetText(单价); m_rsDataSet.MoveFirst();/重新画网格 int iRow=1;while(!m_rsDataSet.IsEOF() CString str,str1,str2;str.Format(BOOK%d,iRow);str1.Format(%d,m_rsDataSet.m_STOCK);str2.Format(%d,m_rsDataSet.m_PRICE);m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(0);m_MSFGrid.SetText(str);m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(1);m_MSFGrid.SetText(m_rsDataSet.m_BOOK_ID);m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(2);m_MSFGrid.SetText(m_rsDataSet.m_BOOK_NAME);m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(3);m_MSFGrid.SetText(m_rsDataSet.m_AUTHOR);m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(4);m_MSFGrid.SetText(m_rsDataSet.m_PRESS);m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(5);m_MSFGrid.SetText(str2); iRow+;m_rsDataSet.MoveNext(); m_MSFGrid.SetRow(1);m_MSFGrid.SetCol(1); m_rsDataSet.MoveFirst();在此模块的实现过程中遇到了下列问题:a、 数据库的打开和关闭不合理b、 数据变量类型的不一致c、 准备工作不够,用选择语句时没有分析好流程,比较盲目等等一些问题,最后也都一一解决。二、“读者资料维护”模块设计:“读者资料维护”模块的实现与“图书资料维护”基本上一样,实现了读者的借书证号、姓名、证件号码的登记。在模块的设计过程中,根据需要对数据库中的“读者登记表”作了相应的修改。读者资料的添加、修改、保存部分实现代码如下:UpdateData(TRUE);if (m_strReaderID.IsEmpty()| m_strReaderName.IsEmpty() AfxMessageBox(请输入相应数据!);return;if (m_bAdd) m_rsDataSet.Close();int n=0; CString strSQL;strSQL = SELECT * FROM READER WHERE NAME=;strSQL = strSQL + m_strReaderName;strSQL = strSQL + AND IDCARD=;strSQL = strSQL + m_strIDCard;strSQL = strSQL + ;m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_rsDataSet.GetRecordCount()!=0) m_rsDataSet.MoveFirst();MessageBox(此读者已存在!,提示,MB_ICONQUESTION);n=1; else if (n=0) m_rsDataSet.AddNew();m_rsDataSet.m_READER_ID= m_strReaderID;m_rsDataSet.m_NAME = m_strReaderName;m_rsDataSet.m_IDCARD = m_strIDCard;m_rsDataSet.m_FLAG_BORROW= m_strFlagBorrow;m_rsDataSet.Update();m_rsDataSet.Requery();MessageBox(新记录添加成功!);else m_rsDataSet.Edit();m_rsDataSet.m_READER_ID= m_strReaderID;m_rsDataSet.m_NAME = m_strReaderName;m_rsDataSet.m_IDCARD = m_strIDCard;m_rsDataSet.m_FLAG_BORROW= m_strFlagBorrow;m_rsDataSet.Update();m_rsDataSet.Requery();MessageBox(信息修改成功!); m_bAdd = FALSE; m_bEdit = FALSE;SetButtonState();SetTextState();m_rsDataSet.Close();m_rsDataSet.Open();shuaxin();4.2.2“用户登录”模块设计:登录模块是要根据用户输入的用户名和密码与数据库Clerk中的Username和Password的比较来判断用户名和密码是否合法。这里用到在 Visual C+环境下数据库的操作。该操作的流程如下:用户在相应的控件内填写姓名和密码,通过“UpdateData(TRUE);”将控件中的数据传送给字段数据成员,然后执行下面的SQL语句: SELECT * FROM CLERKWHERE NAME=m_strName AND PASSWORD=m_strPassword;查询Clerk表中是否有用户名为m_strName,并且密码为m_strPassword的记录。打开记录集,查询是否有符合条件的记录,如果记录集不为空,则说明有符合条件的记录,说明登录合法,否则“登录失败!”。在用户通过了身份验证之后,就可以进入系统,进行所有的操作。登录模块实现起来相对比较简单,只是用到了一个SOL查询语句,在编程过程中没有遇到什么困难。“用户登录”模块实现代码如下:if (m_strName.IsEmpty() /*判断用户名信息是否为空*/ AfxMessageBox(请输入用户名!);return; mSqlStr = SELECT * FROM CLERK WHERE NAME=;mSqlStr = mSqlStr + m_strName;mSqlStr = mSqlStr + AND PASSWORD=;mSqlStr = mSqlStr + m_strPassword;mSqlStr = mSqlStr + ;if (!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr) AfxMessageBox(CLERK表打开失败!);return; /CString strSQL;/strSQL.Format(select * from CLERK where NAME=%s AND PASSWORD=%s ,m_strName,m_strPassword);/mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(mrsDataSet.GetRecordCount()=0) if(count3) AfxMessageBox(用户名或密码不正确!);count+;else AfxMessageBox(用户名或密码不正确!);m_database.Close();ExitProcess(0);五 程序实现和程序调试1:用户登陆界面2:读者借书操作3:读者资料维护4:还书处理5:读者所借书查询6:缴纳罚款 六 重要知识点1:classWizard类向导利用应用程序向导生成MFC应用程序框架后,程序员需要为自己的MFC派生类添加消息处理成员函数,为对话框控件添加相关的成员变量,又是还需要为一个程序添加一个MFC的派生类,这时就需要使用classWizard类向导。2:文档与视图文档是MFC应用程序中所处理数据的集合,包括文本,图形,图像,和表格等类型,一个文档对应与用户当前打开的一个文件。文档的主要作用是吧数据处理从用户界面的管理中分离出来,集中处理数据,同时提供与试图交互的接口。3:菜单设计菜单,工具栏和状态栏是Windows应用程序中重要的窗口元素,是用户与应用程序进行交互的接口,它们共同组成了Windows应用程序的友好界面,应用程序的菜单栏和工具栏用于传递用户选择的操作,而状态栏用于显示有关操作的提示信息。菜单可以使用直观的了解应用程序的功能,并方便的进行各种操作。4:弹出式菜单本课设中用到了弹出式菜单,弹出式菜单用于快捷的访问当前可用的菜单项,当用户右击鼠标时,就会出现相应的弹出一个浮动菜单,其菜单项内容有鼠标所指的对象决定。弹出式菜单是利用已有的菜单项建立的,当也可以为弹出式菜单专门建立一个菜单资源,然后通过调用类CMeun的成员函数LoadMenu()装入说建立的资源,从而建立一个弹出式菜单。5:添加工具栏按钮工具栏是由一些形象化的位图按钮组成,以图形方式表示应用程序的操作命令。工具栏结合了菜单和快捷键的优点,具有直接快捷,便于用户使用的特点。当由于工具栏要占用屏幕空间,所以只能将最常用的命令做成按钮放在工具栏上,并且在需要的时候可以将工具栏隐藏起来。6:创建对话框本次课程设计本身就是一个基于对话框的程序,首先要创建一个对话框,添加相关的控件后,为对话框创建一个类。例如在设计登陆对话框的过程,在资源视图中选择对话框,点右键添加一个对话框,然后添加相应的控件,使用ClassWizard向导可以为对话框创建相应的类。7:定制状态栏状态栏是位于主窗口底端的一个子窗口,用于显示当前操作的提示信息和程序的运行状态。状态栏一般包括状态信息栏和状态指示器,状态信息行动态显示应用程序串标资源中的字符串,状态指示器显示有关键盘的状态信息。8:基于对话框的应用程序对话框的一个典型应用是通过菜单命令或工具栏按钮打开一个对话框,完成输入,输出功能,此外对话框也可以作为一个程序的主界面,9:对话框数据交换DDX、对话框通过对话框控件实现用户输入数据的接收和程序输出信息的显示,MFC提供了CDataExchange类实现对话框数据交换DDX机制,对话框数据交换功能尤其成员函数DODataExchange完成。10:信息对话框信息对话框也称消息对话框,是一种最简单的对话框,不需要用户自己创建就可以直接使用。11:编辑框编辑框又称文本框或是编辑控件,它一般与静态控件文本一起使用,用于数据的输入和输出。提供了键盘输入和完整的编辑功能,可以输入各种文本,数字或是口令,并可进行退格,删除剪切和黏贴等操作。12:按钮控件按钮包括按键按钮,单选按钮,复选框和组框等4种类型,几乎所有的对话框按钮都使用简单的按键按钮,通过控件Properties属性对话框可以设置按钮不同的风格。13:MFC消息映射机制在MFC的框架结构下,“消息映射”是通过宏定义,形成一张消息映射表格来进行的。首先在需要进行消息处理的类的头文件(.H)里,都会含有DECLARE_MESSAGE_MAP()宏,声明该类拥有消息映射表格:class CscribbleDoc:public Cdocument DECLARE_MESSAGE_MAP();然后在类应用程序文件(.CPP)实现这一表格BEGIN_MESSAGE_MAP(CInheritClass, CBaseClass) /AFX_MSG_MAP(CInheritClass) ON_COMMAND(ID_EDIT_COPY,OnEditCopy) /AFX_MSG_MAPEND_MESSAGE_MAP()14:MFC自定义消息处理ClassWizard不允许增加用户自定义消息,所以必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。下面是增加自定义消息的步骤: 第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。 第二步:实现消息处理函数。该函数使用WP

温馨提示

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

评论

0/150

提交评论