学生成绩管理系统实验报告书

合集下载

学生成绩管理系统实验报告

学生成绩管理系统实验报告

高校成绩管理系统数据库设计与实现班级计科1201 班学号201226100105 姓名何霞1、需求分析计算机已经深入到日常工作和生活的方方面面,成为我们学习和工作的得力助手,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。

随着越来越多的应用软件出现,人们对它的要求也越来越高;虽然现在世界上的各种软件层出不穷,但它们依然不能满足用户的各种特殊需要,所以人们仍是不得不开发适合特殊需求的软件。

高校成绩管理系统记录了一个大学生成绩的系统,它的出现使得查询、更新、插入简单化,高效化,成本也随之大大减少。

使用计算机对成绩信息的管理,具有手工管理所无法比拟的优点:信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高学生成绩管理的效率,也是高校成绩正规化管理的重要途径。

本软件控件均以中文形式表示,对普通程序使用者的查询提供简单方便的快捷操作,不需要技术含量。

以SQL SERVER数据库管理系统为平台,通过设计数据库概念模型、逻辑模型以及利用标准SQL语言的数据库实现,掌握关系数据库系统的设计与实现方法,增强数据库设计和数据库应用系统开发能力。

操作人员与维护人员应懂的SQL语言。

运行环境:硬件环境:高性能计算机一台软件环境:A.windows系列B.Microsoft SQL Server 2012C.MyEclipse Professional1.1 数据需求描述①.系统整体需求分析②.系统重要功能需要分析成绩查询功能教师授课信息查询功能班级课程安排查询功能1.2 系统功能需求(1)学生成绩按每学年进行成绩统计;(2)学生成绩名次排定,按升序排列;(3)每门课程平均成绩统计;(4)学生所学课程及学分统计;(5)输入每个学生成绩时,自动生成该学生已修总学分;(6)学生成绩查询;(7)教师任课查询;(8)班级课程开设查询;系统功能图:1.3 其他性能需求(1)可供多用户同时使用(2)用户输入出错时,有错误提示(3)安全性高(4)存储需求描述2、概念结构设计局部E-R图全局E-R图3、逻辑结构设计3.1 关系模式设计教师(教师编号,教师姓名,教师性别,教师年龄,职称,联系电话)上课(教师编号,班级编号)授课(教师编号,课程编号)课程(课程编号,课程名称,教师姓名,开课学期,学时,考试或考察,学分)学习(学号,课程编号,学期,课程名称,成绩教师姓名)学生(学号,学生姓名,学生性别,学生年龄,生源所在地,已修学分总数,班级编号)开设(课程编号,班级编号)班级(班级编号,班级名称,专业编号)专业(专业编号,专业名称)3.2 数据类型定义(1)Dept_Hx(学院信息)数据项名数据类型长度完整性约束学院编号(Dno_hx) char 20 主键,唯一,非空学院名称(Dname_hx) char 20(2)Teacheres_Hx(教师信息)数据项名数据类型长度完整性约束教师编号(Tno_hx) char 10 主键,唯一,非空教师姓名(Tname_hx) char 20教师性别(Tsex_hx) char 2教师年龄(Tage_hx) int职称(Tposi_hx) char 20联系电话(Ttele_hx) char 20学院编号(Dno_hx) char 20(3)Major_Hx(专业信息)数据项名数据类型长度完整性约束专业编号(Mno_hx) char 20 主键,唯一,非空专业名称(Mname_hx) char 20学院编号(Dno_hx) char 20(4)Class_Hx(班级信息)数据项名数据类型长度完整性约束班级编号(CLno_hx) char 20 主键,唯一,非空班级名称(CLname_hx) char 20(5)Students_Hx(学生信息)长度完整性约束数据项名数据类型学号(Sno_hx) char 12 主键,唯一,非空学生姓名(Sname_hx) char 20学生性别(Ssex_hx) char 2学生年龄(Sage_hx) int生源所在地(Shome_hx) char 20int已修学分总数(ScreditAccess_hx)班级编号(CLno_hx) char 20 外键(6)Course_Hx(课程信息)数据项名数据类型长度完整性约束课程编号(Cno_hx) char 20 主键,唯一,非空课程名称(Cname_hx) char 20学时(Chour_hx) int >0考试或考察(Cexam_hx) char 4学分(Ccredit_hx) char 4 >0(7)Teach_Hx(教师授课信息)数据项名数据类型长度完整性约束教师编号(Tno_hx) char 20 外键,唯一,非空课程编号(Cno_hx) char 20 外键(8)Study_Hx(学生成绩信息)数据项名数据类型长度完整性约束学号(Sno_hx) char 12 外键,唯一,非空课程编号(Cno_hx) char 20 外键学期(STterm_hx) char 10成绩(STgrade_hx) char 10教师号(Tno_hx) char 10 外键(9)Setup_Hx(班级课程信息)数据项名数据类型长度完整性约束班级编号(CLno_hx) char 20 外键,唯一,非空课程编号(Cno_hx) char 20 外键(9)3.3 关系模式的优化对关系模式进行规范化处理,对关系模式进行评价与修正4、物理结构设计4.1 聚簇设计该高校成绩管理系统数据库可建立一下聚簇:Teachers_Hx(教师编号Tno_hx)Courses_Hx(课程编号Cno_hx)Students_Hx(学生学号Sno_hx,班级编号CLno_hx)Class_Hx(班级编号CLno_hx)这几个聚簇设计是因为这几张表都是实体表,,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。

