软件生产实习报告.docx
《软件生产实习报告.docx》由会员分享,可在线阅读,更多相关《软件生产实习报告.docx(13页珍藏版)》请在冰豆网上搜索。
![软件生产实习报告.docx](https://file1.bdocx.com/fileroot1/2023-2/9/4fb49a39-cb77-40c6-90b5-a4662ba9b79f/4fb49a39-cb77-40c6-90b5-a4662ba9b79f1.gif)
软件生产实习报告
软件生产实习报告
题目:
学生信息管理系统
学号:
专业:
计算机科学与技术
姓名:
曾垚
指导老师:
冯建湘
湖南科技大学计算机科学与工程学院
1.系统问题定义与描述
1.1软件项目名称
1.1.1学生信息管理系统
1.1.2完成时间2012/3/1
1.2项目内容简介
学生信息管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生信息管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低。
运用学生信息管理系统可以减轻学院教学人员的工作量,加快查询速度,加强管理,以及加快国家各部门关于信息化的步伐,使各项管理更加规范化。
还有就是缩小开支,提高工作效率与准确率。
可以使学生能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。
并且学生信息管理系统的应用也为今天的高校教育在未来市场的竞争力的提高打下了坚实的基础。
该系统是基于浏览器的B/S模式学生信息管理系统,主要使用者是教师和学生。
项目开发时间为两星期2012/2/20-2012/3/1.
2.可行性研究和计划
经过对该MIS系统的分析和自身的能力,决定采用JavaEE实现,同时在WEB层使用struts1框架,这样便于编写高质量和可维护性好的代码。
同时决定在持久层采用Mybatis框架,因为该框是轻量级、半自动化的框架,保留了所有的SQL语句,这样在该项目的开发中,能够提升自己的SQL语句的能力。
衡量自己的能力之后,返现该MIS系统在自己的能力范围之内,完全能够一个人独立完成需求分析、领域建模、代码实现、项目测试等整个软件开发阶段。
3.软件需求分析
这是一个MIS系统,所有其核心作用是管理学生的信息,学生的信息主要包括了基本信息和学生在大学期间的成绩。
同时一个系统肯定需要管理员进行日常的维护,比如学生信息的增删改查。
所有,该系统分为学生和管理员了两种登录权限。
学生主要有信息查询、密码修改、成绩查询几个核心功能。
而对于管理员,有修改自己的密码、初始化所有学生密码、初始化某个学生密码、以及对学生成绩的模糊查询、精确查询等几个核心功能。
4.概要设计
对于一个MIS系统,其核心是用户的信息,所有数据库的设计是重中之重,数据库设计的好与坏直接影响着开发的难度和系统运行的效率,而学生管理系统的核心数据则是学生各个不同学期时的成绩。
所有在分析阶段主要设计了两种方案,第一种方案:
将学院学生的成绩放在一张成绩表中,第二种方案:
将学院学生的成绩放在八个不同的表中,每个学期的全院学生的成绩存放在一张表中。
但一种方案有两种明显的缺点:
首先八个学期的科目都不尽相同,如果将它们全部放在一张表中,会极大的浪费所创建的学生成绩表的空间。
所以结合需求分析和系统设计前期考虑把本学生信息管理信息系统分为:
权限验证模块、用户管理模块、基础设置模块、成绩管理模块、学生管理模块、数据库管理模块以及帮助模块等。
5.详细设计
5.1用户登录模块
包括普通用户登录和管理员登录,登录时需要密码,同时还需要输入验证码,该模块控制用户登录口令和用户登录权限,在满足具有不同权限用户登陆的前提下,提交系统的安全性。
Y
N
输入用户信息
信息查询
信息正确否
获得访问权限
提示:
登陆错误
开始
普通学生用户登录:
管理员登录:
登录后的界面:
5.2学生个人信息查看模块
学生个人信息查看模块,主要是为学生提供查看自己的个人信息,包括个人学号、姓名、学院、专业、住址、联系方式、以及个人身份证号。
学生信息查询:
5.3学生成绩查询
学生成绩查询是学生信息管理系统的一个主要模块,主要功能是提供了查询各个年级的成绩信息以及该生在学校里全部成绩查询。
5.4管理员注册学生信息模块
管理员实现对刚入学的学生进行学生信息的录入,实现对入学的学生进行信息的一个总体管理。
进行了简单的校验功能模块的设计,实现了添加已存在的学生个人信息时会提示:
该用户已存在。
5.5学生成绩增删改查模块
该模块提供给管理员对学生成绩信息的添加以及更新操作。
实现了学生成绩信息的管理。
方便管理者对学生信息的一个总体掌控。
5.6系统开发环境及其工具软件
5.6.1系统开发软硬件环境:
5.6.2开发工具Eclipse介绍:
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
它是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开发源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
5.7Struts1框架:
Struts最早是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。
这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。
这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。
当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。
同样,软件工程师使用Struts为业务应用的每一层提供支持。
它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。
如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
3.4持久层框架Mybatis介绍:
MyBatis的前身就是iBatis。
是一个数据持久层(ORM)框架。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
iBATIS提供的持久层框架包括SQLMaps和DataAccessObjects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。
SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
6.编码与实现
学生信息管理系统项目文件系统结构图:
数据库连接主要代码:
packagezengyao.system.dao;
importjava.sql.*;
importmon.Config;
publicclassSqlConnect{
privatestaticConnectioncon;
privatestaticConfigconfig=Config.getConfig();
privatestaticStringurl=config.getUrl();
privatestaticStringuser=config.getUser();
privatestaticStringpassword=config.getPassword();
/*
*定义一个得到数据库连接对象方法getConnection()
*/
publicstaticConnectiongetConnction(){
/*后台显示数据连接时需要的url以及用户名和密码*/
System.out.println("url:
"+url+"\t"+"user:
"+user+"\t"+"password:
"+password);
try{
/*加载mysql数据库的驱动类*/
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection(url,user,password);
}catch(Exceptione){
System.out.println("SQLConnectException:
"+e);
}
returncon;
}
/*数据库关闭方法*/
publicstaticvoidclose(){
if(con!
=null){
try{
con.close();
}catch(Exceptione){
System.out.println(e.getMessage());
}
}
}
}
用户登录查询模块主代码:
packagezengyao.system.dao;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importzengyao.system.bean.LoginUser;
importzengyao.system.interfaces.ISqlLoginOperation;
publicclassSqlLoginOperationImpimplementsISqlLoginOperation{
privateLoginUseruser=LoginUser.getLoginUser();;
privateConnectioncon;
privateResultSetrs;
@Override
/*通过用户输入的用户名进行查找是否存在
*对输入的用户名进行简单校验,查看输入的用户名是否合理
*存在则返回true,不存在则false
**/
publicbooleanselectById(StringuserId){
con=SqlConnect.getConnction();
booleanflag=false;
/*定义进行操作的sql语句*/
Stringsql="select*fromuserwhereuser_id="+userId;
try{
Statementst=con.createStatement();
//执行sql语句
rs=st.executeQuery(sql);
while(rs.next()){
flag=true;
}
}catch(SQLExceptione){
System.out.println(e.getMessage());
}finally{
if(con!
=null){
SqlConnect.close();
}
}
returnflag;
}
@Override
/*对用户输入的用户名和密码进行判断
*
*用户名和密码正确返回true否则返回false;
**/
publicbooleanselect(Stringid,Stringpassword){
con=SqlConnect.getConnction();
booleanflag=false;
/*定义进行操作的sql语句*/
Stringsql="select*fromuserwhereuser_id='"+id+"'anduser_password='"+password+"'";
try{
Statementst=con.createStatement();
rs=st.executeQuery(sql);
while(rs.next()){
user.setType(rs.getInt(3));
user.setUserName(rs.getString(4));
flag=true;
}
}catch(SQLExceptione){
System.out.println(e.getMessage());
}finally{
if(con!
=null){
SqlConnect.close();
}
}
returnflag;
}
}
7.总结
这次软件生产实习选择完成的项目是:
学生信息管理系统,系统实现了权限控制,学生登录以及管理员登陆,学生登录可以进行学生学籍信息的查询和学生个人成绩的查询,管理员登陆可以进行学生信息的注册、删除、更新以及学生信息的添加以及更新操作。
通过这次软件生产实习,对软件生产流程有了一个清晰的认识,为以后工作做了一个很好的铺垫。
在这次软件生产实习过程中,对大学四年来所学的部分知识的综合运用,也是对学习成果的一次检验。