算法与数据结构课程设计.docx

上传人:b****7 文档编号:11286352 上传时间:2023-02-26 格式:DOCX 页数:20 大小:90.66KB
下载 相关 举报
算法与数据结构课程设计.docx_第1页
第1页 / 共20页
算法与数据结构课程设计.docx_第2页
第2页 / 共20页
算法与数据结构课程设计.docx_第3页
第3页 / 共20页
算法与数据结构课程设计.docx_第4页
第4页 / 共20页
算法与数据结构课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

算法与数据结构课程设计.docx

《算法与数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《算法与数据结构课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

算法与数据结构课程设计.docx

算法与数据结构课程设计

郑州科技学院

算法与数据结构课程设计

题目学生成绩管理系统

学生姓名敖荣成

专业班级09级计科一班

学号*********

所在系信息科学与工程系

指导教师王玉萍

完成时间年月日

 

第1章课程设计的目的与要求

1.1课程设计目的

《算法与数据结构》是计算机相关专业的选修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《算法与数据结构》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2课程设计的实验环境

硬件要求能运行Windows2000操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE、TOMCAT等开发工具。

1.3课程设计的预备知识

熟悉JAVA语言及ECLIPSE开发工具。

1.4课程设计要求

按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JSP网站设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

 

第2章课程设计内容

2.1需求分析

学生成绩管理系统作为高校校园网建设的一个模块,主要是为了学生在校园网内能了解更多与学生生活相关的信息。

学校在公告网上发布,学生在信息网上查询,方便教师和学生查询学生信息,成绩查询使学生能及时了解自己的成绩以及方便学生选课,同时也方便教师及时作出课程调整等。

学生成绩管理系统可作为一个高校学生获取信息、查询成绩、交流、选课和教务管理的平台。

一直以来学生的成绩管理是学校工作中的一项重要内容,我国的大中专院校的学生成绩管理水平普遍不高。

随着办学规模的扩大和招生人数的增加,建立一个成绩维护系统是非常必要的。

普通的成绩管理已不能适应时代的发展,因为它浪费了许多的人力和物力。

在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。

该学生成绩管理系统有学生信息管理,成绩信息管理,管理员等功能。

各个模块各有不同的功能,各模块的数据都存放在数据库中。

数据的调用和连接都由程序来完成。

学生成绩信息浏览功能:

学生和管理员都可进行查询和浏览,学生可以按学号查询成绩,管理员可以按班级和专业查询。

这些功能的具体描述如下:

1.用户注册模块:

用户可已成为本论坛的会员,通过表单把用户的相关信息提交给数据库。

2.登录模块:

基本是每个系统必备的模块,本论坛的登录的模块分为两个小模块:

一个是学生登录,另一个是管理员登录。

3.成绩查询模块:

学生可以通过学号查询自己的成绩,也可以查询同班同学的成绩,管理员可以查询所有的成绩。

4.数据库更新前的数据记录模块:

管理员可通过输入要添加成绩的同学的学号、输入要添加成绩的同学的姓名、输入新的数学成绩、输入新的英语成绩、输入新的法律成绩来更新数据记录。

5.添加新记录后的表的模块:

学生可看到管理员更新完记录后的表。

6.删除记录的模块:

管理员通过输入被删除记录的学号来实现删除某学生的成绩记录,同时数据库删除妻啊的数据记录也将显示出来。

7.删除记录后的表的模块:

管理员将表中某个学生删除完之后,将会显示出删除记录后的表。

2.2分析和设计(页面和数据库)

设计网站时,首先应该区别是学生登录还是管理员登录。

如果是学生登录,那么该学生只有查看和回复留言的权限。

如果是管理员登录,则除了具有查看和回复权限外,还用具有管理学生成绩管理网站的权限。

在学生发表留言后,将显示该学生的姓名、性别、留言内容和留言时间等内容。

如果在某个留言有回复内容,则显示出是谁恢复了该篇留言和回复的内容。

另外还能在页面中显示当前的系统的时间和访问权限。

1.数据库设计

通过以上的分析:

我所设计的网站需要1个表,为学生成绩表。

由于是个小型的论坛,选择了sqlserver2000数据库。

具体各表的设计如下:

分析得知student_info表功能的记录学生的信息,具有如下字段:

Sno、Sname、Math、English、Law。

见下表:

表2.1学生成绩表(student_info)

名称

类型

长度

说明

Sno

Char

12

学号

Sname

Char

12

姓名

Math

Int

4

高等数学成绩

English

Int

4

英语成绩

Law

Int

4

法律成绩

2.网站的流程体如下:

学生成绩管理数据流程图如下:

图2.2数据流程图

3.各页面功能实现说明:

(1)各页面功能说明

1)系统登录

实现系统登录的功能(login.jsp),并验证用户输入的信息是否正确。

图2.3所示是系统登录界面图,其中提供了数据输入接口。

当单击“登录”按钮后,则调用loginservlet的post方法,然后查询数据库,验证用户身份,如果是学生,则调用StuSucess.jsp页面,否则调用AdminSucess.jsp页面。

实现过程:

首先用户提交用户名和密码,并选择用户类型,再提交loginservlet的dopost方法进行处理,其中longinservlet中通过下拉框中对应的ID号,确定当前用户类型,再分别调用判断学生信息的方法(checkStuUser)和判断管理员信息方法(checkManUser),来完成不同级别用户登录功能。

启动Tomcat,在地址栏里输入:

http:

//localhost:

8080/http:

//localhost:

8080/SchoolManag

ement/login.jsp(8080为Tomcat的默认端口,可以自行修改)即可看到系统的运行效果,选择不同的用户类型进行登录,如图2.3所示:

图2.3系统登录

核心代码如下:

publicstaticbooleancheckStuUser(Connectionconn,Stringusername,

Stringpassword)throwsException{

StringstrSql;

Statementstmt;

ResultSetrs;

strSql="select*fromstudentinfowhereSno='"+username

+"'andpassword='"+password+"'";

stmt=DB.createStmt(conn);

rs=DB.executeQuery(stmt,strSql);

if(rs.next()){

returntrue;

}else{

returnfalse;

}

}//验证学生信息方法

publicstaticbooleancheckManUser(Connectionconn,Stringusername,

Stringpassword)throwsException{

StringstrSql;

Statementstmt;

ResultSetrs;

strSql="select*fromadministratorwherenumber='"+username

+"'andpassword='"+password+"'";

stmt=DB.createstmt(conn);

rs=DB.executeQuery(stmt,strSql);

if(rs.next()){

returntrue;

}else{

returnfalse;

}

}//验证管理员方法

2)学生成绩查询

对于学生成绩查询模块,由于管理员和学生权限不同,所以学生只能查看个人的各科成绩和同学的各科成绩(如高等数学成绩、英语成绩、法律成绩),而管理员则可以修改所有学生的所有成绩。

当管理员要修改某个学生的成绩时,必须首先找到所要修改的学生成绩信息,再进行学生成绩信息更新操作。

实现过程:

其中学生查看学生成绩查询界面时,都是只读,不能更改。

而对于管理员则可以修改学生的全部成绩信息。

首先用户通过selectGra.jsp提交成绩信息修改表单数据,并响应对应的action:

selectGrade中的doPost方法,获取表单数据,并将学生信息保存在Grade的实例中,最后调用grade类中的selectGra(conn,stu)方法,实现对学生成绩信息的查询操作,如图2.4所示:

图2.4成绩表

代码如下:

<%@pagecontentType="text/html;charset=GB2312"%>

<%@pageimport="java.sql.*"%>

<%!

//声明一个共享的连接对象:

Connectioncon=null;

%>

<%Statementsql=null;

ResultSetrs=null;

Stringdriv="com.microsoft.jdbc.sqlserver.SQLServerDriver";

Stringurl1="jdbc:

microsoft:

sqlserver:

//127.0.0.1:

1433;DatabaseName=tengfei";

//第一个客户负责建立连接对象:

if(con==null)

{try{Class.forName(driv);

}

catch(ClassNotFoundExceptione)

{out.print(e);

}

try{con=DriverManager.getConnection(url1,"sa","");

sql=con.createStatement();

rs=sql.executeQuery("SELECT*FROMCJ");

out.print("成绩表");

}

catch(SQLExceptione)

{out.print(e);

}

}

//其它客户通过同步块使用这个连接:

else

{synchronized(con)

//把共享变量放在synchronized块中,或用synchornized方法来修饰,可以修改synchornized块(方法)来共享一个成员变量

{try{sql=con.createStatement();

rs=sql.executeQuery("SELECT*FROMCJ");

out.print("成绩表");

}

catch(SQLExceptione)

{out.print(e);

}

}

}

try

{out.print("");

out.print("");

out.print(""+"学号");

out.print(""+"姓名");

intphysics=rs.getInt("法律成绩");

out.print(""+physics+"");

out.print("");

}

out.print("");

}

catch(SQLExceptione1){}out.print(""+"高等数学成绩");

out.print(""+"英语成绩");

out.print(""+"法律成绩");

out.print("");

while(rs.next())

{out.print("");

Stringnumber=rs.getString

(1);

out.print(""+number+"");

Stringname=rs.getString

(2);

out.print(""+name+"");

intmath=rs.getInt("高等数学成绩");

out.print(""+math+"");

intenglish=rs.getInt("英语成绩");

out.print(""+english+"");

%>

3)删除记录后的表

学生成绩删除模块,首先需要查找到要删除学生的成绩信息,再进行确认删除。

实现过程:

首先用户通过delStu.jsp页面获取需要删除的学生成绩的学号或成绩信息,并将其保存到grade实例对象中,再跳转到delGrade.jsp,显示学生成绩信息,再确认提交deleteGraservlet,调用dopost方法,通过Grade.DelStu(conn,s,keyword),处理删除学成绩记录操作。

如图2.5所示:

图2.5删除记录后的表

核心代码如下:

Stringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

Stringurl1="jdbc:

microsoft:

sqlserver:

//127.0.0.1:

1433;DatabaseName=tengfei";

//获取提交的学号:

Stringnumber=request.getParameter("number");

if(number==null)

{number="";

}

byteb[]=number.getBytes("ISO-8859-1");

number=newString(b);

Connectioncon=null;

Statementsql=null;

ResultSetrs=null;

try{Class.forName(driver);

}

catch(ClassNotFoundExceptionevent){}

try{con=DriverManager.getConnection(url1,"sa","");

sql=con.createStatement();

//删除操作:

StringdeleteAll="DELETEFROMCJWHERE学号"+"="+"'"+number+"'";

sql.executeUpdate(deleteAll);

%>

删除记录后的表:

<%

rs=sql.executeQuery("SELECT*FROMCJORDERBY学号");

out.print("");

out.print("");

out.print(""+"学号");

out.print(""+"姓名");

out.print(""+"高等数学成绩");

out.print(""+"英语成绩");

out.print(""+"法律成绩");

out.print("");

while(rs.next())

{out.print("");

Stringn=rs.getString

(1);

out.print(""+n+"");

Stringxingming=rs.getString

(2);

out.print(""+xingming+"");

intmath=rs.getInt("高等数学成绩");

out.print(""+math+"");

intenglish=rs.getInt("英语成绩");

out.print(""+english+"");

intphysics=rs.getInt("法律成绩");

out.print(""+physics+"");

out.print("");

}

out.print("");

con.close();

}

catch(SQLExceptionevent)

{out.print(""+event);

}

4)更新前的记录

数据库更新前的数据记录模块,首先要确认要添加成绩的同学的学号、输入要添加成绩的同学的姓名、输入要添加成绩的同学的姓名、输入新的数学成绩、新的英语成绩和输入新的法律成绩等信息,再确认提交更新。

实现过程用UpdateGrade类,如图2.6所示:

图2.6更新前记录

核心代码如下:

数据库更新前的数据记录是:

<%Stringname,number;

intmath,physics,english;

Connectioncon;

Statementsql;

ResultSetrs;

try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

}

catch(ClassNotFoundExceptione){}

try{con=DriverManager.getConnection("jdbc:

microsoft:

sqlserver:

//127.0.0.1:

1433;DatabaseName=tengfei","sa","");

sql=con.createStatement();

rs=sql.executeQuery("SELECT*FROMcj");

out.print("");

out.print("");

out.print(""+"学号");

out.print(""+"姓名");

out.print(""+"高等数学成绩");

out.print(""+"英语成绩");

out.print(""+"法律成绩");

out.print("");

while(rs.next())

{out.print("");

number=rs.getString

(1);

out.print(""+number+"");

name=rs.getString

(2);

out.print(""+name+"");

math=rs.getInt("高等数学成绩");

out.print(""+math+"");

english=rs.getInt("英语成绩");

out.print(""+english+"");

physics=rs.getInt("法律成绩");

out.print(""+physics+"");

out.print("");

}

out.print("");

con.close();

}

catch(SQLExceptione1){}

%>

输入要修改成绩的同学的姓名:



输入新的数学成绩:


输入新的英语成绩:


输入新的法律成绩:


2.3关键技术和说明

在网站的设计中用到的关键就技术如下:

根据系统的基本功能需求,以及客户的信息系统环境,计划采用浏览器/服务器模式来构建管理系统,这样方便维护和使用。

同时,根据客户对技术的具体建议,计划采用J2EE技术来开发。

具体的软硬件环境要求如下:

(1)硬件环境:

采用普通办公用个人计算机作为服务器即可。

(2)操作系统:

可以采用WindowsXP以上系统。

(3)数据库系统:

采用sqlsever2000数据库。

(4)Web服务器:

采用Tomcat5以上系统。

(5)Java运行环境:

采用JRE1.5以上中文版本。

(6)客户端:

采用浏览器工具即可。

(7)在本程序中包含如下异常处理:

try{con=DriverManager.getConnection(url1,"sa","");

sql=con.createStatement();

rs=sql.executeQuery("SELECT*FROMCJ");

out.print("成绩表");

}

catch(SQLExceptione)

{out.print(e);

}

//其它客户通过同步块使用这个连接:

else

{synchronized(con)

//把共享变量放在synchronized块中,或用synchornized方法来修饰,可以修改synchornized块(方法)来共享一个成员变量

2.4待改进的部分说明

数据库应该用Mysql,因为MySQL的源码是公开的,使得我们有机会从源码级,更深入的了解MySQL。

从这一层面上可以探求、了解MySQL数据库的特性:

良好的内存管理机制,尤其是内存泄漏的管理,通过了Purify的严格测试;支持多种平台;提供多种形式的API,为我们开发工具的选择提供了便利;使用多线程的技术,可充分发挥系统的特点,避免在SMP系统中出现仅使用单CPU的现象;对磁盘表的管理采用B树加密及索引的技术,为我们快速访问数据提供了可能;高性能的内存申请技术;临时表采用在内存中以哈希表实现;提供多种数据类型;支持定长的和变长的纪录;所有的列都有缺省值,为我们的某些“粗心”提供了方便;灵活、安全的权限和

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

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1