学生成绩管理系统实验报告

学生成绩管理系统实验报告

数据库系统原理实验报告实验名称学生成绩管理系统院系计算机与信息工程学院班级2013级计算机科学与技术二班姓名郅伟远学号1308114088实验课程名称数据库系统原理实验项目名称学生成绩管理系统实验项目性质综合性主讲教师孟慧丽开课年级2013 开课专业计算机实验地点过街楼开课日期开课时间学号姓名1308114088 郅伟远一、实验目的:1、熟悉并掌握数据库系统原理这门课所应用的软件SQL Server2008,以及使用该软件的相关要求与具体用法。

2、在掌握SQL Server2008应用的基础上,建立相关学生成绩管理信息的数据库,并在此基础上与Visual 2008建立连接,进行相关的操作。

3、在Visual 2008上进行学生成绩管理信息系统的查询、更改以及成绩录入的相关界面的设计,使流程能够顺利进行。

二、总体设计(设计原理、设计方案及流程等)设计原理:1、以SQL Server2008软件的功能与作用为基础。

2、以Visual 2008软件的功能为平台。

设计方案及流程:以Visual 2008为前台开发工具进行操作,并以SQL Server2008软件为后台,使创建成功的一个学生成绩管理系统具有如下基本功能:1、学生信息查询,可根据学号,姓名及专业分别进行学生信息查询。

2、学生信息修改,可在数据库中插入,删除,修改学生记录3、学生成绩录入,可录入每个学生某门课程成绩。

在此基础的操作中上能够添加个人的信息,如添加个人的学号,姓名,专业和成绩等,并能够执行查询个人相关信息的操作。

三、实验步骤(包括主要步骤、代码分析等)主要步骤及相应的代码:1、在SQL Server 2008条件下以ID=sa,password=123456的身份进入数据库引擎,并将PXSCJ附加到数据库。

打开Visual 2008,将已有的数据库PXSCJ与VS2008建立连接。

