c#学生信息管理系统实验报告.pdf
.c#c#课程设计课程设计实验报告书实验报告书工业大学计算机学院工业大学计算机学院姓名岳耀闯专业计算机科学与技术班级计 134 班学号139074137指导教师邰伟鹏.摘摘要要本文描述的是基于Windows环境的学生信息管理系统,主要功能模块包括:学生信查询,学生信息管理,学生成绩录入,主要工具 Microsoft Visual Studio 2005设计窗体,SQL server2005 建立数据库,实现学校信息管理的各个功能。本程序提供了管理员权限和用户权限,其中管理员可以对信息进行管理,而用户只可以对信息进行查询,以确保程序的安全性。一、一、需求分析需求分析1 1 系统目标系统目标1 学生信息、课程信息、成绩信息的增加、删除、修改、查询2 分别设置管理员权限和用户权限2 2 功能需求分析功能需求分析本系统的功能需求分析如下:(1)学生信息查询:学生可以根据学号、等进行模糊查询.(2)学生信息管理:主要是用于学生信息更新、插入、删除;(3)学生成绩录入:用于学生成绩管理,录入学生成绩,也可以更新;3 3 性能需求分析性能需求分析(1)登录、用户界面需求:简洁、易懂、易用、友好的用户界面。(2)安全性需求:只有凭借用户名和密码登陆系统,才能进行信息的管理等。.二二总体设计总体设计1 1 设计概述设计概述根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能。2 2 系统数据库的设计系统数据库的设计1.所用到的数据库中的表信息:adminmsg(管理员表)列名字段类型UseridUsernamePassworduser(用户表)列名UseridUsernamePassword字段类型intNvarcharNvarchar长度45050主/外键对应中文名编号密码intNvarcharNvarchar长度45050主/外键对应中文名编号密码Studentmsg(学生信息表)列名字段类型intNvarcharByteNvarcharNvarchar长度45015050主/外键Y对应中文名学号性别所在系专业StudentidStudentnameSexdepartmentspecialityCoursemsg(课程信息表)列名courseidcoursenamerequiredcreditScoremsg(成绩表)列名.字段类型intNvarcharNvarcharint长度450104主/外键Y对应中文名课程号课程名称性质学分字段类型长度主/对应中文.Studentnocourseidscoreintintint444外键YY名学号课程号成绩3.3.用户登录安全性检查用户登录安全性检查系统设计了登录界面,每个合法用户有用户名及一个密码,在输入后系统会对相应的表进行匹配检查,只有当用户输入正确的用户名及密码组合后才能够进入相应的界面。三三 详细设计详细设计1 1 登陆安全性检查。登陆安全性检查。系统会对每一个用户进行安全性检查,只有在数据库中拥有用户信息的才可以进入系统。截图如下:2 2 用户权限登陆用户权限登陆用户在输入正确的密码和用户名称之后,点击“用户身份登陆”,就进入了用户界面,界面截图如下:.在这个界面正可以查询课程信息,学生信息和学院信息,还可以查看统计信息。如图:第一章查询学生信息第二章查询课程信息第三章查询学院信息.第四章查询统计信息(选中一行,可查看不及格)3 3 管理员身份登陆管理员身份登陆以管理员身份登陆后可以进行学生信息,课程信息,成绩信息的添加,删除,修改,查询等操作。(1)管理员身份界面(2)添加课程,学生信息.(3)查看,修改,删除课程信息和学生信息。学生信息页面显示后会加载全部的学生信息,上面的检索是提供了模糊搜索。可以在列表中直接修改信息,然后点击“保存修改”,系统会保存修改后的信息。选中一行后,点击“删除选中行信息”,系统会自动删除该行的学生信息以及其成绩信息。课程信息页面操作同学生信息页面操作相同。删除时会相应的删除课程信息以及和此课程信息相关的所有成绩信息。.查询总信息,根据选择的条件会显示与条件相关的所有信息。并增加了“删除学院信息”。在选中一行后,就会锁定该行的学院名称,并删除该学员的全部学生信息和相关的课程信息。(4)查询统计信息查询统计信息同用户级别的查询统计信息相同(5)添加成绩信息系统会自动将课程信息和学生绑定在框。按照下拉菜单,选择相应的课程和学生,分数就会为该学生添加相应的分数,添加后会显示在右侧的表中。.四四 主要功能模块代码主要功能模块代码1 1 登陆部分代码登陆部分代码2 2 添加部分代码添加部分代码(以下全部以添加学生信息为例)string no=Convert.ToString(textBox1.Text);string name=Convert.ToString(textBox2.Text);string sex=Convert.ToString(textBox3.Text);string dept=Convert.ToString(textBox4.Text);string spec=Convert.ToString(textBox5.Text);stringconnString=DataSource=acer-pc;InitialCatalog=myschool;IntegratedSecurity=true;SqlConnection connection=new SqlConnection(connString);String sql=string.Format(insert into studentmsg(studentno,studentname,sex,department,speciality)values(0,1,2,3,4),no,name,sex,dept,spec);tryconnection.Open();SqlCommand command=new SqlCommand(sql,connection);int count=command.ExecuteNonQuery();/执行添加命令,返回值为更新的行数if(count 0)MessageBox.Show(添加学生信息成功,添加成功,MessageBoxButtons.OK,MessageBoxIcon.Information);else.MessageBox.Show(添加学生信息失败,添加失败,MessageBoxButtons.OK,MessageBoxIcon.Information);catch(Exception ex)MessageBox.Show(ex.Message,操作数据库出错!,MessageBoxButtons.OK,MessageBoxIcon.Exclamation);finally connection.Close();3 3 删除部分代码删除部分代码/提取选中行的记录的学号,进行删除string no=this.dataGridView1.SelectedRows0.Cells0.Value.ToString();try/首先删除成绩表中的数据string sql=String.Format(delete from scoremsg where studentno=0,no);SqlDataAdapter dataadapter=new SqlDataAdapter(sql,connection);DataSet dataset=new DataSet(MyData);dataadapter.Fill(dataset);/删除学生信息表中的数据string sql2=String.Format(delete from studentmsg where studentno=0,no);SqlDataAdapter dataadapter2=new SqlDataAdapter(sql2,connection);DataSet dataset2=new DataSet(MyData);dataadapter2.Fill(dataset2);SqlCommand command=new SqlCommand(sql,connection);catch(Exception ex)MessageBox.Show(ex.Message,操作数据库出错!,MessageBoxButtons.OK,MessageBoxIcon.Exclamation);4 4 修改部分代码修改部分代码studentmsgTableAdapter.Update(myschoolDataSet.studentmsg);/通过对datagridview中的数据进行直接的修改,再用update进行更新5对信息的统计/对学生信息进行录入string sql=String.Format(select courseid,count(studentno)选课人数,avg(score)平均成绩from scoremsgGROUP BY courseid);.SqlDataAdapter dataadapter=new SqlDataAdapter(sql,connection);DataSet dataset=new DataSet(MyData);dataadapter.Fill(dataset);dataGridView1.Columns0.DataPropertyName=courseid;dataGridView1.Columns1.DataPropertyName=选课人数;dataGridView1.Columns2.DataPropertyName=平均成绩;dataGridView1.DataSource=dataset.Tables0;/统计不及格的学生信息string no=this.dataGridView1.SelectedRows0.Cells0.Value.ToString();/提取选中的行的课程号stringsql=String.Format(selectstudentnamefromstudentmsg,scoremsgwherestudentmsg.studentno=scoremsg.studentnoandscore60and courseid=0,no);SqlDataAdapter dataadapter=new SqlDataAdapter(sql,connection);DataSet dataset=new DataSet(MyData);dataadapter.Fill(dataset);dataGridView2.Columns0.DataPropertyName=studentname;dataGridView2.DataSource=dataset.Tables0;五五 课程设计心得课程设计心得通过对这个程序的编写,加深了我对c#这门语言和数据库操作的了解,提高了综合运用课程所学知识的能力,在整个过程中,我遇到了许多的问题,包括对一些控件功能的不了解,调试时出现的种种错误,以及对两种语言的结合使用等等。最后通过网上查找资料和去图书馆查看相关的书籍,将所遇到的问题逐一解决。从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的学生信息查询,学生信息更新,学生信息添加等模块的功能。通过实际编译系统的分析设计、编程调试,我也或多或少的掌握应用软件的分析方法和工程设计方法。这也是这次程序设计的收获。总体上对这次的程序编写较为满意,希望今后有更多的机会进行这样的程序设计。.