javawweb学生成绩管理系统实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Javaweb学生成绩管理系统
武汉轻工大学
数学与计算机学院
《网络开发技术教程》大作业
专业:信息管理与信息系统
班级:信管二班
学号: ********* 姓名张赛军
指导老师:***
2013年 6 月 8日
一、概述:首先我做的系统是学生成绩管理系统使用jsp+javabean+servlet 的传统的MVC开发模式,使用mysql数据库来存储数据。

其中Jsp实现视图端,Javabean是模型端,Servlet是控制端。

Servlet担当主要逻辑控制,通过接受Jsp传来的用户请求,调用以及初始化JavaBean,再通过Jsp传到客户端,本系统中SqlBean担当主要的与数据库的连接与通信,JavaBean在本系统中主要担当配合Jsp以及Servlet来完成用户的请求,而Jsp主要担当接受与响应客户端。

体系结构图为:
主要控制流程为:
首先编写系统的登陆主页login.jsp;然后通过check类(check.java)来验证登陆信息,分别跳转到三个界面:学生端(student.jsp);教师端(teacher.jsp);管理员端(manager.jsp)。

然后每个端口对应添加、删除功能界面。

详细的后面会介绍。

二、技术(tomcat,myeclipse等)
在环境方面我配置的是:tomcat6.0+myeclipse6.0+jdk7.0+mysql;
技术路线:
本系统的开发采用的是JSP+JavaBean+Servlet模式,在该模式中,结合了JSP 和Servlet技术,充分利用了JSP和Servlet两种技术原有的优点。

在此模式中,JavaBean作为模型的角色,充当JSP和Servlet通信的中间工具,Servlet处理完后设置JavaBean的属性,JSP读取此JavaBean的属性,然后进行显示。

该模式更
加明显地把显示和逻辑分离,使得代码更容易管理,适合大型项目的开发。

Javaweb学生成绩管理系统
【系统设计目标分析】
本系统是用JSP实现的一个完全基于浏览器的学生成绩管理系统,管理员,学生,老师各自拥有以下功能:
(1)登录学生成绩管理系统的后台管理平台。

(2)修改密码。

(3)成绩查询。

(4)他人成绩查询。

(5)课表显示。

(6)选课。

(7) 课程排名专业排名
(8)显示学生信息
(9)添加学生
(10)显示教师信息
(11)添加信息
(12)显示课程信息
(13)添加课程
(14)成绩查询(按课程查询)
(15)成绩查询(按专业查询)
2.1【JSP中的各种技术】
2.1.1【JSP概述】
JSP即Java Server Pages,是由Sun Microsystem公司于1996年6月推出的新技术,是基于Java Servlet以及整个Java体系的Web开发技术。

JSP已经成为开发Web动态网页重要、快速和有效的工具,是全新的网络服务器编程环境。

JSP 充分利用了Java的强大功能,是一种优秀的服务器端技术。

随着Java技术的日益成熟和流行,JSP在网络编程中也变得越来越重要。

JSP基于强大的Java语言,具有极强的扩展能力,良好的缩收性,以及与平台无关的开发特性,成为构建动态网站的主流技术之一,JSP有着其他技术所不具备的优势。

其优势在于:可以将内容的生成和显示进行分离、生成可重用的组件、采用标识简化页面开发。

JSP 能提供所有Servlet的功能
2.1.2【Servlet概述】
Servlet是Java编写的服务器端程序,是由服务器端执行和调用的Java类。

Servlet是采用Java技术来实现CGI功能的一种技术,能够像CGI一样动态地扩
展Web服务器的功能,并采用请求——响应模式提供Web服务。

Servlet和CGI 一样都是运行在Web服务器上,用来生成Web页面。

Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。

其工作流程图如图2.1所示。

Servlet工作流程:
(1)客户端发送请求信息至服务器。

(2)服务器将请求信息发送至Servlet。

(3)Servlet生成响应内容并将其传给Servlet。

响应内容动态生成,通常取决于客户端的请求。

(4)服务器将响应信息返回至客户端。

2.1.3【JavaBean概述】
JavaBean是Sun公司为了进入因特网、企业网以及万维网上进行分布式计算的组件结构入口。

按照Sun公司的定义,JavaBean是一个可重复使用的软件部件。

JavaBean体系结构是第一个全面地基于组件的标准模型之一,该组件是Java类,这些类遵循一个接口格式,以便于使方法命名、底层行为以及继承或实现的行为能够把类看做标准的JavaBean组件的方式进行构造[7]。

在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速生成新的应用程序。