2、在Visual 2008环境下,建立Windows窗体并命名为Form1,并添加相应的程序代码,同时需要添加相关联的子窗体分别双击窗体,双击3个botton按钮,添加相应的程序代码:private void button1_Click(object sender, EventArgs e){//建立学生信息查询窗体SearchForm searchfrm=new SearchForm();searchfrm.ShowDialog();}private void button2_Click(object sender, EventArgs e){//建立学生信息修改窗体ModifyForm modifyfrm= new ModifyForm();modifyfrm.ShowDialog();}private void button3_Click(object sender, EventArgs e){//建立学生信息录入窗体ScoreForm scorefrm = new ScoreForm();scorefrm.ShowDialog();}3、在窗体SearchForm上添加相应的控件,修改相应控件的添加控件,合理设计此界面控件的基础上,双击各个相应的控件,添加相应的程序代码:private string sql = "";private void SearchForm_Load(object sender, EventArgs e){string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa; Password=123456";string _sql = "select XH as'学号',XM as'姓名',ZY as'专业',XB as'性别',"+ "CSSJ as'出生日期',ZXF as'总学分',BZ as'备注'from XSB";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter sda = new SqlDataAdapter(_sql, conn);DataSet ds = new DataSet();sda.Fill(ds);StuDGV.DataSource = ds.Tables[0].DefaultView;}private void MakeSqlStr(){sql="";if(stuXH.Text.Trim()!=string.Empty){sql="and XH like'%"+stuXH.Text.Trim()+"%'";}if(stuXM.Text.Trim()!=string.Empty){sql+="and XM like'%"+stuXM.Text.Trim()+"%'";}if(stuZY.Text!="所有专业"){sql += "and ZY='" + stuZY.Text + "'";}}private void button1_Click(object sender, EventArgs e){MakeSqlStr();string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa; Password=123456";string _sql="select XH as'学号',XM as'姓名',ZY as'专业',XB as'性别',"+"CSSJ as'出生日期',ZXF as'总学分',BZ as'备注'from XSB where 1=1"+sql;SqlConnection conn=new SqlConnection(connStr);SqlDataAdapter sda=new SqlDataAdapter(_sql,conn);DataSet ds=new DataSet();sda.Fill(ds);StuDGV.DataSource=ds.Tables[0].DefaultView;}4、在窗体ModifyForm上添加相应的控件:在工具箱中合理的将控件摆放在窗体上,双击相应的控件,并添加相应的代码:private void ModifyForm_Load(object sender, EventArgs e){string connStr = @"Data Source=c56; Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF; Persist Security Info=True; User ID=sa; Password=123456";string _sql="select XH as '学号',XM as '姓名',ZY as '专业',XB as '性别',"+"CSSJ as '出生年月',ZXF as '总学分',BZ as '备注' from XSB";SqlConnection conn=new SqlConnection(connStr);SqlDataAdapter sda=new SqlDataAdapter(_sql,conn);DataSet ds=new DataSet();sda.Fill(ds);StuDGV.DataSource=ds.Tables[0].DefaultView;}private void stuDelete_Click(object sender, EventArgs e){string connStr = @"Data Source=c56; Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF; Persist Security Info=True; User ID=sa; Password=123456";DialogResult ret=MessageBox.Show("确定要删除记录吗?","删除",MessageBoxButtons.OKCancel, MessageBoxIcon.Question);if (ret==DialogResult.Cancel) return;string _sql="delete from XSB where XH='"+stuXH2.Text+"'";SqlConnection conn=new SqlConnection(connStr);SqlCommand cmd=new SqlCommand(_sql,conn);try{conn.Open();int rows = cmd.ExecuteNonQuery();ModifyForm_Load(null, null);if (rows == 1){MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, rmation);}}finally{conn.Close();}}private void stuUpdate_Click(object sender, EventArgs e){string connStr = @"Data Source=c56; Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF; Persist Security Info=True; User ID=sa; Password=123456";string _sql="select count(*) from XSB where XH='"+stuXH2.Text+"'";SqlConnection conn=new SqlConnection(connStr);SqlCommand cmd=new SqlCommand(_sql,conn);try{conn.Open();int cnt=(int)cmd.ExecuteScalar();if(cnt==1){_sql="update XSB set XM='"+stuXM2.Text+" ',ZY='"+stuZY2.Text+"',ZXF="+int.Parse(stuZXF2.Text)+",BZ='"+stuBZ.Text+"'where XH='"+stuXH2.Text+"'";}else{string sex=male.Checked ?"男":"女";_sql="insert into XSB (XH,XM,ZY,ZXF) values('"+stuXH2.Text+"','"+stuXM2.Text+" ','"+stuZY2.Text+" ',"+int.Parse(stuZXF2.Text)+")";}cmd=new SqlCommand(_sql,conn);cmd.ExecuteNonQuery();ModifyForm_Load(null,null);}finally{conn.Close();}}private void stuCancel_Click(object sender, EventArgs e){this .Close ();}private void StuDGV_RowHeaderMouseClick_1(object sender, DataGridViewCellMouseEventArgs e){DataGridViewRow dgvRow = StuDGV.Rows[e.RowIndex];DataGridViewCellCollection dgvCC = dgvRow.Cells;stuXH2.Text = dgvCC[0].Value.ToString();stuXM2.Text = dgvCC[1].Value.ToString();stuZY2.Text = dgvCC[2].Value.ToString();if (dgvCC[3].Value.ToString() == "男")male.Checked = true;elsefemale.Checked = true;stuCSSJ2.Text = Convert.ToDateTime(dgvCC[4].Value).ToShortTimeString();stuZXF2.Text = dgvCC[5].Value.ToString();stuBZ.Text = dgvCC[6].Value.ToString();}5、在窗体ScoreForm上添加相应的控件:添加1个Lable控件,并将Text改为“学生成绩录入”;拖拽6个Lable控件,将其属性Text分别设置为“姓名,成绩,课程名”;合理的将控件摆放在窗体上,双击相应的控件,并添加相应的代码:private void ScoreForm_Load(object sender, EventArgs e){string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa; Password=123456";string _sql = "select distinct ZY from XSB";SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand(_sql, conn);try{conn.Open();SqlDataReader dr = cmd.ExecuteReader();//读取专业名while (dr.Read()){stuZY3.Items.Add(dr[0]);}dr.Close();_sql = "select KCM from KCB";cmd = new SqlCommand(_sql, conn);dr = cmd.ExecuteReader();//读取课程名while (dr.Read()){stuKCM3.Items.Add(dr[0]);}dr.Close();}finally{conn.Close();}}private void update_btn_Click(object sender, EventArgs e){string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa; Password=123456";string _sql = "select count(*)from CJB where CJB.XH='" + stuXH3.Text + "'and CJB.KCH=(select KCH from KCB where KCM='" + stuKCM3.Text.Trim () +"')";SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand(_sql, conn);try{conn.Open();int cnt = (int)cmd.ExecuteScalar();if (cnt == 1){_sql = "update CJB set CJB.CJ='" + stuCJ3.Text + "' where CJB.XH='" + stuXH3.Text + "' and CJB.KCH=(select KCH from KCB where KCM='" + stuKCM3.Text + "')";}else{string _sql2 = "select KCH from KCB where KCM='" + stuKCM3.Text + "'";SqlCommand cmd2 = new SqlCommand(_sql2, conn);_sql = "insert into CJB values('" + stuXH3.Text.Trim() + "'," +cmd2.ExecuteScalar() + "," + int.Parse(stuCJ3.Text.Trim()) + ")";}cmd = new SqlCommand(_sql, conn);cmd.ExecuteNonQuery();_sql = "select XSB.XH as '学号',XSB.XM as '姓名',KCB.KCM as '课程名',CJB.CJ as '成绩',KCB.XF as '学分',KCB.XS as '学时',KCB.KKXQ as '开课学期' from XSB,KCB,CJB where XSB.XH=CJB.XH and KCB.KCH=CJB.KCH and KCB.KCM='" + stuKCM3.Text + "'" + "and XSB.XH='" + stuXH3.Text + "'";SqlDataAdapter sda = new SqlDataAdapter(_sql, conn);DataSet ds = new DataSet();sda.Fill(ds);scoreDGV.DataSource = ds.Tables[0].DefaultView;}finally{conn.Close();}}private void delete_btn_Click(object sender, EventArgs e){string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa; Password=123456";DialogResult ret = MessageBox.Show("确定要删除记录吗?", "删除", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);if (ret == DialogResult.Cancel){return;}string_sql = "delete from CJB where XH=' "+ stuXH3.Text.Trim() + "'and KCH=(select KCH from KCB where KCM='" + stuKCM3.Text.Trim()+ "')";SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand(_sql, conn);try{conn.Open();int rows = cmd.ExecuteNonQuery();if (rows == 1){MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, rmation);}}finally{conn.Close();}}private void cancel_btn_Click(object sender, EventArgs e){this.Close();}private void stuZY3_SelectedIndexChanged(object sender, EventArgs e){string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa;Password=123456";string _sql = "select XH from XSB where ZY='" + stuZY3.Text + "'";//清空现有的学号stuXH3.Items.Clear();SqlConnection conn = new SqlConnection(connStr);SqlCommand cmd = new SqlCommand(_sql, conn);try{conn.Open();SqlDataReader dr = cmd.ExecuteReader();//读取相应的学号while (dr.Read()){stuXH3.Items.Add(dr[0]);}dr.Close();_sql = "select XSB.XH as'学号',XSB.XM as'姓名',KCB.KCM as'课程名',CJB.CJ as'成绩'," + "KCB.XF as'学分',KCB.XS as'学时',KCB.KKXQ as'开课学期'from XSB,KCB,CJB where XSB.XH=CJB.XH and KCB.KCH =CJB.KCH and XSB.ZY='" + stuZY3.Text + "'";SqlDataAdapter sda = new SqlDataAdapter(_sql, conn);DataSet ds = new DataSet();sda.Fill(ds);scoreDGV.DataSource = ds.Tables[0].DefaultView;}finally{conn.Close();}}private void stuXH3_SelectedIndexChanged(object sender, EventArgs e){string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa;Password=123456";string_sql = "select XSB.XH as'学号',XSB.XM as'姓名',KCB.KCM as'课程名',CJB.CJ as'成绩',KCB.XF as'学分',KCB.XS as'学时',KCB.KKXQ as'开课学期'from XSB,KCB,CJB where XSB.XH=CJB.XH and KCB.KCH=CJB.KCH and XSB.XH='" +stuXH3.Text + "'";if (stuKCM3.Text.Trim() != string.Empty){_sql += "and KCB.KCM='" + stuKCM3.Text + "";}SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter sda = new SqlDataAdapter(_sql, conn);DataSet ds = new DataSet();sda.Fill(ds);scoreDGV.DataSource = ds.Tables[0].DefaultView;}private void stuKCM3_SelectedIndexChanged(object sender, EventArgs e){string connStr = @"Data Source=C56;Initial Catalog=G:\数据库系统\PXSCJ\PXSCJ.MDF;User ID=sa;Password=123456";string_sql = "select XSB.XH as'学号',XSB.XM as'姓名',KCB.KCM as'课程名',CJB.CJ as'成绩'," + "KCB.XF as'学分',KCB.XS as'学时',KCB.KKXQ as'开课学期'from XSB,KCB,CJB where XSB.XH=CJB.XH and KCB.KCH=CJB.KCH and KCB.KCM='" + stuKCM3.Text + "'";if (stuXH3.Text.Trim() != string.Empty){_sql += "and XSB.XH='" + stuXH3.Text + "'";SqlConnection conn = new SqlConnection(connStr);SqlDataAdapter sda = new SqlDataAdapter(_sql, conn);DataSet ds = new DataSet();sda.Fill(ds);scoreDGV.DataSource = ds.Tables[0].DefaultView;}}private void scoreDGV_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e){//获得选中的记录行DataGridViewRow dgvRow = scoreDGV.Rows[e.RowIndex];//获得航单元格集合DataGridViewCellCollection dgvCC = dgvRow.Cells;stuXM3.Text = dgvCC[1].Value.ToString();stuKCM3.SelectedItem = dgvCC[2].Value;stuCJ3.Text = dgvCC[3].Value.ToString();stuZXF3.Text = dgvCC[4].Value.ToString();}四、结果分析与总结实验结果总界面:一、单击“学生信息查询”的学生信息查询结果如下:二、单击“学生信息修改”的学生信息修改结果如下:1、执行学生信息更新(对已有的学生信息进行修改)的结果:三、单击“学生成绩录入”学生成绩录入结果如下:。

C语言程序设计学生成绩管理系统实验报告

C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",&num;switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。

学生成绩信息管理系统 课程设计实验报告

学生成绩信息管理系统 课程设计实验报告

《可视化程序设计》课程设计专业:班级:指导老师:姓名:目录一、需求分析 (3)1.1任务需求 (3)1.2功能需求 (3)1.3界面需求 (3)二、概要设计 (4)2.1流程图 (4)2.2数据库E-R图 (4)三、详细设计 (4)3.1模块分析 (5)3.2实现方法(相关代码及界面) (5)四、调试分析 (15)4.1稳定性测试 (15)4.2界面分析 (15)五、课设总结 (15)一、需求分析任务需求题目要求完成一个学生成绩的信息管理系统,要求能进行对学生成绩的录入、修改和删除,能查询学生的成绩,同时可以对学生的成绩进行排序。

在Visual C++环境下,使用MFC和DBCS进行开发。

系统必须是基于单文档的程序框架或者是基于对话框的应用程序,包含菜单控件,使用数据库进行数据的存储操作,可用Access数据库。

系统的使用,必须有权限的现在,即只有管理员才能登陆系统。

功能需求系统有以下几个功能性要求:1.学生成绩的录入:能够将学生的成绩信息进行录入,考虑到学生的添加问题,加入新学生的添加功能。

2.学生成绩的修改:满足老师对学生成绩的修改,包括对数学、英语、语文成绩的修改。

3.学生成绩的删除:能够删除指定学生的指定课程成绩信息的删除,将要删除的成绩的信息进行清零。

4.学生成绩的查询:输入学号,查询对应学生的全部信息。

5.学生成绩的排序:为了更好的了解学生的学习情况,要求可以对学生的成绩进行排序查询,直观了解班级学生的学习状态。

包含四种排序:根据数学成绩的排序,根据英语成绩的排序,根据语文成绩的排序,根据总分的排序。

6.权限验证:用户使用该系统,首先进行验证,使用管理员账号和密码,才能登入系统。

界面需求1.登陆界面:有登陆账号和密码的输入框,如果输入账号或密码,提醒用户输入相应的信息。

登陆失败,提醒用户登陆失败。

2.主界面:包含菜单、工具栏以及状态栏。

通过登陆,主界面可以直接显示学生信息,同时,通过使用工具栏的向后按钮,显示数据库后一个同学的信息。

学生成绩管理系统实验报告

学生成绩管理系统实验报告

软件工程实验报告学校:渤海大学班级:11-6学号:110520005姓名:朱美林一.需求分析1 系统需求成绩管理成为学校教学管理中十分重要又相当复杂的管理工作之一,单纯的采用传统的手工处理已经不符合教育和管理的要求,而计算机具有运算速度快,处理能力强等特点,很自然地进入到这一应用领域中。

因此为了保证学校的信息流畅,工作高效,有必要设计一个学生成绩管理系统。

这不但能使教务人员从复杂的成绩管理中解脱出来,而且对于推动教学的发展也起到非常重要的作用。

学校学生成绩管理工作都是采用传统的手工管理,这各传统人工的管理方式存在着许多缺点,如:效率低,保密性差,一方面导致教师,学生成绩情况不了解,教师对成绩管理工作倍感头痛,因为时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来了不少的困难,耗费大量劳动力,难于避免错误的产生。

选择Eclipse来开发学生成绩管理系统,由于以上的优点,帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化,所以选择Eclipse来开发学生成绩管理系统。

需求的收集及分析:学生成绩管理系统应该完成以下两个方面的内容:学生档案资料的管理、学生成绩的管理(包括必修课和选修课),每个内容均需要提供添加、修改和查询的功能。

学生成绩管理系统在开发过程中收集到的客户需求文档记录的关键部分可概括为以下几个部分:1、可能会使用到该系统的用户:系统管理员、教师、学生;2、各类用户的权限不一样。

例如系统管理员可以添加、修改、查询学生档案资料和学生的成绩,学生只能查询自己的档案、成绩以及一些公共的信息,教师可以发布学生的成绩信息,而且只能查询自己所授课程的信息以及一些公共信息。

3、要有系统备份功能,系统出故障时,因该有相应的应急措施或者系统恢复功能。

由此可见,学生成绩管理系统需要满足3个方面的需求:管理员使用系统对全部数据进行维护操作;教师对于自己相关的部分数据实体进行操作;学生作为查询者对数据实体进行查询操作。

学生成绩管理信息系统实验报告

学生成绩管理信息系统实验报告

学生成绩管理信息系统实验报告在如今数字化时代,信息系统已经被广泛运用在各行各业,在教育领域中也不例外。

学生成绩管理信息系统是一种管理学生成绩、帮助教师了解学生学习情况、为学生提供个性化学习方案等方面的软件工具。

本次实验的目的是在探究学生成绩管理信息系统的基础上,对该系统进行设计、实现和测试。

以下将从实验思路、设计、实现和测试四个方面来阐述本次实验。

实验思路在进行实验前,首先要确定实验目的和实验思路。

本次实验的重点在于学生选课,并且在选课后能够及时更新学生信息,以及对学生成绩进行统计、查询、打印,为教师提供了解学生学习情况和写作评价的依据,让学校和家长可以及时掌握学生的学习情况,从而有针对性地进行教育和指导。

因此,在确定实验目的和重点后,我们就可以开始进行系统的设计和实现了。

系统设计系统设计是本次实验的核心,也是整个实验过程的重点。

在系统设计阶段,首先需要建立系统数据库,涉及的数据有学生的基本信息、成绩和选课情况。

然后,需要对学生专业、班级和课程进行分类,建立相应的查询和统计模板,方便教师快速定位学生,及时进行反馈和评价。

同时,还需要建立学生和教师的账号登陆系统,保证系统的安全性和可靠性。

最后,需要对系统进行界面设计,使之简洁明了,方便使用。

系统实现在系统设计完成之后,我们需要进行系统的实现。

实现过程中,需要使用到多种编程语言、技术和工具,如HTML、CSS、Python、MySQL等。

其中,Python作为本次实验的主要编程语言,被广泛应用在后端开发和数据交互方面。

在实现过程中,需要将系统设计好的功能逐一实现,并进行模块测试和数据校验,确保系统的正确性和稳定性。

系统测试在系统实现完成之后,需要对系统进行测试,以确保系统的功能完善和容错性能。

系统测试分为两个阶段,第一阶段为单元测试,主要测试系统各个功能模块的正确性和稳定性。

第二阶段为集成测试,主要测试各个功能模块之间的协同性和兼容性。

在测试过程中,需要注意数据的完整性和正确性,并进行数据备份和恢复,以避免数据丢失和系统崩溃。

学生成绩管理系统数据库设计实验报告

学生成绩管理系统数据库设计实验报告

学生成绩管理系统数据库课题: 雇员信息管理系统姓名:学号:同组姓名:专业班级:指导教师:设计时间:2012年6月4号----2012年6月10日一、需求分析阶段1.信息需求对学校而言,学生成绩管理系统是所有工作的首要之选,但是高校学生的成绩管理工作量大、繁杂,人工处理非常困难。

因此,借助于强大计算机的处理能力,能够把人从繁重的成绩管理工作中解脱出来,并且更加准确、安全、清晰的管理环境。

2.功能需求能够进行数据库的数据定义、数据操纵、数据控制等处理功能。

具体功能应包括:系统应该提供课程安排数据的添加、插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。

3. 安全性与完整性要求对于学生成绩管理系统数据库来讲,由于其主要数据是学生成绩,只能由本人以及所教老师及教务处知道,因此做好数据安全性是重中之重。

另外,要求所有在校学生的信息都要录入其中,并且要设计好个别情况。

二、概念结构设计阶段概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。

设计成绩管理数据库包括学生、成绩、课程、教师四个关系。

E-R图如下三、详细设计阶段详细结构是独立于任何一种数据模型的信息结构。

详细结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。

E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。

设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下:课程信息表Class:(课程号,课程名,教师号,学分,学时)学生信息表Student1:(学号,姓名,性别,年龄,专业,系别)成绩表Score:(学号号,课程名,成绩)教师表Teacher1:(教师号,教师名,教师性别,教师系别)2、学生信息表(student1)四、数据库实现数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

学生成绩管理系统测试报告范本

学生成绩管理系统测试报告范本

学生成绩管理系统测试报告软件测试学生成绩管理系统学号:姓名:班级:指导老师:成绩:第一章数据字典1.1教师信息(Teacher):教师编号 Tno CHAR(7)教师姓名 Tname NCHAR(5)所在系 Tdept NVARCHAR(20)登录密码 Tpasword CHAR(6)学生信息(Student):学号 Sno CHAR(7)姓名 Sname NCHAR(5)性别 Sex NCHAR(1)年龄 Sage TINYINT (2)所在系 Sdept NVARCHAR(20)登录密码 Spasword CHAR(6)成绩信息(Grade):学号 Sno CHAR(7)姓名 Sname NCHAR(5)课程编号 Cno VARCHAR(5)课程名 Cname CHAR(20)平时成绩 PSgrade INT(2)实验成绩 SYgrade INT(2)课程设计 KCSJgrade INT(2)期末总成绩 Grade INT(2)课程信息(Course):课程编号 Cno CHAR(10)课程名 Cname CHAR(20)授课教师 Tname NCHAR(5)系别 dept NVARCHAR(20)1.2概念模型设计根据上面数据字典设计建立相对应的概念模型,从数据字典抽象出的实体有:教师信息实体、学生信息实体、成绩信息实体、课程信息实体。

各个实体具体的描述E-R图如下。

教师员信息实体E-R图:3 教师员信息实体E-R图学生信息实体E-R图:图4 学生信息实体E-R图成绩信息实体E-R图:图5 成绩信息实体E-R图课程信息实体E-R图:图6 课程信息实体E-R图第2章测试计划2.1简要说明软件测试是软件开发时期的最后一个阶段,也是软件质量和可靠性保证中至关重要的一个环节。

软件测试的基本任务是经过在计算机上执行程序,暴露出程序潜在的错误,以便进行纠错,从而保证程序的可靠运行,降低软件的风险。

所谓测试用例,就是意发现错误为目的而精心设计的一组测试数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五《学生成绩管理系统》数据库设计实验报告一、实验目的运用了数据库原理和Oracle数据库知识,针对具体的数据库设计工具,完成数据库的设计与编程。

二、实验内容《学生成绩管理系统》保存系统用户信息、学生基本信息、班级(含系)信息、课程信息、选课信息、成绩信息。

三、实验仪器、设备软件:网络环境、Windows Server/NT或Linux或Unix操作系统、Oracle 9i、数据库设计工具ERWIN。

硬件:PIII 1G以上CPU、512 M以上内存、6.4GB以上的空闲磁盘空间和1000MB虚拟内存。

四、实验步骤1、分析《学生成绩管理系统》需求 ----见附件一学生成绩管理系统需求分析报告一、系统需求的收集及分析:学生成绩管理系统应该完成以下两个方面的内容:系统用户信息、学生基本信息、班级(含系)信息、课程信息、选课信息(包括必修课和选修课)、成绩信息,每个内容均需要提供CRUD操作。

学生成绩管理系统在开发过程中收集到的客户需求文档记录的关键部分可概括为以下几个部分:1、可能会使用到该系统的用户:系统管理员、教师、学生;2、各类用户的权限不一样。

例如系统管理员可以添加、修改、查询学生档案资料和学生的成绩,学生只能查询自己的档案、成绩以及一些公共的信息,教师可以发布学生的成绩信息,而且只能查询自己所授课程的信息以及一些公共信息。

学生成绩管理系统需要满足3个方面的需求:1)管理员使用系统对全部数据进行维护操作;2)教师对于自己相关的部分数据实体进行操作;3)学生作为查询者对数据实体进行查询操作。

