代码.docx
- 文档编号:8102334
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:44
- 大小:27.97KB
代码.docx
《代码.docx》由会员分享,可在线阅读,更多相关《代码.docx(44页珍藏版)》请在冰豆网上搜索。
代码
用java写的一个简单的学生管理系统
一.简洁的需求描述
学生成管理系统(以下简称系统)为教师和学生的信息交流提供了一个统一的平台,方便了教师对成绩的管理,学生对于成绩的查询等
1.教师可以通过系统查询所授课程的信息以及课程所对应的学生的信息;
教师通过系统管理学生分数信息,包括查询,输入,修改学生成绩。
2.学生用户仅仅拥有查询功能,查询的信息包括所选修课程信息和分数信息
二。
简单的数据库设计
ER图:
数据库详细设计说明:
1).数据库说明
数据库取名为score_manage_system
其中有五个表,分别为:
TEACHER(TNO,TNAME,SEX,TITLE,PASSWORD)..............教师信息表
STUDENT(SNO,SNAME,SEX,CLASS,PASSWORD).................学生信息表
COURSE(CNO,CNAME,CXUEFEN,HOUR)..............................课程信息表
TEACH(TNO,CNO)............................................................................教师授课信息表
STUDY(SNO,CNO,SCORE)...........................................................学生选课信息表
2).字段说明
3)TEACHER
字段类型主码外码说明
TNOCHAR(20)√√教师代码
TNAMECHAR(10) 教师姓名
SEXCHAR
(1) 教师性别
TITLECHAR(10) 职称
PASSWORDCHAR(20) 登录密码
STUDENT
字段类型主码外码说明
SNOCHAR(20)√√学号
SNAMECHAR(10) 学生姓名
SEXCHAR
(2) 性别
CLASSCHAR(5) 班级
PASSWORDCHAR(20) 登录密码
DEPARTMENTCHAR(20) 学生所属院系
SCHOOLCHAR(20) 学生所属学校
COURSE
字段类型主码外码说明
CNOCHAR(20)√√课程代码
CNAMECHAR(10) 课程名称
XUEFENint 学分,取值大于0小于10
HOURint 学时,大于等于0
YEARCHAR(5) 学年
TERMCHAR
(1) 学分
TEACH
字段类型主码外码说明
TNOCHAR(20)√ 教师代码
CNOCHAR(20)√ 课程代码
STUDY
字段类型主码外码说明
SNOCHAR(20)√ 学号
CNOCHAR(20)√ 课程代码
SCOREDOUBLE 分数,0--100
3).建表语句
TEACHER建表语句:
createtableTEACHER
(
TNOchar(20)notnull,
TNAMEchar(10)notnull,
SEXchar
(1)notnull,
TITLEchar(10)notnull,
PASSWORDchar(20)notnull,
primarykey(TNO),
check(SEXin('男','女'))
);
STUDENT建表语句:
createtableSTUDENT
(
SNOchar(20)notnull,
SNAMEchar(10)notnull,
SEXchar
(2)notnull,
CLASSchar(5)notnull,
PASSWORDchar(20)notnull,
DEPARTMENTchar(20)notnull,
SCHOOLchar(20)notnull,
primarykey(SNO),
check(SEXin('男','女'))
);
COURSE建表语句:
createtableCOURSE
(
CNOchar(20)notnull,
CNAMEchar(10)notnull,
XUEFENintnotnull,
HOURintnotnull,
YEARchar(5)notnull,
TERMchar
(1)notnull,
primarykey(CNO),
check(XUEFEN>0andXUEFEN<10andHOUR>=0)
);
TEACH建表语句:
createtableTEACH
(
TNOchar(20)notnull,
CNOchar(20)notnull,
primarykey(TNO,CNO)
foreignkey(TNO,CNO)REFERENCESTEACHERCOURSE,
foreignkey(CNO)REFERENCESCOURSE
);
altertableTEACH
addconstraintFK_TEACH_REFERENCE_TEACHERforeignkey(TNO)
referencesTEACHER(TNO)
onupdaterestrict
ondeleterestrict;
altertableTEACH
addconstraintFK_TEACH_REFERENCE_COURSEforeignkey(CNO)
referencesCOURSE(CNO)
onupdaterestrict
ondeleterestrict;
2009-04-1218:
41
STUDY建表语句:
createtableSTUDY
(
SNOchar(20)notnull,
CNOchar(20)notnull,
SCOREdouble,
primarykey(SNO,CNO),
check(SCORE>=0andSCORE<=100)
);
altertableSTUDY
addconstraintFK_STUDY_REFERENCE_COURSEforeignkey(CNO)
referencesCOURSE(CNO)
onupdaterestrict
ondeleterestrict;
altertableSTUDY
addconstraintFK_STUDY_REFERENCE_STUDENTforeignkey(SNO)
referencesSTUDENT(SNO)
onupdaterestrict
ondeleterestrict;
2009-04-1218:
42
四。
系统实现代码
.system.dbconnection包
/*
*@author
*/
packagecom.system.dbconnection;
importjava.io.UnsupportedEncodingException;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDBConn{
protectedstaticStringdriverName="com.mysql.jdbc.Driver"; //连接数据库的驱动名
protectedstaticStringdbName="jdbc:
mysql:
//localhost/score_manage_system";//数据库映射路径
protectedstaticStringdbUser="root"; //数据库的登录名
protectedstaticStringdbPwd="123456"; //数据库的登录密码
privatestaticConnectionconn=null; //申明一个数据库连接
publicDBConn(){ //装载时建立数据库链接
try{
if(conn==null){
Class.forName(driverName).newInstance();
//System.out.println("SuccessloadingMysqlDriver!
");
conn=DriverManager.getConnection(dbName,dbUser,dbPwd);
}
else
return;
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticResultSetexecuteQuery(Stringsql){ //静态方法executeQuery,执行查询操作,返回结果集ResultSet
try{
if(conn==null){
newDBConn();
Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSetrs=stmt.executeQuery(sql);
returnrs;
}
}catch(SQLExceptione){
e.printStackTrace();
returnnull;
}finally{
}
returnnull;
}
publicstaticbooleanexecuteUpdate(Stringsql){ //静态方法executeUpdate,执行更新操作,返回结果集布尔值,true表示更新成功,否则更新失败
try{
if(conn==null){
newDBConn();
Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
stmt.executeUpdate(sql);
returntrue;
}
}catch(SQLExceptione){
e.printStackTrace();
returnfalse;
}finally{
}
returnfalse;
}
publicstaticStringgetNewString(Stringstring){ //为解决数据库显示中文问题而写的方法
try{
return(newString(string.getBytes("ISO-8859-1"),"gb2312"));
}catch(UnsupportedEncodingExceptione){
//TODO自动生成catch块
e.printStackTrace();
}
returnnull;
}
publicstaticbooleanstudentChangePassword(Stringid,Stringpassword){ //学生修改密码的方法具体的逻辑判断推至上层处理
Stringsql="updateSTUDENTsetPASSWORD='"+password+"'whereSNO='"+id+"';";
returnDBConn.executeUpdate(sql);
}
publicstaticbooleanteacherChangePassword(Stringid,Stringpassword){ //教师修改密码的方法
Stringsql="updateTEACHERsetPASSWORD='"+password+"'whereTNO='"+id+"';";
returnDBConn.executeUpdate(sql);
}
publicstaticbooleanteacherSetScoreOfStudent(Stringstudentid,Stringcourseid,doublescore){ //老师输入分数的方法
Stringsql="updateSTUDYsetSCORE='"+score+"'whereSNO='"+studentid+"'andCNO='"+courseid+"';";
returnDBConn.executeUpdate(sql);
}
publicstaticvoidclose(){ //关闭数据库连接的方法
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
conn=null;
}
}
}
2009-04-1218:
43
2com.system.model包
//Student.java
/*
*@authorougaoyan,date:
2008-9-26
*/
packagecom.system.model;
importjava.awt.Color;
importjava.sql.ResultSet;
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
importjavax.swing.JTable;
importcom.system.dbconnection.DBConn;
publicclassStudent{
publicstaticStringid;
publicstaticStringname;
publicstaticStringsex;
publicstaticStringpassword;
publicstaticStringsclass;
publicstaticStringdepartment;
publicstaticStringschool;
publicstaticListcourseList=newArrayList();
publicStudent(Stringid){
Stringsql1="select*fromSTUDENTwhereSNO='"+id+"';";
ResultSetrs1=DBConn.executeQuery(sql1);
try{
while(rs1.next()){ //从数据库获得学生信息并初始化相关属性
setId(rs1.getString("SNO"));
setName(DBConn.getNewString(rs1.getString("SNAME")));
setSex(DBConn.getNewString(rs1.getString("SEX")));
setPassword(rs1.getString("PASSWORD"));
setClass(rs1.getString("CLASS"));
setDepartment(DBConn.getNewString(rs1.getString("DEPARTMENT")));
setSchool(DBConn.getNewString(rs1.getString("SCHOOL")));
DBConn.close(); //关闭数据库连接
}
}catch(Exceptione){
e.printStackTrace();
}
Stringsql2="select*fromSTUDENT,STUDYwhereSTUDENT.SNO=STUDY.SNOandSTUDY.SNO='"+id+"';";
try{
ResultSetrs2=DBConn.executeQuery(sql2);
while(rs2.next()){
courseList.add(rs2.getString("CNO").trim());
}
}catch(Exceptione){
e.printStackTrace();
}
DBConn.close();
}
publicstaticListgetScoreList(){ //返回学生各门课程的成绩信息
Listlist=newArrayList();
Iteratori=Student.courseList.iterator();
while(i.hasNext()){
StudentCoursescourse=newStudentCourse(Student.id,(String)i.next());
list.add(scourse);
}
returnlist;
}
publicstaticListgetYearScoreList(Stringyear){
Listlist=getScoreList();
ListyearList=newArrayList();
StudentCoursecourse=null;
for(inti=0;i course=(StudentCourse)list.get(i); if(course.year.equals(year)){ yearList.add(course); } } returnyearList; } publicstaticListgetTermScoreLiat(Stringyear,Stringterm){ Listlist=getScoreList(); ListtermList=newArrayList(); StudentCoursecourse=null; for(inti=0;i course=(StudentCourse)list.get(i); if(course.year.equals(year)&&course.term.equals(term)){ termList.add(course); } } returntermList; } publicstaticvoidsetId(Stringsid){ //设置学号的方法 id=sid; } publicstaticvoidsetName(Stringsname){ //设置密码的方法 name=sname; } publicstaticvoidsetSex(Stringsex){ //设置性别的方法 Student.sex=sex; } publicstaticvoidsetPassword(Stringspassword){ //设置密码的方法 password=spassword; } publicstaticvoidsetClass(Stringsclass){ Student.sclass=sclass; } publicstaticvoidsetDepartment(Stringdep){ department=dep; } publicstaticvoidsetSchool(Stringsch){ school=sch; } publicstaticbooleanchangePassword(Stringnewpassword){ //学生用户修改密码的方法 returnDBConn.studentChangePassword(Student.id,newpassword); } } //Course.java /* *@authorougaoyan,date: 2008-9-26 */ packagecom.system.model; importjava.sql.ResultSet; impo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码