JavaBean具有以下特点:
(1)可以实现代码的重复利用。

(2)易维护性、易使用性、易编写性。

(3)可以在Java的任何平台上工作,不需要重新编译。

(4)可以在内部网或者网络之间进行传输。

(5)可以以其它部件的模式进行工作。

JavaBean在JSP程序中常用来封装事务逻辑、数据库操作等,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。

2.2【基于B/S的WEB应用体系结构】
2.2.1【传统的两层体系结构】
在Web发展的初期,Web应用主要是通过静态页面在Internet上发布信息。

用户通过浏览器向服务器发送请求,服务器接收用户端的请求,向客户端浏览器发送所请求的页面。

在这种结构下,网站上的页面是静态的,无法根据用户的实际使用情况做动态的变化。

网站的信息提供者通过更新服务器上的网页来向用户提供最新的信息。

用户和浏览器之间只有有限的交互,而网站和用户之间几乎没有交互。

Javaweb学生成绩管理系统
2.2.2【三层体系结构】
图2.2 三层体系结构图
CGI,ASP,PHP等技术的出现,使得开发动态交互式的Web应用得以实现。

用户通过浏览器向服务器发送请求,Web服务器接收客户端发送来的请求,对请求进行分析,如果请求是静态页面,那么就将所请求的页面发送到客户端;如果请求的是动态页面,那么就执行此动态页面,并将执行结果发送给客户端。

动态页面中的脚本程序可以和数据库服务器进行交互。

Web服务器可以根据用户的请求动态更新页面上的信息,Web信息提供者可以通过改变数据库中的数据向用户提供最新信息,而不需要逐个更改页面。

用户可以通过这些动态页面向数据库中输入信息,从而增强了用户和服务器之间的交互性。

2.2.3【JSP网站开发模式】
目前,JSP技术已经成为一种受大多数大型企业或中小型企业喜爱的动态网页开发技术。

越来越多的技术人员也逐步成为JSP技术的推崇者。

JSP技术正是利用了Java的“一次开发,处处使用”的性能,成为了网站开发技术人员的首选技术。

当然,JSP技术的最大优势在于能够将页面的表现形式和页面的商业逻辑分开。

JSP网站开发技术标准提供了两种开发模式:一种是JSP+JavaBean开发模式;一种是JSP+Servlet+JavaBean开发模式。

JSP+JavaBean模型图如图2.3所示。

图2.3 JSP+JavaBean模型图
在这种模型中,JSP页面独自响应请求并将处理结果返回给客户,所有的数据通过JavaBean来处理,JSP实现页面的显示。

此模型常常会导致页面被嵌入大量的脚本语言或者Java代码段,当处理大型业务时,页面程序将变得异常复杂给开发和维护带来困难。

JSP+Servlet+JavaBean模型图如图2.4所示。

图2.4 JSP+Servlet+JavaBean模型图
Servlet技术是一种采用Java技术来实现CGI功能的一种技术。

Servlet是运行在Web服务器上,用来生成Web页面。

Servlet技术非常适于服务器端的处理和编程。

在此种开发模式中,JSP技术用来显示页面,该页面中没有任何的商业处理逻辑,通过Servlet技术来完成大量的事物处理工作。

Servlet用来处理事务的请求,充当着一个控制者的角色,并负责向客户发送请求,创建JSP需要的Bean和对象,根据用户的请求行为,决定将哪个JSP页面发送给用户。

从上面两种开发模式来说:第二种模式要好些,更适合于团队开发,速度相对较慢,但是可维护性高
Javaweb学生成绩管理系统
2.3【Tomcat简介】
如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。

因此需要一个交互式的Web,于是便诞生了各种Web语言。

如Asp,Jsp,Php 等。

当然,这些语言与传统的语言有着密切的联系,如Php基于C和C++语言,Jsp基于Java语言。

Tomcat即是一个Jsp和Servlet的运行平台。

Tomcat是一个免费的开源的Serlvet容器,是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成
2.4【my Server简介】
Mysql是功能强大的关系型数据库管理系统,用以作为应用程序的数据来源,存放各种数据,并可以让用户很容易地达成所要进行的数据存取操作。

同时,也提供了一些可视化的管理工具,协助数据库系统管理者更方便快速地管理及设计数据库的内容,以及对数据库进行维护。

mysql不仅可以实现个人数据库的管理,更适合企业级数据库的应用
2.6【MVC设计模式】
MVC模式的基本形式图如图2.5所示。

图2.5 MVC模式的基本形式图
MVC(Model-View-Controller)模式并不是J2EE行业人士标新立异的。

