第一篇:C程序设计-学生成绩管理
《C程序设计》综合性实验
实验报告
题目: 学生成绩管理
姓名: 班级: 学号: 指导教师: 完成时间:
一、实验题目
学生成绩管理
二、实验目的
1.掌握一维数组、二维数组的使用方法。2.掌握结构体数组的定义和使用。
3.综合应用数据文件的读写语句保存结构体数组中的数据。
三、实验要求
有4个学生,每个学生有3门课的成绩,从键盘上输入以上数据,计算每个学生的平均分,并把这些信息(包括学号、姓名、班级、3门课的成绩及平均分)保存到一个文件(score.txt)中,并显示在屏幕上。
具体要求:
定义结构体类型(student_type),其中包括学号(num[11])、姓名(name[8])、班级(class[20])、3门课成绩(score[3])和平均成绩(ave)。利用该结构体类型定义数组stud[4]。
在主函数中输入学生学号、姓名、班级、3门课的成绩,并计算出平均成绩,然后调用save()函数将学生数据保存在score.txt文件中,调用display()函数读取score.txt文件,并将其中的内容显示在屏幕上。
定义保存文件函数save()和显示文件函数display()。
四、程序流程图
五、程序代码
#include
int insert();//录入学生成绩信息函数 int query();//查询学生成绩信息函数 int list();//列出学生成绩信息函数定义 void save();//把数据写入到文件 void display();//从文件读入学生记录
typedef struct {
char num[20];
char name[8];
char class[20];int score[3];int ave;}studs;
studs * stud =NULL;int current = 0;int total = 0;
int main(){
while(1)//显示程序基本信息
{ char choice;//定义一个字符类型的变量用来接收用户的菜单选择
printf(“n”);printf(“*******************************************************************************n”);n“);n”);printf(“
0---退出系统
1---printf(”
printf(“
学生成绩管理系统
录入学生成绩信息
n”);printf(“
2---查询学生成绩信息
3---列出所有学生成绩信息
n”);printf(“
4---保存学生成绩信息
5---加载学生成绩信息
n”);printf(“*******************************************************************************n”);
printf(“n”);
printf(“请选择:”);
choice=getch();
getchar();//过滤掉enter键
printf(“nn”);
switch(choice)
{
case'1':system(“cls”);
insert();/*此处调用添加录入学生成绩信息处理代码的函数*/
break;
case'2':system(“cls”);
query();/*此处调用添加查询学生成绩信息处理代码的函数*/
处理代码的函数*/
息处理代码的函数*/
信息处理代码的函数*/
}
} return 0;
break;case'3':system(“cls”);
list();/*此处调用添加列出学生成绩信息
break;case'4':system(“cls”);
save();/*此处调用添加保存学生成绩信
break;
case'5':system(“cls”);
display();/*此处调用添加加载学生成绩
break;
case'0':
if(stud!=NULL)
{
free(stud);
}
return 0;
default:
printf(“非法选择,请重新选择n”);
getch();//程序返回 }
/*各个函数的实现*/ int insert()//录入学生成绩信息函数定义 {
int i;int total=4;
if(stud==NULL)
stud=(studs *)malloc(total *sizeof(studs));
if(stud==NULL)
return 1;
if(current>=total)
{ printf(“对不起,由于人数已满,不能再添加新学生成绩信息n”);
return 1;
}
for(i=0;i { int a,b,c;printf(“请输入学号:”); scanf(“%s”,&stud[current].num); printf(“请输入姓名:”); scanf(“%s”,&stud[current].name); printf(“请输入班级:”); scanf(“%s”,&stud[current].class);printf(“请输入语文成绩:”); scanf(“%d”,&stud[current].score[1]); printf(“请输入数学成绩:”); scanf(“%d”,&stud[current].score[2]); printf(“请输入英语成绩:”); scanf(“%d”,&stud[current].score[3]); a=stud[current].score[1];b=stud[current].score[2];c=stud[current].score[3];stud[current].ave=(a+b+c)/3;printf(“n”); current++; } } int query()//查询学生成绩信息函数定义 { char k;printf(“***********************************n”);printf(“* 0---放弃查询 *n”);printf(“* 1---按学号查询 *n”);printf(“* 2---按姓名查询 *n”);printf(“***********************************n”);printf(“n”); printf(“请选择:”); k=getch(); getchar();//过滤掉enter键 printf(“nn”); switch(k){ case '0': break;case '1': { char num[20]; int i; printf(“请输入要查询的学生学号:”);scanf(“%s”,&num); for(i=0;i<4;i++){ if(strcmp(stud[i].num,num)==0){ printf(“学生成绩如下n”); printf(“学号:%sn”,stud[i].num); printf(“姓名:%sn”,stud[i].name); printf(“班级:%sn”,stud[i].class); printf(“语文成绩:%dn”,stud[i].score[1]); printf(“数学成绩:%dn”,stud[i].score[2]);printf(“英语成绩:%dn”,stud[i].score[3]); printf(“平均成绩:%dn”,stud[i].ave); return 0;} } printf(“此信息不存在!nn”); return 1; break;} case '2': { char name[8]; int i; printf(“请输入要查询的学生姓名:”);scanf(“%s”,&name); for(i=0;i<4;i++){ if(strcmp(stud[i].name,name)==0){ printf(“学生成绩如下n”); printf(“学号:%sn”,stud[i].num); printf(“姓名:%sn”,stud[i].name); printf(“班级:%sn”,stud[i].class); printf(“语文成绩:%dn”,stud[i].score[1]); printf(“数学成绩:%dn”,stud[i].score[2]);printf(“英语成绩:%dn”,stud[i].score[3]); printf(“平均成绩:%dn”,stud[i].ave); return 0;} } printf(“此信息不存在!nn”); return 1; break;} default: printf(“非法选择,请重新选择n”);} int list()//列出学生成绩信息函数定义 { } int i; printf(“学生成绩列表n”);printf(“***********************************n”); for(i=0;i<4;i++) { printf(“学号:%sn”,stud[i].num); printf(“姓名:%sn”,stud[i].name); printf(“班级:%sn”,stud[i].class); printf(“语文成绩:%dn”,stud[i].score[1]); printf(“数学成绩:%dn”,stud[i].score[2]);printf(“英语成绩:%dn”,stud[i].score[3]); printf(“平均成绩:%dn”,stud[i].ave); printf(“***********************************n”); } return 0;} //把数据写入到文件 void save(){ for(i=0;i } printf(“文件 score.txt 打开失败”);exit(0);fprintf(fb,“%20s%8s%20s%4d%4d%4d%4dn”,stud[i].num,stud[i].name,stud[i].class,stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].ave); } //从文件读入学生记录 void display(){ if(stud==NULL)int i;int total=4;FILE *fp; fclose(fb); printf(“文件成功保存到 score.txt 中!n”);getchar(); stud=(studs *)malloc(total *sizeof(studs)); fscanf(fp,“%20s%8s%20s%4d%4d%4d%4dn”,&stud[i].num,&stud[i].name,&stif((fp=fopen(“score.txt”,“r”))==NULL){ } for(i=0;i<4;i++){ printf(“文件 score.txt 打开失败”);exit(0);ud[i].class,&stud[i].score[1],&stud[i].score[2],&stud[i].score[3],&stud[i].ave); printf(“学号:%sn”,stud[i].num); printf(“姓名:%sn”,stud[i].name); printf(“班级:%sn”,stud[i].class); printf(“语文成绩:%dn”,stud[i].score[1]); printf(“数学成绩:%dn”,stud[i].score[2]);printf(“英语成绩:%dn”,stud[i].score[3]); printf(“平均成绩:%dn”,stud[i].ave); printf(“***********************************n”); } } fclose(fp);getchar(); 六、实验结果 七、实验体会 (写出完成此次综合性实验的心得体会,字数在200字以上。) 项目设计题目(学生成绩管理系统) 学号: 姓名: 自评成绩: 成绩: 1.选题意义、依据 学生成绩系统的设计从学生的应用中而来,学生了解该系统的组成和运行过程,它贴近学生的生活能使学生更加方便的使用各个语句、函数、结构体等。 依据学生期末成绩表的格式。 2.系统功能设计与分析(功能模块说明) 系统主要用于从一个文件夹读入学生信息(101 张三 78 87 102 李斯 103 王红 79 87 104 赵子龙 72 75 76 李洪磊 88 98 89),包括学生学号、姓名、成绩(数学、英语、数据库),程序中引用了八个函数 void Cscore(int);void Rank(int ave);void Listnumber(int i); void Listscore(int i);void Lookup(int);void Alter(int);void Dele(int &i);void Insert(int &i);系统主要实现的功能有:查询、修改、删除、插入、成绩单(以学号排名)和成绩单(以名次排名)。 Cscore 函数主要是对学生进行排名。具有相同总分的学生具有相同的名次,例如:第三名和第四名具有相同的总分则在表中不会出现第四名,将出现两个第三名紧接着出现第五名学生的情况。 Rank 函数主要用于按平均分对学生进行备注。把学生分为四个等级:>90分为excellent,80—90分为medium,60—80分为qualified,<60分为disqualified。Listnumber 函数主要用于把学生的信息(学号 姓名 数学 英语 数据库 总分平均分 名次 备注)以学号排名的顺序用表的形式输出,方便学生查看。Listnumber 函数中还调用了Cscore 和Rank 函数。 Listscore 函数是把学生的信息以总成绩排名的形式输出。 Lookup 函数主要运用学号或姓名形式查询单个学生信息,如果存在则输出该学生信息(学号 姓名 数学 英语 数据库 总分平均分 名次 备注),否则输出“Input message is error.”。 Alter 函数是修改指定学号的学生信息。主要用于修改指定学号学生的各科成绩并输出修改后的学生信息(学号 姓名 数学 英语 数据库 总分平均分 名次 备注)。 Delete 函数用于删除指定学生的信息。可用两种方式删除:以学号形式删除学生信息,以姓名形式删除学生信息。若要删除了学生不存在则输出“message error.”。 Insert 函数用来插入学生的信息,一次调用Insert 函数可以添加多个学生的信息。Insert 函数中还调用了Cscore 和Rank 函数。 3.涉及的主要知识点说明 (1)系统主要运用了函数的声明、定义、调用(值调用和地址调用)。 (2)对文件的读入操作。 (3)在平均分的求取上采用四舍五入的方式,运用了类型转换。(4)多次运用if和for嵌套,在for嵌套中又运用了break语句。(5)运用了switch。 (6)对字符数组的比较中运用了strcmp,还运用toupper把小写字母转换成大写。 (7)对学生信息进行的插入和有序删除操作。(8)运用iomanip对输出进行美观。 4.创新性说明(怎么解决) 创新性:系统可以对具有相同总分学生的学生输出相同的名次。若存在三个相同的分数都为第二名,则在输出时出现三个第二名不会出现第三、四名,紧接着出现第五名。 解决方法:(1)用一个数组记录具有相同分数的人数,数组下标和学生信息所具有的下标相同;(2)删除相同的总分只保留其中一个分数;(3)对删除相同总分的分数按从高到底进行排序;(4)对各个学生的总分进行排名。 5.源代码 //****************************************************************** //Student achievement program //This program has eight functions of students grade,including list //score ranking,lookup,alter,delete,insert and rank.From the file read in //student achievement.Scores of people have the same same place.//****************************************************************** #include void Cscore(int);void Rank(int ave);void Listnumber(int i);void Listscore(int i);void Lookup(int);void Alter(int);void Dele(int &i);void Insert(int &i); using namespace std;const int MAX=100; struct student //定义学生信息结构体 { int num;char name[8];int math;int english;int database;int sum;int average;int score;}stu[MAX]; int main() //主函数 { int i,k;char ch;string filename;ifstream infile; cout<<“Please input the filenames: ”;cin>>filename;infile.open(filename.c_str());if(!infile){ cout<<“Can't open the input file.”< return 1;} for(i=0;i infile>>stu[i].num>>stu[i].name>>stu[i].math>>stu[i].english>>stu[i].database; stu[i].sum=stu[i].math+stu[i].english+stu[i].database; stu[i].average=int(float(stu[i].sum)/3+0.5);} i=i-1;cout< 学生成绩管理系统 ”< cout<<“Y or N 进入菜单栏 ”< <<“ 菜单:”< <<“ 1)查 询”< <<“ 2)修 改”< <<“ 3)删 除”< <<“ 4)插 入”< <<“ 5)成绩单(以学号排名)”< 6)成绩单(以名次排名)”< cout<<“***请选择 1--4 中任何一个:”< cin>>k; cout< switch(k){ case 1:Lookup(i);break; case 2:Alter(i);break; case 3:Dele(i);break; case 4:Insert(i);break; case 5:Listnumber(i);break; case 6:Listscore(i);break; default :cout<<“error input!”< cout< cin>>ch; ch=toupper(ch);} cout<<“Thank you for using!”< <<“Bye bye!”< void Cscore(int i) //对学生分数进行排名 { int h[MAX],b[MAX],score[MAX+1],n,k,j;int sum0[MAX],s;n=i;for(j=0;j sum0[j]=stu[j].sum;} for(j=0;j h[j]=0;for(k=0;k h[j]++; //具有同一分数的人数 } } //end for } //end for for(j=0;j //删除多个同一分数只保留其中一个分数 { for(k=j+1;k if(sum0[j]==sum0[k]) { sum0[k]=sum0[i-1]; i--; k--; } } } //end for for(j=0;j //按从高到底的顺序对总分进行排名 { for(k=j+1;k if(sum0[j] { s=sum0[j]; sum0[j]=sum0[k]; sum0[k]=s; } //end if } //end for } //end for b[0]=0;score[0]=1;for(j=0;j //对学生成绩进行排名 { for(k=0;k if(sum0[j]==stu[k].sum) { score[j+1]=score[j]+b[j]; stu[k].score=score[j+1]; b[j+1]=h[k]; } //end if } //end for } //end for } void Rank(int ave) //对学生等级输出 { if(ave>=90) { cout<<“excellent”; } else if(ave>=80) { cout<<“medium”; } else if(ave>=60) { cout<<“qualified”; } else { cout<<“disqualified”; } cout< void Listnumber(int i){ int j;Cscore(i);cout<<“学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 ”< cout< < cout< cout< cout< Rank(stu[j].average);} } void Listscore(int i){ int j,k;Cscore(i);cout<<“学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 ”< for(k=0;k { if(stu[k].score==j) { cout< < cout< cout< cout< Rank(stu[k].average); } } } } void Lookup(int i) //运用学号或姓名形式查询单个学生信息 { int j,k,n,numb;char name1[8]; cout<<“Please select you check score ways.”< //以学号形式查询学生信息 { cout<<“Please input student number: ”; cin>>numb; for(j=0;j { if(numb==stu[j].num) { k=j; break; } } } else //以姓名形式查询学生信息 { cout<<“Please input student name: ”; cin>>name1; for(j=0;j if(strcmp(stu[j].name,name1)==0) { k=j; break; } } if(k==MAX){ cout<<“Input message is error.”< //如果学生存在则输出学生信息 { Cscore(i); cout<<“学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 ”< cout< < cout< cout< cout< Rank(stu[j].average);} } void Alter(int i)//修改指定学号的学生信息 { int numb,j; cout<<“alter begin...”< cout<<“Please input number:”; cin>>numb;for(j=0;j if(numb==stu[j].num) { cout<<“find out:”< cout<<“学号:”< cout<<“Please input new result: 数学 英语 数据库 ”< cin>>stu[j].math>>stu[j].english>>stu[j].database; stu[j].sum=stu[j].math+stu[j].english+stu[j].database; stu[j].average=int(float(stu[j].sum)/3.0+0.5); Cscore(i); //输出修改后该学号学生的信息 cout<<“学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 ”< cout< < cout< cout< cout< Rank(stu[j].average); break; } } } void Dele(int &i) //删除指定学生的信息 { int numb,j,k;char name0[8];cout<<“delete begin...”< cout<<“ [1]以学号形式删除学生信息”< [0]以姓名形式删除学生信息”< //以学号形式删除学生的信息 { cout<<“Please input delete number:”; cin>>numb; for(j=0;j { if(numb==stu[j].num) break; } } else //以姓名形式删除学生的信息 { cout<<“Please input delete name:”; cin>>name0; for(j=0;j { if(strcmp(name0,stu[j].name)==0) break; } } void Insert(int &i) //插入学生的信息 { int j,n;cout<<“insert begin...”< cin>>stu[j].num>>stu[j].name>>stu[j].math>>stu[j].english>>stu[j].database; stu[j].sum=stu[j].math+stu[j].english+stu[j].database; stu[j].average=int(float(stu[j].sum)/3.0+0.5);} Cscore(i);cout<<“学号 姓名 数学 英语 数据库 总分 平均分 名次 备注 ”< cout< < cout< cout< stu[j].num=stu[j+1].num; strcpy(stu[j].name,stu[j+1].name); stu[j].math=stu[j+1].math; stu[j].english=stu[j+1].english; stu[j].database=stu[j+1].database; stu[j].sum=stu[j+1].sum; stu[j].average=stu[j+1].average;} i=i-1;Cscore(i);} else cout<<“message error.”< cout< 运行结果: 分析: 系统基本上能实现对成绩的查询、、修改、删除、插入、成绩单(以学号排名)和成绩单(以名次排名)等功能,并且可以插入多个学生的信息。但在插入学生后未不能成绩单以学号排名的形式输出。为了改进程序对Insert 函数进行了一下修改。 Insert 函数代码如下: void Insert(int &i) //插入学生的信息 { int j,k,n,m,first,last,mid;int num0,math0,english0,database0;char name0[8];cout<<“insert begin...”< if(stu[j].num { last=mid-1; } else if(stu[j].num>stu[mid].num) { first=mid+1; } else { break; } mid=(first+last)/2;} if(first>last){ num0=stu[j].num; strcpy(name0,stu[j].name); math0=stu[j].math; english0=stu[j].english; database0=stu[j].database; for(k=i-1;k>first;k--) //进行有序插入 { stu[k].num=stu[k-1].num; strcpy(stu[k].name,stu[k-1].name); stu[k].math=stu[k-1].math; } stu[k].english=stu[k-1].english; stu[k].database=stu[k-1].database; stu[k].sum=stu[k-1].sum; stu[k].average=stu[k-1].average; } stu[first].num=num0; strcpy(stu[first].name,name0); stu[first].math=math0; stu[first].english=english0; stu[first].database=database0; stu[first].sum=stu[first].math+stu[first].english+stu[first].database; stu[first].average=int(float(stu[first].sum)/3.0+0.5);} else { cout<<“message error.”< last=i-1; mid=(first+last)/2;} Cscore(i); 修改后程序经运行后结果如下: 结果发现修改后的程序运用了二分查找法、多重嵌套等,能较好的实现对学生的信息以学号为序进行了多个数据的有序插入。 为方便编程采用C++实现,同C类似,区别不大: (1)学号为负数时结束输入: #include“stdafx.h” #define NULL 0 #include #include #include using namespace std; //声明结构体类型 typedef struct stnode { int id;//学号 char name[16];//姓名 intclass[4];//课程成绩数组 float ave;//学生个人所有课程的平均成绩struce stnode *next;//指针域 }Students; // 函数原型声明 void PrintFailStudent(Student*head); void PrintSuccessStudent(Student*head);void DeleteLink(Student*head); Student*input_data(); void main() { Student*head=input_data(); Student*input_data();//调用input_data函数,录入学生信息 PrintFailStudent(head);//调用PrintFailStudent函数,存在不及格的学生 void PrintSuccessStudent(Student*head);//打印平均分90分以上的学生 DeleteLink(head);//调用DeleteLink函数,释放内存 } // { int id;// 定义一个整数变量,存放学号 string name;//学生姓名 int class;//课程号 int scores;//各科成绩 int totl_score;//各科总成绩 Student *head=NULL, *temp;// 定义两个结构体指针 cout<<”开始录入学生成绩:”; while(1){cout<<“请输入学生学号:”;cin>>id;// 输入学号 if(id<0){// 学号为负数时结束录入break;录入学生信息 Student*input_data() } temp=new Student;// 向内存动态申请一个结构体结点 cout<<“请输入学生姓名:”; for(int a=0;a<=sizeof(a[0]);a++){temp->id=id;// 将输入的学号存入结构体结点的学号成员变量temp->name=name;// 存入学生姓名 cout<<“请输入学生课程”+a+”的成绩:”; cin>>scores;// 输入学号 totl_score=totl_score+scores;//总成绩 temp->class[a]=scores;// 课程1的成绩录入} ave=totl_score/sizeof(a[0]); } // 打印不及格学生信息 void PrintFailStudent(Student*head) { cout<<”存在不及格学生信息:”; cout<<“学号”< id< } } // 打印90平均分学生 void PrintSuccessStudent(Student*head){ } // 释放链表中的所有到结点 void DeleteLink(Student*head){ } Student*p;while(head!=NULL)// 头指针非空时循环 {} p=head;// 记住当前头指针 head=head->next;//当前头指针移到下一个结点 delete p;// 删除结点 for(Student*p=head;p!=NULL;p=p->next)cout<<”平均分为90分以上的学生学号:”+p->id;if(p->ave>=90){} 宁波大红鹰学院 项目名称:项目组长:项目成员:班级名称:专业名称:完成时间:信息工程学院 课 程 设 计 报 告 学生成绩管理系统 黄轮 蔡萍萍、邵芬芬、雷骁 09计科1、09计科2 计算机科学与技术 2010.11.3 信息工程学院制 目 录 1课程设计过程概述 ……………………………………………………………………….1 2课程设计题目描述和基本设计要求……………………………………………………...1 2.1课程设计题目描述……………………………………………………………………..1 2.2基本设计要求…………………………………………………………………………..1.3系统需求分析与设计………………………………………………………………………1 3.1系统需求分析…………………………………………………………………………..1 3.2其他需求分析…………………………………………………………………………..1 3.3系统设计………………………………………………………………………………..1 4各功能模块设计……………………………………………………………………………1 4.1学生成绩管理系统录入学生成绩模块设计…………………………………………..1 4.2求各门课程的平均分模块设计………………………………………………………..2.4.3求各门课程的最高分模块设计………………………………………………………..3 4.4求各门课程的最低分模块设计………………………………………………………..4 4.5查询所有学生信息的模块设计………………………………………………………..5 4.6查询个别学生成绩的模块设计………………………………………………………..5 4.7退出系统的模块设计……………………………………………………………….….6 5系统总代码……………………………………………………………………………..…..7 6课程设计总结……………………………………………………………………………...10.6.1遇到的问题及解决办法……………………………………………………………….10 6.2心得体会……………………………………………………………………………….10.学生成绩管理系统 1课程设计过程概述 在2010年11月,我们进行了JAVA课程的第一个课程设计学生成绩管理系统,要求我们在课后完成,并且及时接受答辩。这次课程设计的主要目的是结合Java程序设计课程,培养我们的思维,提高用Java编程的实际动手能力并增强大家对JavaZ这门课程的了解。这次课程设计的主要内容是独立用Java语言开发一个小的应用程序,学生成绩管理系统,从而深刻体会Java的应用性及其作用。 2课程设计题目描述和基本设计要求 2.1课程设计题目描述 我们设计的是学生成绩管理系统。主要用到的是做一个学生成绩管理的界面,可以在很短的时间内存储学生信息,并且及时查到某个学生的相关信息。2.2基本设计要求 (1)系统安全、灵活、可靠; (2)功能齐全; (3)操作方便、简单,界面友好; 3系统需求分析与设计 3.1系统需求分析 功能目标: 输入班级n个同学的学号,姓名,四科成绩(应用数学、大学英语、Java程序设计、计算机应用基础) 计算出每个学生四门课的平均成绩,并输出。 输出全组各科平均分,最高分和最低分。 输入姓名查询成绩 3.2其他需求分析 技能要求: 通过定义学生类,建立学生对象,学会运用面向对象思想进行程序设计。 通过对学生信息的输入/输出,初步掌握Java基本输入/输出方法。 通过菜单处理,掌握字符界面的菜单处理能力。 了解复杂问题的分析、设计、规划的一般流程。 3.3系统设计 要求学生成绩管理系统用字符界面实现、也可用图形界面实现,并能实现客户端的查阅。 4各功能模块设计 4.1学生成绩管理系统录入学生成绩模块设计 录入学生的成绩,可以方便用户管理更多的信息 主要的功能代码: case 1: for(i=0;i System.out.print(“请输入该生的学号:”);s[i].num=in.skip(“n”).nextLine();System.out.print(“请输入该生的姓名:”);s[i].name=in.nextLine();System.out.print(“请输入该生的应用数学成绩:”);s[i].Math_1=in.nextDouble();System.out.print(“请输入该生的英语成绩:”);s[i].English=in.nextDouble();System.out.print(“请输入该生的java成绩:”);s[i].Java_1=in.nextDouble();System.out.print(“请输入该生的计算机成绩:”);s[i].Computer=in.nextDouble(); } break;图1 4.2求各门课程的平均分模块设计 在这一界面我们要通过已有的数据,得出各门学科的平均分 主要的功能代码: case 2: double Math_1sum=0,Englishsum=0,Java_1sum=0,Computersum=0;double Math_1pj=0,Englishpj=0,Java_1pj=0,Computerpj=0;for(i=0;i Englishsum=Englishsum+s[i].English;Java_1sum=Java_1sum+s[i].Java_1;Computersum=Computersum+s[i].Computer;} Math_1pj=Math_1sum/i;Englishpj=Englishsum/i;Java_1pj=Java_1sum/i;Computerpj=Computersum/i;System.out.println(i+“位同学应用数学的平均分为:”+Math_1pj);System.out.println(i+“位同学英语的平均分为:”+Englishpj);System.out.println(i+“位同学Java的平均分为:”+Java_1pj);System.out.println(i+“位同学计算机的平均分为:”+Computerpj);break; 图2 4.3求各门课程的最高分模块设计 在聊天界面中,用户可以得出各门课程的最高分 主要的界面代码为: case 3: double Math_1max=0,Englishmax=0,Java_1max=0,Computermax=0;for(i=0;i if(s[i].Math_1>Math_1max) Math_1max=s[i].Math_1;if(s[i].English>Englishmax) Englishmax=s[i].English;if(s[i].Java_1>Java_1max) Java_1max=s[i].Java_1;if(s[i].Computer>Computermax)Computermax=s[i].Computer; } System.out.println(“应用数学最高分:”+Math_1max);System.out.println(“英语最高分:”+Englishmax);System.out.println(“Java最高分:”+Java_1max);System.out.println(“计算机最高分:”+Computermax);break;图3 4.4求各门课程的最低分模块设计 主要是能得出各门课程的最低分 主要的界面代码为: case 4: double Math_1min=120,Englishmin=120,Java_1min=120,Computermin=120;for(i=0;i Math_1min=s[i].Math_1;if(s[i].English Englishmin=s[i].English; if(s[i].Java_1 Java_1min=s[i].Java_1;if(s[i].Computer } System.out.println(“应用数学最低分:”+Math_1min);System.out.println(“英语最低分:”+Englishmin);System.out.println(“Java最低分:”+Java_1min);System.out.println(“计算机最低分:”+Computermin);break; 图4 4.5查询所有学生信息的模块设计 主要是为了快速的查出所有学生的信息 主要的界面代码为: case 5: for(i=0;i System.out.print(“姓名:”+s[i].name);System.out.print(“应用数学:”+s[i].Math_1);System.out.print(“英语:”+s[i].English);System.out.print(“Java:”+s[i].Java_1);System.out.println(“计算机:”+s[i].Computer);} break;图5 4.6查询个别学生成绩的模块设计 主要是为了快速的查出个别学生的信息 主要的界面代码为: case 6: System.out.print(“请输入要查找的姓名:”);int j=0;String name=in.skip(“n”).nextLine();for(i=0;i System.out.println(“学号:”+s[i].num); System.out.println(“姓名:”+s[i].name); System.out.println(“应用数学:”+s[i].Math_1); System.out.println(“英语:”+s[i].English); System.out.println(“Java:”+s[i].Java_1); System.out.println(“计算机:”+s[i].Computer); j=s.length;} } if(j==0) System.out.println(“没有你要查找的人,请确认后再查找!”); 图6 break; 查无此人的情况下: 4.7退出系统的模块设计 当查询结束的时候可以顺利的退出。 主要的界面代码为: case 7: System.out.println(“byebye!”); System.exit(0);default: System.out.println(“您输入的数字有误,应为1~7”);图7 5系统总代码 import java.util.*;class Student{ String num; String name;double Math_1,English,Java_1,Computer; } public class StudentMassage{ public static void main(String[] args){ Student[]s=new Student[3];int i;for(i=0;i } while(true){ System.out.println(“**********学生成绩管理系统**********”);System.out.println(“1.录入学生成绩”);System.out.println(“2.求各门课程的平均分”); System.out.println(“3.求各门课程的最高分”);System.out.println(“4.求各门课程的最低分”);System.out.println(“5.查询所有学生信息”);System.out.println(“6.查询个别学生成绩”);System.out.println(“7.退出系统”);System.out.print(“请选择:”);Scanner in=new Scanner(System.in);int x=in.nextInt(); switch(x){ case 1: for(i=0;i System.out.println(“请输入第”+(i+1)+“个学生的成绩信息”); System.out.print(“请输入该生的学号:”); s[i].num=in.skip(“n”).nextLine();System.out.print(“请输入该生的姓名:”);s[i].name=in.nextLine();System.out.print(“请输入该生的应用数学成绩:”);s[i].Math_1=in.nextDouble();System.out.print(“请输入该生的英语成绩:”);s[i].English=in.nextDouble();System.out.print(“请输入该生的java成绩:”);s[i].Java_1=in.nextDouble();System.out.print(“请输入该生的计算机成绩:”);s[i].Computer=in.nextDouble();} break;case 2: double Math_1sum=0,Englishsum=0,Java_1sum=0,Computersum=0;double Math_1pj=0,Englishpj=0,Java_1pj=0,Computerpj=0; for(i=0;i Math_1sum=Math_1sum+s[i].Math_1;Englishsum=Englishsum+s[i].English;Java_1sum=Java_1sum+s[i].Java_1;Computersum=Computersum+s[i].Computer;} Math_1pj=Math_1sum/i;Englishpj=Englishsum/i;Java_1pj=Java_1sum/i;Computerpj=Computersum/i;System.out.println(i+“位同学应用数学的平均分为:”+Math_1pj);System.out.println(i+“位同学英语的平均分为:”+Englishpj);System.out.println(i+“位同学Java的平均分为:”+Java_1pj);System.out.println(i+“位同学计算机的平均分为:”+Computerpj);break;case 3: double Math_1max=0,Englishmax=0,Java_1max=0,Computermax=0;for(i=0;i Math_1max=s[i].Math_1;if(s[i].English>Englishmax) Englishmax=s[i].English;if(s[i].Java_1>Java_1max) Java_1max=s[i].Java_1;if(s[i].Computer>Computermax)Computermax=s[i].Computer; } System.out.println(“应用数学最高分:”+Math_1max);System.out.println(“英语最高分:”+Englishmax);System.out.println(“Java最高分:”+Java_1max);System.out.println(“计算机最高分:”+Computermax);break;case 4: double Math_1min=120,Englishmin=120,Java_1min=120,Computermin=120; for(i=0;i Math_1min=s[i].Math_1; if(s[i].English Englishmin=s[i].English;if(s[i].Java_1 Java_1min=s[i].Java_1;if(s[i].Computer } System.out.println(“应用数学最低分:”+Math_1min);System.out.println(“英语最低分:”+Englishmin);System.out.println(“Java最低分:”+Java_1min);System.out.println(“计算机最低分:”+Computermin); } } } } break;case 5: for(i=0;i System.out.print(“学号:”+s[i].num); System.out.print(“姓名:”+s[i].name); System.out.print(“应用数学:”+s[i].Math_1); System.out.print(“英语:”+s[i].English); System.out.print(“Java:”+s[i].Java_1); System.out.println(“计算机:”+s[i].Computer);} break;case 6: System.out.print(“请输入要查找的姓名:”);int j=0;String name=in.skip(“n”).nextLine();for(i=0;i if(s[i].name.equals(name)){ System.out.println(“学号:”+s[i].num); System.out.println(“姓名:”+s[i].name); System.out.println(“应用数学:”+s[i].Math_1); System.out.println(“英语:”+s[i].English); System.out.println(“Java:”+s[i].Java_1); System.out.println(“计算机:”+s[i].Computer); j=s.length;} } if(j==0)System.out.println(“没有你要查找的人,请确认后再查找!”);break;case 7: System.out.println(“byebye!”); System.exit(0);default: System.out.println(“您输入的数字有误,应为1~7”);6课程设计总结 6.1遇到的问题及解决办法 在此次课程设计中,我遇到了一些问题,如:不能很好的将C语言的代码转化成Java语言,对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。 对于以上的问题,自己有清楚的认识,首先必须要对计算机产生兴趣,多阅读相关的书籍,多跟精通此方面的老师和同学交流、像他们学习。还有就是应该多动手编程。6.2心得体会 由于对java这门课还未深入了解,这是第一次小组合作设计程序,刚开始我们对它真的是很无措的,不知道该从哪里入手;经过指导老师的部分讲解和演示,我们茅塞顿开,着手开始编写代码,可是写着写着就出现问题了,程序实现不了,也改不出错误;后来无意中一位组员将字体改变了一下,程序错误变少了。检查一发现我们程序中字体错竟占绝大部分。再想想,这是因为我们写的过程中不够仔细,对细节问题还不够注重,以致最后的程序出现大批量的错误。不过在我们的后续检查中,这一问题已经完全解决了。当然,写的过程中遇到的问题肯定不止这样的,但最后在指导师与我们齐心协力的修改后,这些难题将不是问题了。程序完成后,我们真的很开心,虽然困难重重,但我们最终还是有了一个很好的结束啊。 这个实验让我们对java有更进一步的了解,也让我们对它产生了极大地兴趣,希望我们以后两次的实验也能顺利完成。 //*学生成绩管理系统*// #include #define N 3 struct student { int no; char name[20]; float english; float computer; float math; float average; }; void getclass(struct student *class_gishui) { int i; printf(“请输入%d个学生的学号 姓名 英语 计算机 数学n”,N); for(i=0;i { printf(“第%d个学生”,i+1); scanf(“%d%s%f%f%f”,&class_gishui[i].no,&class_gishui[i].name,&class_gishui[i].english,&class_gishui[i].computer,&class_gishui[i].math); } } void print_class(struct student *class_gishui) { int i; for(i=0;i { class_gishui[i].average=(class_gishui[i].english+class_gishui[i].computer+class_gishui[i].math)/3; } printf(“学生信息表如下:n”); printf(“学号tt姓名tt英语tt计算机tt数学tt平均成绩n”); for(i=0;i printf(“%dtt%stt%ft%ft%ft%fn”,class_gishui[i].no,class_gishui[i].name,class_gishui[i].english,class_gishui[i].computer,class_gishui[i].math,class_gishui[i].average); } void paixu(struct student *class_gishui) { int i,j,flag; struct student t[1]; for(i=0;(i { flag=0; for(j=0;j if(class_gishui[j].average>class_gishui[j+1].average) { t[0]=class_gishui[j]; class_gishui[j]=class_gishui[j+1]; class_gishui[j+1]=t[0]; flag=1; } if(flag==0) break; } printf(“排序后学生成绩为:n”); printf(“学号t姓名t英语tt计算机tt数学tt平均成绩n”); for(i=0;i printf(“%dt%st%ft%ft%ft%fn”,class_gishui[i].no,class_gishui[i].name,class_gishui[i].english,class_gishui[i].computer,class_gishui[i].math,class_gishui[i].average); } void main() { struct student class_gishui[N]; getclass(class_gishui); print_class(class_gishui); paixu(class_gishui); }第二篇:学生成绩管理系统C++程序设计
第三篇:学生成绩管理
第四篇:学生成绩管理报告
第五篇:学生成绩管理系统