《图书馆管理系统》word版.doc

上传人:wux****ua 文档编号:7885439 上传时间:2020-03-25 格式:DOC 页数:56 大小:799.50KB
返回 下载 相关 举报
《图书馆管理系统》word版.doc_第1页
第1页 / 共56页
《图书馆管理系统》word版.doc_第2页
第2页 / 共56页
《图书馆管理系统》word版.doc_第3页
第3页 / 共56页
点击查看更多>>
资源描述
需求说明大功能模块及其小功能模块说明 1.图书查找模块。依据书名,作者,出版社,类别,编号中的一个,查询这本书的其它信息。每一种查询方式为一个小模块;2.图书借阅。实现图书借还,预约功能。包括两个小模块:借书(预约功能包括在了借书模块中),还书。3.信息查询管理。包括以下几三个小模块:查询管理自身或其他用户的信息(不同的帐号类型能查询人群不同,查询所得的信息有用户基本信息,用户历史借阅记录,用户是否被封号。管理用户信息仅管理员有该权限,管理员可手动封号),更改个人账户密码,查看图书借阅率;4.图书购入。仅有一个模块。 还有部分功能的实现未划分在这四大模块中,单独用函数实现。如:用户登录,新用户注册,系统根据用户是否有借书逾期未还封号(有则封号,若用户还了逾期未还的书则系统会解封)详细请见各模块设计说明。开发环境:DevC+,windows 7(32位)若一直在登录界面未登录,时间向前推进选择是否登录录界面总体结构:若选择登录,输入帐号,密码 登录失败(密码错误),重新登录(登录成功),选择要进行的操作退出登录信息查询管理图书购入借书还书图书查询数据文件说明: “information.txt”:存储图书基本信息,程序运行时将文件中的信息导入到链表head中,以便使用。每一行的格式相同,否则在将文件中信息导入到链表时会出错。每一行保存一本书的信息,按照顺序分别为:图书编号,书名,作者,出版社,类别,时间,价格。在执行了添加图书这一操作后,更新这个文件。 “users.txt”:存储用户基本信息,登录信息.程序运行时将文件中的信息导入到链表“head2”中,以便使用。每一行保存一个用户的信息,分别为帐号,密码。若用户更改了密码,则该文件会相应的更新。 “Completereord.txt”:存储已完成的借阅记录,程序运行时将文件中的信息导入到“headcomplete”这个链表中,以便使用。每一行为一本书的记录,依次表示书的编号,借书的人的帐号,借书时间,还书时间。在还书时,会生成一条新纪录,并更新到文件中。“Uncompletereord.txt”:存储未完的借书记录。程序运行时将文件中的信息导入到“headUncomplete”这个链表中,以便使用。每一行为一条未完成的借阅记录,一次表示借出去的书的编号,借书人帐号,借书时间,是否有人预约,预约者帐号(即预约者编号)。每借出一本书,会生成包括借书人帐号,书的编号,日期的借书记录,并更新到文件中。每还一本书,会依据书的编号找到对应的“未完成记录”,删除。对应的文件作处理(将文件中第一行全赋值为0),避免要删除的记录恰好在头节点上. “Userstate.txt”:存储用户状态。程序运行时将文件中的信息导入到“headuserstate”这个链表中,以便使用。每一行为一个用户的状态,依次为这个帐号是否被封,帐号,现在借了几本书,是否预约书,预约书的编号。若用户借的书逾期不还,则会被封号,封号后不能再借书。若预约的书被还,则用户在登录时会收到提醒,但这本被预约的书可以被其他人借走“rate.txt”:存储每本书的历史借阅次数。程序运行时将文件中的信息导入到“headrate”这个链表中,以便使用。每一行为一本书的借阅次数,依次表示书的编号,这本书的借阅次数。每借出一本书,变会让这本书的借阅次数加一。在查看借阅率时会将借阅次数最多的前五本书输出。若是新购入的图书,在第一次借出时会添加到链表中。 各模块设计说明 先说明用户登录功能的实现,登录的实现是图书查找模块,图书添加模块,图书购入,图书借阅模块实现的前提。分为三类用户:管理员,教师,学生。帐号(即学生学号,教师管理员的工号)的长度为10位,第一位用以区分用户类别,1:管理员,2:教师,3:学生。第二到五位为入学年份(或参加工作年份),第六到七位为所属学院,最后三位为院内编号。 登陆过程:在main函数中定义两个变量int accounts,char passwords10,要登陆时先提示用户输入帐号及密码,经登录函数int login处理,若返回1,则登陆成功,再进行下一步动作;若返回0,说明登陆失败,此时会提示登陆失败的原因:密码错误,并提示用户重新输入帐号密码。 参考学校图书馆系统新用户注册机制,本系统注册机制为:输入学生学号(或工号),若是第一次登陆,则密码默认为学号(或工号的后六位),登录成功后会提示用户是第一次登录并建议用户更改帐号密码。第一次登陆后该用户信息会添加到对应的文件中,下次登录时身份为已注册用户。 1. 图书查找模块将图书的基本信息保存在一个名为information的文本文件中,程序运行时,先将文件中图书的信息导入到链表head中。查询图书信息时,用户先选择按哪种方式查询,每种查询的完成通过遍历链表head完成,并输出其他信息。下面说明具体查找算法。判断搜索的类型,然后转到相应的条件处。若是按书名搜索,先将要搜索的内容存放到数组里面;然后从存放书本信息的文件里读取书名,采用BF算法,即朴素模式匹配算法,在书名里查找输入的子串。若是按作者、出版社、类别、图书编号来查找的话,则用全匹配的方法,只有输入的信息与文件内容的完全相同,才会输出所要搜索的图书信息,否则显示为无所要查找的图书信息。图书编码说明:图书的编码为六位,前两位代表图书类别,01:educate,02:novels,03:history,04:musics(当前就只有这么几种图书类别,之后会添加),最多可以有99中类型的书。中间两位为同一类型中的不同书,同一类别下的图书最多可以有99本不同的书。最后两位表示同一本书的不同编号,图书馆中同样的一本书有许多本,编上不同的编号,同一本书最大数量为99本。2.图书购入购入添加新的图书时,编码方式:前两位代表图书类别,01:educate,02:novels,03:history,04:musics,中间两位按照这类图书中已有多少本编码,若已有20本,则中间两位为21.最后两位依据图书的数量编码,若有10本,则最后两位从01到10.添加时提示用户先选择添加的图书是库中已有的还是库中没有的。若是库中已有的书,则输入库中这本书最大的编号max,添加的数量。添加的第一本书的ID为max+1,第二本为max+2,以此类推,书的其它信息不用输入,直接赋值就行。若添加的书库中没有,则需输入书名,类别,作者出版社等基本信息。书的编号的生成方式为:前两位为书的类别;中间两位,若这类书已有3本,则中间两位为04,若这类书有5本,则为06;最后两位从01开始,有多少本书就编码到几。添加完后书的信息保存在链表中,并更新到文件中。每添加一本书,会在链表head中添加一个节点(若是已有的书,在链表中部添加这这节点,且上一个节点保存的书的ID比这本书恰好小1;若是库中没有的书,则在链表尾部添加节点)以保存它的信息。在添加完毕后会将链表中的信息重新写进Information.Txt。3. 信息查询管理。执行此功能之前已登录,按照用户帐号的编码方式可自动区分用户是学生还是教师或者是管理员。对于学生,只能查询自己的信息,如:学院,年级,借阅了几本书,;对于老师,则可查询自身和学生的信息;管理员则可以查询所有老师学生的信息。查询其它用户信息时先输入要查询的人的帐号,遍历链表head2及headUserstate以找到对应的用户,找到后输出相关信息。特别的,管理员具有封号的权限,若一个帐号被封,则该账户无法再借书,直至被解封。封号的实现,通过修改headUserstate中节点的信息实现。链表headUserstate中的信息会更新到文件Userstate.txt中。改密码,改密码需两次输入新密码,若两次的输入有不同,会提示用户两次输入的密码不一样,要求用户重新输入新密码。改密码会改变链表head2中对应的节点中的password10。链表head2中的信息会及时更新到文件Users中。三种类型用户都可以查看借阅率。通过遍历链表headrate实现。4.图书借阅借书预约:进入系统时已登录,借书时用户需输入借几本书。若借完这些书后未超过借书上限,则进入下一步,否则会让用户超过个人借书上限,需重新输入要借书的数量。若未超过上限,则输入每本书的ID。对每一本书进行判断,判断是否能借。判断一本书是否能借的方法为遍历未完成的借书记录(即链表headUncomplete),若在记录中没有这本书说明这本书可以借(没被借出,或借出但已经归还)。每借一本书会生成一条未完成的借阅记录,依据书的编号创建,包括借书人编号,借阅时间,是否有人预约,(若预约)预约者编号。若记录中有这本书则说明这边书已经借出,用户可选择是否预约。选择预约,会修改未完成记录中这本书对应的记录。将是否有人预约该成有(当一条未完成记录生成时默认没有人预约),并修改预约者编号(默认状态下为00000000).当预约的书被还,预约者登录时,用户会收到提示。还书:还书时输入还书的数量及每本书的编号。每还一本书,会删除未完成记录中这本书对应的记录(若这本书被预约,删除之前会修改用户状态中表示已预约的书的状态的变量,从而在用户登录时能收到提醒)。在已完成记录(即链表headComplete)中添加一条,包括书的编号,借阅者编号,借阅日期,还书日期。链表中的信息会及时更新到对应的文件中。系统自动封号功能说明:遍历未完成的借书记录,若有逾期未还的书,则系统会自动封了这本书的借书人的帐号,这本书被还时会解封对应的帐号 Main函数中变量及数据结构体说明:int choice,choice2,exist;/作用:功能选择int account;/存储用户帐号int i=0,ss=0,de=0;/计数变量int Time;/系统时间char password10;/存储用户登录时输入的密码FILE *timefile;/保存系统时间的文件指针下面的指针都是指向对应链表的头节点。struct Information *head=NULL;/保存图书信息struct Users *head2=NULL;/保存用户帐号,密码struct UncompleteRecords *headUncomplete=NULL;/保存未完成的借阅记录struct Userstate *headUserstate=NULL;/保存用户帐号信息struct CompleteRecords *headComplete=NULL;/保存已完成借阅记录struct rate *headrate=NULL;/保存每本书的借阅次数。1.struct Information/图书基本信息 int number;/图书编号 char name30;/书名 char writer30;/作者 char press30;/出版社 char kinds20;/类别 int time;/出版时间 float price;/图书价格 int amount;/备注:这个变量没用 struct Information *next; ; 2.struct Users用户基本信息 int account;/用户帐号,也就是用户ID char password10; /登录密码 struct Users *next2; ;/ 3.struct CompleteRecords/已完成的借阅记录 int booknumber;/已经完成的借还,包括书的编号 int userID;/借阅人ID int borrowtime;/借阅时间 int returntime;/还书时间 struct CompleteRecords *Completenext; ;/每还一本书,在链表尾添加一个节点。 4.struct UncompleteRecords/ 未完成的借阅记录 / int bookID;/于借出状态的图书的编号 int user;/ 借书人 int time;/ 借阅日期 int reserve;/reserve=1 有人预约,0 无人预约.有 int reserveID;/ struct UncompleteRecords *Uncompletenext; ;/借一本,在链表尾添加一个节点,还一本,删除对应的节点 设置reserve及reserveID以实现图书预约。有人预约书时修改reserve的值,并将预约人的帐号保存在reserveID中。在这本书被还,这条“未完成的借书记录”被删除之,修改用户状态信息,在用户登录时会提示预约的书可以借了。5.struct Userstate/用户状态 int ban;/用来判断帐号是否被封,被封则无法借书,0 表示此号被封,1 表示此号未被封,正常使用中 int ID;/用户ID int numbers;/用户已经借阅的图书的数量(上限:学生5本,老师10本,管理员10本) int reserve;/值为0 表示没有预约,值为1表示预约了,值2表示预约的书可以借 int reserveID;/预约书的编号 struct Userstate *Userstatenext; ; 6.struct rate/每本书的历史借阅次数 int bookID; int times; struct rate *ratenext; ; 范例执行过程及结果运行后的选择登录界面,若不登录时间则推进。进入登录界面,输入帐号,按回车,再输入密码输入的帐号为第一次登录,即新用户,密码为帐号的后六位,若密码输入错误,则给出提示并重新输入登录成功,选择要进行的操作。由于是第一次操作,对用户给出提示。输入1,选择了图书查询,再选择查询方式。选择了按书名查询,输入的是Gone,由于Gone_With_The_Wind这个书名和输入最相似,因此输出这本书的信息。若按照其它依据查询,用的是完全匹配算法,输入字符串的一部分只会打印出库中没有。图书查询操作执行完毕后,转回功能选择界面。选择借书,回车,输入要借书的数量,回车,会提示输入要借的书的编号。010103这本书已经被借出,选择预约,另一本书借阅成功。 借书操作执行完毕后,返回上一级,再进入信息查询管理界面查看个人信息,查看借阅率,修改个人帐号密码 该用户是学生,若该用户选择了自己没有权限执行的操作,系统会提示。退出登录,帐号120001001(管理员)登录,还010103这本书。该管理员进入信息查询管理界面,先查询自己的信息 管理员查询其它用户信息管理员封号,封号后再次查询所封号的信息 管理员执行图书添加操作 管理员退出登录,帐号320133003登录(即本文档开头登录的那个帐号),预约的书被还,系统提示用户。在未完成的借书记录中有一本书是5月16号借的(期限30天),此时是6月18号,以超越期限.系统自动封号。说明:图书编号,用户信息均存于txt文件中,若txt文件被更改或损坏,则范例无法正常执行。#include#include#include#include#include #includechar de=1;struct Information int number; char name30; char writer30; char press30; char kinds20; int time; float price; /int amount;/掘蛁蚕衾肮珨掛抎衄嗣跺晤瘍眕极珋杅講涴跺曹講羶蚚 struct Information *next; ;struct Users int account; char password10; struct Users *next2; ;/蜆賦凳腔曹講剒猁孺喃崝樓悵湔蚚誧俷靡俶梗脹價掛陓洘腔曹講struct CompleteRecords int booknumber;/眒冪俇傖腔質遜婦嬤抎腔晤瘍 int userID;/質堐ID int borrowtime;/質堐奀潔 int returntime;/遜抎奀潔 struct CompleteRecords *Completenext; ;/藩遜珨掛抎婓蟈桶帣氝樓珨跺誹萸struct UncompleteRecords/勤茼腔恅璃釬揭燴旌轎猁刉壺腔暮翹疑婓芛誹萸奻,偌抎腔晤瘍齬疑佼唗 /質抎奀硐猁猁質腔抎帤婓眒質堤腔摩磁囀寀褫眕質瘁寀褫眕啎埮蚚媼峎杅郪湔揣 int bookID;/衾質堤袨怓腔芞抎腔晤瘍 int user;/ 質抎 int time;/ 質堐 int reserve;/reserve=1 衄啎埮0 拸啎埮 int reserveID;/ struct UncompleteRecords *Uncompletenext; ;/質珨掛婓蟈桶帣氝樓珨跺誹萸遜珨掛刉壺勤茼腔誹萸struct Userstate/偌蚚誧ID齬疑佼唗 int ban;/蚚懂瓚剿梛瘍岆瘁掩猾掩猾寀拸楊質抎,0 桶尨森瘍秪質腔抎貣帤遜掩猾1 桶尨森瘍帤掩猾淏都妏蚚笢 ,2桶尨森梛瘍秪坳埻秪掩奪燴埜猾 int ID;/蚚誧ID int numbers;/蚚誧眒冪質堐腔芞抎腔杅講奻癹悝汜5掛橾呇10掛奪燴埜15掛 int reserve;/啎埮腔抎腔杅醴 int reserveID;/郔嗣褫啎埮珨掛 struct Userstate *Userstatenext; ;struct rate/悵湔質堐薹 int bookID;/抎腔晤瘍 int times;/盪妢質堐棒杅 struct rate *ratenext; ;struct Information *read();/植恅璃笢絳芞抎陓洘struct Users *read2();/植恅璃笢絳蚚誧陓洘struct CompleteRecords *readcomplete();struct UncompleteRecords *readuncomplete();struct Userstate *readstate();struct rate *readrate();void prompt(int choice);/髡夔恁寁滲杅void search(struct Information *head);/籵抎靡麼釬氪麼堤唳扦麼濬梗脤戙芞抎陓洘int login(struct Users *head2,struct Userstate *headUserstate,int account,char password10);void changepassword(struct Users *head2,int account,char password10);void borrowbook(struct UncompleteRecords *headUncomplete, struct Userstate *Userstatehead,struct rate *ratehead,int account,int Time);/党蜊蟈桶帤俇傖腔質抎暮翹袨怓笢腔陓洘void returnbook(struct Userstate *headUserstate,struct UncompleteRecords *headUncomplete,struct CompleteRecords *headComplete,int account,int Time);/党蜊涴跺蟈桶void lookusers(struct Userstate *headUserstate,struct UncompleteRecords *headUncomplete,struct CompleteRecords *headComplete,int account);/脤艘蚚誧價掛陓洘蚚誧袨怓void Borrowingrate(struct rate *ratehead);/質堐薹脤戙void borrowrecords(struct UncompleteRecords *headUncomplete,struct CompleteRecords *headComplete,int account);/脤戙甜湖荂堤蚚誧腔質堐暮翹void addbook(struct Information *head,struct rate *headrate,int time);void check(struct UncompleteRecords *headUncomplete,struct Userstate *headstate,int Time);/潰脤岆瘁衄猁善腔抎猁遜,貣祥遜寀猾瘍 ;甜賤猾梛瘍void updateInformation(struct Information *head);void updatefiles(struct CompleteRecords *headComplete,struct UncompleteRecords *headUncomplete,struct Userstate *Userstatehead,struct rate *ratehead);DWORD WINAPI ThreadProc1(LPVOID lpParam)de=getch();main() int choice,choice2,exist; int account; int i=0,ss=0; int Time,timego=0; int year,month,day; char password10; struct Information *head=NULL; struct Users *head2=NULL; struct UncompleteRecords *headUncomplete=NULL; struct Userstate *headUserstate=NULL; struct CompleteRecords *headComplete=NULL; struct rate *headrate=NULL; FILE *timefile; timefile=fopen(time.txt,r); if(timefile=NULL) printf(恅璃湖羲囮啖n); else fscanf(timefile,%dn,&Time); fclose(timefile); head=read(); head2=read2(); headUncomplete=readuncomplete(); headUserstate=readstate(); headComplete=readcomplete(); headrate=readrate(); while(de!=0)/奀潔腔芢輛 ,恅璃載陔筍蚕衾帤芢堤最唗祥蚚婬笭陔絳跪恅璃腔陓洘善蟈桶笢 i=0; / printf( *紱釬2 腎翹,0 豖堤炵苀* %d爛%d堎%d,Time/10000,(Time/100)%10,Time%100); CreateThread(NULL,0,ThreadProc1,NULL,0,NULL); while(de=1) printf( 辣茩懂善芞抎奪燴炵苀n); printf( *紱釬2 腎翹,0 豖堤炵苀* %d爛%d堎%d,Time/10000,(Time/100)%10,Time%100); Sleep(3000);/匐鏃囀拸怀寀奀潔砃芢輛珨毞 system(cls); if(Time%100=30&(Time/100)%10=12) Time=Time+8871; else if(Time%100=30) Time=Time+100-29; else Time=Time+1; if(month=13) month=1; if(de=2) printf( n,Time); printf( 梛瘍);/蚚誧岆菴珨棒腎翻躇鎢峈梛瘍腔綴鞠弇斛剕載蜊躇鎢 fflush(stdin); scanf(%d,&account); printf( 躇鎢); fflush(stdin); scanf(%c,&passwordi); while(passwordi!=n) i+; scanf(%c,&passwordi); while(login(head2,headUserstate,account,password)=0) i=0; printf( 梛瘍); scanf(%d,&account); printf( 躇鎢); fflush(stdin); scanf(%c,&passwordi); while(passwordi!=n) i+; scanf(%c,&passwordi); printf(*n); printf( 紱釬 1:脤戙芞抎陓洘;n 2:芞抎質堐;n 3:陓洘脤戙奪燴;n 4:芞抎劃躺奪燴埜茧衄蜆癹);n 0:豖堤腎翹n); printf(*n); scanf(%d,&choice); prompt(choice); while(choice!=0) switch(choice) case 1: search(head); break; case 2: printf( 1 質抎 2 遜抎0 殿隙奻珨撰); scanf(%d,&choice2); while(choice2!=0) if(choice2=1) borrowbook(headUncomplete,headUserstate,headrate,account,Time); else if(choice2=2) returnbook(headUserstate,headUncomplete,headComplete,account,Time); else if(choice2!=0) printf(準楊怀笭陔恁寁紱釬); printf( 1 質抎 2 遜抎0 殿隙奻珨撰); scanf(%d,&choice2); break; case 3: printf(紱釬 1脤戙蚚誧陓洘2党蜊梛瘍腔躇鎢,3:脤艘質堐薹 0:殿隙奻珨撰); scanf(%d,&choice2); while(choice2!=0) if(choice2=1) printf(n *脤戙蚚誧陓洘*n); lookusers(headUserstate,headUncomplete,headComplete,account); else if(choice2=2) printf(n *党蜊躇鎢*n); changepassword(head2,account,password); else if(choice=3) printf(n *脤艘質堐薹*n); Borrowingrate(headrate); printf(紱釬 1脤戙蚚誧陓洘2党蜊梛瘍腔躇鎢,3:脤艘質堐薹,0:殿隙奻珨撰); scanf(%d,&choice2); break; case 4: if(account/100000000=1) addbook(head,headrate,Time); updateInformation(head); else printf( !蠟羶衄蜆癹!n); break; printf(n 紱釬:1:脤戙芞抎陓洘;n 2:芞抎質堐;n 3:陓洘脤戙奪燴;n 4:芞抎劃躺奪燴埜茧衄蜆癹);n 0:豖堤腎翹); scanf(%d,&choice); prompt(choice); check(headUncomplete,headUserstate,Time); updatefiles(headComplete,headUncomplete,headUserstate,headrate); de=1; system(pause); system(cls); timefile=fopen(time.txt,w); if(timefile=NULL) printf(恅璃湖羲囮啖n); else fprintf(timefile,%d,Time); fclose(timefile); struct Information *read() FILE *fileptr; struct Information *head,*crruent,*temp; head=crruent=NULL; fileptr=fopen(information.txt,r); if(fileptr=NULL) printf(恅璃湖羲囮啖n); else while(!feof(fileptr) temp=(struct Information *)malloc(sizeof(struct Information); fscanf(fileptr,%d%s%s%s%s%d%fn,&(temp-number),temp-name,temp-writer,temp-press,temp-kinds,&(temp-time),&(temp-price); if(head=NULL) head=temp; else crruent-next=temp; crruent=temp; crruent-next=NULL; fclose(fileptr); return head; struct Users *read2() FILE *fileptr; struct Users *head,*crruent,*temp; head=crruent=NULL; fileptr=fopen(Users.txt,r); if(fileptr=NULL) printf(恅璃湖羲囮啖n); else while(!feof(fileptr) temp=(struct Users *)malloc(sizeof(struct Users); fscanf(fileptr,%d%sn,&(temp-account),temp-password); if(head=NULL) head=temp; else crruent-next2=temp; crruent=temp; crruent-next2=NULL; fclose(fileptr); return head; struct CompleteRecords *readcomplete() FILE *fileptr; struct CompleteRecords *head,*crruent,*temp; head=crruent=NULL; fileptr=fopen(CompleteRecord.txt,r); if(fileptr=NULL) printf(恅璃湖羲囮啖n); else while(!feof(fileptr) temp=(struct CompleteRecords *)malloc(sizeof(struct CompleteRecords); fscanf(fileptr,%d%d%d%dn,&(temp-booknumber),&(temp-userID),&(temp-borrowtime),&(temp-returntime); if(head=NULL) head=temp; else crruent-Completenext=temp; crruent=temp; crruent-Completenext=NULL; fclose(fileptr); return head; struct UncompleteRecords *readuncomplete() FILE *fileptr; struct UncompleteRecords *head,*crruent,*temp; head=crruent=NULL; fileptr=fopen(UncompleteRecord.txt,r); if(fileptr=NULL) printf(恅璃湖羲囮啖n); else while(!feof(fileptr) temp=(struct UncompleteRecords *)malloc(sizeof(struct UncompleteRecords); fscanf(fileptr,%d%d%d%d%dn,&(temp-bookID),&(temp-user),&(temp-time),&(temp-reserve),&
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!