版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上课程设计报告课程: jsp 学号: 姓名: 班级: 教师: 徐州师范大学计算机科学与技术学院课程设计任务书姓 名 学 号 班 级 课程名称数据库系统概论课程性质课程设计同组成员 分工学生选课操作、教师管理操作两部分功能的实现设计时间 设计名称学生选课管理信息系统的设计与实现设计要求系统功能基本要求:教师信息,包括教师编号、教师姓名、性别、年龄、学历、职称、毕业院校,健康状况等。学生信息,包括学号、姓名、所属院系、已选课情况等。教室信息,包括,可容纳人数、空闲时间等。选课信息,包括课程编号、课程名称、任课教师、选课的学生情况等。成绩信息,包括课程编号、课程名称、学分、成
2、绩。按一定条件可以查询,并将结果打印输出。设计思路与设计过程设计思路:,本系统结合数据库和JSP编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课的页面操作,包括个人信息,密码修改,查询成绩,选课,退选五个功能;第二模块是教师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。计划与进度构思整个系统的框架,在数据库中建表主要对学生选课的一些操作进行jsp编码主要对教师的相关操作进行jsp编码整合整个实验,
3、并进行修改写课程设计的报告任课教师意 见说 明学生选课管理系统一系统需求分析学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理所无法比拟的优点。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套软件成为很有必要的事情,在下面的各章中我们将以开发
4、一套学生选课系统为例,谈谈其开发过程和所涉及到的问题及解决方法。 本实验实现的学生选课管理系统主要包括以下功能:1完成数据的录入和修改,并提交数据库保存。其中的数据包括:学生信息、课程设置、学生成绩以及操作员信息等; 2.设计实现学生信息查询,选课管理、退选管理、分数查询,课程的浏览教师信息查询、教室空闲时间查询等JSP页面 。 3具备一定的安全性管理功能。包括操作员的权限设置、修改密码设置、注销和等功能。二系统总概括1.系统的总设计本系统结合数据库和JSP编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课的页面操作,包括个人信息,密码修改,查询成绩,选课,退选五个
5、功能;第二模块是教师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。学生选课教师管理管理员学生选课管理系统图1 系统的功能模块图2数据库设计2.1数据库概念结构设计本系统主要有三个实体,其中有学生和课程两个实体集,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,还有教师和课程两个实体,一个老师可以教授若干门课程,一门课程却只能有一个老师教授,这两个实体集之间是一对多联系。通过选课成绩将老师
6、和学生联系在一起。为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户的编号、姓名、密码。本系统的E-R图如下:学生学号姓名密码院系性别电话地址选修成绩课程教授教师编 编号毕业院校健康状况学历姓名密码院系年龄性别职称MNM1编 课程号编 课程名编 教师号编 学分编 学时编 地点编 总人数编 已选数编 院系管理员编号密码图2 系统的E-R图2.2数据库逻辑结构设计根据关系模型的转换原则,上面的ER图可转换为如下所示的关系模型:student(sId,sName,sPass,dId)含义分别为:学生(学号,姓名,密码,所在系的编号)stuDetail(userID,userSex,user
7、Mobil,useraddress)含义分别为:学生信息(学号,性别,电话,地址) teacher(tId,tPame,tPass,dId)含义分别为:教师(学号,姓名,密码,所在系的编号)teaDetail(userID,userSex,userAge,useredu,usertitle,usersch,userhealth)含义分别为:教师信息(学号,性别,年龄,学历,职称,毕业院校,健康状况)course(cId,cName,tId,credit,period,cPlace,cNumall,cNum,dId)含义分别为:课程(课程号,名称,教师号,学分,学时,上课地点,总人数,已选人数,
8、院系号)choosecourse(cId,sId, Grade)含义分别为:选修(学号,课程代码,成绩)room(roomname,roomnum,roomtime)含义分别为:教室(教室名,容纳人数,空闲时间)admin(aId,aPass)含义分别为:管理员(管理员编号,姓名) department(dId,dName)含义分别为:院系(院系编号,院系名) 根据上面的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:表1 学生表Student的表结构主码列 名数据类型宽度小数位空否备 注PksIdChar10 N学号 sNameChar20
9、160;Y姓名 sPassChar2 Y密码 dIdChar20 Y所在系号表2 学生信息表StuDetail的表结构主码列 名数据类型宽度小数位空否备 注PkuserIDChar10 N学号 userSexChar10 Y性别 userMobilChar30 Y电话 userAddressChar50 Y地址表3 教师表teacher的表结构主码列 名数据类型宽度空否备 注PktIdChar10N编号 tNameChar20Y姓名 tPassChar2Y密码
10、60;dIdChar20Y所在系号表4 教师信息表teadetail的表结构主码列 名数据类型宽度空否备 注PkuserIDChar10N学号 userSexChar10Y性别 userAgeChar50Y电话 usereduChar30Y学历usertitleChar30Y职称userschChar30Y毕业院校 UserhealthChar50Y健康状况表5 课程信息表Course的表结构主码列 名数据类型宽度空否备 注PkcIdChar10N课程号 coNameChar20Y课程名称 tIdChar10Y教师号 creditCh
11、ar8Y学分periodChar8Y学时cPlaceChar10Y上课地点cNumAllChar4Y总人数cNumChar4Y已选人数dIdChar10Y院系号表6 选课成绩表choosecourse的表结构主码列 名数据类型宽度空否备 注PkcIdChar5N课程代码sIdChar3N学号 gradeDecimal5Y成绩表7 教室信息表room的表结构主码列 名数据类型宽度空否备 注PkroomnameChar10N教室名roomnumChar10N容纳人数 roomtimeChar10Y空闲时间 表8 管理员表admin的表结构主码列 名数据类型宽度空否备 注PkaI
12、dChar10N管理员编号 aPassChar10Y管理员姓名 表9 院系表department的表结构主码列 名数据类型宽度空否备 注PkdIdChar10N院系号 dNameChar10Y院系名下面在系统实施阶段就可以物理实现数据库了,本系统使用前面实验已经建好的服务器端SQL Server数据库xuanke,具体创建方法见前面实验。三系统实现本实验是用JSP结合数据库实现的,其中包含了三个主页面,一是学生登录页面,二是教师登录页面,三是管理员登录页面。其中每个页面中都会有菜单进行相应的操作。3.1 JSP文件代表的操作(1)主界面操作:Index.jsp/登录界面(包
13、含学生、教师、管理员三个选项)Login.jsp/密码验证(2)学生选课 (a)学生选课界面:student.jps/菜单显示studentIndex.html/欢迎界面studentMessage.jsp (b)个人信息:studMessSel.jsp/个人信息的页面显示 (c)密码修改:stuM.jsp/在数据库中修改密码 stuMessMod.jsp/修改密码界面 stuMessModSuc.jsp/修改成功 (d)成绩查询:gradeselect.jsp/相应课程的成绩查询(e)选课:choosecourse.jsp/所有课程显示 choose.jsp/在数据库中插入数据 choose
14、success.jsp/选课成功(f)选课情况查询及退选:courseselect.jsp/选课情况查询 ccdel.jsp/数据库中删除选课记录(g)注销: zhuxiao.jsp/注销(3)教师管理 (a)教师管理界面:teacher.jps/菜单显示teacherIndex.html/欢迎界面teacherMessage.jsp (b)个人信息:teacherMessSel.jsp/个人信息的页面显示 (c)密码修改:teacherM.jsp/在数据库中修改密码 teacherMod.jsp/修改密码界面 teaMessModSuc.jsp/修改成功(d)提交成绩:grade.jsp/选
15、课学生信息显示 gradeIns.jsp/在数据库中插入数据 (e)课程信息:lookcourse.jsp/选课情况查询(f)教室信息:classroom.jsp/查看可用教室的空闲时间 (g)注销: zhuxiao.jsp/注销3.2 数据库的连接举例:验证用户类型和密码时的数据库连接<body><%String name=(String)request.getParameter("username");String pass=(String)request.getParameter("userpass");String s=(Str
16、ing)request.getParameter("userselect");Connection conn=null;Statement stmt=null;ResultSet rs=null;String loginNum="0"session.setAttribute("lnum",loginNum);tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");conn=DriverManager.getConnection("jdbc:odbc:xk"
17、;,"sa","");if(s.equals("1")String sql="select * from student where sId='"+name+"' and sPass='"+pass+"'"stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next() loginNum="1"session.setAttribute("lnum&
18、quot;,loginNum);session.setAttribute("name",name);out.print(name+"登陆成功,页面跳转.");response.sendRedirect("student/studentIndex.html");else out.print("用户名或密码有误.");response.sendRedirect("index.jsp");if(s.equals("2")String sql="select * from
19、teacher where tId='"+name+"' and tPass='"+pass+"'"stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next() loginNum="2"session.setAttribute("lnum",loginNum);session.setAttribute("name",name);out.print(name+"登陆成功,页面
20、跳转.");response.sendRedirect("teacher/teacherIndex.html");else out.print("用户名或密码有误.");response.sendRedirect("index.jsp"); if(s.equals("3")String sql="select * from admin where aId='"+name+"' and aPass='"+pass+"'&quo
21、t;stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next()loginNum="3"session.setAttribute("lnum",loginNum);session.setAttribute("name",name);out.print("管理员"+name+"登陆成功,页面跳转.");response.sendRedirect("admin/adminIndex.html");elseou
22、t.print("用户名或密码有误.");out.print("<a href=index.jsp>登陆页面</a>");catch(Exception e)out.print(e);/response.sendRedirect("index.jsp");%></body>3.3 具体操作(1)学生选课操作(a)登录页面图1.1 学生登录页面主要代码:<body><form name="loginform" method="post"
23、action="login.jsp"><br><br><br><br><table width="500" height="150" border="0" align="center"> <tr> <td align="center"><font size="5" color="#FFFFFF">欢迎您使用学生选课系统</font
24、></td> </tr> <tr></table><table width="294" border="0" align="center"> <tr> <td colspan="3"> </td> </tr> <tr> <td width="79">用户名:</td> <td width="148">
25、;<input name="username" type="text" size="20" size="20" maxlength="30"></td> <td width="53" rowspan="2"><img src="image/logo_img.gif" width="37" height="40" onClick="logincli
26、ck()"> </td> </tr> <tr> <td>密码:</td> <td><input name="userpass" type="password" size="20" size="20" maxlength="30"> </td> </tr> <tr> <td>用户类型:</td> <td> <select
27、name="userselect"> <option value="1" selected>学生</option> <option value="2">教师</option> <option value="3">管理员</option> </select> </td> <td> </td> </tr></table></form><
28、/body>(b)菜单操作图1.2 学生选课系统的界面主要代码:<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#"> <tr> <td height="40" align="center" bgcolor="#00509F"><div align="center">&
29、lt;font color="#FFFFFF" size="4">学生选课系统</font></div></td> </tr> <tr> <td height="40" align="center" bgcolor="#FFFFFF"><div align="left"><img src="image/index_01.gif" width="20&q
30、uot; height="17"><a href="studMessSel.jsp" target="rightFrame"><font color="#0000FF" size="3">个人信息</font></a></div></td> </tr> <tr> <td height="40" align="center" bgcolor="
31、;#FFFFFF"><div align="left"><img src="image/index_01.gif" width="20" height="17"><a href="stuMessMod.jsp" target="rightFrame"><font color="#0000FF" size="3">密码修改</font></a><
32、/div></td> </tr> <tr> <td height="40" align="center" bgcolor="#FFFFFF"><div align="left"><img src="image/index_01.gif" width="20" height="17"><a href="gradeSelect.jsp" target=&qu
33、ot;rightFrame"><font color="#0000FF"size="3" >成绩查询</font></a></div></td> </tr> <tr> <td height="40" align="center" bgcolor="#FFFFFF"><div align="left"><img src="image/ind
34、ex_01.gif" width="20" height="17"><a href="courseSelect.jsp" target="rightFrame"><font color="#0000FF"size="3" >选课查询以及退选</font></a></div></td> </tr> <tr> <td height="40" a
35、lign="center" bgcolor="#FFFFFF"><div align="left"><img src="image/index_01.gif" width="20" height="17"><a href="choosecourse.jsp" target="rightFrame"><font color="#0000FF" size="3&q
36、uot;>选课</font></a></div></td> </tr> <tr> <td height="40" align="center" bgcolor="#FFFFFF"><div align="left"><img src="image/index_01.gif" width="20" height="17"><a href=&
37、quot;zhuxiao.jsp" target="_top"><font color="#0000FF" size="3">注销</font></a></div></td> </tr></table>(c)个人信息显示学生进入后可以在菜单里进行相应的操作,点击个人信息时,就会出现该学生的信息.如下图所示:图1.2 学生信息显示的界面主要代码:从数据库中读出相应的信息:tryClass.forName("sun.jdbc.od
38、bc.JdbcOdbcDriver");conn=DriverManager.getConnection("jdbc:odbc:xk","sa","");String sql="select * from student where student.sId='"+name+"'"System.out.println(sql);stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next()sId=rs.
39、getString("sId");sName=rs.getString("sName");dId=rs.getString("dId");String sql1="select * from stuDetail where userID ='"+name+"'"System.out.println(sql1);stmt=conn.createStatement();rs=stmt.executeQuery(sql1);if(rs.next()Sex=rs.getString(&q
40、uot;userSex"); Mobil=rs.getString("userMobil"); Addr=rs.getString("userAddress");Connection connd=null;Statement stmtd=null;ResultSet rsd=null;connd=DriverManager.getConnection("jdbc:odbc:xk","sa","");stmtd=connd.createStatement();rsd=stmtd.exec
41、uteQuery("select dName from department where dId='"+dId+"'");if(rsd.next()dName=rsd.getString("dName");catch(Exception e)out.println(e);%> <form name="form1" method="post"><table width="350" border="0" align=&q
42、uot;center" cellpadding="0" cellspacing="2" class="border"> <td height="25" align="center"><strong><font size="5" color="#FFFFFF" >学生个人信息</font></strong></td></table><table bord
43、er="10" align="center" width="500" height="150"> <tr> <Td width="60"> <fontsize="4" color="#FFFFFF">学号</font></Td><td width="100"> <fontsize="3" color="#FFFFFF&quo
44、t;><%=sId%></font></td> <td width="60"> <fontsize="4" color="#FFFFFF">姓名</font></td><td width="100"> <fontsize="3" color="#FFFFFF"><%=sName%></font></td> <td widt
45、h="60"> <fontsize="4" color="#FFFFFF">性别</font></td><td width="100"> <fontsize="3" color="#FFFFFF"><%=Sex%></font></td></tr><tr> <td> <fontsize="4" color=&quo
46、t;#FFFFFF">院系</font></td><td> <fontsize="3" color="#FFFFFF"><%=dName%></font></td> <td> <fontsize="4" color="#FFFFFF">电话</font></td><td> <fontsize="3" color="#FFF
47、FFF"><%=Mobil%></font></td> <td> <fontsize="4" color="#FFFFFF">地址</font></td><td> <fontsize="3" color="#FFFFFF"><%=Addr%></font></td> </tr> </table></form>(d)密码修改
48、举例:将学号的密码该为:6666其显示如下:图1.3 修改密码修改提交后数据库中的结果如下,可见密码已修改图1.4 数据库中修改后的student表主要代码:数据库中修改该学生的密码的代码String sPass=(String)request.getParameter("sPass");Connection conn=null;Statement stmt=null;tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");conn=DriverManager.getConnection("jdbc:o
49、dbc:xk","sa","");String sql2="update student set sPass='"+sPass+"' where sId='"+name+"'"stmt=conn.createStatement();stmt.executeUpdate(sql2);stmt.close();response.sendRedirect("stuMessModSuc.jsp");function checkBig() if
50、 (document.form1.sPass.value="") alert("密码不能为空!"); document.form1.sPass.focus(); return false; else if (document.form1.sPassagn.value="") alert("再次输入密码!"); document.form1.sPassagn.focus(); return false; else if (document.form1.sPass.value!=document.form1.sPass
51、agn.value) alert("两次密码不同!"); document.form1.sPass.focus(); return false; out.print("修改成功");(e)成绩查询根据教授该门课的老师是否提交成绩,学生可以查到自己相应课程的成绩,其查询结果如下: 图1.5 查询成绩的页面主要代码:tryStatement stmtc=null;ResultSet rsc=null;Connection connc=null;Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");co
52、nnc=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sqlc="select * from chooseCourse where sId='"+name+"'"stmtc=connc.createStatement();rsc=stmtc.executeQuery(sqlc);while(rsc.next()String coId=rsc.getString("coId");float
53、 grade=rsc.getFloat("grade");String grademess=null;Statement stmt=null;ResultSet rs=null;Connection conn=null;conn=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sql="select coName from course where coId='"+coId+"'"stmt
54、=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next() if(grade>0)out.print(grade); else out.print("未提交");(f)课程查询及退选可以通过对应课程后面的退选选项进行课程的退选图1.6 查询选课情况的页面主要代码:<table width="90%" border="0" align="center" cellpadding="0" cellspacing="
55、0"> <tr> <td align="center" valign="top"> <p class="style8"> <%=name%>选课选择情况</p> <table width="600" border="0" cellpadding="0" cellspacing="1" bgcolor="#"> <tr><td wid
56、th="100" align="center" bgcolor="#FFCCFF"><div align="center"><strong><font color="blue"> 课程名称</font></strong></div></td> <td width="60" align="center" bgcolor="#FFCCFF">
57、;<div align="center"><strong><font color="blue"> 学分</font></strong></div></td> <td width="60" align="center" bgcolor="#FFCCFF"><div align="center"><strong><font color="blue
58、"> 学时</font></strong></div></td> <td width="80" align="center" bgcolor="#FFCCFF"><div align="center"><strong><font color="blue"> 上课地点</font></strong></div></td> <td wi
59、dth="91" height="30" align="center" bgcolor="#FFCCFF"><div align="center"><strong><font color="blue"> 教师</font></strong></div></td> <td width="139" align="center" bgcolor=&
60、quot;#FFCCFF"><strong><font color="blue">操作选项</font></strong></td> </tr> while(rsc.next()String coId=rsc.getString("coId");float grade=rsc.getFloat("grade");String grademess=null;Statement stmt=null;ResultSet rs=null;Connectio
61、n conn=null;conn=DriverManager.getConnection("jdbc:odbc:xk","sa",""); String sql="select * from course where coId='"+coId+"'"stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next() String coName=rs.getString(2); String tId=rs.getSt
62、ring(3); float credit=rs.getFloat(4); float period=rs.getFloat(5); String cPlace=rs.getString(7); Connection connt=null; Statement stmtt=null; ResultSet rst=null; connt=DriverManager.getConnection("jdbc:odbc:xk","sa","");String sqlt="select tName from teacher where
63、 tId='"+tId+"'"stmtt=connt.createStatement();rst=stmtt.executeQuery(sqlt);if(rst.next()out.print(rst.getString(1); rsc.close();stmtc.close(); %> </table> </td> </tr></table>(f)选课界面中已通过数据库将所有的课程列出来,学生可以通过前面的选择标志进行选课。图1.7 选课信息的页面及选课操作选课后,相应数据库中的choosec
64、ourse表增加了一行选课记录图1.8选课后数据库中的chooseCourse表主要代码:<form action="choose.jsp" method="post"><table width="90%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="
65、;top"><br> <br> <table width="800" border="0" cellpadding="0" cellspacing="1" bgcolor="#"> <tr> <td width="40" height="30" align="center" bgcolor="#FFCCFF"><div align=&q
66、uot;center"><strong>选择</strong></div></td> <td width="100" align="center" bgcolor="#FFCCFF"><div align="center"><strong>课程名称</strong></div></td> <td width="60" align="center&
67、quot; bgcolor="#FFCCFF"><div align="center"><strong>学分</strong></div></td> <td width="60" align="center" bgcolor="#FFCCFF"><div align="center"><strong>学时</strong></div></td&g
68、t; <td width="80" align="center" bgcolor="#FFCCFF"><div align="center"><strong>上课地点</strong></div></td> <td width="91" height="30" align="center" bgcolor="#FFCCFF"><div align="center"><strong>教师</strong></div></td> <td width="70" align="center" bgcolor="#FFCCFF&q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大家保险城心养老社区入住率超80%沉淀保费超3000亿案例解析
- 2026年民生实事项目一老一小类储备申报编制要点
- 2026年合成生物学化学品生物制造工艺设计
- 四川省眉山洪雅县联考2026年初三下期第一次月考试题含解析
- 温州市2026届初三第二学期能力诊断生物试题文试题含解析
- 重庆市合川区2026年初三5月总复习质检(二模)化学试题含解析
- 2026年住房反向抵押养老保险试点指导意见全文解析
- 2026届吉林省辽源市名校初三下学期第二学段模块考试化学试题试卷含解析
- 2026年辽宁省昌图县初三9月初态考试生物试题试卷含解析
- 江西省彭泽县2026年初三第二轮复习测试卷化学试题(八)含解析
- 2025年芜职历年校考真题及答案
- 2025年殡仪服务员考试题库及答案
- 项目3-识别与检测电容器
- 四川党校在职研究生考试真题及答案
- 女士西装基础知识培训课件
- 急危重症快速识别与急救护理
- 菜市场管理方案策划
- 基金审计方案(3篇)
- 2025年天津市中考化学试卷及答案
- 物理中考一轮复习教案
- 数字媒体艺术设计毕业设计
评论
0/150
提交评论