武汉轻工大学《高级编程技术》大作业学院:数学与计算机学院班级:软件工程 1301姓名:刘辉学号: 1305110059指导教师:黄亮2016.06.13简单教务管理系统的设计一、实验目的设计一个简单的教务管理系统,能实现对学生信息、课程信息、学生成绩等方面进行查询、修改、添加等操作。
二、系统设计1、环境操作系统:Windows 7 Ultimate with SP1 (64-bit)数据库:Microsoft Access工具:Visual Studio 2015在这个程序中我使用的是Access数据库,先利用Access数据库管理软件新建一个数据库,在数据库中建立学生、课程和选课三个表,然后在VS2015中利用添加数据源的方法连接Access数据库。
数据表在DataGridView里显示。
2、数据库的准备工作为了使本程序的使用更加方便快捷,也让测试更加容易,我打算让程序自己创建数据库文件并建立相关表,同时添加相应的字段。
代码截图如下:这里先检测程序所在路径下是否已经存在“test.mdb”这个数据库文件,如果存在,就不做任何操作;如果不存在,就创建这个文件,然后建立数据表和字段。
建立的相关数据表和字段内容如下:3、数据的查询和显示实现表的增删改查操作的实现比较简单。
查看操作是用数据库的SELECT语句,把查询到的表通过Adapter传给DataSet,然后再绑定到DataGridView中。
删除、插入和更新操作,则是用SQL语句中的Insert、Delete、Update语句来实现。
用cmd储存语句后,用OleDbCommand来执行语句。
并对输入的数据都进行相应的错误输入提示将数据库的查询功能和数据表的绑定显示封装成一个函数,方便使用的时候直接调用。
代码截图如下:4、ComboBox的联动在选择学院、专业、班级的时候,需要用到ComboBox的联动,即选择相应的学院出来相应的专业,选择相应的专业出来相应的班级。
要实现这个功能,可以考虑数据库先将相关数据存成表,之后通过查询来动态添加数据到ComboBox里面。
当然,数据比较少时,用数组也可以满足要求。
如下:这里将联动的方法封装起来,方便其他地方调用。
思想是:先清空ComboBox里面的内容,再根据第一个ComboBox选择项的索引值来确定第二个ComboBox的内容项,确定方法是通过使用上面定义的全局的静态数组。
LinkLable控件可以向Windows 窗体应用程序添加Web 样式的链接,在这里我使用了一个获取Microsoft Access的LinkLable,URL是Access的官方网站,打开方式并没有填写,所以会以电脑的默认浏览器打开。
5、查询按钮响应函数6、添加学生信息添加学生信息依然是SQL语句,只要能够获取TextBox的内容和ComboBox的内容以后就可以写入数据库。
TextBox的内容比较简单,就是TextBox.Text,ComboBox的话有几种方式,如果直接添加的文本数据,就可以直接使用ComboBox.Text取到,如果不是,亦可使用ComboBox.Items.Text。
代码如下:右侧没有截取完整,因为代码和之前的类似,都是取TextBox和ComboBox的值。
7、添加课程信息添加课程信息在实现方面和添加学生信息方式大同小异,由于详细的代码在上面已经详细的贴出来了,这里就不再赘述了,主要写出核心的代码。
形如insert into course values('?’,’?’) 的SQL语句,插入即可。
8、成绩管理SQL: select cname from course;将结果加载到ComboBox即可。
之后通过insert语句将成绩插入到sc表中9、登录窗口记住用户名和密码可以通过保存到配置文件的方式实现,不过为了简单起见,并没有实现这个功能,而只是仅仅做了一个可供登录的窗口,用户名和密码都为1。
主要的实现的代码如下:需要注意的是,在Program.cs里面修改程序入口之后,在Login窗口的对应代码文件里书写转到主窗口的代码,先new出来实例之后,再”主窗口.show();”但是要保证Login窗口的关闭,就要写hide()函数。
不写close的原因是,直接在登录窗口里面new出来的主窗口,在登录窗口关闭以后,主窗口也会跟着关闭。
所以一般做法是先打开主窗口,然后隐藏,再打开登录窗口。
这里为了简单,直接hide。
当然这么做也有个问题,就是在实际运行的时候,关闭了窗口,程序并没有结束,登录的窗口依然在后台保持运行,这时候再运行此程序,就会报错,解决办法有很多,这里可以重写主窗口的关闭函数,将登录窗口一同销毁。
三、功能截图1.学生信息录入添加信息成功以后会弹窗提醒添加成功,如果信息添加失败,例如学号重复,会弹出提醒,提醒的内容是数据库的异常,这里不对异常进行处理,直接以弹窗的方式显示出来。
同理,在添加课程信息,或者成绩管理时会遇到同样的SQL语句异常问题,我依然选择以同样的方式弹窗提示。
由于篇幅限制,不再截取其它异常的图片。
2.课程信息录入3.学生成绩管理可能会因程序问题,导致课程无法显示,点击右边的刷新按钮即可。
实现的方法上面已经详述。
4.查询信息这里提供学号精确查询和班级整体查询两种方式,信息是通过DataGridView 显示的。
这里主要是用到了TextBox,不过需要更改其ReadOnly属性为Ture。
使其仅为可读。
这里是自定义的一个窗口,通过点击联系开发者调用。
用到了两个PictureBox控件。
四、实验总结刚开始做这个程序的时候,感觉很难,做的时候出现很多错误而且我是照着网上别人的范例还有错误,那时的感觉是迷茫的。
在学习的过程中,我还是坚持下来,虽然学的不是很好,但是慢慢就理解了。
在本程序的设计过程中,数据的访问,也就是增删改查方面是主要部分,相比较于MFC 的数据库连接,C#的数据库连接方式显得更加简单,高效。
提供了丰富的数据库操作,这些操作可以分为三个步骤:•第一,使用SqlConnection对象连接数据库;•第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;•第三,对SQL或存储过程执行后返回的“结果”进行操作。
对返回“结果”的操作可以分为两类:•一是用SqlDataReader直接一行一行的读取数据集;•二是DataSet联合SqlDataAdapter来操作数据库。
SqlDataReader对象提供只读单向数据的功能,单向:只能依次读取下一条数据;只读:DataReader中的数据是只读的,不能修改;相对地DataSet中的数据可以任意读取和修改。
它有一个很重要的方法,是Read(),返回值是个布尔值,作用是前进到下一条数据,一条条的返回数据,当布尔值为真时执行,为假时跳出。
通过本次的程序设计,对于一些常用的控件也有了更深入的理解。
TextBox的各种属性;DataGridView的使用,数据源绑定、数据项的修改、列表控制等;TabControl的使用;CheckBox、RadioButton的使用;ComboBox的使用,获取选中值、添加内容集合和常用的方法等。
还有Button、Lable、MessageBox和PictureBox等这些相对简单的控件。
这些都是平时课堂上老师细心讲过的,而且上机课时也让我们一一去动手实现了的。
五、个人体会通过本学期的学习和老师的悉心教学,我现在已能完成一些程序设计,能运用Visual Studio来编写一些Windows应用程序和控制台应用程序。
主要成果:编写了一个简单学生管理系统。
真的很高兴,虽然在学习的过程中遇到很多困难,但通过老师的帮助和自己的努力,那些困难都被一一克服,取得了不少进步,这个月虽短但很有意义,因为通过这个月的学习我得到的不仅是知识上的进步,而且还培养了我学会思考的习惯。
记得有人讲过这样的一句话:“学习的过程是一个思考的过程:”我认为的确是这样,因为学习真正的目的并不在于你获得了怎样的成绩,而是在于寻找未来的方向。
以后的学习道路上会有更多的困难等着我去克服,而且有更多的知识要去学,我会更加努力的去学习,而且学习中存在一些问题要去解决,更好的计划学习,勤问问题,在今后的学习中会不断改进自己。
1.多看多写看一下别人写的代码,会养成一个好的编程习惯。
但更重要的是,要看一下比较成熟的代码。
2.多编多敲看了代码,就要写代码,,可以跟他们相同。
这是了解他们的代码,也了解代码的执行过程。
特别是在编译的时候,你会发现你的进步和不足。
在失败中取得微小的成功,是一件很快乐的事情。
在敲代码的时候,你会发现,你的很多英文都会输入错误。
尽量多用“.”这个神奇的点,实质就是调用。
3.简单编程不要一开始就是很困难、好多行的代码。
这样你的自信心会被削弱的。
自尊会被打击的。
从最基本的学起。
从一开始就慢慢体会代码重复利用的快乐。
毕竟这样很节省代码的输入量,而且很能体现你的学习的效果。
4.多多交流也许很简单的问题,都是一些很简单的属性设置的问题,或许一些你很想不到的边边角角的问题,你总是会感到迷茫,但是,不要担心,你要充分利用帮助文件和网络的资源。
特别是,在学习C#的时候,很多人,很懒得安装MSDN,确实,那些占用很多空间。
但那里面有很多好东西,会教你很多的属性的资料和很多方法。
通过网络的搜索,很会找到很多有关的话题的解决方法,很多你遇到的问题,很有可能,早就被人发现和被人解决。
你会在寻找问题的答案中,获得进步。
发现问题和解决问题本身,就是一大进步。
5.发现新思路编程最麻烦的就是套用老方式和老办法。
你可以充分利用现有的对象,进行细化和增加新的属性。
创新是编程最大的灵感。
6.编程模式编程归根结底就是对控件属性的修改的过程,使之符合我们的需要。
控件也叫做对象,你跟用户最直接的接触方式。
修改的过程也就是函数的应用。
通过对现有的控件的学习,你会发现,这些很基本,但是覆盖的面十分的宽广。
也许,这些控件可能无法满足你的需要,你就会新建新的控件,来满足新的需要。
但是,基本的控件你是必须要掌握的。
7.善于总结在总结中,你会发现,你有很大的进步,也存在很多的不足。
所以,你就会千方百计的改进你的工作方式和学习方法,使之不断进步。
编程本身是一项创造性的工作。
灵感来自客户的需要,来自市场的需要,来自用户的便捷操作,来自您对自己的信心。
总之,自己一直是一位初学者,有很多专业的概念,我还是很不明白,这次,我通过编程实训,使我了解了很多,学习了很多。