MVC 的核心就是要做到三级甚至多级的松散耦合,MVC模式将系统分为三个部分,分别是数据模型、视图和控制器,并定义了这三个部分之间实现通信的一种模式,使每个部分不必卷入到其他部分的状态表示和方法实现的细节中去。

每个部分有自己的数据管理规则,各个对象之间的通信只能使用自己定义的一个受限连接集
合进行。

保持这种分离性通常是面向对象编程和设计要追求的目标,让各个对象只需专注于自己的事务。

模型部分代表了商业数据的访问及修改数据的操作。

当数据发生改变时,要负责通知视图部分,并且提供视图查询状态的能力。

另外,还向控制部分提供应用功能。

视图部分以自己的方式显示模型的内容。

访问模型的数据,并且当模型的数据发生变化时更新模型的显示。

视图还把从用户那里得到的信息传给控制部分。

控制部分定义了应用的行为。

分发用户请求和选择表现视图,还负责解释用户输入,进而调用模型的功能。

在Web应用中,用户输入包括对Web级资源的HTTP、GET和POST请求。

控制部分根据用户交互和模型的状态选择要显示的视图。

一个应用程序一般为相关的功能选择一个控制部分。

三、分析(需求分析、结构图):
3.1【系统需求分析】
学生成绩管理系统包括:前台登陆系统、后台信息管理系统。

前者是面向老师、学生、管理员的一个窗口,通过登陆系统方便不同需要的访问者访问自己需要的信息。

后者是后台信息管理系统,方便管理员删除修改查找信息。

登陆界面:
Javaweb学生成绩管理系统学生界面:。

教师界面:
管理员端:
●管理员端
管理员可以进行的操作如下:
1、对学生信息进行增、删、改、查
2、对教师信息进行增、删、改、查
3、对课程信息进行增、删、改、查
4、查看个人信息并进行性修改
5、查看学生的选课信息、学生的成绩以及排名情况,其中在查看学生排名时,
可以根据学生的所学课程和所在专业进行排名查询
6、对学生的选课信息进行添加、删除等操作
●教师端
教师可以进行的操作如下:
1、查看个人信息并修改登录密码
2、查看学生信息,其中包括对学生成绩进行查询与修改,在本系统中,将教师
的成绩录入功能与成绩修改功能合并
3、查看学生的排名情况,包括学生的课程排名与专业排名
●学生端
Javaweb学生成绩管理系统
学生可以进行的操作如下:
1、修改个人登录系统的密码
2、查看自己的课表
3、进行选课
4、查询自己成绩以及成绩排名情况,同时拥有通过学号查询其他人成绩的权利
管理员端功能结构如图3.7所示
学生端与教师端相对简单些就不画分析图了。

