收藏 分享(赏)

软件工程导论课程设计-学生学籍管理系统.doc

上传人:dreamzhangning 文档编号:2726998 上传时间:2018-09-26 格式:DOC 页数:68 大小:527.50KB
下载 相关 举报
软件工程导论课程设计-学生学籍管理系统.doc_第1页
第1页 / 共68页
软件工程导论课程设计-学生学籍管理系统.doc_第2页
第2页 / 共68页
软件工程导论课程设计-学生学籍管理系统.doc_第3页
第3页 / 共68页
软件工程导论课程设计-学生学籍管理系统.doc_第4页
第4页 / 共68页
软件工程导论课程设计-学生学籍管理系统.doc_第5页
第5页 / 共68页
点击查看更多>>
资源描述

1、课程设计报告科 目: 软件工程概论 设计题目: 学生学籍管理系统 专 业: 软件工程 09-1 班 姓 名: XXXXX XXXXX 学生学籍管理一 需求分析开发环境和软件(1) 操作系统:Windows xp(2) 数据库软件:SQL Server 2000(3) Java 开发工具:系统设计与功能分析 学生信息管理系统,可用于学校等机构的学生信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用 java 语言编写,用 SQLServer2000 数据库作为后台的数据库进行信息的存储,用 SQL 语句完成学生学籍信息的添加,查询,修改,删除的操作以及成绩的录入,修改,删

2、除等。用 ODBC 驱动实现前台 Java 与后台 SQL 数据库的连接。Java语言跨平台性强,可以在 windows,linux,ubuntu 等系统下使用,方便简单,安全性好。SQLServer2000 数据库高效安全,两者结合可相互利用各自的优势。该系统实现的大致功能:1用户登陆界面。该界面可以选择使用者的身份, “管理员,教师,学生” 。不同的身份有不同的操作界面和功能权限。ID 号和密码输入正确即可登录。学生管理界面。提供了学生学籍信息的查询,修改登录密码等功能。2教师管理界面。提供了对学生学籍信息的查询,添加,修改,删除。修改密码等功能。3管理员管理界面。拥有最高的权限。允许添加

3、教师信息。4登录的用户信息分别存储在 SQL 数据库的“管理员信息表” , “教师信息表” , “学生表”中,如果用户信息不存在则三张表中,将会无权利登录本管理系统。保证了本学生管理系统的安全性。二. 系统概要设计1数据需求:(1)数据字典实体属性表:实体 属性教师 教师 ID,教师姓名,登录密码管理员 管理员 ID,登录密码学生 学号,姓名,性别,班级号,籍贯,登录密码,学生成绩系统逻辑结构设计教师信息表:字段名 类型 空值 约束条件教师 ID varchar(8) not null 主键教师姓名 varchar(8) not null登录密码 varchar(8) not null管理员信

4、息表:字段名 类型 空值 约束条件管理员 ID varchar(10)not null 主键登录密码 varchar(10)not null学生表:字段名 类型 空值 约束条件学号 int not null 主键姓名 varchar(30)not null性别 char(2)班级号 varchar(30)not null 外键籍贯 char(10) 登录密码 money not null学生成绩 Char(2)数据流图第一层学生名单学生信息 成绩统计表 成绩单第二层学生信息 成绩班平均成绩 升留级表 各科平均成绩第三层学生信息 合格单 新生信息学 生 学籍管理系统 教 师管理人员 学 生1录入

5、存储处理2查询处理3统计 处理4升留级处理本次考试成绩学生记录历次考试成绩审计 1.1 1.2 是否新生 13 录入存储学生信息各科成绩学生信息 学生成绩第四层班级学生信息统计成绩 各科第五层学生信息 升留级名单 学生记录2功能需求:(1)实现学生基本情况的录入,修改,删除等基本操作。(2)对学生基本信息提供灵活的查询方式。(3)完成一个班级的学期选课功能。(4)实现学生成绩的录入,修改,删除等基本操作。(5)能方便的对学生的个人学期成绩进行查询。(6)具有成绩统计,排名等功能。(7)具有留级,休学等特殊情况的处理功能。(8)能输出常用的各种报表。(9)具有数据备份和数据恢复功能。统计选择 3

