欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    家谱管理系统.docx

    • 资源ID:909223       资源大小:109.08KB        全文页数:47页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    家谱管理系统.docx

    江西农业大学科技用用评fl/家谱管理系疣小组戚员;陈江、易侪、段浩级7M7拉志氏、#<f与I2023.、BO目录1 .问题陈述12 .设计方法阐述12. 1总体规划13. 2功能分析与实现3主界面介绍3增加成员功能5显示家族成员信5删除功能6查询功能7查询第n代所有人得信息8修改成员信息8连接数据库9绘制图形家谱10小结113.总结114.代码115.家族成员44L问题陈述家谱用于记录某家族历代家族成员的情况与关系。现编制一个家谱资料管理软件,实现对一个家族所有的资料进行收集整理。支持对家谱的存储、更新、查询、统计等操作。并用计算机永久储存家族数据,方便随时调用。2.设计方法阐述2.1 总体规划在动手编制程序之前,先要做好程序的规划,包括程序储存数据所用的结构,数据类型等等,只有确定了数据类型和数据结构,才能在此根底上进行各种算法的设计和程序的编写。首先是考虑数据类型。在家谱中,家族成员是最根本的组成局部,对于家族管理中,已经不能再进行细分了,所以选定家族成员作为数据的根本类型,并在程序中定义Person类。ClassPersonStringname;/姓名intage;年龄Stringsex;/T生别Birthdayymd;/出生口期StringfatherName;StringmotherName;StringSpouseName;intchildNum;intleveITemp;/代数BooleanisAlive;是否健在)为方便计算机进行比拟,在Person类的某些属性中用数字代替了某些不会改变的字符串,譬如判断是否健在ItrUe为是,false为否)。在设置日期上,为方便以后的计算与比拟,也将日期用整型数字表示1999-05-05表示1999年5月5日,这种表示方法只需在输入和输出上作少许的运算便可方便地与日期进行转换。在设计家谱以图谱的形式来显示时,从直观来说,选择树型结构无疑是最直观易懂的,我在一开始构思的时候也是从树型结构去想的,但是二叉树不能满足我的要求,我的家谱中的一个节点有父亲,母亲,孩子(个数任意),配偶,兄弟姐妹(个数任意).于是我自己设计了一个存储结构,一个节点有四个指针域,指向父亲(或母亲,指向配偶,指向兄弟姐妹。Familyparents;指向父亲的引用FamilySPoUSe"/指向配偶的引用FamilyChild;指向孩子的引用Familybro_sis;指向兄弟姐妹StaticFamilyroot;祖先节点难题就是如何将所有的家族成员同过祖先节点连接起来。我的思路是先将所有的家族成员的信息用一个TXT文本存储起来,然后读出来,用一个数组mem存起来,之后初始化祖先节点,根据祖先节点的数据域的信息来添加,先添加祖先的父(母)亲,假设有那么从数组中读出来添加,否那么添加兄弟姐妹,再添加配偶,最后添加孩子,最重要的是每添加一个节点时应该判断该节点是否己经在家族树中了,假设存在那么直接重家族树中找出来对其进行相应的操作,假设不在那么从数组mem中读取,之后遍历创立其兄弟姐妹,配偶,孩子。2 .2功能分析与实现设想好总体规划之后,便开始设计程序中需要用到的各个功能函数,初步设想是要先实现最根本的几项功能,其中数据操作的有:增加成员,修改成员资料,删除成员,数据查询的有:查看某代信息,按姓名查找,按生日查找,查看成员关系以及显示查看家族成员信息表,还有就是绘制家谱图以及连接数据库的操作。主界面介绍主界面由三局部组成:菜单、生日公告栏以及欢送封面。下面为主界面图:图1主界面图2菜单1图3菜单2说明:(1)菜单中主要包括三大子菜单:文件、编辑、帮助。其中文件菜单中有连接数据库以及退出的操作,编辑中有所有功能实现操作。(2)生日公告栏为系统自动获取当日时间以判断今日家族中是否有人生日,如果有那么会自动发出祝福,本功能为创新功能。(3)特别说明:在每一个功能界面中都设有带图标的快捷功能键,便于操作。(4)主界面的代码位于:FTFrame.java中,下面将介绍功能。实现主界面的方法:位于PubIiCclassFTFrame类中增加成员功能我设计了两种添加方式,首先,添加进去的人要与家族里的某一个或某几个有联系,比方是某个人的孩子啊,或配偶,不然是无法参加进这个家族的。(1)根据要添加人的父亲添加,父亲必须在家族中找到。(2)根据添加人的配偶。假设这个配偶已有配偶那么不允许添加,不允许三妻四妾。实现增加成员的方法:publicStringaddMember(Personp)代码省略该方法位于familyTest类中图4添加功能界面显示家族成员信家族成员信息表是用于显示及查看家族所有成员信息以及及时查看新增及删除后的情况,进入界面点击显示按钮即可完成功能。实现显TK成员信息表的方法:PubIiCVOidinitrOWData(FamiIyroot)代码省略/该方法位于FTFr三e类中;实现显示成员信息表界面的方法:位于AddMember类中;图5家庭信息表删除功能删除功能执行时,会将本人及其后代及配偶全部删除。实现删除功能以及界面的代码;位于deleteMember类和EamilyTest类中。图6删除成员图1图7删除操作图该删除功能只通过姓名进行删除,删除后通过家庭成员信息表观察出其本人以及其后代及配偶以及完全被删除。查询功能查询功能中有两种查找功能:查询相同生日的所有成员、查找两人关系。(1)查询两人关系时,输入两人姓名即可按查询按钮进行查询。(2)查询相同生日成员时,在下拉列表中选中日期即可查询。图8查询操作实现查询功能以及界面的代码:位于SearchMember类和familyTest中,其中实现关系查询的函数为relationship(namezName),生日查询为brithday(Familyroot,Birthdayd).查询第n代所有人得信息进入操作界面,输入代数即可进行查询,如下列图中查询第3代人。图9代数查询实现显示成员信息表界面和方法:AddMeInber类中(界面)和familyTest中fi¾inquire_N(Familyrootzintanger)方法。修改成员信息修改操作中有明确的说明规那么,方便操作。在修改中好友根据姓名查询的操作,方便查看修改后是否正确。图10修改成员连接数据库在文件菜单中点击连接数据库操作,在弹出来的对话框中选择确定,在弹出的登陆框中输入用户名及密码便可以连接数据库。说明:由于技术原因本系统只可以连接MySQL数据库,还望谅解。图11菜单中选择连接数据库图12确定连接数据库图13连接数据库实现数据库连接的方法:位于familyTest中Family类的publicvoidconnectionDB_MySQL(StringpassNum)方法。绘制图形家谱根据家族树的存储结构画出来,难点是其中的间距很难调准。图14家谱图实现绘制家谱图的方法:位于CFrame类中。小结至此,本家谱管理系统实现了在不同界面上操作不同的功能,其中包括七大主要功能以及主功能下的多个小功能。本家谱管理系统根本实现了要求的所有内容,界面使用了美化包。但是由于技术知识有限,本系统或多或少存在一些缺乏之处,待在今后改正。3 .总结通过这次大作业,体会很深刻,用刚学的java都运用到这上面,学以致用,对所学知识有了更深刻的理解,同时还发现了许多平时在书本上没有遇见过的问题,促进了自己对知识的渴望,遇见了问题,就希望能够通过查找课外书来解决它们。刚接触题目的时候,自己就有了一定的想法,觉得这个程序做起来是问题不大的,但到了自己真正开始编程的时候却发现远远没有想象中那么简单,很多细节的问题没有预想到,很多关系的处理想得过于简单,以至于实施起来遇到了很大的困难,花了大量的时间。关于这个程序的缺点方面,由于自己花的时间不是很多,再加上知识有限,编写出来的界面不够友好,在功能上还是有不完善的地方,譬如说各项数据的统计还没有弄,数据的存储还不够理想等等。对于这个程序的改良,我自己还是有不少想法的,因为怎么说都是自己亲手编制出来的程序,当然是希望尽善尽美。首先是需要加强数据的存储这方面的知识,使自己编写出来的程序能以一种标准的格式存储下来,方便以后其它程序的读取。总的来说,通过这次任务,收获还是挺多的,也发现了不少的问题,并给自己以后的学习指引了方向,知道自己缺少哪方面的知识,需要补充哪些知识等等。自己将会以这次作业为契机,看更多编程方面的书籍,不断充实自己的知识库。4 .代码我只提供的功能实现的代码,至于界面我没提供importjava.awt.*;importjava.io.*;importjava.util.*;importjava.sql.*;importjavax.swing.*;publicclassfamiIyTest*paramargs*/publicstaticvoidmain(Stringargs)测试函数/TODOAuto-generatedmethodstub*Memberm=newMember();for(inti=O;i<m.memberNum;i+)System.out.println(m.memberi);*/System.out.println();Familyf=newFamily();f.initRoot();f.CreateFamilyTree(Family.root);/Birthdaya=newBirthday(8888,6,1);/Familyt=f.isAtTree(Family.root,"贾演");/System.out.println(t.parents.in);/f.birthday(Family.root,a);/System.out.println(f.birthday);/f.showFamilyTree(Family.root);/System.out.println(t.in);/System.OULPrintIn(f.deleteTree("贾演");/System.out.println(t.parents.in);Birthdaydl,d2;dl=newBirthday(2,l);d2=newBirthday(3,3);Personpl,p2;pl=newPerSon("林四”,20,”男,dI,”林如海”);p2=newPerson("张三”,25,d2,“林黛玉");/System.out.println(f.addMember(p1);/System.out.println(f.addMember(p2);/System.out.println(f.nun);/f.showFamilyTree(Family.root);SyStem.oul.println(f.modification("王夫假贷",20,d1,true);/f.showFamilyTree(Family.root);CFramec=newCFrame(Family.root);/f.connectionDB-MySQL("cjtc");1)classBirthday(生日intyear;intmonth;intday;BirthdayOBirthday(intm,intd)year=8888;month=m;day=d;)Birthday(inty,intm,intd)year=y;month=m;day=d;1publicStringtoString()returnmonth÷"-n+day;)classPerson家族成员的类Stringname;姓名intage;/年龄Stringsex;/性别Birthdayymd;出生日期StringfatherName;父亲名字StringmotherName;母亲名字StringSpouseName;伴侣intChildNum;孩子个数intIevelTemp;代数BooleanisAlive;ArrayLisKString>brothers_sisters;兄弟姐妹ArrayLisKString>children;孩子Person()name=null;age=O;sex=null;ymd=null;IevelTemp=O;fatherName="无";motherName="无";SpouseName=null;ChildNurn=O;isAlive=true;brothers_sisters=null;children=null;)Person(Stringname,intage,Stringsex,Birthdayymd,StringfatherName)(this.name=name;this.age=age;this.sex=sex;this.ymd=ymd;this.isAlive=true;this.fatherName=fatherName;)Person(Stringname,intage,Birthdayymd,StringSpouseName)this.name=name;this.age=age;this.ymd=ymd;this.isAlive=true;this.spouseName=spouseName;1Person(Stringname,intage,Stringsex.Birthdayymd,StringfatherName,StringmotherName,StringSpouseNameJntchildNum,intIevelTemp,BooleanisAlive,ArrayList<String>brothers-sisters,ArrayList<String>children)构造方法,用于初始化this.name=name;this.age=age;this.sex=sex;this.ymd=ymd;this.levelTemp=IevelTemp;if(!fatherName.equals("无")this.fatherName=fatherName;elsethis.fatherName=null;if(!motherName.equals("无")this.motherName=motherName;elsethis.motherName=null;if(!spouseName.equals("无")this.spouseName=spouseName;elsethis.spouseName=null;this.childNum=childNum;this.isAlive=isAlive;this.brothers_sisters=brothers_sisters;this.children=children;1publicStringtoString()return"姓名:"+this.name+",年龄:"+this.age+",性别:"+this.sex+",出生日期:"+this.ymd+",父亲:"+this.fatherName+",母亲:"+this.motherName+",配偶1'+this.spouseName+”,子女个数/+this.childNum+”,是第"+this.levelTemp+"代人"+",是否健在:"+this.isAlive+",兄弟姐妹:"+this.brothers_sisters+",孩子:"+this.children;1)classMember用于存储成员,Personlmember;intmemberNum=O;publicfinalintMaxSize=100;Member()(member=newPersonMaxSize;Strings="家谱管理系统成员.txt”;存储成员的文件Stringline;try(BufferedReaderin=newBufferedReader(newFileReader(三);line=in.readLine();while(line!=null)Stringt;Stringtime;StringbsNum;StringeNum;ArrayLisKString>bro_sis=newArrayList<String>();ArrayLisKString>child=newArrayList<String>();Booleanbl;t=line.split(,");time=t3.split("-");Birthdayb=newBirthday(8888,Integer.parseInt(time0),Integer.parseInt(timel);if(t9=',FALSEh)bl=false;elsebl=true;bsNum=tllO.split("n);eNum=tll.split(,'");if(bsNumO.equals("无")bro_sis=null;elsefbr(inti=O;i<bsNum.length;i+)bro-sis.add(bsNumi);)if(cNum.equals。'无")child=null;elsefbr(inti=0;i<cNum.IengthJ+)child.add(cNumiJ);)membermemberNum=newPerson(t0,lnteger.parselnt(tl),t2J,b,t4,t546JJnteger.parseInt(t7),lnteger.parseInt(t8),bl,bro_sis,child);memberNum+;line=in.readLine();)catch(IOExceptione)e.printStackTrace();classXY每个节点的位置(x,y)intx,y;XYO(1XY(intx,inty)this.x=x;this.y=y;1)classFamily(家族树的类staticintnum=0;Personin;数据域FamilyParents;指向父亲的引用FamilySPOUSe;指向配偶的引用FamilyChild;指向孩子的引用Familybro_sis;Membermem=newMember();ArrayList<Person>birthday=newArrayList<Person>();ArrayList<Person>n_People=newArrayList<Person>();XYIOCation;坐标StringdbUL="jdbc:mysql:/localhost/dbgoods"StringdbNewUL="jdbc:mysql:/localhost/"StringUserName="root"StringuserPwd;ConnectiondbConn;ConnectionnewConn;Statementstmt;ResuItSetrs;staticFamilyroot=newFamily();根节点,祖先节点voidinitRoot()初始化祖先节点root.in.age=9999;root.in.name="祖先";root.in.fatherName=null;root.in.spouseName=null;root.in.sex="男"root.in.children=newArrayList<String>();root.in.children.add("贾源");root.in.children.add("MiS");root.in.childNum=root.in.children.size();root.in.ymd=newBirthday(888,888,888);root.in.isAlive=false;root.location=newXY();1Family()in=newPerson();parents=null;spouse=null;child=null;bro_sis=null;this.location=newXY();1Family(Personp)in=p;parents=null;spouse=null;child=null;bro_sis=null;this.location=newXY();1publicvoidCreateFamilyTree(Familyroot)创立家族树if(root!=null)Familyparents,spouse,child,bro_sis;找root双亲节点if(root.in.fatherName!=nullroot.in.motherName!=null)parents=this.isAtTree(this.root,root.in.fatherName);找root的双亲节点是否己经存在于家族树中if(parents!=null)root.parents=parents;)elseparents=this.isAtTree(this.root,root.in.motherName);if(parents!=null)root.parents=parents;找root的兄弟姐妹节点if(root.in.brothers_sisters!=null)fbr(inti=0;i<root.in.brothers_sisters.size();i+)bro_sis=this.isAtTree(this.root,root.in.brothers-sisters.get(i);if(bro_sis=null)Personp_bs=this.inqureMember(root.in.brothers-sisters.get(i);bro_sis=newFamiIy(p_bs);Familyt=root;while(t.bro_sis!=null)t=t.bro_sis;1t.bro_sis=bro_sis;num+;找root的配偶节点if(root.in.SpouseName!=null)spouse=this.isAtTree(this.root,root.in.SpouseName);找root的配偶节点是否已经存在于家族树中if(spouse=null)(Personp_spouse;p_spouse=this.inqureMember(root.in.spouseName);if(p_sp。USe!=null)spouse=newFamily(p_spouse);root.spouse=spouse;num+;if(root.in.children!=null)child=this.isAtTree(this.root,root.in.children.get(O);if(child=null)Personp_child=this.inqureMember(root.in.children.get(0);if(p_child!=null)child=newFamily(p_child);root.child=child;num+;if(root.bro_sis!=null)CreateFamilyTree(root.bro_sis);if(root.spouse!=null)CreateFamilyTree(root.spouse);if(root.child!=null)CreateFamilyTree(root.child);)publicFamilyisAtTree(Familyr,Stringname)判断节点是否在家族树中if(r.in.nameI=null)if(r.in.name.equals(name)returnr;1elseif(r.bro_sis!=null)(FamilyP=isAtTree(r.bro_sis,name);从兄弟姐妹节点找if(p!=null)returnp;1if(r.spouse!=null)FamilyP=isAtTree(r.spouse,name);从配偶节点找if(p!=null)returnp;1if(r.child!=null)Familyp=isAtTree(r.child,name);从孩子节点找if(p!=null)returnp;returnnull;1publicPersoninqureMember(Stringname)fbr(inti=O;i<mem.memberNum;i+)if(mem.memberi.name.equals(name)returnmem.memberij;returnnull;1publicvoidshowFamilyTree(Familyr)(if(r!=null)System.out.println(r.in);if(r.bro_sis!=null)showFamilyTree(r.bro_sis);if(r.spouseI=null)ShowFamilyTree(Espouse);if(r.child!=null)ShowFamilyTree(EchiId);)1publicvoidbirthday(Familyr,Birthdaya)if(r!=null)y=a.day)this.birthday.add(r.in);if(r.bro_sis!=null)birthday(r.bro_sis,a);if(r.spouse!=null)birthday(r.spouse,a);if(r.child!=null)birthday(r.child,a);根据姓名查找家族成员显示家族所有成员查找过生日的人+ fl.in.name + ”为兄,+ fl.in.name + ”为兄,+ fl.in.name + "为姐,+ fl.in.name + ”为姐,+ fl.in.name + ”为弟,+ fl.in.name + ”为弟,+ fl.in.name + ”为妹,+ fl.in.name + ”为妹,else if(fl.in.sex.equals("男")&& f2.in.sex.equals("女")return fl.in.name + "与"+ f2.in.name + "为姐弟关系"+ ",且" ”+f2.in.name+”为姐。if(fl.in.sex.equals("男")&& f2.in.sex.equals("男")return fl.in.name + "与"+ f2.in.name + "为兄弟关系"+ ",且""+f2.in.name + "为兄。”;if(fl.in.sex.equals("女")&& f2.in.sex.equals,'男")return fl.in.name + "与"+ f2.in.name + ”为兄妹关系"+ "> 且""+f2.in.name +”为兄。”;if(fl.in.sex.equals("女")&& f2.in.sex.equals("女")return fl.in.name + "与"+ f2.in.name + "为姐妹关系"+ ",且" ”+f2.in.name +”为姐。”;publicStringrelationship(Stringname!,Stringname2)判断两人的关系if(namel!=null&&name2!=null&&!name1.equals,")&&!name2.equals(',)Familyfl,f2;fl=this.isAtTree(this.root,name1);f2=this.isAtTree(this.root,name2);if(fl!=null&&f2!=null)if(f1.parents!=null&&f2.parents!=null&&f1.parents=f2.parents)if(fl=f2)return"输入的两人是同一个人!";if(fl.in.age>f2.in.age)if(fl.in.sex.equals("男")&&f2.in.sex.equals("女")returnfl.in.name+"与"+f2.in.name+"为兄妹关系"+">且""+f2.in.name+”为妹。if(fl.in.sex.equals("男")&&f2.in.sex.equals("男")returnfl.in.name+"与"+f2.in.name+"为兄弟关系"+",且""+f2.in.name+”为弟。if(fl.in.sex.equals("女")&&f2.in.sex.equals("男")returnfl.in.name+"与"+f2.in.name+"为姐弟关系"+",且""+f2.in.name+”为弟。if(fl.in.sex.equals("女")&&f2.in.sex.equals("女")returnfl.in.name+"与"+f2.in.name+"为姐妹关系"+"»且""+f2.in.name+”为妹。elseif(f1.in.sex.equals(n15")&&2.in.sex.equals("男")(if(f!.parents!=null&&fl.parents=f2)returnfl.in.name+”与"+f2.in.name+”为父子关系"+“,且”+fl.in.name+"为儿子,"+f2.in.name+"为父亲。";if(f2.parents!=null&&f2.parents=fl)returnfl.in.name+"与"+f2.in.name+"为父子关系"+"»且"+fl.in.name+"为父亲,"+f2.in.name+"为儿子。if(fl.parents!=null&&fl.parents.bro-sis=f2)if(fl.parents.in.age>f2.in.age)returnfl.in.name+”为侄子,"+2in.name+”为叔父。elsereturnfl.in.name+"为侄子,"+f2.in.name+"为伯父。)ro_sis=fl)if(f2.parents.in.age>fl.in.age)returnfl.in.name+”为叔父,"+f2.in.name+"为侄子"elsereturnfl.in.name+"为伯父,',+f2.in.name+"为侄子。";1if(fl.parents!=null&&fl.parents.parents!=null&&fl.parents.parents=f2)returnfl.in.name+”与"+f2.in.name+”为爷孙关系"+“,且"+fl.in.name+"为孙子,"+f2.in.name+"为爷爷。";if(f2.parents!=null&&f2.parents.parents!=null&&f2.parents.parents=fl)returnfl.in.name+”与"+f2.in.name+”为爷孙关系"+“,且"+fl.in.name+"为爷爷,,÷f2.in.name+"为孙子。return"无法考证!";)elseif(f1.in.sex.equals(n")&&2.in.sex.equals("女")if(f1.parents!=null&&fl.parents.spouse=f2)returnfl.in.name+"与"+f2.in.name+"为母子关系"+"»且"+fl.in.name+"为儿子,"+f2.in.name+"为母亲。if(f2.parents!=null&&f2.parents=fl)returnfl.in.name+”与"+f2.in.name+”为父女关系"+",且"+fl.in.name+”为父亲,"+f2.in.name+"为女儿。if(fl.in!=null&&fl.in.spouseName!=null&&f1.in.spouseName.equals(f2.in.name)returnfl.in.name+"与"+f2.in.name+"为夫妻关系"+",且"+fl.in.name+"为丈夫,"+f2.in.name+"为妻子。if(fl.parents!=null&&fl.parents.bro-sis!=null&&fl.parents.bro-sis.spouse=f2)if(f1.parents.in.age>f1.parents.bro_sis.in.age)returnfl.in.name+"为侄子,"+f2.in.name+"为婶婶。elsereturnfl.in.name+"为侄子,"+f2.in.name+"为伯母。)if(f2.parents!=null&&f2.parents.spouse=null)Familyf_mother=this.isAtTree(this.root,f2.in.motherName);if(f_mother!=null&&f_mother.in.brothers_sisters!

    注意事项

    本文(家谱管理系统.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开