学生成绩管理系统实验报告书
- 格式:doc
- 大小:417.80 KB
- 文档页数:10
高校成绩管理系统数据库设计与实现班级计科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语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的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",#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简要说明软件测试是软件开发时期的最后一个阶段,也是软件质量和可靠性保证中至关重要的一个环节。
软件测试的基本任务是经过在计算机上执行程序,暴露出程序潜在的错误,以便进行纠错,从而保证程序的可靠运行,降低软件的风险。
所谓测试用例,就是意发现错误为目的而精心设计的一组测试数据。
云南财经大学本科实践报告课程管理信息系统班级信计14-1学生姓名任课教师日期一、需求分析学生信息的管理,包括了队在校学生的基本信息,开设的课程信息,考试完成后的成绩信息的录入,查询,修改和删除等各项工作。
它是学校管理工作中的一项重要的内容。
随着信息技术的发展,越来越多的高校开始使用自己开发的学生信息管理系统,以便对本校的学生信息进行管理,并在自行开发的系统中,添加一些符合自己学校特色的功能。
如前面所诉,为了让同学们更快地将所学知识运用到实践。
本系统利用VB+Access,开发了一个简单的学生成绩管理系统。
二、数据库设计下面的界面为数据库所需设计的图:三、总体设计总体设计为;1.用户管理:可以进行添加用户,修改用户密码和退出系统。
2.学生信息管理:可以继续学生信息的查询、修改、添加和删除。
3.学生成绩管理:可以继续学生成绩的查询、修改、添加和删除。
学生成绩管理系统功能模块如图:四、详细设计1.界面设计如图;进入的主界面如图:代码设计:登录窗体代码:Private Sub Command1_Click()Dim SQL As StringDim RS_LOGIN As New ADODB.RecordsetIf Trim(Text1.Text) = "" Or Trim(Text2.Text) = "" ThenMsgBox "输入的用户或者密码不能为空,请重新输入!", vbOKOnly + vbExclamationText1.SetFocusElseSQL = "SELECT*FROM USERINFO WHERE USERNAME ='" & Text1.Text & "'"RS_LOGIN.Open SQL, CONN, adOpenKeyset, adLockPessimisticIf RS_LOGIN.EOF = True ThenMsgBox "系统没有该用户,请重新输入!", vbOKOnly + vbExclamationText1.SetFocusElseIf Trim(Text2.Text) = Trim(RS_LOGIN.Fields(1)) ThenUSERNAME = Trim(Text1.Text)Unload MeMDIForm1.ShowElseMsgBox "输入用户密码有误,请重新输入!", vbOKOnly + vbExclamationText2.Text = ""Text2.SetFocusEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim CONNECTIONSTRING As StringCONNECTIONSTRING = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;" & _"DATA SOURCE=.\STUREPORT.MDB"CONN.Open CONNECTIONSTRINGEnd Sub下面是主窗体的代码:Private Sub Menubjxscj_Click()Form9.ShowEnd SubPrivate Sub Menubjxsxx_Click() Form6.ShowEnd SubPrivate Sub Menuczxscj_Click() Form10.ShowEnd SubPrivate Sub Menuczxsxx_Click() Form7.ShowEnd SubPrivate Sub Menuscyh_Click() Form3.ShowEnd SubPrivate Sub Menutcxt_Click() EndEnd SubPrivate Sub Menutjxscj_Click() Form8.ShowEnd SubPrivate Sub Menutjxsxx_Click() Form5.ShowEnd SubPrivate Sub Menutjyh_Click() Form2.ShowEnd SubPrivate Sub Menuxgmm_Click() Form4.ShowEnd SubPrivate Sub Menuzx_Click() CONN.CloseForm1.ShowMDIForm1.HideEnd Sub运行如图:2.用户管理界面:添加用户如图:代码:Private Sub Command1_Click()Dim SQL As String'DIM RS_CHECK AS NEW ADODB.RECORDSETDim RS_NEW As New ADODB.RecordsetIf Trim(Text1.Text) = "" Or Trim(Text2.Text) = "" Or Trim(Text3.Text) = "" Then MsgBox "新的用户名,密码和确认密码不能为空!", vbOKOnly + vbExclamationText2.Text = ""Text3.Text = ""Text1.SetFocusExit SubElseIf Trim(Text2.Text) <> Trim(Text3.Text) ThenMsgBox "密码和确认密码不一致,请重新输入!", vbOKOnly + vbExclamationText2.Text = ""Text3.Text = ""Text2.SetFocusExit SubElseSQL = "SELECT*FROM USERINFO WHERE USERNAME='" & Text1.Text & "'"RS_NEW.Open SQL, CONN, adOpenKeyset, adLockPessimisticWhile (RS_NEW.EOF = False)If Trim(RS_NEW.Fields(0)) = Trim(Text1.Text) ThenMsgBox "该用户已经存在,请重新输入!", vbOKOnly + vbExclamationText1.Text = ""Text2.Text = ""Text3.Text = ""Text1.SetFocusExit SubElseRS_NEW.MoveNextEnd IfWendRS_NEW.AddNewRS_NEW.Fields(0) = Trim(Text1.Text)RS_NEW.Fields(1) = Trim(Text2.Text)RS_NEW.UpdateRS_NEW.CloseMsgBox "新用户已经添加成功,请确认返回!", vbOKOnly + vbExclamationUnload MeEnd IfEnd IfEnd Sub删除用户:运行如图代码如下:Private Sub Command1_Click()Adodc1.Recordset.DeleteAdodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveNext End SubPrivate Sub Command2_Click()Form3.HideEnd Sub修改用户密码:运行如图代码如下:Private Sub Command1_Click()Dim SQL As StringDim RS_CHANGE As New ADODB.RecordsetIf Trim(Text1.Text) = "" Or Trim(Text2.Text) = "" Or Trim(Text3.Text) = "" Then MsgBox "旧密码,新密码和确认密码不能为空,请重新输入!", vbOKOnly + vbExclamationText1.Text = ""Text2.Text = ""Text3.Text = ""Text1.SetFocusExit SubElseIf Trim(Text2.Text) <> Trim(Text3.Text) ThenMsgBox "密码和确认密码不一致,请重新输入!", vbOKOnly + vbExclamation Text2.Text = ""Text3.Text = ""Text2.SetFocusExit SubElseSQL = "SELECT*FROM USERINFO WHERE USERNAME='" & USERNAME & "'"RS_CHANGE.Open SQL, CONN, adOpenKeyset, adLockPessimisticIf Trim(RS_CHANGE.Fields(1)) <> Trim(Text1.Text) ThenMsgBox "旧密码不正确,请重新输入!", vbOKOnly + vbExclamationText1.Text = ""Text1.SetFocusExit SubElseRS_CHANGE.Fields(1) = Trim(Text2.Text)RS_CHANGE.UpdateRS_CHANGE.CloseMsgBox "密码修改成功,请牢记您的密码!", vbOKOnly + vbExclamation, ""Unload MeEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub3.学生信息管理界面:学生信息的添加:运行如图代码如下:Private Sub Combo1_Click()Combo2.ClearDim SQL2 As StringDim RS2 As New ADODB.RecordsetSQL2 = "SELECT DISTINCT CLASS FROM STUINFO WHERE SPECIALTY='" & Trim(Combo1.Text) & "'"RS2.Open SQL2, CONN, adOpenKeyset, adLockPessimisticDim RECORD As StringFor I = 0 To Val(RS2.RecordCount) - 1RECORD = Trim(RS2.Fields(0).Value)RS2.MoveNextCombo2.AddItem RECORDNext IRS2.CloseEnd SubPrivate Sub Command1_Click()Combo1.Enabled = TrueCombo2.Enabled = TrueCombo3.Enabled = TrueText1.Enabled = TrueText2.Enabled = TrueText3.Enabled = TrueText1.Text = ""Text2.Text = ""Text3.Text = ""Command3.Enabled = TrueCommand1.Enabled = FalseDim SQL1 As StringDim RS1 As New ADODB.RecordsetSQL1 = "SELECT DISTINCT SPECIALTY FROM STUINFO"RS1.Open SQL1, CONN, adOpenKeyset, adLockPessimisticDim RECORD As StringFor I = 0 To Val(RS1.RecordCount) - 1RECORD = Trim(RS1.Fields(0).Value)RS1.MoveNextCombo1.AddItem RECORDNext IRS1.CloseEnd SubPrivate Sub Command2_Click()Form5.HideEnd SubPrivate Sub Command3_Click()If Combo1.Text = "" Or Combo2.Text = "" Or Combo3.Text = "" Or Text1.Text = "" Or _Text2.Text = "" Or Text3.Text = "" ThenMsgBox "学生各项信息不能为空,请返回重新输入!", vbOKOnly + vbCriticalElseDim SQL As StringDim RS As New ADODB.RecordsetSQL = "SELECT*FROM StuInfo WHERE STUNO='" & Trim(Text1.Text) & _"'AND specialty='" & Trim(Combo1.Text) & "'"RS.Open SQL, CONN, adOpenDynamic, adLockPessimisticIf RS.EOF = False ThenMsgBox "该学生信息已经录入,请输入其他学生信息!", vbOKOnly + vbCriticalText1.Text = ""Text1.SetFocusElseRS.AddNewRS.Fields("SPECIALTY") = Trim(Combo1.Text)RS.Fields("CLASS") = Trim(Combo2.Text)RS.Fields("STUNO") = Trim(Text1.Text)RS.Fields("NAME") = Trim(Text2.Text)RS.Fields("TEL") = Trim(Text3.Text)RS.Fields("SEX") = Trim(Combo3.Text)RS.UpdateRS.CloseMsgBox "学生信息添加成功!", vbOKOnly + vbInformation Command1.Enabled = TrueCommand3.Enabled = FalseCombo1.Enabled = FalseCombo2.Enabled = FalseCombo3.Enabled = FalseText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseEnd IfEnd IfEnd SubPrivate Sub Form_Load()Combo3.AddItem "男"Combo3.AddItem "女"Combo1.AddItem "计算机应用技术"Combo1.AddItem "办公自动化"End Sub学生信息的编辑(包括删除、修改):运行如图代码如下:Private Sub Command1_Click()Adodc1.Recordset.MoveFirstEnd SubPrivate Sub Command2_Click()Adodc1.Recordset.MovePrevious Command2.Enabled = TrueCommand3.Enabled = TrueIf Adodc1.Recordset.BOF ThenAdodc1.Recordset.MoveFirst Command2.Enabled = FalseCommand3.Enabled = TrueEnd IfEnd SubPrivate Sub Command3_Click()Adodc1.Recordset.MoveNext Command2.Enabled = TrueCommand3.Enabled = TrueIf Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveLast Command3.Enabled = FalseCommand2.Enabled = TrueEnd IfEnd SubPrivate Sub Command4_Click()Adodc1.Recordset.MoveLastEnd SubPrivate Sub Command5_Click()If Command5.Caption = "修改记录" Then Command5.Caption = "保存记录" Command1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = FalseCommand4.Enabled = FalseText1.Enabled = TrueText2.Enabled = TrueText3.Enabled = TrueText5.Enabled = TrueText4.Enabled = TrueText6.Enabled = TrueText1.SetFocusElseCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = TrueText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseText5.Enabled = FalseText4.Enabled = FalseText6.Enabled = FalseAdodc1.Recordset.UpdateCommand5.Caption = "修改记录"End IfEnd SubPrivate Sub Command6_Click()Adodc1.Recordset.DeleteAdodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveNext End SubPrivate Sub Command7_Click()Form7.ShowEnd SubPrivate Sub Command8_Click()Unload MeEnd Sub学生信息的查询:运行如图代码如下:Private Sub Command1_Click()If Combo1.Text = "no" ThenAdodc1.RecordSource = "select * from stuinfo where stuNo='" & Trim(Text1.Text) & "'"Adodc1.RefreshExit SubElseIf Combo1.Text = "name" ThenAdodc1.RecordSource = "select * from stuinfo where name='" & Trim(Text1.Text) & "'"Adodc1.RefreshExit SubElseIf Combo1.Text = "sex" ThenAdodc1.RecordSource = "select * from stuinfo where sex= '" & Trim(Text1.Text) & "'"Adodc1.RefreshExit SubElseIf Combo1.Text = "tel" ThenAdodc1.RecordSource = "select * from stuinfo where tel like '%" & Trim(Text1.Text) & "%'"Adodc1.RefreshExit SubElseIf Combo1.Text = "specialty" ThenAdodc1.RecordSource = "select * from stuinfo where specialty like '%" & Trim(Text1.Text) & "%'"Adodc1.RefreshExit SubElseIf Combo1.Text = "class" ThenAdodc1.RecordSource = "select * from stuinfo where class like '%" & Trim(Text1.Text) & "%'"Adodc1.RefreshExit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Combo1.AddItem "No"Combo1.AddItem "Name"Combo1.AddItem "Sex"Combo1.AddItem "Tel"Combo1.AddItem "Specialty"Combo1.AddItem "Class"End Sub4.学生成绩的管理界面学生成绩的添加:运行如图代码如下:Private Sub Command1_Click()Combo1.Enabled = TrueCombo2.Enabled = TrueCombo3.Enabled = TrueText1.Enabled = TrueText2.Enabled = TrueText3.Enabled = TrueText1.Text = ""Text2.Text = ""Text3.Text = ""Command3.Enabled = TrueCommand1.Enabled = FalseDim SQL1 As StringDim RS1 As New ADODB.RecordsetSQL1 = "SELECT DISTINCT SPECIALTY FROM STUINFO"RS1.Open SQL1, CONN, adOpenKeyset, adLockPessimisticDim RECORD As StringFor I = 0 To Val(RS1.RecordCount) - 1RECORD = Trim(RS1.Fields(0).Value)RS1.MoveNextCombo1.AddItem RECORDNext IRS1.CloseEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Command3_Click()If Combo1.Text = "" Or Combo2.Text = "" Or Combo3.Text = "" Or Text1.Text = "" Or _Text2.Text = "" Or Text3.Text = "" ThenMsgBox "学生各项情况不能为空,请返回重新输入!", vbOKOnly + vbCriticalCombo1.SetFocusElseIf IsNumeric(Trim(Text2.Text)) = False ThenMsgBox "课程成绩必须为数字!", vbOKOnly + vbCriticalText2.Text = ""Text2.SetFocusElseDim SQL As StringDim RS As New ADODB.RecordsetSQL = "SELECT*FROM SUBINFO WHERE STUNO='" & Trim(Combo3.Text) & _"'AND SUBJECT='" & Trim(Text1.Text) & "'"RS.Open SQL, CONN, adOpenDynamic, adLockPessimisticIf RS.EOF = False ThenMsgBox "该学生的该课程成绩已经录入,请输入其他科目成绩!", vbOKOnly + vbCriticalText1.Text = ""Text1.SetFocusElseRS.AddNewRS.Fields("SPECIALTY") = Trim(Combo1.Text)RS.Fields("CLASS") = Trim(Combo2.Text)RS.Fields("STUNO") = Trim(Combo3.Text)RS.Fields("NAME") = Trim(Text3.Text)RS.Fields("SUBJECT") = Trim(Text1.Text)RS.Fields("SCORE") = Trim(Text2.Text)RS.UpdateRS.CloseMsgBox "学生成绩添加成功!", vbOKOnly + vbInformationCommand1.Enabled = TrueCommand3.Enabled = FalseCombo1.Enabled = FalseCombo2.Enabled = FalseCombo3.Enabled = FalseText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseEnd IfEnd IfEnd SubPrivate Sub Form_Load()Combo1.Enabled = FalseCombo2.Enabled = FalseCombo3.Enabled = FalseText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseCommand3.Enabled = FalseEnd Sub学生成绩的编辑(包括修改、删除):运行如图代码如下:Private Sub Command1_Click()Adodc1.Recordset.MoveFirstEnd SubPrivate Sub Command10_Click()Unload MeEnd SubPrivate Sub Command2_Click()Adodc1.Recordset.MovePrevious Command2.Enabled = True Command3.Enabled = TrueIf Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst Command2.Enabled = False Command3.Enabled = TrueEnd IfEnd SubPrivate Sub Command3_Click() Adodc1.Recordset.MoveNext Command2.Enabled = True Command3.Enabled = TrueIf Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast Command3.Enabled = False Command2.Enabled = TrueEnd IfEnd SubPrivate Sub Command4_Click() Adodc1.Recordset.MoveLast End SubPrivate Sub Command5_Click() Form7.ShowEnd SubPrivate Sub Command6_Click() mcclean = FalseCommand1.Enabled = False Command2.Enabled = False Command3.Enabled = False Command4.Enabled = False Command5.Enabled = False Command6.Enabled = False Command7.Enabled = True Text1.Enabled = TrueText2.Enabled = TrueText3.Enabled = TrueText5.Enabled = TrueText4.Enabled = TrueText6.Enabled = TrueEnd SubPrivate Sub Command7_Click()Adodc1.Recordset.UpdateCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = TrueCommand5.Enabled = TrueCommand6.Enabled = TrueCommand7.Enabled = FalseText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseText5.Enabled = FalseText4.Enabled = FalseText6.Enabled = FalseEnd SubPrivate Sub Command8_Click()Adodc1.Recordset.DeleteAdodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveNext End SubPrivate Sub Command9_Click()Form10.ShowEnd SubPrivate Sub Form_Load()Text1.Enabled = flaseText2.Enabled = flaseText3.Enabled = flaseText5.Enabled = flaseText4.Enabled = flaseText6.Enabled = flaseEnd Sub学生成绩的查询:运行如图代码如下:Private Sub Command1_Click()If Combo1.Text = "no" ThenAdodc1.RecordSource = "select * from stuinfo where stuNo='" &Trim(Text1.Text) & "'"Adodc1.RefreshExit SubElseIf Combo1.Text = "name" ThenAdodc1.RecordSource = "select * from stuinfo where name='" & Trim(Text1.Text) & "'"Adodc1.RefreshExit SubElseIf Combo1.Text = "sex" ThenAdodc1.RecordSource = "select * from stuinfo where sex= '" & Trim(Text1.Text) & "'"Adodc1.RefreshExit SubElseIf Combo1.Text = "tel" ThenAdodc1.RecordSource = "select * from stuinfo where tel like '%" & Trim(Text1.Text) & "%'"Adodc1.RefreshExit SubElseIf Combo1.Text = "specialty" ThenAdodc1.RecordSource = "select * from stuinfo where specialty like '%" & Trim(Text1.Text) & "%'"Adodc1.RefreshExit SubElseIf Combo1.Text = "class" ThenAdodc1.RecordSource = "select * from stuinfo where class like '%" & Trim(Text1.Text) & "%'"Adodc1.RefreshExit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Combo1.AddItem "No"Combo1.AddItem "Name"Combo1.AddItem "Sex"Combo1.AddItem "Tel"Combo1.AddItem "Specialty"Combo1.AddItem "Class"End Sub5.最后还需弄一个Modulel模块。
洛阳理工学院课程设计报告课程名称数据库课程设计设计题目学生成绩查询系统专业计算机科学与技术班级 B100506 学号姓名孙帅杰完成日期2013年1月6号课程设计任务书设计题目:学生成绩管理系统设计内容与要求:设计内容:教务员可以输入学生、教师、班级、课程信息,一个班级只属于一个专业,一个学生只属于一个班级。
教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师。
一个教师可以教授多个班的多门课程。
教师可以查看学习该课程的学生名单。
课程结束后,教师可以录入课程成绩。
课程分两类,必修课和选修课。
学生可以选修课程,每学期几门。
学生可以查看自己各门课程的成绩。
学生还可以进行评教,给老师打分。
系统管理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。
设计要求:要求完成需求分析,写出功能需求和数据需求描述;在需求分析的基础上完成数据库的概念结构设计、逻辑结构设计、物理结构设计;用C#语言,完成管理系统的部分程序模块的界面设计。
指导教师:陶荣2012年12月28日课程设计评语成绩:指导教师:年月日目录1.绪论 (1)1.1 设计目的 (1)1.2 开发工具选择 (1)1.3 开发环境 (1)1.4 本报告的主要内容 (1)2.需求分析 (1)2.1 需求分析的任务 (2)2.2 功能需求 (2)2.3 数据需求 (3)3.总体设计 (3)3.1设计概述 (3)3.2系统总体结构及功能模块划分 (3)3.3系统数据库概念结构设计 (4)3.4 逻辑结构设计 (5)4.主程序设计 (7)4.1 登录模块 (7)4.2 学生信息查询、保存、及修改 (8)4.3 用户管理 (10)5.设计总结 (11)6.心得体会 (12)参考文献 (12)1.绪论1.1 设计目的随着学生的数量的日益增多,学校对学生成绩管理的要求也越来越高,因此学校对学生信息的管理也更系统化,数字化,为了提高学生的实际应用数据库的能力,使学生锻炼简单的数据库开发能力,因此决定设计一个简单的学生成绩管理系统,包括学生信息,课程信息,以及成绩信息和任课教师信息,能够存储相应学生评教信息,和课程安排提供的学生成绩管理各种功能分为面向学生,教师和教务员三部分,其中教务员可以录入学生,教师,班级,课程信息,每个专业、每个班级需要学习哪些课程,指定课程的任课教师,给每个班的每门课程安排指定的认课老师。
实验五《学生成绩管理系统》数据库设计实验报告一、实验目的运用了数据库原理和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程序,创建《学生成绩管理系统》数据库。