6、.1班级平均成绩 3.1各科平均成绩 3.3是否升留级 4.1成绩标准更新记录4.2专 业 学生课程院系专业号 学时出生年月性别姓名学号密码课程号专业名 人数专业号设置课程号学期课程号选课属于 学号成绩学期课程名专业名专业号 人数院系课程课程号 课程名 学时三系统详细设计1概念结构设计局部 ER 图整体的 ER 图学生学号 姓名 性别出生年月 专业2. 逻辑结构设计(1)ER 图转换为关系模型由 ER 图可见:图中有三个实体:学生,课程,和专业;三个关系:学生选课关系,学生与专业之间的属于关系,专业的课程设置。由于每个实体必须构造表,所以可以先得到三个实体的信息表,实体的码就是关系的码,实体的

7、属性即关系模型的属性:学生基本信息表: S (sno, sname, ssex, sbirth, spasw) 课程基本信息表: C (cno, cname, cperiord)专业基本信息表: P (pno, pname, pnum, psdept)对应的属性分别为:学号,姓名,性别,出生日期,登陆密码课程编号,课程名,学期专业编号,专业名,专业人数,所在院系对于多对多的关系来说,与该联系相连的实体的码以及本身的属性均转换为关系的属性,各实体之间的码组成关系的码或者关系的码的一部分。 以上 ER 图的三个联系为多对多,所以转换为关系模式为:课程设置表:pc ( pno, psenior, c

8、no) 与设置相连的实体有专业和课程,根据多对多的转换原则:专业的码 pno,课程的码 cno 以及设置本身的属性共同构成该关系模式的码,所以该关系模式的码为全码。学生选课表:SC (sno, psenior, cno, grade)与选课相连的实体有学生和课程,同上由学生的码 sno,课程的码 cno 以及选课本身的码 psenior 构成该关系模式的码,即(sno,cno,psenior) 。此外,选课表还有一个非主属性 grade。学生与专业的属于表:SP(sno,pno)与属于关系相联的实体是学生和专业。同上由学生的码 sno,专业的码 pno 构成该关系模式的码,由于此关系没有其他的

9、码也就没有非主属性。(2)关系模式的优化:学生表 s (sno,sname,ssex,sbirth,spasw)该关系模式的码为 sno,由于只有一个码,所以不存在非主属性对码的部分函数依赖,可以达到 2NCF。另外,该关系模式的函数依赖为: sno - sname, sno - ssex, sno - ssex,sno - sbirth, sno - spasw,其间不存在传递依赖,故学生表可达到 3NCF.课程表 C ( cno ,cname , cperiod)该关系模式的码为 cno, cname,设主码为 cno,因为该关系模式中的码都是单一的,即不存在有两个或者两个以上的属性组成的

10、码,所以不存在非主属性对码的部分函数依赖,可以达到 2NCF。另外,该关系模式的函数依赖为:cno-cname, cno-cperiod, cname -cno ,cname - cperiod. 因为 cno - cname,cname - cperiod cno - cperiod, 所以该关系模式中存在传递依赖,不能达到 3NCF。故优化该表为:C1(cno,period),C2(cname,cperiod).从而两表都达到了 3NCF。专业表 P (pno,pname,pnum,pdept)该关系模式的码为 pno,pname,其中设定 pno 为主码。同课程表,该表不存在有两个或者两

11、个以上属性组成的码,即不存在非主属性对码的部分函数依赖,故可达到 2NCF。另外,此关系模式的函数依赖为:pno-pname, pno- pnum, pno - pdept , pname - pno, pname-pnum, pname - pdept; 由于存在传递依赖:pno - pname, pname-pnum, pno - pnum., 所以未能达到 3NCF。优化分解为:P1 (pno,pnum,pdept), P2 (pname,pnum,pdept)明显,两表都达到了 3NCF.课程设置表 PC(pno,psenior,cno),该关系模式的码为:(pno,psenior,c

12、no)为全码,所以可直接达到 3NCF学生选课表 SC(sno,psenior,cno,grade)该关系模式的码为:(sno,psenior,cno),因为不存在非主性 grade 对码的部分函数依赖,所以可达到 2NCF,由于不存在函数依赖(表中的函数依赖只有(sno,psenior,cno)- grade)故也达到了 3NCF属于表 SP(sno,pno)该关系模式的码(sno,pno)也是全码,所以也达到了 3NCF用户表 U(uname,upasw)该表的码为 uname,明显 upasw 对码 uname 是完全函数依赖的,从而达到 2NCF。另外因为只有两个属性,所以不存在传递函