现在的学生成绩管理系统基本上能做到这几个方面的要求,但多数系统在功能上依然存在缺陷和不足,尤其是在用户界面的友好性以及查询结果的可视化方面存在着很大的问题。

二、系统功能需求:我们的系统需要实现的功能主要包括以下几个方面:1、设计不同用户的操作权限和登录方法;2、管理员可以添加、修改和查询学生的档案记录,同时可以添加、修改和查询学生的成绩记录,有对学生成绩信息开放度的管理权;3、管理员对学生的档案和成绩进行审查,生成学生的档案记录报表和学生成绩报表;4、教师可以查询所授课程的学生信息,可以录入并查询所授课程的成绩;5、学生有查询个人档案信息和成绩信息的权利;满足上述要求的系统应该包括以下几个模块:基本数据维护功能;数据库管理功能;基本业务功能。

基本数据的维护功能添加学生的档案信息修改学生的档案信息删除学生的档案信息删除学生的成绩信息修改学生的成绩信息添加学生的成绩信息查询结果的可视化管理三、数据需求(1)学生信息包括:学号、学生姓名、性别、出生日期、所在学院、专业、班级等。

(2)课程信息包括:课程编号、课程名称、所属专业等。

(3)选课信息包括:学生姓名、课程名称、开课时间、成绩等。