四、设计(数据库设计、模块设计)
数据库构成
数据库作为后台数据存储空间,由7张表组成,设计遵循数据库设计要求,力求规范,
各表的结构如下:
☆ manager 管理员信息表:
教师信息表:
student 学生信息表:
学生管理 教师管理 课程管理 查找成绩
退出登录 修改密码 添加学生
显示学生信息
添加教师
显示教师信息
添加课程
显示课程信息
课程查/专业查
管理员
用户菜单
Javaweb学生成绩管理系统
☆ course 课程信息表:
studentcourse 学生选课信息表:
score 学生成绩表:
rank 学生平均学分积点表:
3.程序构成
☆Jsp
Errorpage.jsp 错误信息显示界面Exist.jsp 退出系统
Javaweb学生成绩管理系统
Searchothers.jsp 输入要查询其他人的学号界面Selectcourse.jsp 选课界面
Showstucou.jsp 显示个人选课信息
Student.jsp 划分分配页面比例
updateSpassword.jsp 修改密码
☆ JavaBean
JavaBean定义各种功能类
※sqlBean 对数据库的各种操作
※coursescore 课程成绩信息
※student 学生类
※teacher 教师类
※course 课程
※studentcourse 学生选课信息
☆Servelet
作为整个系统的控制者,Servlet接受Jsp的请求与数据,调用JavaBean完成程序功能,并将结果转交给Jsp显示
Addcourse 添加课程
Addstudent 添加学生
Addteacher 添加教师
Check 验证登录信息
Delcourse 删除课程
Delstucou 删除学生选课信息
Delstudent 删除学生信息
Delteacher 删除教师
M_selectcourse 管理员为学生选课
M_updatescore 管理员更改成绩
Selectcourse 学生选课
Updatecourse 更改课程信息
updateMpassword 更改教师密码
Updatescore 更改成绩
updateSpassword 更改学生密码
Updatestudent 更改学生信息
Updateteacher 更改教师信息
updateTpassword 更改教师密码
五、实现(模块实现、发步、测试):
数据库的实现:/*
Navicat MySQL Data Transfer
Source Server : shuai
Source Server Version : 50037
Source Host : localhost:3306
Source Database : stu_score_ms
Target Server Type : MYSQL
Target Server Version : 50037
File Encoding : 65001
Date: 2010-01-17 21:41:59
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `course`
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`cid` char(10) NOT NULL,
`clnum` char(10) NOT NULL,
`cname` char(10) NOT NULL,
`credit` double(4,2) default NULL,
`capacity` int(4) default NULL,
`tid` char(10) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES ('bb1', '1', 'java', '3.00', '120', null); INSERT INTO `course` VALUES ('bb2', '2', 'c++', '2.50', '150', null);
-- ----------------------------
-- Table structure for `manager`
-- ----------------------------
DROP TABLE IF EXISTS `manager`;
CREATE TABLE `manager` (
`id` char(10) NOT NULL,
`password` char(10) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of manager
Javaweb学生成绩管理系统
-- ----------------------------
INSERT INTO `manager` VALUES ('1', '1'); INSERT INTO `manager` VALUES ('2', '2');
-- ----------------------------
-- Table structure for `rank`
-- ----------------------------
DROP TABLE IF EXISTS `rank`;
CREATE TABLE `rank` (
`sid` char(4) NOT NULL,
`averagepoint` double(4,2) default NULL, `rank` int(4) default NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of rank
-- ----------------------------
INSERT INTO `rank` VALUES ('001', '3.88', null); INSERT INTO `rank` VALUES ('002', '3.70', null); INSERT INTO `rank` VALUES ('003', '2.53', null); INSERT INTO `rank` VALUES ('004', '3.41', null); INSERT INTO `rank` VALUES ('005', '3.13', null); INSERT INTO `rank` VALUES ('006', null, null); INSERT INTO `rank` VALUES ('007', null, null); INSERT INTO `rank` VALUES ('null', null, null);
-- ----------------------------
-- Table structure for `score`
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
`cid` char(10) NOT NULL,
`cname` char(10) default NULL,
`credit` double(4,1) default NULL,
`sid` char(10) default NULL,
`pscore` int(4) default NULL,
`qscore` int(4) default NULL,
`grade` int(4) default NULL,
`jpa` double(4,2) default NULL,
`rank` int(4) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('bb1', 'java', '3.5', '001', '98', '96', '97', '4.00', null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '001', '86', '88', '87', '3.70', null); INSERT INTO `score` VALUES ('bb1', 'java', '3.5', '002', '94', '82', '88', '3.70', null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', 'null', null, null, null, null, null); INSERT INTO `score` VALUES ('bb1', 'java', '3.5', 'null', null, null, null, null, null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '002', '96', '77', '86', '3.70', null); INSERT INTO `score` VALUES ('bb1', 'java', '3.5', '003', '88', '67', '77', '2.70', null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '003', '78', '67', '72', '2.30', null); INSERT INTO `score` VALUES ('bb1', 'java', '3.5', '004', '78', '98', '88', '3.70', null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '004', '84', '76', '80', '3.00', null); INSERT INTO `score` VALUES ('bb1', 'java', '3.5', '005', '84', '79', '81', '3.00', null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '005', '84', '84', '84', '3.30', null); INSERT INTO `score` VALUES ('bb1', 'java', '3.0', '006', null, null, null, null, null); INSERT INTO `score` VALUES ('bb1', 'java', '3.0', '006', null, null, null, null, null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '006', null, null, null, null, null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '006', null, null, null, null, null); INSERT INTO `score` VALUES ('bb1', 'java', '3.0', '007', null, null, null, null, null); INSERT INTO `score` VALUES ('bb2', 'c++', '2.5', '007', null, null, null, null, null);
-- ----------------------------
-- Table structure for `student`
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` char(10) NOT NULL,
`sname` char(10) default NULL,
`password` char(10) default NULL,
`sclass` char(20) default NULL,
`smajor` char(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('001', '孔帅', '1', '1', '计算机');
INSERT INTO `student` VALUES ('002', '李维银', '2', '2', '计算机');
INSERT INTO `student` VALUES ('003', '罗玉泽', '3', '3', '计算机');
INSERT INTO `student` VALUES ('004', '孙煜', '4', '4', '计算机');
INSERT INTO `student` VALUES ('005', '贾佑闯', '5', '5', '计算机');
INSERT INTO `student` VALUES ('006', '马富营', '6', '1', '计算机');
INSERT INTO `student` VALUES ('007', '王成龙', '7', '1', '计算机');
Javaweb学生成绩管理系统
-- ----------------------------
-- Table structure for `studentcourse`
-- ----------------------------
DROP TABLE IF EXISTS `studentcourse`;
CREATE TABLE `studentcourse` (
`sid` char(10) NOT NULL,
`cid` char(10) NOT NULL,
`cname` char(10) default NULL,
`credit` double(4,1) default NULL,
`capacity` int(4) default NULL,
`clnum` char(10) default NULL,
`tid` char(10) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of studentcourse
-- ----------------------------
INSERT INTO `studentcourse` VALUES ('001', 'bb1', 'java', '3.5', '120', '1', null); INSERT INTO `studentcourse` VALUES ('001', 'bb2', 'c++', '2.5', '150', '2', null); INSERT INTO `studentcourse` VALUES ('002', 'bb1', 'java', '3.5', '120', '1', null); INSERT INTO `studentcourse` VALUES ('null', 'bb2', 'c++', '2.5', '150', '2', null); INSERT INTO `studentcourse` VALUES ('null', 'bb1', 'java', '3.5', '120', '1', null); INSERT INTO `studentcourse` VALUES ('002', 'bb2', 'c++', '2.5', '150', '2', null); INSERT INTO `studentcourse` VALUES ('003', 'bb1', 'java', '3.5', '120', '1', null); INSERT INTO `studentcourse` VALUES ('003', 'bb2', 'c++', '2.5', '150', '2', null); INSERT INTO `studentcourse` VALUES ('004', 'bb1', 'java', '3.5', '120', '1', null); INSERT INTO `studentcourse` VALUES ('004', 'bb2', 'c++', '2.5', '150', '2', null); INSERT INTO `studentcourse` VALUES ('005', 'bb1', 'java', '3.5', '120', '1', null); INSERT INTO `studentcourse` VALUES ('005', 'bb2', 'c++', '2.5', '150', '2', null); INSERT INTO `studentcourse` VALUES ('006', 'bb1', 'java', '3.0', '120', '1', null); INSERT INTO `studentcourse` VALUES ('006', 'bb2', 'c++', '2.5', '150', '2', null);
-- ----------------------------
-- Table structure for `teacher`
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`id` char(10) NOT NULL,
`tname` char(10) NOT NULL,
`password` char(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('1', '岳训', '1'); INSERT INTO `teacher` VALUES ('2', '张军本', '2');
代码测试:
Javaweb学生成绩管理系统
对于管理员以及教师的测试与学生的类似就不再重复了。

六、技术难点,心得:
技术难点:我觉得本系统的难点在于怎样通过servlet 来实现对整个系统的控制,以及如何调用javabean的问题我觉得最令人烦的还是check跳转的实现。

心得:通过学生成绩管理系统的设计,我对软件开发又有了更深一些的认识,对MVC模式的特点有了一定的看法。

在软件设计中,再碰到问题及解决问题的过程中有了一定的提高。

★做程序一定要提前做好规划,这样会避免在系统开发过程中出现混乱,并且在对程序进行修改时也能减少附带的错误。

★系统是不可能完美的,我们要做的就是要在现实需求的基础上尽量减少用户操作的繁琐,为用户提供便利,尽量使系统人性化。

★要解决问题拖沓,要及时有效地处理问题及及时完成任务,编程是个慢活细活,要有耐性。

★要充分利用网络的便利,遇到一些想不通的地方可以上网查询,对平时没有及时对所学的东西进行扩展和提高。

同时周围的同学也是很好的老师,有些问题自己想可能想不通,但是让别人帮自己看看就能很轻易解决问题。

★不要局限在课本内容,也不要只看课本,最好的方法就是编程,在实践中学习。

当碰到问题时就去查资料,去学习,然后把学到的知识运用到程序中,这样对知识的掌握就更加彻底。

一开始我采取的办法就是看课本,但是课本看完了,自己还是很头晕,知识点太琐碎,看一遍根本记不住多少东西,后来就采取上面的办法,这样对JSP程序设计理解的越来越清楚。

★我们不可能掌握所有的内容,没有什么一劳永逸,所以我们要学会学习,学会现学现用,不断地学习,然后用学会的新知识做东西。

Javaweb学生成绩管理系统。

相关文档
最新文档