13、数依赖,该表达到了 3NCF3 物理结构设计(1)基本表学生表 s列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件sno 是 否 否 无 否 Char(10)sname 否 否 否 无 是 Char(20)ssex 否 否 否 无 是 Char(2) 只可取男或女sbirth 否 否 否 无 是 Char(20)spasw 否 否 否 无 是 Char(10)课程表 c1列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件cno 是 否 否 无 否 Char(10)cperiod 否 否 否 无 是 smallint课程表 c2列名 主码 候选码 外码 被参照表 允许空

14、 数据类型 约束条件cname 是 否 否 无 否 Char(20)cperiod 否 否 否 无 是 smallint专业表 p1列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件pno 是 否 否 无 否 Char(10)pnum 否 否 否 无 是 smallint Pnum =0psdept 否 否 否 无 是 Char(20)专业表 p2列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件pname 是 否 否 无 否 Char(20)pnum 否 否 否 无 是 smallint Pnum =0psdept 否 否 否 无 是 Char(20)课程设置表 pc

15、列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件pno 是 否 否 无 否 Char(10)psenior 是 否 否 无 否 Char(10)cno 是 否 否 无 否 Char(10)学生选课表 sc列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件sno 是 否 否 无 否 Char(10)psenior 是 否 否 无 否 Char(10)cno 是 否 否 无 否 Char(10)grade 否 否 否 无 是 smallint grade=0学生与专业属于表 sp列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件sno 是 否 否 无 否 Ch

