实验7-数组学生成绩管理系统v1.0汇编
- 格式:doc
- 大小:23.00 KB
- 文档页数:5
数据库系统原理实验报告实验名称学生成绩管理系统院系计算机与信息工程学院班级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、执行学生信息更新(对已有的学生信息进行修改)的结果:三、单击“学生成绩录入”学生成绩录入结果如下:。
学生成绩管理系统一、实验题目设计学生成绩管理程序(3门课程),实现以下功能:1.各科成绩的录入、修改和删除(10个学生,每人3门成绩,分别按学生存放。
即学生编号*,语文成绩*,语文成绩名次,数学成绩*,数学成绩名次,英语成绩*,英语成绩名次,后面的三个单元存放该生总成绩、名次、平均成绩)带*号的为录入值2.排序:(1)单科课程成绩排序(分数从高到低):结果放到每门成绩之后的名次单元中(2)总成绩排序(分数从高到低):结果放到每个学生后面的名次单元中3查找:(1)查询某位同学某课程成绩及名次;总成绩及名次.(2)查询单科课程不及格同学4.统计:(1)单科平均分(2)总成绩平均分(3)单科各分数段人数(60以下,60~70,70~80,80~90,90~100)二、设计思路1.数据定义。
每个学生记录由学生编号,语文成绩,语文成绩名次,数学成绩,数学成绩名次,英语成绩,英语成绩名次,总成绩、名次、平均成绩组成。
其它数据,单科平均成绩,总成绩平均分,单科各分数段人数。
学生编号=0 {数字字符串} 5成绩=0 {数字字符串} 3名次=1 {数字字符串} 2分数段人数=5 { 数字字符串}5索引表元素=无符号双字节数所有成绩数据,语文成绩、数字成绩、英语成绩、总成绩、平均成绩,均采用上述成绩的定义;所有名次数据,均采用上述名次定义。
2.数据存储。
所有数据存储于文件中。
每条学生记录占用70个字节,实际有效字节为24字节,记录最后两个字节是回车换行符,其余字节为空字符,学生记录从第0个字节开始存储。
第1000个字节开始用以存储索引表。
单科平均成绩,总成绩平均分,单科各分数段人数存储在所有学生记录之后的单元中。
成绩数据,占用三个字节,排名数据占用两个字节,学号数据占用五个字节,各科分数段人数占用五个字节,有效字节不足时,在其后补上空字符,即0,如,成绩100存储为31H,30H,30H;90存为39H,30H,00H。
《Java高级编程》课程报告学生成绩管理系统小组成员及分工一、实验环境操作系统:Windows7编程环境:Eclipse二、实验内容与完成情况1.登录用户(1)登录用户:有3种不同的方式登录,管理员登录、教师登录和学生。
每个用户都有自己的账号和密码,通过输入账号和密码来登录,输入账号和密码后会检查是否合理,即账号只能由数学组成,密码只能数字和字母组成,否则会提示错误登录不成功;然后再查找数据库,如果找到匹配的账号和密码,就登录成功,否则登录不成功。
登录成功后会添加相应的功能,管理员可以增删改查学生,教师可以修改和查找学生,学生只能查找学生。
(2)流程图:(3)代码:String s1 = textField.getText();String s2 = passwordField.getText();StudentDao dao = new StudentDao();boolean result = false;if(radioButton.isSelected()==true){ //管理员登录result = dao.seachadministrators(s1, s2);if(result){ //登录成功menuEdit.removeAll();menuEdit.add(AddItem);menuEdit.add(SDEItem);}}else if(radioButton_1.isSelected()==true){ //教师登录result = dao.seachteacher(s1, s2);if(result){ //登录成功menuEdit.removeAll();SDEItem.setText("改查学生");menuEdit.add(SDEItem);}}else if(radioButton_2.isSelected()==true){ //学生登录result = dao.seachstudent(s1, s2);if(result){ //登录成功menuEdit.removeAll();SDEItem.setText("查找学生");menuEdit.add(SDEItem);}}2.增加学生(1)增加学生:输入学生姓名、学号、性别、班别、成绩等信息,判断输入的信息是否为空,如果为空提示错误(如姓名为空,就提示姓名不能为空,其他的一样),增加学生失败。
C语言学生学习成绩管理系统实验报告学生学习成绩管理系统1.课程设计的目的1.对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
2.掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
3.熟练掌握C语言的基本语法,灵活运用各种数据类型.4.进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
2。
课程设计的要求1.程序在运行时,均以菜单形式提供选择界面,并提供一定的数据安全和提示具有良好的交互功能。
2.设计中的每一个小功能均由子函数来完成3.提前编制下次调试的程序,对于难点问题要积极查阅相关教材、资料,计划好每次上机的内 ,高效、独立地完成这次设计任务4.在硬盘上建立自己的目录,将程序文件存储到该目录下,即有利于调试文件,又保证了文件的安全性. 3.课程设计报告内容 3.1任务定义本系统主要应用数据结构的设计思想,在TC环境下运用C语言进行编程设计一个学生成绩管理系统,该系统主要实现对学生的学号、姓名等自然信息以及学生成绩信息进行创建、增加、删除、查询、插入、显示的功能以及计算所有学生总成绩的总分,并依照学生各类信息高低进行排名的功能。
系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
3。
2系统运行环境操作系统:Windows 98/2000/XP 运行软件:TC3。
3功能需求(问题分析)学生成绩管理系统为教师和学生提供了一个对学生自然信息和学科成绩进行管理和查看的平台,给用户提供了一个简单友好的用户接口,功能需求分析描(1)编写菜单函数,为用户提供一个友好的操作选择界面。
(2)学生信息输入:用户根据提示输入学生的学号、姓名、各科成绩,可一次性输入多条学生的成绩信息记录;当要停止输入并退回主菜单时,只须输入0符号回车即可。
(4)学生信息删除:提示用户输入要删除的学生学号或姓名,如果输入的学号不存在,系统会立即提示不存在该学号的学生请先添加。
汇编课程设计成绩管理系统一、课程目标知识目标:1. 理解汇编语言的基本概念,掌握汇编指令的使用方法。
2. 学会使用汇编语言进行程序设计,实现简单的成绩管理系统。
3. 了解计算机内存管理的基本原理,理解汇编语言在内存操作中的应用。
技能目标:1. 能够运用汇编语言编写简单的程序,实现数据的存储和查询功能。
2. 掌握使用汇编语言进行条件判断和循环操作的方法,实现成绩管理系统的逻辑功能。
3. 学会使用调试工具对汇编程序进行调试,解决程序中的错误。
情感态度价值观目标:1. 培养学生良好的编程习惯,注重代码的结构和可读性。
2. 增强学生的团队合作意识,学会在项目开发中分工与协作。
3. 激发学生对计算机硬件和底层编程的兴趣,提高学生的计算机素养。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程属于计算机科学与技术领域,以汇编语言为核心,结合成绩管理系统实例,培养学生的编程能力和计算机硬件理解。
2. 学生特点:学生已具备一定的计算机基础知识和编程能力,对汇编语言有初步了解,但实际应用能力有待提高。
3. 教学要求:注重理论与实践相结合,以项目为导向,培养学生的实际操作能力和团队协作能力。
二、教学内容1. 汇编语言基础知识:- 汇编语言概述:了解汇编语言的发展历程,认识汇编语言与机器语言的关系。
- 汇编指令系统:掌握汇编指令的分类、格式及功能,学会使用常用汇编指令。
2. 程序设计方法:- 数据表示:学习数据在汇编语言中的表示方法,掌握各种数据类型的使用。
- 流程控制:了解汇编语言中的条件判断和循环结构,学会编写分支和循环程序。
- 子程序设计:掌握子程序的编写和调用方法,提高代码复用性。
3. 内存管理:- 内存分配与使用:了解内存空间分配方法,掌握汇编语言在内存操作中的应用。
- 数据存储:学习如何在内存中存储和访问数据,实现成绩管理系统中的数据结构。
4. 成绩管理系统项目实践:- 功能模块设计:明确成绩管理系统的需求,划分功能模块,进行模块化设计。
实验六学生成绩管理系统设计实验一、实验目的1、熟悉汇编语言程序结构;2、熟悉INT 21H的文件操作功能调用;3、熟悉INT 21H的1、9号功能和INT 10H常用功能的使用方法;4、掌握多子程序复杂问题程序设计方法;5、掌握利用汇编语言实现字符串的输入输出程序设计方法;6、了解多模块程序设计方法。
二、实验原理我们把可以多次调用、具有通用性、能完成特定功能的程序段编写成的独立程序模块称为子程序。
子程序是把一个程序划分成若干模块所用的主要手段,它便于独立设计、测试程序和编制程序文件。
三、实验内容1、实验要求设计一个学生成绩管理系统,要求完成文件建立、学生成绩录入、显示指定学号的学生记录、删除一个学生的记录、修改学生记录、返回等工作。
学生成绩包括学号(XH)、姓名(XM)、数学(SX)、语文(YW)、外语(WY)字段。
至少包括30名学生信息,每名学生学号字段为4个字符,姓名字段为15个字符(最大),每门成绩字段为3个字符(最大)。
程序设计步骤如下:1、编写主程序main.asm;2、编写文件创建子程序create,实现在指定盘指定文件夹“d:\chengji\2009\”下建立一个指定名称的文件2009doc.dat;3、编写成绩录入子程序append,实现在指定文件尾部插入一个学生的成绩记录;4、编写显示子程序display,实现按指定学号显示一个学生的记录;5、编写修改子程序modify,实现按指定学号修改一个学生的记录字段(不需修改直接回车);6、编写删除子程序,实现按指定学号、姓名删除一个学生的记录;7、编译、链接、调试,产生可执行文件main.exe。
2、程序流程图3、程序代码程序代码如下:DATAS SEGMENTMSG1 DB '1. Append a record$'MSG2 DB '2. Display a record$'MSG3 DB '3. Modify a record$'MSG4 DB '4. Delete a record$'MSG5 DB '5. Create file$'MSG6 DB '6. Return DOS$'MSGC DB 'Please input 1--6:$'MSGE DB 'Error!$'MSGC1 DB 'Please input filename:$'MAXLEN DB 25ACTLEN DB ?STRING DB 25 DUP(?)MAXLEN1 DB 25ACTLEN1 DB ?STRING1 DB 25 DUP(?)PATHNM DB 'D:\chengji\2009\\',23 DUP(?)PATH DB 'D:\chengji\2009\2009doc.dat',00MSGA1 DB 'Please input XH:$'MSGA2 DB 'Please input XM:$'MSGA3 DB 'Please input SX:$'MSGA4 DB 'Please input YW:$'MSGA5 DB 'Please input WY:$'HANDLE DW ?MSGXH DB 'Xuehao: $'MSGXM DB 'Xingming: $'MSGSX DB 'Shuxue:$'MSGYW DB 'Yuwen: $'MSGWY DB 'Waiyu: $'BUFFER DB 2048 DUP(' ')MSGRT DB 'Press any key to return!$'DELSTR DB 33 DUP(' ') DATAS ENDSSTACKS SEGMENT STACKDB 256 DUP(?)STACKS ENDS CODES SEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;******************************** ;主程序MAIN PROC FARS:;清屏CALL CLS ;逐行输出提示信息MOV AH,02HMOV DH,9MOV DL,30INT 10HMOV AH,9LEA DX,MSG1INT 21HMOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSG2INT 21HMOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSG3INT 21HMOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSG4INT 21HMOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSG5INT 21HMOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSG6INT 21H;提示输入MOV AH,02HMOV DH,15MOV DL,30INT 10HMOV AH,9LEA DX,MSGCINT 21H;从键盘读入一个数字MOV AH,02HMOV DH,15MOV DL,48INT 10HMOV AH,1INT 21H;按数字对应子程序CMP AL,31HJZ CAPPENDCMP AL,32HJZ CDISPLAYCMP AL,33HJZ CMODIFYCMP AL,34HJZ CDELETECMP AL,35HJZ CCREATECMP AL,36HJZ E;若输入不是1-6数字,则提示错误MOV AH,02HMOV DH,16MOV DL,30INT 10HMOV AH,9LEA DX,MSGEINT 21HCCREATE:CALL CREATEJMP SCDELETE:CALL DELETEJMP SCMODIFY:CALL MODIFYJMP SCDISPLAY:CALL DISPLAYJMP SCAPPEND:CALL APPENDJMP SE:MOV AH,4CHINT 21HMAIN ENDP;******************************** ;CREATE程序CREATE PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;提示输入文件名MOV AH,2MOV DH,12MOV DL,20INT 10HMOV AH,9LEA DX,MSGC1INT 21H;从键盘读入文件名字符串MOV AH,0AHLEA DX,MAXLENINT 21H;将文件名字符串加到ASCIZ字符串末尾MOV CX,0MOV CL,ACTLENLEA SI,STRINGLEA DI,PATHNMADD DI,16LCREATE:MOV AL,BYTE PTR [SI]MOV [DI],ALINC DIINC SILOOP LCREATE;在ASCIZ字符串末尾加00MOV BYTE PTR [DI],0;按ASCIZ字符串创建文件MOV AH,3CHLEA DX,PATHNMMOV CX,0INT 21HPOP DIPOP SIPOP DXPOP CXPOP AXRETCREATE ENDP;******************************** ;APPEND程序APPEND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;打开文件(只写)MOV AH,3DHMOV AL,01HLEA DX,PATHINT 21HMOV HANDLE,AX;提示输入学号MOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSGA1INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,4CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入姓名MOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSGA2INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,15CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入语文成绩MOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSGA3INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入数学成绩MOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSGA4INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入外语成绩MOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSGA5INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;在字符串末尾加回车、换行INC SIMOV BYTE PTR [BX+SI],0DHINC SIMOV BYTE PTR [BX+SI],0AHADD ACTLEN,2;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETAPPEND ENDP;******************************** DISPLAY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(只读)MOV AH,3DHMOV AL,00HLEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ OUTPUT;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP DEND;显示对应信息OUTPUT:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HADD SI,5MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,12 MOV DL,28INT 10HMOV AH,9LEA DX,MSGYW INT 21HADD SI,16MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,13 MOV DL,28INT 10HMOV AH,9LEA DX,MSGSX INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,14 MOV DL,28INT 10HMOV AH,9LEA DX,MSGWY INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,2MOV DH,15MOV DL,28INT 10HMOV AH,9LEA DX,MSGRTINT 21HMOV AH,1INT 21HDEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDISPLAY ENDP;******************************** MODIFY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ REVISEXM;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP MEND;修改姓名REVISEXM:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DH ;若为回车,则将指针指向下一字段JNZ XMCONTADD SI,5JMP REVISEYWXMCONT:PUSH SIMOV DX,15CALL FILLPOP SIADD SI,5LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改语文成绩REVISEYW:MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGYWINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ YWCONTADD SI,16JMP REVISESXYWCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,16LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改数学成绩REVISESX:MOV AH,02HMOV DH,13MOV DL,28INT 10HMOV AH,9LEA DX,MSGSXINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ SXCONTADD SI,4JMP REVISEWYSXCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改外语成绩REVISEWY:MOV AH,02HMOV DH,14MOV DL,28INT 10HMOV AH,9LEA DX,MSGWYINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJZ MENDPUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21HMEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETMODIFY ENDP;******************************** ******************************** **************DELETE PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入姓名MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGA2INT 21H;读入姓名字符串MOV AH,0AHLEA DX,MAXLEN1INT 21H;提示输入学号MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGA1INT 21H;读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针指向开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;载入文件MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中搜索学号对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JNZ DELEND;比较该记录对应姓名是否与输入的相同PUSH SIADD SI,5LEA DI,STRING1MOV CX,0MOV CL,ACTLEN1MOV DX,0LCHECK:MOV AL,[SI]MOV AH,[DI]CMP AL,AHJZ LCONTIMOV DX,1JMP DELERRLCONTI:INC SIINC DILOOP LCHECKPOP SICMP DX,0JZ DEL;姓名不对应则提示错误DELERR:MOV AH,9LEA DX,MSGEINT 21HJMP DELENDDEL:;将文件指针定位至该记录开始处LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21H;将该记录覆盖为空格MOV AH,40HMOV BX,HANDLEMOV CX,33LEA DX,DELSTRINT 21HDELEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDELETE ENDP;******************************** ;清屏程序CLS PROC NEARPUSH AXPUSH BXPUSH CXPUSH DX;屏幕初始化MOV AH,6MOV AL,0MOV BH,7MOV CX,0MOV DX,2479HINT 10H;重定位光标MOV DX,0MOV AH,2INT 10HPOP DXPOP CXPOP BXPOP AXRETCLS ENDP;******************************** ;搜索程序;若找到对应记录,则将DX赋为0,并将SI指向该记录首地址;否则DX 赋为1。
学生成绩管理系统:V1.0编写一个菜单驱动的学生成绩管理程序。
实现如下管理功能:某班有最多不超过30人参加某门课程的考试,有一维数组作函数参数编程实现如下学生成绩管理系统。
具体要求如下:1)录入每个学生的学号和考试成绩2)计算课程的总分和平均分;3)按成绩由高到低排出名次;4)按学号由小到大排出成绩表;5)按学号查询学生排名及考试成绩;6)按优秀(90-100分)、良好、中等、及格、不及格5个类别,统计每个类别的人数以及所占的百分比;7)输出每个学生的学号、考试成绩以及课程总分和平均分。
目的:熟悉一维数组作函数参数,排序、查找、统计分析等常用算法以及模块化程序设计思想,增量测试方法。
输出菜单形式如下:Management for Students' scores1. 录入学生学号及成绩(append reord)2. 计算课程的总分和平均分(caculate total and average)3. 按成绩由高到低排出名次(sort in descending order by score)4. 按学号由小到大排出成绩表(sort in ascending order by number)5. 按学号查询学生排名及考试成绩(search by number)6. 统计分析(statistic analysis)7. 输出每个学生记录(list record)0. 退出(exit)Please Input your choice:然后根据用户输入的选项执行相应的操作学生成绩管理系统:V2.0在V1.0的基础上用一维数组和函数指针作函数参数实现菜单驱动的学生成绩管理系统。
功能如下:1. 录入学生学号及成绩2. 计算课程的总分和平均分3. 按成绩由高到低排出名次4. 按学号由小到大排出成绩表5. 按学号查询学生排名及考试成绩6. 统计分析7. 输出每个学生记录8.按成绩由低到高排出名次0. 退出输出菜单形式如下:Management for Students' scores1. append reord2. caculate total and average3. sort in descending order by score4. sort in ascending order by number5. search by number6. statistic analysis7. list record8. sort in ascending order by score0. 退出(exit)Please Input your choice:目的:在V1.0的基础上,通过增加任务,熟悉函数指针做函数参数、模块化程序设计以及增量测试方法。
课程实训说明书课程: C语言实训系部:专业班级:学号:姓名:指导教师:年月日目录1 项目一名称:学生成绩排名1.1 项目设计要求 (1)1.2 项目设计思路 (1)1.3 程序流程 (2)1.4 程序代码 (3)1.5 运行结果 (4)2 项目二名称:按条件实现学生成绩排名2.1 项目设计要求 (3)2.2 项目设计思路 (3)2.3 程序流程 (4)2.3 程序代码 (7)2.5 运行结果 (10)3 项目三名称:数组优化学生成绩排名3.1 项目设计要求 (11)3.2 项目设计思路 (11)3.3 程序流程 (12)3.3 程序代码 (13)3.5 运行结果 (14)4 项目四名称:学生成绩单制作4.1 项目设计要求 (15)4.2 项目设计思路 (15)4.3 程序流程 (16)4.3 程序代码 (17)4.5 运行结果 (21)5 项目五名称:学生成绩排序文件管理5.1 项目设计要求 (22)5.2 项目设计思路 (22)5.3 程序流程 (23)5.3 程序代码 (24)5.5 运行结果 (27)6 项目六名称:设计和编写学生成绩管理系统的系统主菜单6.1 项目设计要求 (28)6.2 项目设计思路 (28)6.3 程序流程 (29)6.3 程序代码 (30)6.5 运行结果 (32)7 项目七名称:学生成绩管理项目实现7.1 项目设计要求 (33)7.2 项目设计思路 (33)7.3 程序流程 (34)7.3 程序代码 (35)7.5 运行结果 (45)8课程设计总结 (49)9参考文献 (50)1 项目一名称:学生成绩排名1.1项目设计要求(1)熟悉变量、数组定义、使用、输入、输出等基本操作;(2)进行选择、循环结构程序设计练习;(3)掌握冒泡法排序的算法。
1.2项目设计思路(1)定义一个数组a[11],用以存放学生的成绩;(2)从键盘输入10个学生及成绩;(3)采用冒泡法,将学生成绩按照从高到低进行排序;(4)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组;(5)将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
实验7 数组--学生成绩管理系统V1.0
实验目的:
1. 熟悉一维数组编程
2. 掌握排序,查找,统计分析等常用方法
实验题目:
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组编程实现如下学生成绩管理:
1. 录入每个学生的学号和考试成绩;
2. 计算课程的总分和平均分;
3. 按成绩由高到低排出名次表;
4. 按学号由小到大排除成绩表;
5. 按学号查询学生排名及其考试成绩;
6. 按优秀(90~100),良好(80~89),中等(70~79),及格
(60~69),不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
7. 输出每个学生的学号,考试成绩,课程总分和平均分。
程序如下:
#include<stdio.h>
#define N 30
void main()
{
int i,n;
long number[N];
float score[N];
void input(long number[],float score[],int n);
void sa(float score[],int n);
void sb(long number[],float score[],int n);
void sc(long number[],float score[],int n);
void sd(long number[],float score[],int n);
void se(float score[],int n);
void sf(long number[],float score[],int n);
printf("输入学生人数:");
scanf("%d",&n);
input(number,score,n);
for(i=0;i<n;i++)
printf("学号:%ld,成绩:%f\n",number[i],score[i]);
sa(score,n);
sb(number,score,n);
sc(number,score,n);
sd(number,score,n);
se(score,n);
sf(number,score,n);
}
void input(long number[],float score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d位学号和成绩:如(000000,90.0):",i+1);
scanf("%ld,%f",&number[i],&score[i]);
}
}
void sa(float score[],int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
{
sum=sum+score[i];
}
printf("课程的总分为:%f\n",sum);
printf("课程的平均分为:%f\n",sum/n);
}
void sb(long number[],float score[],int n)
{
int i,j;
float temp;
long m;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(score[j]<score[j+1])
{
temp=score[j];
m=number[j];
score[j]=score[j+1];
number[j]=number[j+1];
score[j+1]=temp;
number[j+1]=m;
}
for(i=0;i<n;i++)
printf("成绩第%d名成绩为:%ld,%f\n",i+1,number[i],score[i]); }
void sc(long number[],float score[],int n)
{
int i,j;
float temp;
long m;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(number[j]>number[j+1])
{
m=number[j];
temp=score[j];
number[j]=number[j+1];
score[j]=score[j+1];
number[j+1]=m;
score[j+1]=temp;
}
for(i=0;i<n;i++)
printf("学号由小到大为:%ld,%f\n",number[i],score[i]);
}
void sd(long number[],float score[],int n)
{
int i,j;
float temp;
long m,sn;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(score[j]<score[j+1])
{
temp=score[j];
m=number[j];
score[j]=score[j+1];
number[j]=number[j+1];
score[j+1]=temp;
number[j+1]=m;
}
printf("请输入要查询的学生学号:");
scanf("%ld",&sn);
for(i=0;i<n;i++)
{
if(number[i]==sn)
printf("查询学生的学号%ld,成绩为%f\n",sn,score[i]);
}
}
void se(float score[],int n)
{
int a=0,b=0,c=0,d=0,e=0,i;
for(i=0;i<n;i++)
{
switch((int)score[i]/10)
{
case 10:
case 9:a=a+1;break;
case 8:b=b+1;break;
case 7:c=c+1;break;
case 6:d=d+1;break;
default:e=e+1;
}
}
printf("优秀(90~100)的人数为:%d\n",a);
printf("优秀率:%d%%\n",(100*a)/n);
printf("良好(80~89)的人数为:%d\n",b);
printf("良好率:%d%%\n",(100*b)/n);
printf("中等(70~79)的人数为:%d\n",c);
printf("中等率:%d%%\n",(100*c)/n);
printf("及格(60~69)的人数为:%d\n",d);
printf("及格率:%d%%\n",(100*d)/n);
printf("不及格(0~59)的人数为:%d\n",e);
printf("不及格率:%d%%\n",(100*e)/n);
}
void sf(long number[],float score[],int n)
{
int i;
for(i=0;i<n;i++)
printf("学生学号为%ld的成绩是:%f\n",number[i],score[i]);
void sa(float score[],int n);
sa(score,n);
}。