java学生成绩管理系统.docx
《java学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《java学生成绩管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
java学生成绩管理系统
一、设计目的2
二、功能介绍2
三、程序流程2
3.1总流程2
3.2流程图3
四、设计步骤3
4.1数据库设计3
4.1.1学生信息表3
4.1.2教师表4
4.1.3课程表4
4.1.4成绩表4
4.2功能描述5
4.2.1登录5
4.2.2教师端8
4.2.3学生端11
五、设计总结11
六、程序清单12
七、参考文献25
一、设计目的
(1)具有新用户注册功能。
(2)具有注册用户登录功能。
(3)具有学生成绩的录入功能,要求只录入各科成绩,自动计算每个学生的总绩。
(4)具有数据查询功能,可以实现查询全部信息和按条件执行查询。
(5)具有按条件删除数据功能。
二、功能介绍
学生信息管理系统分为两个模块,教师端和学生端,
(1)教师端包括的子模块有:
教师注册,教师添加学生成绩,教师修改学生成绩,教师删除学生成绩,教师修改登录密码等主要功能。
(2)学生端:
本模块的功能较少,只有学生查询本人成绩,和修改学生登录密码的功能
三、程序流程
3.1总流程
3.2流程图
四、设计步骤
4.1数据库设计
本次设计数据库使用SQLSever2005,一共四张表,分别为学生信息表,教师信息表,还有学生成绩表,教师所教的课程表
4.1.1学生信息表
学生信息表包括学生姓名,学号,登录密码,性别,年龄,还有一个没有关系的主键,如图
图4-1
4.1.2教师表
教师信息表包括教师姓名,教师编号,教师登录密码和所教授的课程,和一个没有关系的主键,用来自动增长。
如图4-2。
图4-2
4.1.3课程表
课程表为教师所教的课程,其中包括课程编号,课程名,课程学分等。
如图4-3
图4-3
4.1.4成绩表
成绩表是教师上成绩之后,所有成绩储存在成绩表中,其中包括课程,学分,学生编号,学期等。
如图4-4
图4-4
4.2功能描述
4.2.1登录
当程序运行的时候,会出现如图4-5的登录,然后根据提示进行选择操作,
输入账号和密码,选择登录的类型,登录界面还有注册新用户和修还密码等功能
图4-5登录
代码如下:
if(!
name.equals("")){
if(!
pwd.equals("")){
if(!
type.equals("选择类型")){
if(type.equals("学生")){
sql="Select*fromstudentwherenum='"+name+"'andpwd='"+pwd+"'";
}
if(type.equals("教师")){
sql="Select*fromteacherwherenum="
+name+"andpwd="+pwd;
}
try{
rs=db.Query(sql);
while(rs.next()){
name1=rs.getString("name");
num=rs.getString("num");
if(type.equals("教师")){
classes=rs.getString("classes");
}
}
}catch(SQLExceptione1){
e1.printStackTrace();
}
if(!
name1.equals("")){
if(type.equals("学生")){
Login.this.close();
try{
Displaydisplay=Display.getDefault();
studentshell=newstudent(display);
shell.open();
shell.layout();
while(!
shell.isDisposed()){
if(!
display.readAndDispatch()){
display.sleep();
}
}
}catch(Exceptione1){
e1.printStackTrace();
}
}
if(type.equals("教师")){
Login.this.close();
try{
Displaydisplay=Display.getDefault();
AddChengshell=newAddCheng(display);
shell.open();
shell.layout();
while(!
shell.isDisposed()){
if(!
display.readAndDispatch()){
display.sleep();
}
}
}catch(Exceptione1){
e1.printStackTrace();
}
}
}else{
MessageDialog.openError(getShell(),"提示",
"用户名密码错误");
}
}else{
MessageDialog.openWarning(getShell(),"提示",
"你还没选择登录类型");
}
}else{
MessageDialog.openWarning(getShell(),"提示",
"密码不能为空");
}
}else{
MessageDialog.openWarning(getShell(),"提示",
"用户名为空");
}
修改密码功能修改在此登录的用户,修改密码的用户必须输入原密码,和新密码才能进行密码的修改。
如图4-6修改密码
4-6修改密码
代码如下:
Stringsql="updateteachersetpwd='"+text_1.getText()+"'wherenum='"+Login.num+"'";
booleanb=MessageDialog.openQuestion(getShell(),"提示","是否修改密码");
if(b){
db.Update(sql);
MessageDialog.openWarning(getShell(),"提示","修改密码成功");
}
注册用户功能点击进入注册用户的功能后,进行相应的提示进行操作,填入对应的教师的信息后点击添加就可以成功的注册一个新的用户了,在进行相关的操作,如图4-7注册
图4-7注册新用户
代码如下:
if(!
text.getText().equals("")){
if(!
text_1.getText().equals("")){
if(!
text_2.getText().equals("")){
if(!
text_3.getText().equals("")){
Stringsql="insertintoteachervalues('"+text.getText()+"','"+text_2.getText()+"','"+text_1.getText()+"','"+text_3.getText()+"')";
booleanb=MessageDialog.openQuestion(getShell(),"提示","是否注册");
if(b){
db.Update(sql);
MessageDialog.openWarning(getShell(),"提示","注册成功");
}
}
}
}
}
4.2.2教师端
登录类型选择教师,进入教师端,此处含有增加,删除,修改和教师修还密码等功能,每一步都有相应的校验。
选择功能进行操作。
增加学生成绩功能进入之后会有提示,输入学号,成绩,学年等信息,点击确定完成添加学生成绩的操作。
如图4-8教师端
图4-8教师端
代码如下:
if(!
num.equals("")){
if(!
fenshu.equals("")){
if(!
xueqi.equals("")){
Stringsql="insertinto分数values('"+kemu+"','"+fenshu+"','"+num+"','"+xueqi+"')";
db.Update(sql);
num="";
fenshu="";
fenye();
MessageDialog.openWarning(getShell(),"提示","添加成功");
}else{
MessageDialog.openError(getShell(),"提示","学期不能为空");
}
}else{
MessageDialog.openError(getShell(),"提示","分数不能为空");
}
}else{
MessageDialog.openError(getShell(),"提示","学号不能为空");
}
选择某个人后点击鼠标右键,会出现修改和删除功能。
如图4-9鼠标右键功能
图4-9鼠标右键功能
修改学生成绩选择某个人之后,右键选择修改功能,就会出现如图4-10的界面,修改学号和成绩后点击确定,即可修改学生成绩
图4-10修改学生成绩
代码如下:
Stringsql="updateteachersetpwd='"+text_1.getText()+"'wherenum='"+Login.num+"'";
booleanb=MessageDialog.openQuestion(getShell(),"提示","是否修改密码");
if(b){
db.Update(sql);
MessageDialog.openWarning(getShell(),"提示","修改密码成功");
}
删除学生成绩右键选择删除学生成绩功能,会出现如图4-11的询问框,选择确认,删除此学生的成绩,点击否即为取消删除
图4-11删除学生信息
代码如下:
Stringsql="deletefrom成绩wherenum='"+text_1.getText()
booleantag=MessageDialog.openQuestion(getShell(),"提示","是否删");
if(tag){
db.Update(sql);
MessageDialog.openWarning(getShell(),"提示","删除成功");
}
4.2.3学生端
学生端查询学生信息的功能,该功能含有按学年查询,按科目和查询全部等功能,选择功能进行操作,如图4-12
图4-12学生查询
代码如下:
Stringsql="Select*fromstudentwherenum='"+name+"'andpwd='"+pwd+"'";
rs=db.Query(sql);
try{
while(rs.next()){
TableItemtableItem=newTableItem(table,SWT.NONE);
tableItem.setText(0,""+rs.getString("1"));
tableItem.setText(1,""+rs.getString("2"));
tableItem.setText(2,""+rs.getString("3"));
tableItem.setText(3,""+rs.getString("4"));
tableItem.setText(4,""+rs.getString("5"));
tableItem.setText(4,""+rs.getString("6"));
}
}catch(SQLExceptione){
e.printStackTrace();
}
五、设计总结
通过几天的课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次真真的做程序设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。
六、程序清单
packageStudent;
importjava.sql.ResultSet;
publicclassAddChengextendsShell{
privateTexttext_1;
privateTexttext_2;
privateTabletable;
privateTexttext;
publicintstart=0;
publicintpage=1;
publicintrow_number=0;
publicintmaxPage=0;
publicintpageSize=5;
Stringxueqi;
Stringkemu;
Combocombo;
DBHelperdb=newDBHelper();
ResultSetrs;
Stringnum;
Labellabel_4;
/**
*Launchtheapplication.
*@paramargs
*/
publicstaticvoidmain(Stringargs[]){
try{
Displaydisplay=Display.getDefault();
AddChengshell=newAddCheng(display);
shell.open();
shell.layout();
while(!
shell.isDisposed()){
if(!
display.readAndDispatch()){
display.sleep();
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*Createtheshell.
*@paramdisplay
*/
publicAddCheng(Displaydisplay){
super(display,SWT.SHELL_TRIM);
Labellabel_8=newLabel(this,SWT.BORDER);
label_8.setBounds(223,5,94,17);
label_8.setText(Login.name1);
Labellabel_10=newLabel(this,SWT.NONE);
label_10.setBounds(352,294,61,17);
label_10.setText("\u9875");
label_4=newLabel(this,SWT.NONE);
label_4.setBounds(325,294,21,17);
Labellabel=newLabel(this,SWT.NONE);
label.setBounds(21,39,35,17);
label.setText("\u79D1\u76EE");
Labellabel_1=newLabel(this,SWT.NONE);
label_1.setBounds(146,39,30,17);
label_1.setText("\u5B66\u53F7");
text=newText(this,SWT.BORDER|SWT.READ_ONLY);
text.setBounds(60,39,80,23);
text.setText(Login.classes);
text_1=newText(this,SWT.BORDER);
text_1.setBounds(182,39,94,23);
Labellabel_2=newLabel(this,SWT.NONE);
label_2.setBounds(282,39,35,17);
label_2.setText("\u6210\u7EE9");
text_2=newText(this,SWT.BORDER);
text_2.setBounds(325,39,94,23);
combo=newCombo(this,SWT.NONE);
combo.setItems(newString[]{"2011-2012-1","2011-2012-2","2012-2013-1","2012-2013-2"});
combo.setBounds(466,39,100,25);
combo.select
(1);
kemu=text.getText();
xueqi=combo.getText();
Buttonbutton=newButton(this,SWT.NONE);
button.addSelectionListener(newSelectionAdapter(){
@Override
publicvoidwidgetSelected(SelectionEvente){
Stringnum=text_1.getText();
Stringfenshu=text_2.getText();
if(!
num.equals("")){
if(!
fenshu.equals("")){
if(!
xueqi.equals("")){
Stringsql="insertinto分数values('"+kemu+"','"+fenshu+"','"+num+"','"+xueqi+"')";
db.Update(sql);
num="";
fenshu="";
fenye();
MessageDialog.openWarning(getShell(),"提示","添加成功");
}else{
MessageDialog.openError(getShell(),"提示","学期不能为空");
}
}else{
MessageDialog.openError(getShell(),"提示","分数不能为空");
}
}else{
MessageDialog.openError(getShell(),"提示","学号不能为空");
}
}
});
button.setBounds(572,39,80,27);
button.setText("\u6DFB\u52A0");
table=newTable(this,SWT.BORDER|SWT.FULL_SELECTION);
table.addSelectionListener(newSelectionAdapter(){
@Override
publicvoidwidgetSelected(SelectionEvente){
TableItem[]it=table.getSelection();
TableItemi=it[0];
num=i.getText(0);
}
});
table.setBounds(61,82,571,193);
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableColumntblclmnNewColumn_1=newTableColumn(table,SWT.NONE);
tblclmnNewColumn_1.setWidth(109);
tblclmnNewColumn_1.setText("\u7F16\u53