16、ar(10)pno 是 否 否 无 否 Char(10)管理人员密码表 u列名 主码 候选码 外码 被参照表 允许空 数据类型 约束条件uname 是 否 否 无 否 Char(20)upasw 否 否 否 无 否 Char(10)(2)视图,索引a.索引:本数据库中的表除了主键本身生成的主索引外,没有定义其他的索引。在查询时即引用主索引即可。表 s 的主索引列为:sno表 c1 的主索引列为:cno表 c2 的主索引列为:cname表 p1 的主索引列为:pno表 p2 的主索引列为:pname表 sc 的主索引列为:(pno,psenior,cno)表 sp 的主索引列为:(sno,pno

17、)表 u 的主索引列为:unameb视图:虽然关系数据模型分析的结果表示该数据库需要定义不同的用户视图,但考虑到数据库与前台开发程序的连接比较复杂,所以该数据库中没有单独定义用户视图,不同的用户视图被有选择性的的 select 语句的结果集取.4系统功能设计学生学籍管理系统添加用户学生信息管理人员信息基本信息 信息查询成绩查询系统管理 查询管理 成绩统计个人成绩专业成绩欢迎界面身份及密码验证基本信息维护添加 更新 删除四系统测试方案1. 建立数据库模式、视图及索引以下将对数据库进行实现,实现的环境为 SQL SERVER2000。create database Expulsionon(name

18、=Expulsion,filename=D:TestSQLExpulsionexpulsion.mdf,size=5,filegrowth=10%,maxsize=10 )log on(name=expulsion_log,filename=D:TestSQLExpulsionexpulsion_log.ldf,size=5,filegrowth=10%,maxsize=10)gouse Expulsiongo(1). 建立管理员表create table tb_Admin(admin_ID int identity, admin_User varchar(10) not null,admin

19、_Pass varchar(20) not null,admin_Perm int not null,constraint pk_Admin primary key (admin_ID)go (2). 登陆日志表create table tb_Log(log_ID int identity,log_UsID int,log_Time smalldatetime default getDate(),log_IP varchar(16),constraint pk_Log primary key (log_ID),constraint fk_Log_Admin foreign key (log_U

20、sID) references tb_Admin(admin_ID),)go(3). 院系表create table tb_Department(depart_ID int,depart_Name varchar(40) not null, -院系名depart_Dire varchar(10), -系主任depart_Note varchar(200),constraint pk_Depart primary key (Depart_ID),)go(4). 课程表create table tb_Course(course_ID int,course_Name varchar(20),cour

21、se_PrNo int , -先行课号course_credit int not null,course_Note varchar(200),-备注constraint pk_Course primary key (course_ID),constraint fk_Course foreign key (course_PrNo) references tb_Course(course_ID)go(5). 专业表create table tb_Professional(prof_ID int,prof_DeID int,-院系编号prof_Name varchar(40),-专业名prof_No

22、te varchar(200)constraint pk_Prof primary key (prof_ID),constraint fk_Prof_Depart foreign key (prof_DeID) references tb_Department(depart_ID)on delete cascade on update cascade,)go(6). 班级表create table tb_Class(class_ID int,class_Year varchar(4) default Year(getDate(),-入学年份哪一级的class_PrID int,-专业编号cla

23、ss_Name varchar(40),class_Inst varchar(10),-指导员 instructorclass_Note varchar(200),constraint pk_Class primary key (class_ID),constraint fk_Class_Prof foreign key (class_PrID) references tb_Professional(prof_ID)on delete cascadeon update cascade, )go(7). 学生信息表create table tb_Information(info_No varch

24、ar(20),info_Name varchar(10),info_Sex char(2) check(info_Sex in(男,女),info_Birt varchar(10),info_NaFa varchar(8) default 汉族,info_Bipl varchar(10) default 山东省,-籍贯info_Addr varchar(50),info_Post char(6), -邮政编码info_Tele varchar(20),info_ID char(18),-返回不带前导空格(LTrim)、后续空格(RTrim) 或前导与后续空格(Trim) 的字符串副本。info

25、_PoLa varchar(10) check( rtrim(info_PoLa) in (其他, 群众,共青团,中共党员),info_Phot varchar(100),info_Year varchar(10),-入学时间info_Depa int, -院系info_Prof int, -专业info_Clas int, -班级info_Note varchar(1000),constraint pk_Info primary key(info_No),constraint fk_Info_clas foreign key (info_Clas) references tb_Class (

26、Class_ID)on delete cascade on update cascade,) go(8). 学生成绩表create table tb_Result(resu_ID int,-成绩编号resu_CoID int,-课程号resu_Year varchar(4), -年份resu_Term char(2) check(resu_Term in (上,下),-学期resu_Scor int not null default 0,constraint pk_Resu primary key(resu_ID,resu_CoID),constraint fk_Resu_Cour forei

27、gn key (resu_CoID) references tb_Course(Course_ID)on delete cascade on update cascade,) go(9). 奖罚记录create table tb_RewardPunishment(rePu_ID int identity,rePu_Type varchar(4) check(rePu_Type in(奖励,惩罚),rePu_Time varchar(10) not null,rePu_Note varchar(1000) not null,constraint pk_RePu primary key (rePu

28、_ID),)(10). 专业课程联系表gocreate table tb_Prof_Cour(course_ID int,prof_ID int,constraint pk_Prof_Cour primary key(course_ID,prof_ID),constraint fk_Prof_Cour_Cour foreign key(course_ID) references tb_Course(course_ID), constraint fk_Prof_Cour_Prof foreign key(prof_ID) references tb_Professional(prof_ID),)

29、go(11). 课程学生联系表create table tb_Cour_Info(info_No varchar(20),course_ID int,constraint pk_Cour_Info primary key(info_No,course_ID),constraint fk_Cour_Info_Info foreign key(info_No) references tb_Information(info_No),constraint fk_Cour_Info_Cour foreign key(course_ID) references tb_Course(course_ID),)

30、go(12). 学生奖惩联系create table tb_Info_RePu(info_No varchar(20),rePu_ID int,constraint pk_Info_RePu primary key(info_No,rePu_ID),constraint fk_Info_RePu_Info foreign key(info_No) references tb_Information(info_No),constraint fk_Info_RePu_RePu foreign key(rePu_ID) references tb_RewardPunishment(rePu_ID)g

31、o(13). 学生成绩联系create table Info_Resu(info_No varchar(20),resu_ID int,resu_CoID int,constraint pk_Info_Resu primary key(info_No,resu_ID,resu_CoID),constraint fk_Info_Resu_Info foreign key(info_No) references tb_Information(info_No),constraint fk_Info_Resu_Resu_ID foreign key(resu_ID,resu_CoID) referen

32、ces tb_Result(resu_ID,resu_CoID),)use Expulsiongo查看某用户的登录日志create view vi_Admin_Log(UserName,IP,LoginTime) asselect a.admin_User,l.log_IP,l.log_Timefrom tb_Admin as a,tb_Log as l where a.admin_ID=l.log_UsIDgoselect * from vi_Admin_Log where UserName=cachego建立专业课程视图create view vi_Prof_Cour(Profession

33、al,Course,Credit,Note) asselect p.prof_Name,c.course_Name,c.course_credit,c.course_Notefrom tb_Professional as p,tb_Course as c, tb_Prof_Cour as pcwhere p.prof_ID=pc.prof_ID and c.course_ID=pc.course_IDgoselect * from vi_Prof_Courgo查看学生奖惩信息create view vi_Info_RePu(Sno,Name,Prof,Clas,rePu_Type,rePu_T

34、ime,Note) asselect i.info_No,i.info_Name,p.prof_Name,c.class_Name,r.rePu_Type,r.rePu_Time,r.rePu_Notefrom tb_Information as i,tb_RewardPunishment as r, tb_Info_RePu as ir,tb_Professional as p,tb_Class as cwhere i.info_No=ir.info_No and r.rePu_ID = ir.rePu_ID and p.prof_ID=i.info_Prof and c.class_ID=

35、i.info_Clasgo select * from vi_Info_RePugo建立学生成绩视图create view vi_Info_Resu(Sno,Name,Prof,Clas,Cour,RYea,Term,Scor) asselect i.info_No,i.info_Name,p.prof_Name,c.class_Name,co.course_Name,r.resu_Year,r.resu_Term,r.resu_Scorfrom tb_Information as i,tb_Result as r, tb_Info_Resu as ir, tb_Professional as

36、 p,tb_Class as c,tb_Course as cowhere i.info_No =ir.info_No and r.resu_CoID=ir.resu_CoID and r.resu_ID=ir.resu_ID and co.course_ID=r.resu_CoID and p.prof_ID=i.info_Prof and c.class_ID=i.info_Clas goselect * from vi_Info_Resu2. 装载数据use Expulsiongo插入用户表insert tb_Admin (admin_Pass,admin_Perm,admin_User

37、)values (123,1,cache)-0 普通用户,管理员go插入登录日志表insert tb_Log (log_UsID,log_IP) values (1,192.168.1.109)go插入系院表insert tb_Department (depart_ID,depart_Name,depart_Dire,depart_Note)values (1,信息工程学院,韩剑 ,青岛滨海学院)go插入课程表insert tb_Course (course_ID,course_Name,course_PrNo,course_credit,course_Note)values(1,数据库原理,

38、1,2,一门重要的课程)go插入专业表insert tb_Professional (prof_ID,prof_DeID,prof_Name,prof_Note)values (1,1,软件工程,09 软件工程)go插入班级表insert tb_Class (class_ID,class_Inst,class_Name,class_PrID,class_Year,class_Note)values (2,曹锋,09 软件工程,1,09,)go插入学生信息表insert tb_Information(info_No,info_Name,info_Sex,info_Birt,info_NaFa,i

39、nfo_Bipl,info_Addr,info_Post,info_Tele,info_Year,info_Depa,info_Prof,info_Clas)values(20090520101,曹锋,男,1988-12-6,汉族,山东省,潍坊市,262100,13478518975,2009-9-1,1,1,2)go插入成绩表insert tb_Result(resu_ID,resu_clas,resu_CoID,resu_Year,resu_Term,resu_Scor)values(1,2,1,2009,下,90)go插入奖惩表insert tb_RewardPunishment (re

40、Pu_Type,rePu_Time,rePu_Note)values(奖励,2009-1-1,*)go插入联系表 tb_Prof_Courinsert tb_Prof_Cour (course_ID,prof_ID) values(1,1)go插入联系表 tb_Info_RePuinsert tb_Info_RePu (info_No,rePu_ID) values(20080520101,1)go插入联系表 tb_Info_Resuinsert tb_Info_Resu (info_No,resu_ID,resu_CoID) values(20080520101,1,1)JAVA 程序pac

41、kage ms;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.ImageIcon;import javax.sw

42、ing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;public class AdminGUIJDialog log=null;/管理员登陆主窗口JPanel jp1=null;/用于存放管理员登陆标签 和 jp5JPanel jp2=null;/用于存放查询 修改 增加 删除 按钮JPanel jp3=null;/用于存放信息块 和 jp5JPanel

43、 jp4=null;/用于存放 修改 插入 删除 按钮JPanel jp5=null;/用于存放请输入学号 文本框JLabel jadminLog=null; /管理员登陆标签JLabel jLabel=null; /请输入学号 标签TextField tf=null; /请输入学号 文本框JButton jb1=null;/查询 按钮JButton jb2=null;/修改 按钮JButton jb3=null;/增加 按钮JButton jb4=null;/删除按钮JButton jb5=null; /列出全部学生信息JButton jb6=null; /退出TextArea ta=nul

44、l;/信息文本框JLabel jl=null; /用于站位String id=null; /用于保存用户输入查询学号TextField jtf = new TextField9 ;JDialog jdialog=null;public AdminGUI(JFrame log)super();this.log = new JDialog(log,“管理员登陆“,true);jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jp5=new JPanel();jadminLog=new JLabel(new Ima

45、geIcon(“image/admin.jpg“);jLabel=new JLabel(“请输入学号“);tf=new TextField();jb1=new JButton(“查询“);jb2=new JButton(“修改“);jb3=new JButton(“增加“);jb4=new JButton(“删除“);jb5=new JButton(“全部学生信息“);jb6=new JButton(“退出“);ta=new TextArea(“点击查询按钮将在此显示查询信息“);jl=new JLabel();public void adminGo()BorderLayout bl=new

46、BorderLayout();bl.setVgap(30);bl.setHgap(30);log.setLayout(bl);log.add(jp1,BorderLayout.NORTH);BorderLayout bl1=new BorderLayout();bl1.setVgap(20);jp1.setLayout(bl1);jp1.add(jadminLog,BorderLayout.CENTER);jp5.setLayout(new GridLayout(1,2,200,200);jp5.add(jLabel);jp5.add(tf);log.add(jp2,BorderLayout.

47、WEST);jp2.setLayout(new GridLayout(1,1,20,300);log.add(jp3,BorderLayout.CENTER);jp3.setLayout(new BorderLayout(10, 10);jp3.add(jp5,BorderLayout.NORTH);jp3.add(ta);jp5.setLayout(new GridLayout(1,5,10,10);jp5.add(jLabel);jp5.add(tf);log.add(jp4,BorderLayout.SOUTH);jp4.setLayout(new GridLayout(1,3,20,3

48、0);jp4.add(jb5);jp4.add(jb1);jp4.add(jb2);jp4.add(jb3);jp4.add(jb4);jp4.add(jb6);log.addWindowListener(new WindowAdapter()Overridepublic void windowClosing(WindowEvent e)System.exit(0););jb1.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)AdminGUI.this.id=AdminGUI.this.tf.getText();Select sel=new Select();sel.selectStudent(AdminGUI.this.id);if(sel.getStudent()!=null)Student student=sel.getStudent();AdminGUI.this.ta.setText(“学号tt“+“姓名tt“+“性别tt“+“出生日期tt“+“民族tt“+“籍贯tt“+“

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报