第一篇:学生在校管理系统
学生在校管理系统
系统设计方案
冯永辉 2013-04-15
学生在校管理系统技术方案
一、do概述 1.项目背景
学校安全工作是全社会安全工作的一个十分重要的组成部分。它直接关系到青少年学生能否安全、健康地成长,关系到千千万万个家庭的幸福安宁和社会稳定。
中学时期的青少年处于叛逆期,管理的难度较大。尤其是近年来随着网络信息的发展,以及数码产品的普及,青少年的社交途径大大增加,QQ、微信、陌陌等社交软件的流行使学生的社交活动、娱乐活动信息更加具有隐蔽性,增大了学校的管理难度,同时也加重了家长们的担心。校园安全问题已成为社会各界关注的热点问题。保护好每一个孩子,使发生在他们身上的意外事故减少到最低限度,已成为中小学教育和管理的重要内容。
因此如何利用高科技手段对学生的在校状况进行管理成为了迫切解决的问题,能否利用生物识别技术对学生的信息进行管理、优化请假流程、科学管控请假制度和合理安排学生出入校门时间段呢?答案是肯定的,我们为湖南广益实验中学开发的学生在校管理系统为此难题提供了一套完整的解决方案。2.方案介绍 学生在校管理系统技术方案
我们拥有在指纹识别方面先进的软硬件综合解决能力,现在开发的学生在校管理系统利用先进的开发技术,结合学校现有的管理手段,能够广泛、高效的实现学生的管理。
根据校方提出的需求,我们充分考察了学校的软硬件资源和分析了现有的管理模式,提出如下的整体方案:
系统采用基于互联网的开发模式,兼容一个或多个校区,能够与现有的教务系统或学生管理系统对接;
系统优化了请假管理制度,实行请假管理无纸化,同时对出入校门的学生的真实身份进行核实,避免冒名顶替的现象发生;
系统可以实时查询学生的当前状况,在校,离校等信息,同时还可以查询学生的请假记录,大门的出入记录;
系统应对未按时归校的学生对其班主任或者教务处老师给予提醒;
二、术语
1.信息采集系统
在本方案中,信息采集系统指在使用系统前需要对学生信息进行信息采集,包括学生姓名、性别、出学生在校管理系统技术方案
生日期、校园卡号、照片信息。系统提供从其他信息系统导入的接口。同时包括班级信息、教师信息的录入等功能。2.指纹登记过程
在本方案中,登录(或登记)指使用指采集仪,对手指进行若干次采样,经过一系列处理后,产生指纹模板的过程。指纹采集仪在登录时要进行三次指纹采样,然后按照一定的算法产生出模板。3.指纹特征或指纹模板
在本方案中,指纹特征或指纹模板指使用指纹采集仪对手指进行若干次采样后得到的指纹固有属性,在学生身份指纹验证系统中,指纹模板作为母板存放在后台数据库、终端验证PC机里面。4.学生身份指纹验证系统
身份指纹验证是指利用指纹识别技术对需要身份验证的人员进行合法身份验证的过程。在本设计方案中,学生身份指纹验证系统指为满足使用指纹验证学生合法身份的需求而开发的指纹身份验证系统,学生身份指纹验证系统包括硬件系统和软件系统。5.指纹验证或指纹比对
在本方案中,指纹验证或指纹比对是指实时采集某个学生手指的图像,生成指纹特征,并与存放在后学生在校管理系统技术方案
台数据库中、终端验证PC 机中事先采集的指纹模板进行匹配,以证明学生身份的真实性。
三、需求分析
学生在校管理系统根本出发点是采用指纹鉴别技术验证学生的合法身份。在研发该系统时,不仅仅是单纯的实现学生的指纹验证,而应该充分考虑到学校在学生请假管理等方面功能需求、管理需求、安全需求、和现有学生信息系统的融合、系统可扩展性需求等一系列问题。
系统流程图如下:
学生出校返校验证学生信息采集出入门岗出入门岗审核请假并录入系统出校验证课堂学习
1.基本功能需求
首先,从基本功能需求方面,学生在校管理系统可满足对学生在校管理的实时性、高效性和可靠性,即当系统学生在校管理系统技术方案
采集完学生信息后,班主任录入当日本班请假的学号信息,并设定出校门的有效时间段,学生出门时持校园卡刷卡,系统自动判断出学生信息和是否允许出门,如果不允许会触发系统报警机制(亮灯并发出报警声响),如果该生已请假符合条件,接着学生按下自己已登记的指纹信息,系统自动判断指纹信息和学生信息是否匹配,如果不匹配则报警,如果匹配则亮起绿灯,学生可以出门;同理归校也使如此。
其次,学生的当前状态、请假、出入大门记录可提供查询网址,供家长和老师实施监督学生的情况。对于未按时归校的学生,系统自动发送短信或电子邮件给予班主任或教导主任提醒。
2.管理需求
在管理需求方面,学生在校管理系统可满足校方对学生在校管理的需求,依据请假管理标准进行快速的系统部署。3.安全需求
在安全需求方面,学生在校管理系统具有系统安全性、设备安全性、信息安全性、运行安全性等多方位的设计考虑。
4.与业务系统无缝融合的需求
实现与现有学生信息管理系统、一卡通系统的无学生在校管理系统技术方案
缝融合。
5.系统的可扩展性需求
在扩充需求方面,学生在校管理系统的设计充分考虑学生管理业务上的可扩充性,当需要在新的业务中采用指纹身份验证功能时,可方便地将指纹应用由现有业务扩展到新增业务。
四、详细设计方案
该方案设计的系统可以满足学生在校管理环节中实时验证学生身份的需求。1.实现原理
学生在校管理系统结合学生信息管理系统、一卡通系统,通过接口通信实现无缝连接,该系统以学生信息管理系统学生基础数据为依托,通过校园卡、照片采集、指纹采集比对进行学生的识别,其实现原理是:
(1)在学生在校管理系统中设置相关的班级信息、学校信息、教师信息、将学生数据导入或者录入至该系统,学生数据中必须含有学生姓名、性别、身份证号、出生日期、家庭住址、联系方式、所属班级、照片等信息;
(2)如果没有照片信息需要采集学生照片信息,然后读取学生校园卡号,采集学生指纹信息,为了统学生在校管理系统技术方案
一建议统一采集右手食指或大拇指指纹信息,并保存至数据库;
(3)学生发起请假申请,经过班主任、教导主任等审批后教师登陆系统把当日审批过的请假学生学号录入系统。并设定允许出校门的时间段;
(4)学生持卡出校门,到校门口首先刷卡、系统根据校园卡查询出该学生的详细信息并显示,如果该生并没有请假或请假已失效,报警灯会亮红并发出报警声;如果该生符合条件,则该生按下已采集的指纹进行身份比对,如果该生身份比对无误(即持卡人即是本人),报警灯绿灯亮起,允许学生通过,否则系统判定为顶替出门,报警器自动响起。
如果学生没有带校园卡,系统界面提供录入学号的入口;如果由于温度原因或者学生手指蜕皮造成无法正常比对指纹信息,则系统提供人工核对的功能。
(5)学生归校时流程一样,学生的当前状态、出入校门记录可通过网站实时查询;
(6)如果学生未按时归校,则系统自动向班主任或者教导主任发短信或电子邮件通知; 2.系统结构
基于指纹终端验证机的学生在校管理系统解决方案的网络系统主要由中心数据服务器、联有指纹采集学生在校管理系统技术方案
仪的PC 机、IC卡读写器、摄像头及学生在校管理系统软件组成。
中心服务器内安装有学生在校管理系统软件服务器端,并且安装有数据库管理软件。在服务器内存储的数据为所有学生的基本信息及指纹特征。
联有指纹采集仪的采集PC 机内安装有学生身份指纹验证系统软件的客户端,该软件作为学生的照片及指纹采集工作。将所有的采集PC 机与服务器相联,从服务器获取学生的基本数据、采集学生指纹、将照片信息和指纹特征写入后台数据库。3.业务流程描述
学生在校管理系统工作流程可分为四个主要子流程:
(1)录入基本信息并采集指纹
系统提前录入学生基本信息,或者由其他系统导入学生基本信息;学生到指定的地点进行照片、校园卡号和指纹采集。
(2)教师录入批准请假的学生信息
学生请假被批准后,老师录入当天已请假学生信息,并设定出入校门的时间段。
(3)学生比对身份信息并出入校门
学生在该时间段内到校门口刷校园卡(或输入学学生在校管理系统技术方案
号),并比对指纹信息进行身份确认,通过则顺利实现出入校门,否则拒绝出入。
(4)网站提供实时查询学生状况的功能,包括学生的出入校门记录,系统具有自动发送未按时归校的提醒功能;
3.1 照片、指纹采集流程
(1)学生手持校园卡、学生证来到信息采集点,信息采集老师核实学生证件并录入系统,也可以由其他系统导入学生基本信息。
(2)录入学生基本信息后,采集学生照片信息、读取校园卡号信息、采集指纹并验证指纹模板的有效性。
(3)将新录入的学生信息及学生指纹模板写入数据库。
3.2 学生出入校门身份指纹验证流程(1)学校门岗人员等待学生进入或出门。(2)学生手持校园卡来到校门口等待指纹身份认证。
(3)学生自行刷校园卡校验是否有出入校门的权限,系统读取校园卡信息后显示该生的详细信息,包括学生姓名,班级,照片,以及请假信息,如果该生未请假或请假失效则报警提醒,如果该生请假正常则学生在校管理系统技术方案
按下已采集的手指比对指纹信息,以确定身份是否和校园卡一致,如果一致则通过,否则报警。
(4)为了避免学生忘带卡,系统提供自行录入学号信息功能;为了避免指纹信息无法读取,系统提供人工识别并确认功能。
3.3提醒和数据统计流程
(1)当日学生未按时归校,系统自动发送短信或者电子邮件给予提醒,以便老师及时发现问题。
(2)系统提供实时查询学生状况功能,以及出入校门记录。
五、系统实施说明
本方案设计的系统可以采用独立运行方式进行系统部署。学生在校管理系统,可与现有的学生信息管理系统,而是另外使用一套独立软硬件系统。因而该系统具有快速部署的能力。
本系统也可以与现有考试管理业务系统结合到一起,保证学生信息数据的唯一性和统一性。我们可以提供相应的软件接口,使二个系统的融合变得简单。
第二篇:学生管理系统
import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;
public class Xsglxt extends JFrame implements ActionListener { JPanel mb1,mb2;JLabel bq1;JTextField wbk1;JButton an1,an2,an3,an4;JTable bg1;
JScrollPane gd1;Xsxx xsxx2;
public static void main(String[] args)
{
Xsglxt xs=new Xsglxt();}
public Xsglxt(){
mb1=new JPanel();
bq1=new JLabel(“请输入姓名”);
wbk1=new JTextField(10);
an1=new JButton(“查询”);
an1.addActionListener(this);
an1.setActionCommand(“chaxun”);
mb1.add(bq1);mb1.add(wbk1);mb1.add(an1);
mb2=new JPanel();
an2=new JButton(“添加”);
an2.addActionListener(this);
an2.setActionCommand(“tianjia”);
an3=new JButton(“修改”);
an3.addActionListener(this);
an3.setActionCommand(“xiugai”);
an4=new JButton(“删除”);
an4.addActionListener(this);
an4.setActionCommand(“shanchu”);
mb2.add(an2);mb2.add(an3);mb2.add(an4);
xsxx2=new Xsxx();
bg1=new JTable(xsxx2);gd1=new JScrollPane(bg1);
this.add(gd1);this.add(mb1,“North”);this.add(mb2,“South”);
this.setTitle(“学生管理系统”);this.setSize(500,400);this.setLocation(201,181);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);
} public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals(“chaxun”)){
String xingming=this.wbk1.getText().trim();
String sql=“select * from xuesheng where xingming='”+xingming+“'”;
xsxx2=new Xsxx(sql);
bg1.setModel(xsxx2);} else if(e.getActionCommand().equals(“tianjia”)){
Tianjia tj=new Tianjia(this,“添加学生信息”,true);
xsxx2=new Xsxx();
bg1.setModel(xsxx2);
} else if(e.getActionCommand().equals(“xiugai”)){
int ii=this.bg1.getSelectedRow();
if(ii==-1)
{
JOptionPane.showMessageDialog(this,“请选中要修改的行”);
return;
}
new Xiugai(this,“修改学生信息”,true,xsxx2,ii);
xsxx2=new Xsxx();
bg1.setModel(xsxx2);}
else if(e.getActionCommand().equals(“shanchu”))
{
int ii=this.bg1.getSelectedRow();
if(ii==-1)
{
JOptionPane.showMessageDialog(this,“请选中要删除的行”);
return;
}
String st=(String)xsxx2.getValueAt(ii,0);
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
Statement sm=null;
try {
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
ct=DriverManager.getConnection(“jdbc:odbc:sql server”,“sa”,“ydyd4488321”);
ps=ct.prepareStatement(“delete from xuesheng where xuehao=?”);
ps.setString(1,st);
ps.executeUpdate();
} catch(Exception e2){}
finally
{
try {
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
} catch(Exception e3){}
}
xsxx2=new Xsxx();
bg1.setModel(xsxx2);
} } }
第三篇:学生管理系统学生链表
#include
typedef struct student { int num;char name[10];char passwd[6];int age;int class;int math;int clan;int chinese;int mingci;struct student *next;}STU,*pstu;
pstu stu_numsort(pstu head);pstu stu_sumsort(pstu head);pstu stu_mathsort(pstu head);pstu stu_chisort(pstu head);pstu stu_clansort(pstu head);pstu stu_searchbynum(pstu head,int num);pstu stu_searchbyname(pstu head,char name[]);pstu stu_searchbyclass(pstu head,int class);pstu stu_create(){
pstu head=NULL;pstu s=NULL;int num;char name[10];char passwd[6];int age;int class;int math;int clan;int chinese;int mingci;printf(“请输入任意一个数非0的数继续 :”);scanf(“%d”,&num);while(num!=0){
s=(pstu)malloc(sizeof(STU));
if(s==NULL)
{
printf(“nmalloc errorn”);
return NULL;
}
printf(“输入学生学号:”);
scanf(“%d”,&s->num);
printf(“请输入学生姓名:”);
scanf(“%s”,s->name);
printf(“请输入登陆密码:”);//学生权限(error)
scanf(“%s”,s->passwd);
printf(“请输入学生年龄:”);
scanf(“%d”,&s->age);
printf(“请输入学生班级:”);
scanf(“%d”,&s->class);
printf(“请输入数学成绩:”);
scanf(“%d”,&s->math);
printf(“请输入c语言成绩:”);
scanf(“%d”,&s->clan);
printf(“请输入语文成绩:”);
scanf(“%d”,&s->chinese);
printf(“enter next studentn”);
if(head==NULL)
{
s->next=NULL;
head=s;
}
else
{
s->next=NULL;
s->next=head;
head=s;
}
scanf(“%d”,&num);} return head;} //保存
void stu_write(pstu head){ int flag=0;FILE *fp=NULL;pstu p=head;fp=fopen(“num”,“w”);if(fp==NULL){
printf(“open errorn”);
return;} while(p!=NULL){
flag=fwrite(p,sizeof(STU),1,fp);
if(flag!=1)
{
printf(“write errorn”);
return;
}
p->next;} fclose(fp);} //读函数
pstu stu_read(){ FILE *fp=NULL;pstu head=NULL;pstu s=NULL;fp=fopen(“num”,“r”);s=(pstu)malloc(sizeof(STU));while(fread(s,sizeof(STU),1,fp)==1){
if(head==NULL)
{
s->next=NULL;
head=s;
}
else
{
s->next=NULL;
s->next=head;
head=s;
}
s=(pstu)malloc(sizeof(STU));} fclose(fp);return head;} //删除学生信息(学号)pstu stu_del(pstu head,int num){ pstu p=head;pstu q=NULL;printf(“输入删除的学号:”);scanf(“%d”,&num);if(head->num==num){
head=head->next;} else {
while(p->next!=NULL)
{
if(p->next->num==num)
{
q=p->next;
p->next=q->next;
free(q);
q=NULL;
break;
}
p=p->next;
} } return head;}
pstu stu_searchbynum();//按学号修改学生信息
void stu_changebynum(pstu head){ pstu p=head;int num;char name[10];char passwd[6];int age;int class;int math,chinese,clan;int n;printf(“请输入查找的学号:”);scanf(“%d”,&num);while(p!=NULL){
if(p->num==num)
{
printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->passwd,p->age,p->class,p->math,p->clan,p->chinese,p->mingci);
break;
}
p=p->next;}
printf(“请选择需要修改的学生信息:n”);printf(“-------------------------n”);printf(“1:姓名n”);printf(“2:密码n”);printf(“3:年龄n”);printf(“4:班级n”);printf(“5:数学成绩n”);printf(“6:c成绩n”);printf(“7:语文成绩n”);printf(“0:退出”);printf(“---------------------------n”);printf(“请输入需要修改的信息:”);scanf(“%d”,&n);switch(n){
case 0:
return;
case 1:
printf(“请输入新的姓名:”);
scanf(“%s”,p->name);
break;
case 2:
printf(“请输入新的密码:”);
scanf(“%s”,p->passwd);
break;
case 3:
printf(“请输入新的年龄:”);
scanf(“%d”,&p->age);
break;
case 4:
printf(“请输入新的班级:”);
scanf(“%d”,&p->class);
break;
case 5:
printf(“请输入新的数学成绩:”);
scanf(“%d”,&p->math);
break;
case 6:
printf(“请输入新的c语言成绩:”);
scanf(“%d”,&p->clan);
break;
case 7:
printf(“请输入新的语文成绩:”);
scanf(“%d”,&p->chinese);
break;
default:
printf(“n无效选项n”);
break;} printf(“修改成功!n”);printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->passwd,p->age,p->class,p->math,p->clan,p->chinese,p->mingci);} //按学生姓名修改
void stu_changebyname(pstu head){ pstu p=head;int num;char name[10];char passwd[6];int age;int class;int math,chinese,clan;int n;printf(“请输入查找的姓名:”);scanf(“%s”,name);while(p!=NULL){
if(strcmp(p->name,name)==0)
{
printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->passwd,p->age,p->class,p->math,p->clan,p->chinese,p->mingci);
break;} p=p->next;} printf(“请选择需要修改的学生信息:n”);printf(“-------------------------n”);printf(“1:学号n”);printf(“2:密码n”);printf(“3:年龄n”);printf(“4:班级n”);printf(“5:数学成绩n”);printf(“6:c成绩n”);printf(“7:语文成绩n”);printf(“0:退出”);printf(“---------------------------n”);printf(“请输入需要修改的信息:”);scanf(“%d”,&n);switch(n){ case 0:
return;case 1:
printf(“请输入新的学号:”);
scanf(“%d”,&p->num);
break;case 2:
printf(“请输入新的密码:”);
scanf(“%s”,p->passwd);
break;case 3:
printf(“请输入新的年龄:”);
scanf(“%d”,&p->age);
break;case 4:
printf(“请输入新的班级:”);
scanf(“%d”,&p->class);
break;case 5:
printf(“请输入新的数学成绩:”);
scanf(“%d”,&p->math);
break;case 6:
printf(“请输入新的c语言成绩:”);
scanf(“%d”,&p->clan);
break;
case 7:
printf(“请输入新的语文成绩:”);
scanf(“%d”,&p->chinese);
break;
default:
printf(“n无效选项n”);
break;} printf(“修改成功!n”);printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,p->num,p->name,p->passwd,p->age,p->class,p->math,p->clan,p->chinese,p->mingci);
} void change_printf(pstu head){ pstu p=head;int n;printf(“请选择修改学生信息的方式:n”);printf(“-------n”);printf(“1:按学生学号修改n”);printf(“2:按学生姓名修改n”);printf(“0:退出n”);printf(“---------n”);scanf(“%d”,&n);switch(n){
case 1:
stu_changebynum(head);
printf(“显示全部学生信息:”);
break;
case 2:
stu_changebyname(head);
printf(“显示全部学生信息:”);
break;
case 3:
return;} } //查找学生信息
void search_printf(pstu head){ pstu p=head;int n;int num;char name[10];int class;printf(“请选择查找学生信息的方式:n”);printf(“-------n”);printf(“1:按学生学号查找n”);printf(“2:按学生姓名查找n”);printf(“3:按班级群体查找n”);printf(“0:退出n”);printf(“---------n”);scanf(“%d”,&n);switch(n){
case 1:
stu_searchbynum(head,num);
break;
case 2:
stu_searchbyname(head,name);
break;
case 3:
stu_searchbyclass(head,class);
break;
case 0:
return;} } //1:学号查找
pstu stu_searchbynum(pstu head,int num){ pstu p=head;printf(“请输入查找的学号:”);scanf(“%d”,&num);while(p!=NULL){
if(p->num==num)
break;
p=p->next;} return p;} //2:按姓名查找 pstu stu_searchbyname(pstu head,char name[]){ pstu p=head;printf(“请输入要查找的姓名:”);scanf(“%s”,name);while(p!=NULL){
if(strcmp(name,p->name)==0)
break;
p=p->next;} return p;} //班级群体查找
pstu stu_searchbyclass(pstu head,int class){ pstu p=head;printf(“请输入要查找的班级:”);scanf(“%d”,&class);while(p!=NULL){
if(p->class==class)
break;
p=p->next;} return p;}
//显示所有学生信息列表
void sort_printf(pstu head){ pstu p=head;int n;printf(“请选择显示学生信息的方式:n”);printf(“-----n”);printf(“1:按学号顺序显示n”);printf(“2:按名次显示n”);printf(“3:按数学成绩显示n”);printf(“4:按c语言成绩显示n”);printf(“5:按语文成绩显示n”);printf(“--------n”);printf(“请输入你要选择的操作:”);scanf(“%d”,&n);switch(n){
case 1:
stu_numsort(head);
printf(“显示学生信息n”);
break;
case 2:
stu_sumsort(head);
printf(“显示学生信息n”);
break;
case 3:
stu_mathsort(head);
printf(“显示学生信息n”);
break;
case 4:
stu_clansort(head);
printf(“显示学生信息n”);
break;
case 5:
stu_chisort(head);
printf(“显示学生信息n”);
break;
case 6:
return;
default:
printf(“输入错误n”);
break;} }
int stu_len(pstu head){ pstu p=head;int len=0;while(p!=NULL){
len++;
p=p->next;} return len;} //1:按学号顺序显示
pstu getnummax(pstu head){ pstu pmax=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmax->num
num)
{
pmax=p;
}
p=p->next;} return pmax;} pstu removefromold(pstu head,pstu pmax){ pstu p=head;if(head==pmax){
head=head->next;} else {
while(p!=NULL)
{
if(p->next==pmax)
{
p->next=pmax->next;
break;
}
}
p=p->next;} return head;} pstu add(pstu pnew,pstu pmax){ pmax->next=pnew;pnew=pmax;return pnew;} pstu stu_numsort(pstu head){ pstu pold=head;pstu pmax=NULL;pstu pnew=NULL;while(pold!=NULL){
pmax=getnummax(pold);
pold=removefromold(pold,pmax);
pnew=add(pnew,pmax);} return pnew;} //按名次显示
pstu getsummin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->math+pmin->clan+pmin->chinese>p->math+p->clan+p->chinese)
{
pmin=p;
}
p=p->next;} return pmin;} pstu removefromtold(pstu head,pstu pmin){ pstu p=head;if(head==pmin){
head=head->next;} else {
while(p!=NULL)
{
if(p->next==pmin)
p->next=pmin->next;
break;
}
p=p->next;} return head;} pstu addt(pstu pnew,pstu pmin){ pmin->next=pnew;pnew=pmin;return pnew;} pstu stu_sumsort(pstu head){ pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;int i=stu_len(head);while(pold!=NULL){
pmin=getsummin(pold);
pold=removefromtold(pold,pmin);
pnew=addt(pnew,pmin);
pnew->mingci=i--;} return pnew;} //按数学成绩显示
pstu getmathmin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->math>p->math)
{
pmin=p;
}
p=p->next;} return pmin;} pstu stu_mathsort(pstu head){ int i=stu_len(head);pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;while(pold!=NULL){
pmin=getmathmin(pold);
pold=removefromold(pold,pmin);
pnew=add(pnew,pmin);
pnew->mingci=i--;} return pnew;} //按c语言成绩显示
pstu getclanmin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->clan>p->clan)
{
pmin=p;
}
p=p->next;} return pmin;} pstu stu_clansort(pstu head){ int i=stu_len(head);pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;while(pold!=NULL){
pmin=getclanmin(pold);
pold=removefromtold(pold,pmin);
pnew=addt(pnew,pmin);
pnew->mingci=i--;} return pnew;} //按语文成绩显示
pstu getchimin(pstu head){ pstu pmin=head;if(head==NULL){
return NULL;} pstu p=head->next;while(p!=NULL){
if(pmin->chinese>p->chinese)
{
pmin=p;
}
p=p->next;} return pmin;} pstu stu_chisort(pstu head){ int i=stu_len(head);pstu pold=head;pstu pmin=NULL;pstu pnew=NULL;while(pold!=NULL){
pmin=getchimin(pold);
pold=removefromtold(pold,pmin);
pnew=addt(pnew,pmin);
pnew->mingci=i--;} return pnew;} void stu_printf(pstu head){ pstu tmp=head;printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);while(tmp!=NULL){
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,tmp->num,tmp->name,tmp->passwd,tmp->age,tmp->class,tmp->math,tmp->clan,tmp->chinese,tmp->mingci);
tmp=tmp->next;} printf(“n”);} void stun_printf(pstu head){ pstu tmp=head;printf(“学号t姓名t密码t年龄t班级t数学tc语言t语文t名次n”);while(tmp!=NULL){
printf(“%dt%st%st%dt%dt%dt%dt%dt%dn”,tmp->num,tmp->name,tmp->passwd,tmp->age,tmp->class,tmp->math,tmp->clan,tmp->chinese,tmp->mingci);
break;} printf(“n”);}
//2: int main(){ // int m;int num;int class;int len;char name[10];pstu head=stu_create();stu_printf(head);len=stu_len(head);// pstu p=stu_del(head, num);// stu_printf(p);/* pstu k=stu_searchbynum(head,num);if(k!=NULL)
stun_printf(k);else
printf(“no find”);
pstu l=stu_searchbyname(head,name);
// // // // // //
// // // // // //
} if(l!=NULL)stun_printf(l);else printf(“no find”);pstu h=stu_searchbyclass(head,class);if(h!=NULL)stun_printf(h);else printf(“no find”);*/ stu_changebynum(head);printf(“显示全部学生信息:”);stu_printf(head);stu_changebyname(head);printf(“显示全部学生信息:”);stu_printf(head);search_printf(head);stun_printf(head);change_printf(head);stu_printf(head);pstu p1=stu_numsort(head);stu_printf(p1);pstu p2=stu_sumsort(head);stu_printf(p2);pstu p3=stu_mathsort(head);stu_printf(p3);sort_printf(head);stu_printf(head);
第四篇:学生管理系统论文
学生管理系统的设计
杨世坤 计算机科学与技术系 09级 0940141022
摘要:在 VB2008 环境下,通过连接 Access2000 数据库,建立了一个学生管理系统。在这个系统里,可以实现学生学生的学号,姓名,性别,民族,年级,出生年月,系别,家庭住址等各种信息的录入,精确查找,模糊查找,更新,删除等操作。从程序的界面设计到源代码,都做了详尽的说明,适合初学者快速掌握信息管理系统开发的步骤。关键词:VB;数据库;管理系统;access;查询
Abstract: It is designed for the establishment of student information managementsystem in vb6.0 by connecting Access2000 database.This system can realize Information Processing including data entry, query, update, delete and so on.The Information means the student's number,name,age, contact.From the interface design to the source code, it has shown a detailed description, which suitable for beginners tomaster the designing of system quickly.Key words: vb;database;system of management;access;query 1 引言
随着学校办学规模的扩大,学生数量急剧增加,有关学生各种信息的数量也在成倍增长。面对庞大的信息量,利用计算机信息管理系统对学生的学号,姓名,性别,民族,年级,出生年月,系别,家庭住址等综合信息进行管理经成为一种必然趋势。我根据学校特点,通过开发学生信息管理系统,可以做到信息的规范管理、科学统计和快速查询,从而解决大量繁琐的工作,实现学生信息管理的办公无纸化和高效化。功能需求分析
学生管理系统采用 Visual Basic 2008 作为开发工具,后台数据库采用 Assecc2000。系统开发的总体任务是实现学生信息管理的条理化,系统化。用户通过界面,完成对学生的学号,姓名,性别,民族,年级,出生年月,系别,家庭住址等信息的管理。可以对学生信息方便的实现输入,删除,修改,模糊查询,精确查询,在浏览记录时可以切换上一条,下一条,第一条和最后一条。还可对学生信息记录进行排序。数据库建立与连接
3.1 数据库建立
目前,可应用的数据库开发工作很多,Oracle是面向网络计算的数据库,适合开发大型网络应用软件;Access和Visual Foxpro系统适合开发小型数据库应用软件。Access数据库功能比较齐全,数据的备份、拷贝都很方便,且程序发布时不需要额外安装其他的数据库管理软件。本系统数据量较小,采用Access数据库就可满足要求。
3.2 数据库连接
VB 提供了多种与数据库连接的方式,这里使用数据控件(Data)。数据控件(Data)提供 了一种方便地访问数据库中数据的方法,使用数据控件无须编写代码就可以对 VB 所支持 的各种类型的数据库执行大部分数据访问操作。数据控件本身不能显示和直接修改记录,但是可以通过与数据控件相关联的数据约束控件中显示各个记录。用户界面设计 在 Visual Basic2008 环境中,建立一个标准的 exe 工程。学生的学号,姓名,性别,民族,年级,出生年月,系别,家庭住址用文本框控件来显示,名称分别为 text1,text2…text8, 他们分别与数据库中的相应字段绑定。
选择数据控件 data1,并设置它的属性,使得它与数据库连接。实现记录的第一条,上一条,下一条,最后一条的切换以及添加记录,删除记录和编辑记录的操作用按钮来控制实现,名称分别为 command1,command2…command7。对按不同的条件进行查询,这里使用了组合框 Combo1 和 Combo2,分别用来选择精确查找和模糊查找的条件。代码
程序的实现主要使用了 data 控件的常用方法。对于精确查找和模糊查找中的“查找第一个”与“查找下一个”按钮的事件中,它
们所使用的查找条件是一样的,所以需要先定义窗体变量。5.1 登陆界面
mystr = “Provider=Microsoft.Jet.OLEDB.4.0;Data source=student.mdb”
myconn.ConnectionString = mystr
myconn.Open()
Dim mycmd As New OleDbCommand
mycmd.Connection = myconn
mycmd.CommandText = “select * from admin”
Dim myreader As OleDbDataReader = mycmd.ExecuteReader
While myreader.Read()
If TextBox1.Text = myreader(“ID”).ToString And TextBox2.Text = myreader(“psw”)Then
MsgBox(“用户名密码正确!!”, MsgBoxStyle.Information, “提示”)
Module1.password = TextBox2.Text
Module1.username = TextBox1.Text
Module1.pright = myreader(“pright”)
Form1.Show()
Me.Hide()
Exit Sub
End If
End While
MsgBox(“用户密码不正确”, MsgBoxStyle.Information, “提示”)
TextBox1.Text = “"
TextBox2.Text = ”“
TextBox1.Focus()5.2 添加删除用户
在实际应用中,除了超级用户之外,往往会赋予用户一定的访问权限,在给用户设置访问权限之前,应先创建一个用户帐户,将其追加到用于当前数据库的工作组信息文件中的默认Users组。本系统的安全措施在数据库的访问过程中虽然起到了一定的防护作用,然而,尽管人们想到了种种办法维护自己的数据安全,但也总是有漏洞被发现,因此,备份数据是简单有效的方法。5.2 记录的跳转 查找首记录 mybs.MoveFirst()
Label9.Text = ”共有“ & mybs.Count & ”条记录,“ & ”本记录为第“ & mybs.Position + 1 & ”条记录“ 查找下一条记录
If mybs.Position <> mybs.Count-1 Then
mybs.MoveNext()
Label9.Text = ”共有“ & mybs.Count & ”条记录,“ & ”本记录为第“ & mybs.Position + 1 & ”条记录“
Else
MsgBox(”已经是最后一条记录“, MsgBoxStyle.Information, ”提示“)
End If 查找上一条记录 If mybs.Position <> 0 Then
mybs.MovePrevious()
Label9.Text = ”共有“ & mybs.Count & ”条记录,“ & ”本记录为第“ & mybs.Position + 1 & ”条记录“
Else
MsgBox(”已经是第一条记录“, MsgBoxStyle.Information, ”提示“)
End If 查找末记录 mybs.MoveLast()
Label9.Text = ”共有“ & mybs.Count & ”条记录,“ & ”本记录为第“ & mybs.Position + 1 & ”条记录“ 5.3 记录的修改、删除、添加、保存
记录的修改
a = 3
Button5.Enabled = False
Button6.Enabled = False
Button8.Enabled = True
Button7.Enabled = False
GroupBox2.Enabled = False 记录的删除
a = 1
Button5.Enabled = False
Button6.Enabled = False
Button8.Enabled = True
Button7.Enabled = False
GroupBox2.Enabled = False 记录的添加
a = 2
TextBox1.Text = ”“
TextBox2.Text = ”“
TextBox3.Text = ”“
TextBox4.Text = ”“
TextBox5.Text = ”“
TextBox6.Text = ”“
TextBox7.Text = ”“
TextBox8.Text = ”“
TextBox1.Focus()
Button5.Enabled = False
Button6.Enabled = False
Button8.Enabled = True
Button7.Enabled = False
GroupBox2.Enabled = False 记录的保存
Select Case a
Case 1
If MsgBox(”您确定删除此条记录吗?“, MsgBoxStyle.Question + MsgBoxStyle.YesNo, ”提示“)= MsgBoxResult.Yes Then
myds.Tables(”info“).Rows(mybs.Position).Delete()
Dim mybd = New OleDbCommandBuilder(myada)
myada.Update(myds, ”info“)
myds.Clear()
myada.Fill(myds, ”info“)
GroupBox2.Enabled = True
Button5.Enabled = True
Button6.Enabled = True
Button7.Enabled = True
Button8.Enabled = False
Else
GroupBox2.Enabled = True
Button5.Enabled = True
Button6.Enabled = True
Button7.Enabled = True
Button8.Enabled = False
End If
Case 2
Dim myrow As DataRow = myds.Tables(”info“).NewRow
myrow(”学号“)= TextBox1.Text
myrow(”姓名“)= TextBox2.Text
myrow(”性别“)= TextBox3.Text
myrow(”民族“)= TextBox4.Text
myrow(”年级“)= TextBox5.Text
myrow(”出生年月“)= TextBox6.Text
myrow(”系“)= TextBox7.Text
myrow(”家庭住址“)= TextBox8.Text
myds.Tables(”info“).Rows.Add(myrow)
GroupBox2.Enabled = True
Dim mybd = New OleDbCommandBuilder(myada)
myada.Update(myds, ”info“)
myds.Clear()
myada.Fill(myds, ”info“)
Button5.Enabled = True
Button6.Enabled = True
Button7.Enabled = True
Button8.Enabled = False
Case 3
myds.Tables(”info“).Rows(mybs.Position).BeginEdit()
myds.Tables(”info“).Rows(mybs.Position).EndEdit()
Dim mybd = New OleDbCommandBuilder(myada)
myada.Update(myds, ”info“)
myds.Clear()
myada.Fill(myds, ”info“)
GroupBox2.Enabled = True
Button5.Enabled = True
Button6.Enabled = True
Button7.Enabled = True
Button8.Enabled = False
End Select
Label9.Text = ”共有“ & mybs.Count & ”条记录,“ & ”本记录为第“ & mybs.Position + 1 & ”条记录“
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button6.Click
a = 1
Button5.Enabled = False
Button6.Enabled = False
Button8.Enabled = True
Button7.Enabled = False
GroupBox2.Enabled = False 5.4 记录的查找 Dim condstr As String
condstr=”“
If TextBox1.Text <> ”“ Then
If condstr = ”“ Then
If ComboBox1.Text = ”等于“ Then
condstr = ”姓名='“ & TextBox1.Text & ”'“
Else
condstr = ”姓名 like '%“ & TextBox1.Text & ”%'“
End If
End If
End If
If TextBox2.Text <> ”“ Then
If condstr = ”“ Then
condstr = ”性别='“ & TextBox2.Text & ”'“
Else
condstr = condstr & ” and “ & ”性别='“ & TextBox2.Text & ”'“
End If
End If
If TextBox3.Text <> ”“ Then
If condstr = ”“ Then
condstr = ”民族='“ & TextBox2.Text & ”'“
Else
condstr = condstr & ” and “ & ”民族='“ & TextBox2.Text & ”'“
End If
End If
If TextBox4.Text <> ”“ Then
If condstr = ”“ Then
If ComboBox2.Text = ”等于“ Then
condstr = ”家庭住址='“ & TextBox4.Text & ”'“
Else
condstr = condstr & ” and “ & ”家庭住址 like '%“ & TextBox4.Text & ”%'"
End If
End If
End If
mydv.RowFilter = condstr 6 结束语
本系统达到了预期的要求,系统设计是根据学校的学生信息管理流程,合理设置各种操作模块,各管理员和操作员之间分工明确,并且能够及时、准确地记录每次操作信息。操作简单易行,定期审核,确保了数据的正确性。从根本上解决了学生管理的计算机实现方式,对学校管理来讲是一个大的跨越。
参考文献:郑阿奇 彭作民 Visual Basic.NET 程序设计教程(第二版)械工业出版社
第五篇:学生管理系统使用说明
学生系统使用说明
登录
在浏览器地址栏内输入“202.195.128.108”后点击回车,弹出苏大研究生管理系统登录窗口。如图1所示。
图1 在图一所示窗口输入用户名、密码、验证码等信息后,类别选择“学生”,然后点击“
”按钮。
个人基本信息的核对
点击“其他管理—个人基本信息管理”,弹出如图2所示窗口。
图2 点击左上角的“基本”按钮,对个人基本信息进行修改。修改完成后点击“其他”按钮,对学业等基本信息进行修改。每完成一篇信息的修改都需要点击一次“
”按钮。同样,点击“学业/
”按钮。
提交培养计划
登录以后,点击“培养管理—培养计划信息管理”,显示出培养计划提交页面。如图3所示。
图3 此页面显示即为本专业培养方案信息,学生可在此制定自己的培养计划。选择框显示为灰色的课程是学生必选课程,选择框为亮色的课程是学生可选课程,学生可在要选的课程前面的方框内打“√”来选中课程。若是要选择培养方案外的课程,则可点击“
”按钮,在弹出的的对话窗口(如图4)中点击课程后对应的“
”按钮来选择方案外课程。
图4 选择完全部课程后,点击图3中右上方的“
”按钮即可完成培养计划的提交。
以上内容为本次系统开放主要工作,同学们要熟悉掌握操作方法。下面介绍的内容,同学们可先大致的了解。培养管理
1.学期注册信息管理
点击“培养—培养管理—学期注册信息管理”,弹出如图5所示页面。
图5 在图5空格中填写个人基本信息后,选择“注册学期”和“注册类型”,然后点击“
”即可。
2.培养计划信息查询
点击“培养—培养管理—培养计划信息查询”,弹出如图6所示页面。
图6 点击“打印”可打印自己的培养计划;点击“导出”可导出自己的培养计划。注:只有培养计划审核通过后,此处才会显示培养计划的内容!
课务管理
开课目录信息查询
点击“培养—课务管理—开课目录信息查询”显示如图7所示页面。
图7 在查询栏内输入查询条件,点击“查询”,查找到符合查询条件的开课课程信息。点击“课程编号”可查看课程基本信息。点击“班级名称”可查看该班级上课时间、上课地点等基本信息。课程网上选课管理
点击“培养—课务管理—课程网上选课管理”显示如图8所示页面。
图8 点击“”按钮,可以进行网上选课操作。如图9所示
图9 点击图9中课程班级后的“”按钮,即可选中该课程。选课结果信息查询
点击“培养—课务管理—选课结果信息查询”显示如图10所示页面。
图10 此处可显示审核后的选课结果,点击“打印”按钮可打印查询到的选课结果。
学期课表信息查询
点击“培养—课务管理—学期课表信息查询”显示如图11所示页面。
图11 在左上角选择相应的学期,即可查询到该学期的课表信息,点击“打印”可打印该学期课表。
本周学期课表查询
同“学期课表信息查询”。课程成绩信息查询
点击“培养—课务管理—课程成绩信息查询”显示如图12所示页面。
图12 学生登录系统后必须先进行个人基本信息的核对和完善,否则不能查看课程成绩。调停补课信息查询
点击“培养—课务管理—调停补课信息查询”显示如图13所示页面。
图13 选择学期和查询类别后,即可查看到相应的调停补课信息。
学期考试信息查询
点击“培养—课务管理—学期考试信息查询”显示如图14所示页面。
图14 选择学期,可查看选择学期的学期考试信息。课程重修申请管理
点击“培养—课务管理—课程重修申请管理”显示如图15所示页面。
图15 点击“”按钮,系统会弹出学生所有已修课程及其成绩信息。如图16所示。
图16 点击未及格课程后对应的“”即可提交该课程的重修申请。
考级管理
入学CET成绩录入
点击“培养—考级管理—入学CET成绩录入”显示如图17所示页面。
图17 在图17中输入入学前CET考试成绩,输入完成后点击“
CET外语成绩查看
点击“培养—考级管理—CET外语成绩查看”显示如图18所示页面。
”即可。
图18 在此处可查看自己的每一次CET外语考试成绩。
计算机考级报名
点击“培养—考级管理—计算机考级报名”显示如图19所示页面。
图19 在图19中填写报名信息后,点击“
计算机等级成绩
点击“培养—考级管理—计算机等级成绩”显示如图20所示页面。
”按钮即可完成报名。在此处可查看每一次的计算机等级考试成绩。
外国语考级报名
同“计算机考级报名”
外国语考级成绩
同“计算机考级成绩”
普通话考级报名
同“计算机考级报名”
图 普通话考级成绩
同“计算机考级成绩”
学位管理
学位论文
论文开题报告管理
点击“学位—学位论文—论文开题报告管理”显示如图21所示页面。
图21 点击“ ”按钮,弹出如图22所示对话框。
图22 填写完成图22中的内容后,点击“
”按钮即可。提交成功后,显示如图23所示页面。
23中的“”按钮,显示如图图23
24所示页面。点击图
图24 点击上方“基本信息”、“立题依据”、“研究内容”等菜单,分别将其中信息填写完成后,点击“
”按钮。点击“浏览”找到开题报告电子文档,点击“上传文档”可将电子版的开题报告文档上传。后面上传评审论文和答辩论文方式也是如此。点击“
论文中期报告管理
同“论文开题报告管理”
论文预备答辩管理
同“论文开题报告管理”
学位论文评审管理
同“论文开题报告管理”
学位论文答辩管理
同“论文开题报告管理”
”可导出word版的开题报告申请书。存档论文文档上传
略
论文成果
发表论文信息登记
点击“学位—论文成果—发表论文信息登记”显示如图25所示页面。
图25 点击“”按钮,弹出如图26所示页面。在图26中输入发表文章的基本信息后,点击“
科研成果信息登记
同“发表论文信息登记”
”即可。
其他
其他管理
登录密码信息修改
点击“其他—其他管理—登录密码信息修改”显示如图27所示页面。
图27 在图27中,可以对学生的登录名称和登录密码,修改完成后点击“
照片信息核对管理
点击“其他—其他管理—照片信息核对管理”显示如图28所示页面
”即可。
图28 点击“上传照片”可以上传自己的学籍照片。
培养方案信息查看
点击“其他—其他管理—培养方案信息查看”显示如图29所示页面
图29 在查询栏内输入查询条件,点击“查询”查找到符合查询条件的培养方案信息。点击“校内专业名称”下对应的专业名称,即可查看该专业的培养方案信息。
奖学金信息查看
可查看奖学金发放情况。(略)
教室借用申请管理
点击“其他—其他管理—教室借用申请管理”显示如图30所示页面
图30 点击“ ”按钮,在弹出的对话框中填写教室借用申请信息后点击“保存”即可。
互动信息
通知公告信息查询
点击“其他—互动信息—通知公告信息查询”显示如图31所示页面
图31 在查询栏输入查询起始时间,点击“查询”即可查询到该段时间内发布的通知公告信息,点击通知公告标题即可查看改通知公告的内容。
师生消息互动管理
点击“其他—互动信息—师生消息互动管理”显示如图32所示页面
图32 点击“收件箱”可查看收到的信息;点击“发件箱”可发送消息;点击“回复箱”可查看回复别人或别人回复的消息。
在发件箱内点击“
”弹出如图33所示页面
图33 首先编写信息标题和信息内容,点击“
”按钮。选择接收人员是个人时,点击“
”按钮选择信息接收人。选择接收人员是院系和专业时,首先选择接收消息的院系或专业,然后选择接收范围“学生”、“教师”或“全部”。如图34所示。
图34 选择完成后可选择立即发送,也可选择存入发件箱待确认信息无误后再发送。教学评价信息管理
略
问卷调查信息管理
点击“其他—互动信息—问卷调查信息管理”显示如图35所示页面
图35 若是调查状态为“正在进行”,则点击“”可进行问卷调查答题。若调查状态为“调查完毕”,点击“以查看问卷调查答题信息。
教学校历信息查看
可以查看某学期的教学校历信息。(略)
”可