学籍管理系统数据库课程设计.docx
- 文档编号:7429402
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:14
- 大小:290.03KB
学籍管理系统数据库课程设计.docx
《学籍管理系统数据库课程设计.docx》由会员分享,可在线阅读,更多相关《学籍管理系统数据库课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
学籍管理系统数据库课程设计
1绪论
1.1引言
当今社会计算机发展越来越快,在社会中扮演的角色也越来越重要。
它不仅促进了经济的发展,也推动了教育、医疗、卫生、科技的发展。
其中,计算机软件的所发挥的作用不可忽视。
而对于一个有着数以千计甚至数以万计学生的学校来说,怎样对这么多的学生实施管理则是一个事关学校发展的重大问题。
利用计算机及软件技术则可以方便的对学生实施管理,不禁效率得以提高,而且还方便了广大师生。
1.2设计目的
随着教育的发展,对庞大的学生数量进行管理是一个棘手的问题。
计算机管理具有检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等优点。
为了满足学校的需要,我们的目标一个能满足少数书生管理的学籍管理系统。
1.3设计内容
本系统设计的内容包括,对全部学生信息的查询、对单个学生信息的查询、按专业班级查询、按年级查询及对学生信息的删除、修改、添加等。
另外,还要对管理员的信息进行查询和修改。
1.4技术简述
Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。
在早期,Java比较多的用在浏览器上,插入到网页中(即是JavaApplet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着JavaServlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(JavaServerPage)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择。
2项目可行性分析报告
2.1引言
(1)明确学校方面的要求,到学校进行实际调查,例如和领导谈话、开座谈会等,根据调查结果进行可行性分析,确认系统的开发是否可行。
(2)学校方面虽然有需求,但对于学籍管理系统的功能和处理数据的方法没有明确的认识。
他们只是根据自己工作的需要提出了要求,我们则要对此进行详细的调查和分析,确认用户的要求可以通过现有的计算机技术实现,保证开发的学籍管理系统的功能与用户提出的要求相吻合。
(3)要对企业原来的系统详细地调查信息处理的具体情况,系统内部功能结构,找到老系统的不足及新的需求,以便设计出一个合理的模型,为新系统的设计工作打好基础。
2.2可行性分析的研究
(1)目标可行性分析
通过学籍管理系统管理学生信息符合当今教育事业发展的状况。
(2)法律可行性分析
本系统完全符合国家和地区相关的法律法规,不存在合同责任、侵犯专利权、侵犯版权等方面的法律问题。
(3)技术可行性分析
在目前的技术方面,开发此系统是完全没有问题的;在开发人员的能力方面,开发人员具有开发此系统的能力;在硬件方面,计算机设备及其有关的外部设备,像计算机的主机内存、类型、功能等都能满足用户的需求;在软件方面,编译系统的选择、数据库管理系统的选择、高级编程语言的选择也都能满足用户的需求。
(4)经济可行性分析
开发此系统投入小,可靠性高,在长远的考虑上是可行的。
(5)管理可行性分析
此系统操作简单易学,学校相关方面的工作人员完全能胜任此工作。
3项目需求分析报告
3.1开发环境
(1)系统的开发语言
在选择开发语言方面,本系统选择了面向对象的java语言,开发较为简便,又因为java的平台无关性,使得即使在其他操作系统上也能运行。
(2)系统的数据库
在选择数据库时,选择了mysql,因为mysql使用简单,可以迅速掌握,而且mysql数据库的ODBC驱动程序支持的SQL指令全。
另外,如需改变数据库,也只需改变连接数据库的那部分代码,系统采用的是标准SQL语言无需改动。
3.2系统总体设计
本系统一共包括两大模块:
一是学籍管理模块,在此模块可实现对学生信息的按条件查询,以及修改、添加、删除等;另一模块是管理员模块,在此模块可实现对管理员信息的查询和对密码的修改。
系统总体功能结构如图3-1所示:
图3-1系统总体功能结构图
3.3E-R图
通过对学籍管理系统的分析,我们总结出了两个个实体:
学生实体和管理员实体。
每个实体都有自己相应的属性。
下面我们就画出这些实体所对应的E-R图。
学生实体对应的E-R图如图3-2所示:
图3-2学生实体E-R图
管理员实体对应的E-R图如图3-3所示:
图3-3管理员实体E-R图
3.4数据表的设计
本系统所用mysql中总共有两张表,分别是学生信息表和管理员信息表,下面是两表的具体设计。
学生表如表3-1所示:
表3-1学生表
名称
类型
长度
允许空
id
int
10
主键(NotNull)
name
varchar
255
NotNull
sex
varchar
255
NotNull
birthday
date
0
NotNull
majorclass
varchar
255
NotNull
schoolyear
date
0
NotNull
管理员表如表3-2所示:
表3-2管理员表
名称
类型
长度
允许空
id
int
10
主键(NotNull)
code
int
10
NotNull
4项目设计报告
4.1模块功能设计
4.1.1验证用户身份模块
验证用户身份功能模块用于对登陆系统的用户进行身份验证,确定用户是否拥有使用该系统的资格。
因此,任何用户登陆系统都调用此模块。
4.1.2系统总控制模块
系统总控制模块是系统运行时的主控制程序,通过系统的主菜单集中各子功能模块,用户在该模块中通过选择菜单进入到相应的子模块。
4.1.3学籍管理模块
此模块是供系统使用人员对学生信息进行检索与查询并且进行修改、添加、删除的模块。
通过调用该模块,能够按照不同的条件组合进行学生信息的查询。
4.1.4管理员信息管理模块
通过此模块,管理员可以对账号信息进行查询和对登录密码进行修改。
4.2数据流程图
此系统总体数据流程如图4-1所示:
图4-1总体数据流程图
5界面设计及代码实现
5.1系统主界面
首先输入账号,验证成功进入主界面,通过主界面上的学籍管理菜单和账号管理菜单可以进入不同的功能模块,进而执行查询等相关操作。
系统主界面如图5-1:
图5-1系统主界面
此界面的代码实现如下:
packagefrontend;
importbackend.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.File;
publicclassMainFrameextendsFrameimplementsActionListener{//主界面:
管理界面
MenuBarmenubar;
MenuSchoMenu,AccouMenu,query;
MenuItemaddItem,updateItem,deleteItem,queAccou,updaAccou,queryAll,queryInfo,queryMajor,queryGrade,ExitItem;
publicMainFrame(Stringtitle){
super(title);
//下面的这三句代码和往下面的this.add(lab);是为了添加背景图片
StringpicPath="d:
"+File.separator+"java.jpg";//背景图片路径
ImageIconicon=newImageIcon(picPath);//背景图片
JLabellab=newJLabel(icon);//把背景图片显示在一个标签里面
menubar=newMenuBar();
SchoMenu=newMenu("学籍管理");AccouMenu=newMenu("账号管理");
menubar.add(SchoMenu);menubar.add(AccouMenu);
query=newMenu("查询");
updateItem=newMenuItem("修改",newMenuShortcut('1'));//设置菜单快捷键
addItem=newMenuItem("添加");
deleteItem=newMenuItem("删除");
ExitItem=newMenuItem("退出");
SchoMenu.add(query);//设置二级菜单
SchoMenu.add(updateItem);SchoMenu.add(addItem);
SchoMenu.add(deleteItem);
SchoMenu.addSeparator();//插入分割线
SchoMenu.add(ExitItem);
queAccou=newMenuItem("查询管理员信息");updaAccou=newMenuItem("修改管理员密码");
AccouMenu.add(queAccou);AccouMenu.add(updaAccou);
queryAll=newMenuItem("查询全部学生信息");
queryInfo=newMenuItem("查询个人信息");
queryMajor=newMenuItem("按专业查询");
queryGrade=newMenuItem("按年级查询");
query.add(queryAll);query.add(queryInfo);query.add(queryMajor);query.add(queryGrade);
this.setMenuBar(menubar);
this.add(lab);//添加背景图片
this.setBounds(450,150,555,460);//设置窗口在电脑屏幕中的位置
this.setVisible(true);//设置窗口可见
this.setResizable(false);//设置窗口大小不可调整
queryAll.addActionListener(this);queryInfo.addActionListener(this);queryMajor.addActionListener(this);
queryGrade.addActionListener(this);updateItem.addActionListener(this);addItem.addActionListener(this);
deleteItem.addActionListener(this);queAccou.addActionListener(this);updaAccou.addActionListener(this);
ExitItem.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
queryHandleqh=newqueryHandle();
if(e.getSource()==queryAll){//跳出查询学生信息显示的窗口,即ListFrame窗口
ListFramelf=newListFrame("查询结果显示如下");
for(inti=0;i lf.list.add(qh.queryAllInfo()[i]);//qh.queryAllInfo()返回的是个字符串数组,故可这样写 } elseif(e.getSource()==queryInfo){ newqueNoFrame("查询结果显示如下"); } elseif(e.getSource()==queryMajor){ newqueMajClaFrame("查询结果显示如下"); } elseif(e.getSource()==queryGrade){ newqueGradeFrame("查询结果显示如下"); } elseif(e.getSource()==updateItem){ newupdateFrame("修改窗口"); } elseif(e.getSource()==addItem){ newaddFrame("添加窗口"); } elseif(e.getSource()==deleteItem){ newdeleteFrame("删除窗口"); } elseif(e.getSource()==queAccou){ newqueAdminFrame("查询管理员信息窗口"); } elseif(e.getSource()==updaAccou){ newupdaAdminFrame("修改登录密码窗口"); }elseif(e.getSource()==ExitItem){ this.dispose(); } } /*publicstaticvoidmain(String[]args){ newMainFrame("管理界面"); }*/ } 5.2管理员密码修改界面 管理员若要修改登录密码,只需在此界面填入自己的登录账号和两次新密码即可。 管理员密码修改界面如图5-2: 图5-2管理员密码修改界面 此界面的代码实现如下: packagefrontend; importbackend.*; importjava.awt.*; importjava.awt.event.*; publicclassupdaAdminFrameextendsFrameimplementsActionListener{//修改管理员密码的窗口 LabellbAccou,lbNewCode1,lbNewCode2; TextFieldtxtAccou,txtNewCode1,txtNewCode2; ButtonbtnOK,btnBack; publicupdaAdminFrame(Stringtitle){ //TODOAuto-generatedconstructorstub super(title); lbAccou=newLabel("账号: ");lbNewCode1=newLabel("请输入新密码: "); lbNewCode2=newLabel("请再一次输入新密码: "); txtAccou=newTextField(10);txtNewCode1=newTextField(10); txtNewCode2=newTextField(10); btnOK=newButton("确定");btnBack=newButton("返回"); lbAccou.setBounds(80,55,90,40);lbNewCode1.setBounds(80,115,90,40); lbNewCode2.setBounds(80,175,120,40); txtAccou.setBounds(220,65,120,25);txtNewCode1.setBounds(220,125,120,25); txtNewCode2.setBounds(220,185,120,25); txtNewCode1.setEchoChar('*');txtNewCode2.setEchoChar('*');//密码设置为不明文显示 btnOK.setBounds(80,250,90,35);btnBack.setBounds(240,250,90,35); btnOK.addActionListener(this);btnBack.addActionListener(this); this.setLayout(null); this.add(lbAccou);this.add(txtAccou); this.add(lbNewCode1);this.add(txtNewCode1); this.add(lbNewCode2);this.add(txtNewCode2); this.add(btnOK);this.add(btnBack); this.setVisible(true); this.setBounds(550,100,410,320); this.setResizable(false); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==btnOK){ Stringa=txtAccou.getText(); Stringb=txtNewCode1.getText(); Stringc=txtNewCode2.getText(); if(! a.equals("")&&! b.equals("")&&! c.equals("")){ if(b.equals(c)){ updateAdminHandleuah=newupdateAdminHandle(); uah.updateAdminInfo(a,b); WarningFramewf=newWarningFrame(); wf.setLabel("修改成功! "); } else{ WarningFramewf=newWarningFrame(); wf.setLabel("新密码不一样! "); } } else{ WarningFramewf=newWarningFrame(); wf.setLabel("请把所有信息填完整! "); } } elsethis.dispose(); } } 6总结 在设计此系统的时候由于已有一段时间没有动java了,故刚开始时有些生疏。 但由于上学期也做过类似的课程设计,也就很快掌握了一些基本的类和方法。 在调整图形界面的时候,我发现很多东西都是java类库里本来就有的,你只要拿来用就行了,这样做系统就会轻松得多。 所以要想熟练运用java这门语言,掌握尽可能多强大的类库是必须的。 另外,我还发现在实现代码之前一定要做好需求分析,像E-R图,数据表等都要设计好。 否则实现代码时一旦出现问题,就会为了用户的需求改来改去,非常麻烦费时。 总之,在实现系统期间遇到了非常多的问题,例如连接数据库出错、数据库的表中主键值不能相等、往数据库的表中添加汉字时出现问号而不是汉字等,经过自己的反复思考、检查以及上网查询资料,问题基本上都得以解决。 通过这次课程设计,发现自己所知道的只是java的冰山一角,希望自己以后能更多的了解和学习java。 7参考文献 [1]史斌星.java基础及应用教程[M].北京: 清华大学出版社.2007 [2]王珊,萨日煊.数据库系统概论(第四版)[M].北京: 高等教育出版社.2008 [3]吴倩.java语言程序设计[M].北京: 机械工业出版社.2007 [4]柳西玲.java语言程序设计基础[M].北京: 清华大学出版社.2005 [5]刘宝林.java程序设计与案例[M].北京: 高等教育出版社.2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学籍 管理 系统 数据库 课程设计