一、基本数据维护功能1、添加学生的档案信息。

2、修改学生的档案信息。

3、删除学生的档案信息。

4、添加学生的成绩信息。

5、修改学生的成绩信息。

6、删除学生的成绩信息。

7、查询结果的可视化管理。

描述图如下:二、数据库管理功能1、档案和成绩信息管理。

2、帐户信息管理。

3、档案和成绩信息查看管理。

三、基本业务功能1、查看档案信息和成绩信息。

2、添加成绩信息。

2、设计完成《学生成绩管理系统》的数据库ER图3、编写《学生成绩管理系统》数据库设计文档----见附件三《学生成绩管理系统》数据库设计文档(共七张表)表名用户信息数据字段数据类型用户id integer(主键)密码Varchar2用户类型枚举(学生,老师,管理员)姓名Varchar2性别Varchar2生日Varchar2专业Integer(外键)表名选课信息选课id integer(主键)学生学号integer(外键)课程号integer(外键)开课时间Varchar2表名课程信息课程id integer(主键)课程名Varchar2所属专业integer(外键)表名专业信息专业id integer(主键)专业名Varchar2选课id integer(外键)表名成绩信息成绩id integer(主键)选课号Integer(外键)成绩分数float表名班级信息班级id integer(主键)班级名Varchar2所属专业Integer(外键)表名授课信息授课id Integer(主键)老师id Integer(外键)课程号Integer(外键)4、编写《学生成绩管理系统》的Oracle数据库SQL脚本------见stu_admin.sqlcreate table t_user --1 没有找到合适的工具导出,矮油......(user_id number not null primary key,user_pass varchar2(30),user_type varchar2(5),user_name varchar2(10),sex varchar2(3) default '男',birthday varchar2(21),profession number);create table t_profession --2(pro_id number not null primary key,pro_name varchar2(15),select_id number);alter table t_user --3,1中profession number --REFERENCES t_profession(pro_id) add constraint fk_pro foreign key(profession) references t_profession(pro_id);create table t_selection--4(select_id number not null primary key,stu_id number, --references t_user(user_id),course_id number, --references t_course(course_id),start_time varchar2(21));alter table t_profession --5 ,,2中select_id number --references t_selection(select_id) add constraint fk_pro_1 foreign key(select_id) references t_selection(select_id);create table t_course --6(course_id number not null primary key,course_name varchar(10) ,profession_id number references t_profession(pro_id));alter table t_selection --7 ,,4中stu_id number, --references t_selection(select_id), add constraint fk_pro_2 foreign key(stu_id) references t_user(user_id);alter table t_selection --8 ,,4中course_id number, --references t_selection(select_id), add constraint fk_pro_3 foreign key(course_id) references t_course(course_id);create table t_education --9(edu_id number not null primary key,teacher_id number references t_user(user_id),course_id number references t_course(course_id));create table t_grade --10(grade_id number not null primary key,select_id number references t_selection(select_id),score number(4,2));create table t_class_info--11(class_id number not null primary key,class_name varchar2(10),profession_id number references t_profession(pro_id));5、编写《学生成绩管理系统》的Oracle数据PL/SQL程序----见 pl_sql.sql--------------------------------以下仅以t_user表为例,其他表是类似的-----------------------------------------------------------------序列+触发器作为字段自增的工具----------------------------------create sequence sequence_1increment by 1start with 1maxvalue 1000000000nocachenocycle;create or replace trigger user_insertbefore insert on t_userfor each rowdeclaretable_id number;beginselect sequence_1.nextval into table_id from sys.dual;:er_id = table_id;end;---------------------------------------游标(查找user_id之后的用户的姓名)-------------------------------------declarecursor user_cursor(user_id number) isselect user_name from t_user where user_id = user_id;user_rec user_cursor%rowtype;beginopen user_cursor('&user_id');loopfetch user_cursor into user_rec;exit when user_cursor%notfound;dbms_output.put_line('user_name'||user_er_name);end loop;close user_cursor;end;------------------------------------- 创建函数查学生平均成绩------------------------------- create or replace function aval_grade(user_id in t_er_id%type)return number(4,2)is stu_grade t_grade.score%type := 0;beginselect aval(grade) into stu_gradefrom t_grade t_a, t_selection t_bwhere t_a.select_id = t_b.select_id and t_b.stu_id = user_id;return stu_grade;end get_sal;variable stu_id number(4,2)execute :stu_id := aval_grade(34)print ||'平均成绩是:'|| stu_id;6、在Oracle数据库服务器中执行SQL脚本和PL/SQL程序,创建《学生成绩管理系统》数据库。

相关文档
最新文档