您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C#编程_学生成绩管理系统
C#语言编程实训报告系部:*********班级:*********学号:****姓名:*****指导教师:****评语:一、设计题目:学生成绩管理系统二、设计目的:通过编写学生成绩管理系统:掌握循环结构、数组结构、结构体的设计和应用;熟练方法的调用、选择结构的具体应用、排序检索功能的设计;最终提高面向对象编程、分析与解决实际问题的能力。三、项目实现的功能:(1)实现学生信息的输入、输出、查询和删除;(2)计算学生的总成绩和平均成绩;(3)按总成绩排序并显示;(4)检索功能,按姓名、学号进行检索;(5)能够正常退出程序。四、设计原理:根据学生成绩管理系统使用要求,程序要实现添加、删除、查询、正确退出功能,而这就用到了数组结构、循环结构、结构类型、检索方法和退出程序的方法。因为功能要选择性实现,用到了选择结构的Switch语句,首先计算Switch后表达式的值,然后判断是否等于case常量表达式的值,以决定程序功能的执行。Student结构体的应用方便了学生不同信息的输入;在整个程序中用循环结构和数组结构实现信息的输入、输出、计算和检索;数组实现储存,但是删除信息时要注意数组长度和元素的改变;整个程序中结构、信息的删除和方法的调用是重点。五、程序流程图:开始是否是否是否是否是否是真结束选择数字3选择数字4选择数字5选择数字6While(ture);选择数字2调用searchno()查询信息;break;调用searchname()查询信息;break;调用score()查询成绩信息;break;Environment.Exit(0)退出;break;调用Delete()删除信息;break;调用Add()添加信息;break;选择数字1从Main()方法中调用Check()方法开始程序的运行执行do循环体中的语句,进行选择数字的输入通过Switch语句计算输入的选择数字六、使用及调试说明:运行程序出现控制台界面后,按照界面显示的功能选项,根据需求进行选择,每次选择后按Enter键:1、选择1进入添加信息界面,按提示输入各项信息;2、选择2进入删除信息界面,按提示输入要删除的学生信息;3、选择3进入查询界面,按学号进行查询;4、选择4进入查询界面,按姓名进行查询;5、选择5显示排序后的成绩单;6、选择6退出程序;七、源程序代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace学生信息管理{publicstructStudent//定义名为student的结构{publicintno;//学号publicdoublechnese,math;//各科成绩publicdoubleenglish,csharp;publicdoubleave,all;//平均成绩、总成绩publicstringname;//学生姓名publicvoidShowStuInfo()//该方法用于显示学生信息{//输出学生信息Console.WriteLine(\n学生信息:);Console.Write(学号:{0},no,);Console.Write(\t姓名:{0},name);Console.Write(\t语文:{0},chnese);Console.Write(\t数学:{0},math);Console.Write(\t英语:{0},english);Console.Write(\tC#:{0},csharp);Console.Write(\t平均:{0},ave);Console.Write(\t总成绩:{0},all);Console.WriteLine();}}classSmanage//学生管理类{intx=0;//声明数组studStudent[]stud=newStudent[10];publicvoidAdd()//用Add()方法添加学生信息{//学生信息的输入并以student的结构中定义的数组储存Console.WriteLine(请输入要添加的学生信息:);Console.WriteLine(\n请输入学号:);stud[x].no=int.Parse(Console.ReadLine());Console.WriteLine(\n请输入姓名:);stud[x].name=Console.ReadLine();Console.WriteLine(\n语文成绩:);stud[x].chnese=double.Parse(Console.ReadLine());Console.WriteLine(\n数学成绩:);stud[x].math=double.Parse(Console.ReadLine());Console.WriteLine(\n英语成绩:);stud[x].english=double.Parse(Console.ReadLine());Console.WriteLine(\nC#成绩:);stud[x].csharp=double.Parse(Console.ReadLine());//定义数组对输入成绩储存double[]infom=newdouble[]{stud[x].chnese,stud[x].math,stud[x].english,stud[x].csharp};//以循环计算总成绩、平均成绩for(inti=0;iinfom.Length;i++){stud[x].all+=infom[i];stud[x].ave=stud[x].all/4;}stud[x].ShowStuInfo();//显示计算后学生信息x=x+1;}publicvoidDelete()//删除信息{intn=-1;intno=int.Parse(Console.ReadLine());//用循环对获取的no进行判断for(inti=0;ix;i++){if(no==stud[i].no){n=i;for(intc=n+1;cx;c++){//交换数组索引值对指定元素进行删除stud[c-1]=stud[c];}x=x-1;break;}}Console.WriteLine(学号为{0}的学生已删除!,no);if(n==-1){Console.WriteLine(输入信息有误,请重新输入!);}}publicvoidSearchno()//信息查询(按学号){intn=-1;intno=int.Parse(Console.ReadLine());//用循环对获取的no进行判断for(inti=0;ix;i++){//对输入的no判断if(no==stud[i].no){n=i;//判断后输出显示stud[i].ShowStuInfo();break;}}if(n==-1){Console.WriteLine(输入信息有误,请重新输入!);}}publicvoidSearchname()//信息查询(按姓名){intn=-1;stringname=Console.ReadLine();//用循环对获取的字符串进行判断for(inti=0;ix;i++){//对输入的字符串判断if(name==stud[i].name){n=i;//判断后输出显示stud[i].ShowStuInfo();break;}}if(n==-1){Console.WriteLine(输入信息有误,请重新输入!);}}publicvoidscore()//信息查询(成绩单){//用循环对成绩进行排序for(inti=x-1;i=0;i--)for(intj=0;j=i;j++){if(stud[j].allstud[j+1].all){//用冒泡排序法对学生成绩排序stud[x]=stud[j];stud[j]=stud[j+1];stud[j+1]=stud[x];break;}}int[]mc=newint[x];//用循环输出排序后成绩for(inti=0;ix;i++){mc[i]=i+1;Console.Write(mc[i]+\t);Console.Write(stud[i].no+\t);Console.Write(stud[i].name+\t);Console.Write(stud[i].chnese+\t);Console.Write(stud[i].math+\t);Console.Write(stud[i].english+\t);Console.Write(stud[i].csharp+\t);Console.Write(stud[i].ave+\t);Console.Write(stud[i].all+\t);Console.WriteLine();}}publicvoidCheck()//操作模块{do{Console.WriteLine(请选择:\n1、添加学生信息\n2、删除学生信息\n3、查询(按学号)\n4、查询(按姓名)\n5、查询(成绩单)\n6、退出);//输入numberintnumber=int.Parse(Console.ReadLine());if(number6||number1)//对输入的number判断{Console.WriteLine(输入有误请重新输入);}switch(number){case1:Add();//调用Add()方法添加学生信息break;case2:Console.WriteLine(请输入要删除学生的学号:);Delete();//调用Delete()方法删除学生信息break;case3:Console.WriteLine(请输入学号:);Searchno();//调用该方法按学号查询学生信息break;case4:Console.WriteLine(请输入姓名:);Searchname();//调用该方法按姓名查询学生信息break;case5:Console.WriteLine(成绩单:);Console.WriteLine(名次\t学号\t姓名\t语文\t数学\t英语\tC#\t平均\t总成绩);score();//调用该方法显示排序后的成绩单break;case6:Environment.Exit(0);//调用该方法退出程序break;}Console.WriteLine(\n是否继续!);}while(true);//}}classTest{publicstaticvoidMain(string[]args){//在主程序中对Check()方法调用Smanagemyuser=newSmanage();myuser.Check();}}}八、设计总结:这是进入大学的第一次编程实训,两周的时间编出一个学生成绩管理的控制台应用程序,因为以前上机练习的时间很少,再加上对学习到的知识点没有系统的认识,所以刚开始编写起来比较困难,感觉每一天都是很茫然的过,不过这只是开始,谁都会有这种心理。编程靠的就是毅力,不能因为困难就放弃。接下来的时间里,通过同学之间的讨论对这次编程所需要的程序结构逐渐明白了,结构虽然有了,但是细节更重要,在编程是因为一个字母的不同都会影响到整个程序的运行,因此每一次编写程序都要有细心和耐心。编出的程序一定要有自己的想法,这样才能达到锻炼自己的目的,并且能让自己在熟练掌握所学的知识的同时收获成功的喜悦。这一次两周的编程实训过程中,让我收获了不少:编程过程中最为重要的是我对细心谨慎也理解深,每次调试程序出现错误时会感到很苦恼,可能是一个符号一个字母或者,程序就会出错,而这样的错误又很小还不容易找到,这时我们就要有耐心和细心的去找,因为程序都是我们辛苦编出来的,不能轻易的就放弃。在这为期两周的实训中掌握并理解了方法的调用和循环结构的实际应用,这次对Switch选择结构的应用有了很好的把握,对循环结构套用也有很深刻地理解;在Student结构中用数组进行学生信息的储存比起简单的使用数组
本文标题:C#编程_学生成绩管理系统
链接地址:https://www.777doc.com/doc-4550565 .html