1、C#语言编程实训报告系部:电子信息系班级:计算机1201姓名:陈紫房学号:0602120134指导教师:邱文严项目报告1 设计题目:学生成绩管理系统。2 设计目的:1. 巩固C#语言编程知识,提高面向对象编程能力,提高分析与解决实际问题的能力。2. 掌握循环、子程序等结构的程序设计方法。3. 掌握数组、结构体等数据结构的设计方法。4. 掌握排序检索等程序设计技术。3 项目实现的功能:1. 学生类的实现;2. 输入10个学生的学号、姓名、各门课程的成绩;3. 计算学生的总成绩和平均成绩;4. 按总成绩排序并显示;5. 检索功能,可以按姓名、学号进行检索。6. 能够插入、修改和删除学生信息7. 能
2、够正常退出程序。4 设计原理:1. 建立一个学生类,利用ArrayList动态数组存储学生的学号,姓名,数学成绩,英语成绩,C#成绩。2. 在学生类里面定义函数:operate()函数当做菜单,input()函数用来输入信息,insert()函数用来插入信息,index()函数用来检索并返回索引值,index_show()函数用来输出索引结果,index_remove()函数用来删除学索引处的生信息,move()函数用来排序,move_Sum()函数用来按总成绩排序,move_show()函数用来输出排序后的信息。3. operate()函数中用swish语句选择应用选项,用goto Retu
3、rn返回主菜单;input()函数中用Add添加信息;insert()函数中用insert插入信息;index()函数中用IndexOf来检索并返回索引值;index_show()函数中用for循环来输出索引结果;index_remove()函数中用RemoveAt来删除学索引处的生信息;move()函数中用嵌套式双重for循环来排序;4. 用Console.Clear();来清屏。5 程序流程图;Case1:编写学生信息Case5:安全退出Case2:查看学生信息Case3:删除学生信息主函数调用operate函数,开始主程序Operate函数调用各个小菜单开始Case4:生成学生成绩单1.
4、添加学生信息。2.插入学生信息。1.按录入顺序输出成绩单1.按学号查询3.修改学生信息。1.按学号删除2.按姓名查询4.按数学成绩输出成绩单2.按姓名删除2.按总成绩排序输出成绩单3.按英语成绩输出成绩单goto :Return返回主菜单5.按C#成绩输出成绩单结束6 使用及调试说明;1开始调试程序2输入学生信息3.查看输入结果4.排序5.查询个人信息6.删除学生信息7.插入及修改学生信息7 源程序代码;using System;using System.Collections;using System.Collections.Generic;using System.Text;namespa
5、ce Student_score_management public class Student /定义了一个学生类 ArrayList ID = new ArrayList(3); /把学生的学号,姓名,英语、数学、C#成绩分别放在动态数组中。 ArrayList Name = new ArrayList(3); ArrayList English_Score = new ArrayList(3); ArrayList Math_Score = new ArrayList(3); ArrayList VisualCshap_Score = new ArrayList(3); public v
6、oid Menu() /主菜单 Console.WriteLine(主菜单:); Console.WriteLine(1.编写学生信息。); Console.WriteLine(2.查看学生信息。); Console.WriteLine(3.删除学生信息。); Console.WriteLine(4.生成学生成绩单。); Console.WriteLine(5.安全退出。); Console.WriteLine(_); Console.WriteLine(请选择(以回车键结束)。); public void Menu1() /小菜单1 Console.WriteLine(1.添加学生信息。);
7、 Console.WriteLine(2.插入学生信息。); Console.WriteLine(3.修改学生信息。); Console.WriteLine(_); Console.WriteLine(请选择(以回车键结束)。); public void Menu2() /小菜单2 Console.WriteLine(1.按学号查询); Console.WriteLine(2.按姓名查询); Console.WriteLine(_); Console.WriteLine(请选择(以回车键结束)。); public void Menu3() /小菜单3 Console.WriteLine(1.按
8、学号删除); Console.WriteLine(2.按姓名删除); Console.WriteLine(_); Console.WriteLine(请选择(以回车键结束)。); public void Menu4() /小菜单4 Console.WriteLine(1.按录入顺序输出成绩单); Console.WriteLine(2.按总成绩排序输出成绩单); Console.WriteLine(3.按英语成绩输出成绩单); Console.WriteLine(4.按数学成绩输出成绩单); Console.WriteLine(5.按C#成绩输出成绩单); Console.WriteLine(
9、_); Console.WriteLine(请选择(以回车键结束)。); public void input() /添加学生信息的函数 Console.Write(学号:t); ID.Add(Console.ReadLine(); Console.Write(姓名:t); Name.Add(Console.ReadLine(); Console.Write(英语成绩:t); English_Score.Add(Console.ReadLine(); Console.Write(数学成绩:t); Math_Score.Add(Console.ReadLine(); Console.Write(v
10、isual C#成绩:t); VisualCshap_Score.Add(Console.ReadLine(); public void insert(int i) /插入学生信息的函数,使用动态数组插入函数 Console.Write(学号:t); ID.Insert(i, Console.ReadLine(); Console.Write(姓名:t); Name.Insert(i, Console.ReadLine(); Console.Write(英语成绩:t); English_Score.Insert(i, Console.ReadLine(); Console.Write(数学成绩
11、:t); Math_Score.Insert(i, Console.ReadLine(); Console.Write(visual C#成绩:t); VisualCshap_Score.Insert(i, Console.ReadLine(); public void index_show(int i) /输出索引结果的函数 double Sum; double Ave; Sum = (Convert.ToDouble(English_Scorei) + Convert.ToDouble(Math_Scorei) + Convert.ToDouble(VisualCshap_Scorei);
12、 Ave = (Convert.ToDouble(Sum) / 3); Console.WriteLine(学号:t姓名:t英语:t数学:tC#分:t总分:t平均分:t); Console.WriteLine(0t1t2t3t4t5t6:#.00t, IDi, Namei, English_Scorei, Math_Scorei, VisualCshap_Scorei, Sum, Ave); public void move_show() /输出排序后信息的函数 for (int i = 0; i 0; i-) /冒泡排序法 for (int j = 0; j i; j+) if (Conve
13、rt.ToDouble(tempj) 0; i-) for (int j = 0; j i; j+) if (Convert.ToDouble(temp1j) + Convert.ToDouble(temp2j) + Convert.ToDouble(temp3j) Convert.ToDouble(temp1j + 1) + Convert.ToDouble(temp2j + 1) + Convert.ToDouble(temp3j + 1) object Temp; Temp = IDj; IDj = IDj + 1; IDj + 1 = Temp; Temp = Namej; Namej
14、 = Namej + 1; Namej + 1 = Temp; Temp = English_Scorej; English_Scorej = English_Scorej + 1; English_Scorej + 1 = Temp; Temp = Math_Scorej; Math_Scorej = Math_Scorej + 1; Math_Scorej + 1 = Temp; Temp = VisualCshap_Scorej; VisualCshap_Scorej = VisualCshap_Scorej + 1; VisualCshap_Scorej + 1 = Temp; pub
15、lic int index(ArrayList temp) /检索方法,返回索引值 int T; return T = temp.IndexOf(Console.ReadLine(); public void operate() /主程序方法 Student student = new Student(); /学生类初始化对象 Return: Console.Clear(); / goto Return;用于返回主菜单的语句的标签所在 student.Menu(); byte Number; Number = Convert.ToByte(Console.ReadLine(); switch
16、(Number) case 1: /实现编写学生信息的代码 Console.Clear(); student.Menu1(); Number = Convert.ToByte(Console.ReadLine(); switch (Number) case 1: /实现添加学生信息的代码。 Console.Clear(); Console.WriteLine(请输入学生信息(以回车键结束)。); student.input(); Console.WriteLine(是否继续输入?是请输入y返回主菜单请输入n(以回车键结束!); char ch = char.Parse(Console.Read
17、Line(); while (ch = y) Console.Clear(); student.input(); Console.WriteLine(是否继续输入?是请输入y返回主菜单请输入n(以回车键结束!); ch = char.Parse(Console.ReadLine(); break; case 2: /实现插入学生信息的代码。 Console.Clear(); Console.WriteLine(1.按学号插入学生信息。); Console.WriteLine(2.按索引插入学生信息。); Console.WriteLine(_); Console.WriteLine(请选择(以
18、回车键结束)。); Number = Convert.ToByte(Console.ReadLine(); switch (Number) case 1: Console.WriteLine(请输入要插入的学生的前一个人的学号); int j = student.index(student.ID); /没有找到时返回值是-1 if (j = -1) Console.WriteLine(查无此人!无法插入信息。); else Console.Clear(); Console.WriteLine(请输入要插入的学生信息。(以回车键结束。); student.insert(j + 1); Conso
19、le.WriteLine(按回车键返回主菜单); Console.ReadLine(); break; case 2: Console.Clear(); Console.WriteLine(请输入要插入信息的位置(索引从0开始,以回车键结束!); int i = int.Parse(Console.ReadLine(); Console.WriteLine(请输入要插入的学生信息。(以回车键结束); student.insert(i); Console.WriteLine(按回车键返回主菜单); Console.ReadLine(); break; break; case 3: /实现修改学生
20、信息的代码 Console.Clear(); Console.WriteLine(请输入要修改信息的学生学号); int n = index(student.ID); Console.WriteLine(请输入要修改的学生信息); student.index_remove(n); student.insert(n); Console.WriteLine(按回车键返回主菜单); Console.ReadLine(); break; default: Console.WriteLine(输入错误!请按回车键返回主菜单); Console.ReadLine(); break; goto Return
21、; case 2: / 2.查看学生信息。 Console.Clear(); student.Menu2(); Number = Convert.ToByte(Console.ReadLine(); switch (Number) case 1: Console.Clear(); /实现按学号查询的代码 Console.WriteLine(请输入学生学号(以回车键结束)。); int j = student.index(student.ID); /没有找到时返回值是-1 if (j = -1) Console.WriteLine(查无此人!); else student.index_show(j); Console.WriteLine(按回车键返回主菜单); Console.ReadLine(); break; case 2: Console.Clear(); /实现按姓名查询的代码 Console.WriteLine(请输入学生姓名以回车键结束)。); j = student.index(student.Name); if (j = -1) Console.WriteLine(查无此人!); else student.index_show(j); Console.WriteLine(按回车键返回主菜单); Console.ReadLine(); break;