




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 号: 0540410213课 程 设 计题 目学生学籍管理系统教 学 院计算机学院专 业计算机科学与技术班 级05本(2)姓 名李姗指导教师高超 高芹2008年7月1日目 录1 系统分析11.1 需求分析12 系统设计22.1 系统功能分析22.2 系统流程图33 数据库设计43.1 数据库需求分析43.2 数据库概念结构设计44 详细设计84.1 主窗体的创建84.2 创建公用模块94.3用户管理模块的创建104.4 学生功能模块的创建134.5 教师功能模块的创建155总 结22参考文献23黄石理工学院软件综合课程设计1 系统分析1.1 需求分析伴随社会的高速发展,全国各高校的学生数量一直在增加,在这样的形式下,必须要求学校有一种高效有序的方法来管理学生的信息。通过调查,要求系统需要有以下功能:(1)由于该系统一次性输入的数据量可能很大,所以要求支持从excel导入数据;(2)由于该系统的使用对象多,要求有较好的权限管理; (3)原始数据修改简单方便,支持多条件修改;(4)方便的数据查询,支持多条件查询;(5)在相应的权限下,删除数据方便简单,数据稳定性好;1.2 可行性分析由于本系统管理的对象单一,都是学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。本系统的设计是在windows xp操作系统环境下,使用visual studio.net 2003中文版开发成功的。visual studio具有以下特点:1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征。4、面向对象设计的核心是类的设计。例如:可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。2 系统设计2.1 系统功能分析 系统开发的总体任务是实现学生信息关系的系统化,规范化和自动化。在本系统中有二种权限:一种是用户权限,即学生。另一种是管理员权限,即教师。学生管理系统需要完成的功能主要有:学生可以完成的功能有 : 学生信息的查询,包括查询学生的基本信息、学生成绩等。 学生信息的修改,学生只能修改他本人的密码。教师可以完成的功能有 : 班级管理信息的输入、查询、修改,包括输入班级设置,年级信息等。 基本课程信息的输入、查询、修改。 学生成绩信息的输入、查询、修改。对上述各功能进行集中、分块、按照结构化程序设计的要求。学籍修改密码修改功能成绩管理功能学籍删除学籍查询成绩查询成绩添加成绩修改成绩删除用户添加用户删除学生信息管理系统学籍管理功能学籍添加用户管理功能修改密码用户删除图2-1 系统功能模块图2.2 系统流程图图2-2 系统流程图3 数据库设计3.1 数据库需求分析 用户信息:包括的数据项有:用户号、姓名、密码、身份。 学生信息:包括的数据项有:学生学号、学生姓名、性别、出生日期、班级名称、 入学年份、学籍编号、政治面貌编号、身份证号、民族编号、家庭地址、照片、照片名称等。 学籍代码表:包括的数据项有:学籍编号、学籍等。 成绩表:包括的数据项有:编号、学号、课程编号、成绩、考试性质编号等。 政治面貌代码表:包括的数据项有:政治面貌编号、政治面貌等。 民族代码表:包括的数据项有:民族编号、民族等。 考试性质表:包括的数据项有:考试性质编号、考试性质等 课程信息:包括的数据项有:课程编号、课程名称、教师、学分、学时等学生学籍管理系统用户信息学生信息课程信息成绩信息 数据库图3-1 学生学籍管理系统数据流程图3.2 数据库概念结构设计3.2.1 系统e-r图 本系统的实体有:学生实体、用户实体、年级实体、课程实体。各个实体具体的描述e-r图如图下所示。 学生基本信息班级成绩课程图3-2 学生实体er图 用户学生教师图3-3 用户实体er图 课程课程名称学时教师学分 图3-4 课程实体er图现在需要将上面的数据库概念结构转化为sql server 2000 数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。3.2.2 相关数据学生管理系统数据库中各个表格的设计结果如下面的几个表所示。每个表表示在数据库中的一个数据表图3-5 学生信息表图3-6 学籍代码表图3-7 成绩表 图3-8 政治面貌代码表图3-9 民族代码表图3-10 用户信息表图3-11 考试性质表图3-12 课程信息表4 详细设计4.1 主窗体的创建上面的sql语句在sql server 2000中查询分析器执行后,将自动产生需要的所有表。有关数据库结构的所有后台工作已经完成。现在将通过学生管理系统中各个功能模块的实现,来编写数据库系统的客户端程序。4.1.1 创建空白解决方案为了在visual studio.net 2003中创建应用程序,应当先创建一个空白解决方案,它包括: 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。(.sln)。 记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。(.suo)。 启动这个空白解决方案后,单击 文件|新建|项目 菜单,在新建项目中选择visual c#项目 ,在模块中选择windows 应用程序 ,并命名为mainfrm。4.1.2 创建主窗体visual studio.net 2003创建的应用程序可以是sdi(单文档界面)和mdi(多文档界面)。在sdi的程序中,每个窗体之间是独立的。而mdi的程序中,有一个窗体是主窗体,可以包含其他窗体,它的类型是mdi form。本系统采用多文档界面,这样可以使程序更加美观,整齐有序。单击工具栏的“mainmenu”控件,生成一个如下所示的窗体:图4-14.2 创建公用模块在vs.net中可以使用类库模板快速创建能够与其他项目共享的可再次使用的类和组件。整个工程项目中的任何地方都可以调用公用类库的类和组件,这样可以极大地提高代码的效率。在项目资源管理器中为项目添加一个类,保存为xjdatabase.cs。下面就可以开始添加需要的代码。public class xjdatabaseprivate string strsql;private string connectionstring = workstation id=localhost;packet size=4096;integrated security=sspi;persist security info=false;initial catalog=xueji;private sqlconnection myconnection;private sqlcommandbuilder sqlcmdbld;private dataset ds = new dataset ();private sqldataadapter da;public dataset selectdatabase(string tempstrsql,string temptablename)this.strsql = tempstrsql;this.myconnection = new sqlconnection (connectionstring);this.da = new sqldataadapter (this.strsql ,this.myconnection );this.ds .clear ();this.da .fill (ds,temptablename);return ds; 4.3用户管理模块的创建系统管理模块主要实现: 用户登录。 添加用户。 修改用户密码。4.3.1 用户登陆窗体的创建系统启动后,将首先出现如下所示的用户登陆窗体,用户首先输入用户名,然后输入密码。图4-2用户登陆窗体中放置了两个文本框(textbox),用来输入用户名和用户密码。两个按钮(button)用来确定或者取消登陆。2个标签(label)用来标示窗体的信息。为窗体定义全局变量ok,用来判断登陆是否成功,代码如下:public static bool blcanlogin = false;private dataset ds= new dataset ();private datatable mytable;private datarow myrow;private string sendstrsql=select * from 用户信息 ;xjdatabase xj = new xjdatabase ();string sendtablename = 用户信息;this.ds = xj.selectdatabase (sendstrsql,sendtablename);this.mytable = ds.tables 0;private void button1_click(object sender, system.eventargs e)for (int i=0;imytable.rows .count ;i+)this.myrow = mytable.rows i;if (myrow0.tostring ().trim ()=this.textbox1 .text .tostring ().trim ()&myrow2.tostring ().trim ()=this.textbox2.text .tostring ().trim ()blcanlogin = true;struser = myrow0.tostring ().trim ();strpwd=myrow2.tostring ().trim ();strdignity = myrow3.tostring ().trim ();strname = myrow1.tostring ().trim ();this.close ();return;messagebox.show (用户名或密码输入错误!,提示!);return;4.3.2 修改用户密码窗体的创建用户可以修改自己的密码,选择菜单“修改密码”,出现如下所示的窗体:图4-3在这两个窗体中放置了四个文本框,用来输入用户名、原密码、新密码和确认密码。两了按钮用来确定是否修改密码。四个标签用来标示文本框的内容,单击“确认”按钮,将触发click事件判断是否修改密码成功,代码如下:private void button1_click(object sender, system.eventargs e)bool cansubmit;cansubmit=this.checknotnull ();if(cansubmit=false)return;for (int i=0;imytable.rows .count ;i+)this.myrow = mytable.rows i;if (myrow0.tostring().trim()=this.textbox1.text.tostring().trim()&myrow2.tostring().trim()=this.textbox2.text.tostring().trim()string struser = textbox1.text.tostring (); string connstring=workstation id=localhost;integrated security=sspi;database=xueji; sqlconnection conn = new sqlconnection(connstring); conn.open(); sqlcommand cmd = new sqlcommand(); cmd.commandtype =system.data .commandtype .text ;cmd.commandtext =update 用户信息 set 密码=+this.textbox3 .text+ where 学号=+struser+;cmd.connection = conn; trycmd.executenonquery ();conn.close();catch(exception er)messagebox.show (er.tostring ();return;messagebox.show (密码修改成功,提示);return; messagebox.show (用户名 或原密码输入错误!,提示,messageboxbuttons.ok ,messageboxicon.stop );checknotnull是一系列触发检验,只是查检查全部通过才能执行修改密码的代码,否则会报错。在此就不将代码一一列出。4.4 学生功能模块的创建以上是学生和教师都可以实现的功能.以下是学生的功能。学生功能模块主要实现如下功能: 查询学籍信息 查询成绩信息4.4.1 查询学籍信息学生在成功登录系统后,即可查询自己的相关信息,在主窗体中点击学生信息查询菜单下的学籍查询,即出现如下所示的窗体:图4-4使用sqldataadapter添加数据集并生成dataset,然后将数据绑定到各个textbox,显示查询本人的照片是本系统的一大特色,实现此功能的代码如下:string sql=select 照片名称,照片 from 学生信息 +where( 学号 = +loginfrm.struser +) ; sqlcommand command = new sqlcommand(sql, this.sqlconnection1 ); try this.sqlconnection1 .open (); catch(exception newerr) messagebox.show(newerr.tostring ()+ 不能打开数据联接!) ; finally sqldatareader dr = command.executereader (); if(dr.read() fileinfo fi = new fileinfo(temp); filestream mystream=fi.open(filemode.create); byte mydata=(byte)dr照片); foreach(byte a in mydata) mystream.writebyte(a); mystream.close(); image myimage=image.fromfile(temp) ; this.picturebox1 .image=myimage; this.picturebox1 .refresh(); dr.close (); else messagebox.show(没有成功读入数据!,提示) ; 4.4.2查询成绩信息除此之外学生还可以查询自己的学习成绩信息, 选择菜单“成绩查询”就可以查询到自己的学习成绩,出现如下所示的窗体。图4-5在窗体中添加一个mainmenu,和学籍查询相似将dataset中的数据绑定到mainmenu中即可,代码和学籍查询相似在此不再重复。此外学生还可打印自己的成绩单,点击打印按钮,将出现如下窗体。图4-6实现此功能,先建一个crystalreport.rpt,在数据库字段中将前面生成的dataset中的成绩表绑定上去,然后往报表中拖入要打印的项目即可,然后再建一个windows窗体crystalreport.cs,从工具箱中拖入crystalreportviewer,调整crystalreportviewer的大小,并输入和成绩查询相似的代码即可。4.5 教师功能模块的创建以上是学生实现的功能.以下是教师的功能。教师功能模块主要实现如下功能: 添加/删除/修改学籍信息 添加/删除/修改成绩信息 添加/删除用户信息教师在成功登录系统后,点击学籍录入菜单,出现如下所示窗体:图4-7在窗体上放置多个文本框和下拉式文本框,将它们绑定到dataset中用来输入学籍信息。两个按钮用来确定是否添加学籍信息。单击“添加图片”按钮,出现打开文件对话框,选择图片即可,点击提交即可保存到数据库中。具体代码如下:实现图片加载的代码:if (this.openfiledialog1.showdialog()=system.windows.forms.dialogresult.ok&this.openfiledialog1 .filename !=)pathname = this.openfiledialog1.filename;system.drawing.image img = system.drawing.image.fromfile(pathname);this.picturebox1.image = img; this.textbox8 .text =pathname.substring(pathname.lastindexof()+1);system.io.filestream fs = new system.io.filestream(pathname,system.io.filemode.open,system.io.fileaccess.read); byte buffbyte = new bytefs.length; fs.read(buffbyte,0,(int)fs.length); fs.close(); fs = null;点击学籍修改菜单,出现如下所示窗体:图4-8在学籍修改窗体中,可以实现模糊查询,代码如下:da1.selectcommand .parameters 0.value =%;da1.selectcommand .parameters 1.value =%;da1.selectcommand .parameters 2.value =%;if(this.textbox1 .text .trim () !=)da1.selectcommand .parameters 0.value =%+this.textbox1 .text .trim ()+%;if(this.textbox2.text .trim () !=)da1.selectcommand .parameters 1.value =%+this.textbox2 .text .trim ()+%;if(this.textbox3 .text .trim () !=)da1.selectcommand .parameters 2.value =%+this.textbox3 .text .trim ()+%;教师还可以点击成绩录入菜单,即可出现如下窗体:图4-9成绩添加是以班级为单位,输入班级名称后,datagrid中显示全班学生姓名、学号和成绩,其中成绩都为null,教师可在其中输入学生成绩,在文本框中输入对应的名称即可。在本系统中还可从excel中导入,从excel导入的代码如下:if(this.openfiledialog1.showdialog()=system.windows.forms.dialogresult.ok&this.openfiledialog1 .filename !=)string filename = openfiledialog1.filename;string strcon = provider = microsoft.jet.oledb.4.0 ; + data source = + filename + ;extended properties=excel 8.0; oledbconnection myconn = new oledbconnection(strcon); myconn.open(); string strcom = select * from sheet1$ ; oledbdataadapter mycommand = new oledbdataadapter(strcom, myconn); dataset dataset1 = new dataset(); mycommand.fill(dataset1, sheet1$); myconn.close(); this.datagrid1.setdatabinding (dataset1,sheet1$);从datagrid中将成绩存入sql数据库的代码如下:for(int i=0;i datagrid1.visiblerowcount - 1 ;i+)sqlconnection1.open();string comm2=insert into 成绩表 (学号,成绩,课程编号,考试性质编号) values(学号,成绩,课程编号,考试性质编号) ; this.sqlcommand2 .commandtext =comm2; this.sqlcommand2 .parameters .add (学号,system.data .sqldbtype .varchar );this.sqlcommand2 .parameters 0.value =this.datagrid1 i,1.tostring ();this.sqlcommand2 .parameters .add (成绩,system.data .sqldbtype .int );this.sqlcommand2 .parameters 1.value =this.datagrid1 i,2.tostring ();this.sqlcommand2 .executenonquery ();this.sqlcommand2.parameters.clear();this.sqlcommand2.dispose();sqlconnection1.close();教师还可以点击修改成绩菜单,即可出现如下窗体:图4-10修改成绩的实现方法和修改学籍基本相同,在此不再重复。教师还可以点击添加/删除用户菜单,即可出现如下窗体:图4-11在本窗体文本框中输入用户信息,点击添加用户按钮即可将用户添加到sql数据库中,其中用户的初始密码和用户名相同。也可根据输入的用户信息删除此用户。删除的代码如下所示:for (int i=0;imytable.rows .count ;i+)this.myrow = mytable.rows i;if (myrow0.tostring ().trim ()=this.textbox1 .text .tostring ().trim ()&myrow1.tostring ().trim ()=this.textbox2.text .tostring ().trim ()&myrow3.tostring ().trim ()=this.textbox2 .text .tostring ().trim ()string comm = delete from 用户信息 where 学号=+this.textbox1 .text +;this.sqlcommand1 = new system.data.sqlclient.sqlcommand ();this.sqlcommand1.commandtype = system.data.commandtype.text ;this.sqlcommand1.commandtext = comm;this.sqlcommand1.connection = this.sqlconnection1 ;this.sqlconnection1.open ();trythis.sqlcommand1 .executenonquery ();messagebox.show (用户删除成功,提示);return;catch(exception e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030花卉项目可行性研究咨询报告
- 商业市场可行性方案研究报告
- 提升职业教育学校办学能力的路径与实践
- 高考数学培优微专题《知三解三角形》学生版
- 重要临床试验结果解读试题及答案
- 高考培优微专题《双变量同等同构》解析版
- 西医临床知识点测试题目试题及答案
- 2024年宜昌市中心人民医院招录专业技术人员笔试真题
- 铁道机车车辆试题及答案
- 聚酯树脂行业发展动态与市场前景深度解析
- 2024年考研(英语一)真题及参考答案
- 《名片设计教程》课件
- 医院培训课件:《医患沟通技巧》
- 绿色节能液冷数据中心白皮书 2023
- 手机支架供货合同模板
- 金价走势分析
- 人教版物理中考复习专题突破一作图专题练习含答案
- 2024年高考化学真题完全解读(全国甲卷)
- 客服人员仪容仪表培训
- 华师大版七年级数学上册知识点
- 2024能源互联网智慧电力云服务平台建设规范及标准
评论
0/150
提交评论