资源描述
淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称: C++语言课程设计
姓 名: 学 号:
专业班级:
系 (院): 计算机工程学院软件工程系
设计时间: .6.8~.6.24
设计地点: 计算机工程学院机房
成绩:
指引教师评语:
签名:
年 月 日
1.课程设计目
C++课程设计是计算机科学与技术专业重要实践性教学环节之一,本次设计结合实际应用规定,使课程设计既覆盖C++知识点,又接近工程实际需要。目是通过课程设计综合训练,培养学生实际分析问题、解决问题能力,以及编程和动手能力,最后目的是通过课程设计这种形式,协助学生系统掌握C++这门课程重要内容,养成良好编程习惯,更好完毕教学任务。
2.课程设计任务与规定:
规定:
本次课程设计运用《C++程序设计》课程中所学到编程知识和编程技巧,完毕具备一定难度和工作量程序设计题目,协助学生掌握编程、调试基本技能,独立完毕所布置任务。
规定:
1、对系统进行功能需求分析
2、设计合理数据构造和系统框架
3、编程简洁,程序功能齐全,能对的运营
4、阐明书、流程图要清晰
5、课题完毕后必要按规定提交课程设计报告
任务:
设计一种学生成绩排名系统,该系统重要功能如下:
1) 具备对成绩管理功能(添加、删除、排序)
2) 具备对成绩记录功能(最高分,最低分,平均分,及格率等)
3) 具备按学号、姓名、或课程名查询成绩功能。
4)学生成绩应当保存在文献中。
3.课程设计阐明书
⑴概要设计
模块阐明:
在我设计程序中一共涉及了九个模块,分别是:浏览模块、添加模块、删除模块、查询模块、编辑模块、排序模块、读入文献模块、记录模块、退出系统模块。这九个功能中各个都是独立分开作为子函数,也就是说为了实现这九个功能我写了九个函数,在主函数中通过switch语句,把九个函数联系了起来,同步,为了实现多次使用这九个函数,就在switch语句外加了for循环。
功能机构图:
⑵详细设计
总体流程图:
各功能模块流程图:
①浏览功能模块流程图 ②添加功能模块流程图 ③删除功能模块流程图
④查询功能模块流程图
⑤修改功能模块流程图
⑥排序功能模块流程图
⑦读入文献功能模块流程图
⑧记录功能模块流程图
⑨退出系统功能模块流程图
4.课程设计成果
源代码:
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
struct lesson
{
float cgrade;
float egrade;
float mgrade;
};
struct man
{
char name[10];
char clas[20];
int num;
float sum;
float average;
lesson less;
}m[100];
int n=100;
static int e=0;
void sort();
void handle();
void search();
void error()
{cout<<"---输入错误请从新输入---"<<endl;cout<<"\n";}
void data_input()
{
int a;
cout<<"添加学生信息"<<endl;
cout<<"请输入信息 依次输入:学号 姓名 班级 C++ 英语 数学 输0结束"<<endl;
for(a=e;a<n;a++)
{
cin>>m[a].num;
if(m[a].num==0) break;
cin>>m[a].name>>m[a].clas>>m[a].less.cgrade
>>m[a].less.egrade>>m[a].less.mgrade;
e++;
}
}
void data_show()
{
int i;
cout<<setiosflags(ios::left)<<setw(2)<<"学号"
<<" "<<setw(10)<<"姓名"<<setw(10)
<<"班级"<<setw(10)<<"C++"<<setw(10)
<<"英语"<<setw(10)<<"数学"<<setw(10)
<<"总分"<<setw(10)<<"平均分"<<endl;
for(i=0;i<e;i++)
{
m[i].sum=m[i].less.cgrade+m[i].less.egrade+m[i].less.mgrade;
m[i].average=m[i].sum/3;
cout<<setiosflags(ios::left)<<setw(5)<<m[i].num<<" "
<<setw(10)<<m[i].name<<setw(10)<<m[i].clas<<
setw(10)<<m[i].less.cgrade<<setw(10)
<<m[i].less.egrade<<setw(10)<<m[i].less.mgrade<<setw(10)
<<m[i].sum<<setw(10)<<m[i].average<<endl;
if(m[i].num==0) break;
}
}
void dalete()
{
data_show();
cout<<"请选取您要删除人学号:";
int a,c=0;
cin>>a;
for(int i=0;i<e;i++)
{
if(a==m[i].num)
{
c++;
int j;
for(j=i;j<e-1;j++)
{
strcpy(m[j].name,m[j+1].name);
strcpy(m[j].clas,m[j+1].clas);
m[j].less.cgrade=m[j+1].less.cgrade;
m[j].less.egrade=m[j+1].less.egrade;
m[j].less.mgrade=m[j+1].less.mgrade;
m[j].num=m[j+1].num;
}
for(i=0;i<e-1;i++)
{
cout<<setw(5)<<m[i].num<<setw(15)<<m[i].name<<setw(20)
<<m[i].clas<<setw(12)<<m[i].less.cgrade<<setw(15)
<<m[i].less.egrade<<setw(15)<<m[i].less.mgrade<<endl;
}
cout<<"--------------删除成功-------------"<<endl;break;
}
}
if(c==0) error();
e--;
}
void handle()
{
float sumc=0,sume=0,summ=0;
static float sum=0;
char max_class[20],max_name[20],min_class[20],min_name[20];
int i,j,c=0;
float count1=0,count2=0,count3=0;
float maxc=m[0].less.cgrade,minc=m[0].less.cgrade,pc,
maxe=m[0].less.egrade,mine=m[0].less.egrade,pe,
maxm=m[0].less.mgrade,minm=m[0].less.mgrade,pm,
max_score=maxc+maxe+maxm,min_score=maxc+maxe+maxm,
max_cgrade=0,max_egrade=0,max_mgrade=0,max_num=0,
min_cgrade=0,min_egrade=0,min_mgrade=0,min_num;
for(i=1;i<e;i++)
{
if(minc>m[i].less.cgrade)
minc=m[i].less.cgrade;
if(maxc<m[i].less.cgrade)
maxc=m[i].less.cgrade;
if(mine>m[i].less.egrade)
mine=m[i].less.egrade;
if(maxe<m[i].less.egrade)
maxe=m[i].less.egrade;
if(minm>m[i].less.mgrade)
minm=m[i].less.mgrade;
if(maxm<m[i].less.mgrade)
maxm=m[i].less.mgrade;
if(max_score<(m[i].less.cgrade+m[i].less.egrade+m[i].less.mgrade))
{
max_score=m[i].less.cgrade+m[i].less.egrade+m[i].less.mgrade;
max_num=m[i].num;
strcpy(max_name,m[i].name);
strcpy(max_class,m[i].clas);
max_cgrade=m[i].less.cgrade;
max_egrade=m[i].less.egrade;
max_mgrade=m[i].less.mgrade;
}
if(min_score>(m[i].less.cgrade+m[i].less.egrade+m[i].less.mgrade))
{
min_score=m[i].less.cgrade+m[i].less.egrade+m[i].less.mgrade;
min_num=m[i].num;
strcpy(min_name,m[i].name);
strcpy(min_class,m[i].clas);
min_cgrade=m[i].less.cgrade;
min_egrade=m[i].less.egrade;
min_mgrade=m[i].less.mgrade;
}
}
for(j=0;j<e;j++)
{
sumc=sumc+m[j].less.cgrade;
if(m[j].less.cgrade>=60) ++count1;
sume=sume+m[j].less.egrade;
if(m[j].less.egrade>=60) ++count2;
summ=summ+m[j].less.mgrade;
if(m[j].less.mgrade>=60) ++count3;
}
pc=count1;
pe=count2;
pm=count3;
cout<<"求学号为t学生总分和平均分请输入0,求全班总成绩信息请输入其他数字"<<endl;
int k;
cin>>k;
if(k==0)
{
cout<<"请输入学生学号:"<<endl;
int t;
cin>>t;
for(i=0;i<e;i++)
{
if(t==m[i].num)
{
sum=m[i].less.cgrade+m[i].less.egrade+m[i].less.mgrade;
cout<<"她是:"<<m[i].name<<" 总分:"<<sum
<<" 平均分 :"<<sum/3<<endl;
c++;
}
}
if(c==0) error();
}
else
{
cout<<"1 C++成绩,2 英语成绩,3 数学成绩,4 全班成绩"<<endl;
cout<<"请输入序号:"<<endl;
int r;
cin>>r;
switch(r)
{
case 1:cout<<"(1)C++成绩最高分: "<<maxc
<<" C++成绩最低分: "<<minc<<endl;
cout<<" C++全班平均分: "<<sumc/e
<<" C++及格率: "<<pc/e<<endl;break;
case 2:cout<<"(2)英语成绩最高分: "<<maxe
<<" 英语成绩最低分: "<<mine<<endl;
cout<<" 英语全班平均分: "<<sume/e
<<" 英语及格率:"<<pe/e<<endl;break;
case 3:cout<<"(3)数学成绩最高分: "<<maxm
<<" 数学成绩最低分: "<<minm<<endl;
cout<<" 数学全班平均分: "<<summ/e
<<" 数学及格率: "<<pm/e<<endl;break;
case 4:cout<<" 全班最高分: "<<max_score<<endl;
cout<<"她信息为:"<<endl;
cout<<setiosflags(ios::left)<<setw(2)<<"学号"<<" "
<<setw(15)<<"姓名"<<setw(12)<<"班级"<<setw(12)
<<"C++"<<setw(15)<<"英语"<<setw(15)<<"数学"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<max_num<<" "
<<setw(15)<<max_name<<setw(12)<<max_class<<setw(12)
<<max_cgrade<<setw(15)<<max_egrade<<setw(15)<<max_mgrade<<endl;
cout<<" 全班最低分: "<<min_score<<endl;
cout<<"她信息为:"<<endl;
cout<<setiosflags(ios::left)<<setw(2)<<"学号"<<" "
<<setw(15)<<"姓名"<<setw(12)<<"班级"<<setw(12)
<<"C++"<<setw(15)<<"英语"<<setw(15)<<"数学"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<min_num<<" "
<<setw(15)<<min_name<<setw(12)<<min_class<<setw(12)
<<min_cgrade<<setw(15)<<min_egrade<<setw(15)<<min_mgrade<<endl;
break;
default:error();break;
}
}
}
void search1()
{
data_show();
cout<<"请输入您要查找学号:"<<endl;
int a;
cin>>a;
int bool=0;
for(int i=0;i<n;i++)
{
if(a==m[i].num)
{
cout<<setiosflags(ios::left)<<setw(2)<<"学号"<<" "
<<setw(15)<<"姓名"<<setw(12)<<"班级"<<setw(12)
<<"C++"<<setw(15)<<"英语"<<setw(15)<<"数学"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<m[i].num<<" "
<<setw(15)<<m[i].name<<setw(12)<<m[i].clas<<setw(12)
<<m[i].less.cgrade<<setw(15)<<m[i].less.egrade<<setw(15)
<<m[i].less.mgrade<<endl;
cout<<endl;
bool=1;
}
}
if(bool==0)
cout<<"---抱歉没有您要查询信息---"<<endl;
search();
}
void search2()
{
data_show();
cout<<"请输入您要查找姓名:"<<endl;
string a;
cin>>a;
int bool=0;
for(int i=0;i<n;i++)
{
if(a==m[i].name)
{
cout<<setiosflags(ios::left)<<setw(2)<<"学号"<<" "
<<setw(15)<<"姓名"<<setw(12)<<"班级"<<setw(12)
<<"C++"<<setw(15)<<"英语"<<setw(15)<<"数学"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<m[i].num<<" "
<<setw(15)<<m[i].name<<setw(12)<<m[i].clas<<setw(12)
<<m[i].less.cgrade<<setw(15)<<m[i].less.egrade<<setw(15)
<<m[i].less.mgrade<<endl;
cout<<endl;
bool=1;
}
}
if(bool==0)
cout<<"---抱歉没有您要查询信息---"<<endl;
search();
}
void search3()
{
data_show();
cout<<"请输入您要查找课程:"<<endl;
string a;
cin>>a;
int bool=0;
for(int i=0;i<e;i++)
{
if(a=="C++")
{
cout<<setiosflags(ios::left)<<setw(2)<<setw(15)
<<"姓名"<<setw(12)<<"C++成绩:"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<setw(15)
<<m[i].name<<setw(12)<<m[i].less.cgrade<<endl;
cout<<endl;
bool=1;
}
else if(a=="英语")
{
cout<<setiosflags(ios::left)<<setw(2)<<setw(15)
<<"姓名"<<setw(12)<<"英语成绩:"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<setw(15)
<<m[i].name<<setw(12)<<m[i].less.egrade<<endl;
cout<<endl;
bool=1;
}
else if(a=="数学")
{
cout<<setiosflags(ios::left)<<setw(2)<<setw(15)
<<"姓名"<<setw(12)<<"数学成绩:"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<setw(15)
<<m[i].name<<setw(12)<<m[i].less.mgrade<<endl;
cout<<endl;
bool=1;
}
}
if(bool==0)
cout<<"---抱歉没有您要查询信息---"<<endl;
search();
}
void search()
{
cout<<"按学号查找请输入1"<<endl;
cout<<"按姓名查找请输入2"<<endl;
cout<<"按课程查找请输入3"<<endl;
cout<<"退出请输入4"<<endl;
cout<<"查找信息------请输入选项:";
int r;
cin>>r;
switch(r)
{
case 1:search1();break;
case 2:search2();break;
case 3:search3();break;
case 4:cout<<"-----GOOD LUCK-----"<<endl;break;
default:error();
}
}
void compile()
{
data_show();
cout<<"编辑学生信息-----请选取您要编辑学号:";
int i,a,c=0;
cin>>a;
//i--;
for(i=0;i<e;i++)
{
if(a==m[i].num)
{
c++;
for(;;)
{
cout<<"(1).姓名:";
cout<<m[i].name<<endl;
cout<<"(2).班级:";
cout<<m[i].clas<<endl;
cout<<"(3).学号:";
cout<<m[i].num<<endl;
cout<<"(4).C++成绩:";
cout<<m[i].less.cgrade<<endl;
cout<<"(5).英语成绩:";
cout<<m[i].less.egrade<<endl;
cout<<"(6).数学成绩:";
cout<<m[i].less.mgrade<<endl;
cout<<"(7).exit"<<endl;
cout<<endl;
cout<<"编辑姓名请输入1"<<endl;
cout<<"编辑班级请输入2"<<endl;
cout<<"编辑学号请输入3"<<endl;
cout<<"编辑C++成绩请输入4"<<endl;
cout<<"编辑英语成绩请输入5"<<endl;
cout<<"编辑数学成绩请输入6"<<endl;
cout<<"退出请输入7"<<endl;
cout<<endl;
cout<<"请输入选项:";
int r;
cin>>r;
switch(r)
{
case 1:cout<<"姓名:";
cin>>m[i].name;break;
case 2:cout<<" 班级:";
cin>>m[i].clas;break;
case 3:cout<<"学号:";
cin>>m[i].num;break;
case 4:cout<<"C++成绩:";
cin>>m[i].less.cgrade;break;
case 5:cout<<"英语成绩:";
cin>>m[i].less.egrade;break;
case 6:cout<<"数学成绩:";
cin>>m[i].less.mgrade;break;
case 7:cout<<"-----修改成功-----"<<endl;
return;break;
default:error();
}
}
}
}
if(c==0)
{
error();
compile();
}
}
void sort1()
{
int j,i;
char temp1[20],temp2[20] ;
int temp4,temp5,temp6;
float temp7;
for(i=0;i<e-1;i++)
{
for(j=0;j<e-i-1;j++)
{
if((strcmp(m[j].name,m[j+1].name))>=0)
{
strcpy(temp1,m[j].name);
strcpy(temp2,m[j].clas);
temp4=m[j].less.cgrade;
temp5=m[j].less.egrade;
temp6=m[j].less.mgrade;
temp7=m[j].num;
strcpy(m[j].name,m[j+1].name);
strcpy(m[j].clas,m[j+1].clas);
m[j].less.cgrade=m[j+1].less.cgrade;
m[j].less.egrade=m[j+1].less.egrade;
m[j].less.mgrade=m[j+1].less.mgrade;
m[j].num=m[j+1].num;
strcpy(m[j+1].name,temp1);
strcpy(m[j+1].clas,temp2);
m[j+1].less.cgrade=temp4;
m[j+1].less.egrade=temp5;
m[j+1].less.mgrade=temp6;
m[j+1].num=temp7;
}
}
}
data_show();
cout<<"sort sucess!"<<endl;
cout<<endl;
sort();
}
void sort2()
{
int j,i,k;
char temp1[20],temp2[20] ;
int temp4,temp5,temp6;
float temp7;
for(i=0;i<e-1;i++)
{
k=i;
for(j=i+1;j<e;j++)
{
if((strcmp(m[j].clas,m[k].clas))<0) k=j;
strcpy(temp1,m[k].name);
strcpy(temp2,m[k].clas);
temp4=m[k].less.cgrade;
temp5=m[k].less.egrade;
temp6=m[k].less.mgrade;
temp7=m[k].num;
strcpy(m[k].name,m[i].name);
strcpy(m[k].clas,m[i].clas);
m[k].less.cgrade=m[i].less.cgrade;
m[k].less.egrade=m[i].less.egrade;
m[k].less.mgrade=m[i].less.mgrade;
m[k].num=m[i].num;
strcpy(m[i].name,temp1);
strcpy(m[i].clas,temp2);
m[i].less.cgrade=temp4;
m[i].less.egrade=temp5;
m[i].less.mgrade=temp6;
m[i].num=temp7;
}
}
data_show();
cout<<"sort sucess!"<<endl;
cout<<endl;
sort();
}
void sort3()
{
int j,i;
char temp1[20],temp2[20] ;
int temp4,temp5,temp6;
float temp7;
for(i=0;i<e-1;i++)
{
for(j=0;j<e-i-1;j++)
{
if( m[j].less.egrade<m[j+1].less.egrade)
{
strcpy(temp1,m[j].name);
strcpy(temp2,m[j].clas);
temp4=m[j].less.cgrade;
temp5=m[j].less.egrade;
temp6=m[j].less.mgrade;
temp7=m[j].num;
strcpy(m[j].name,m[j+1].name);
strcpy(m[j].clas,m[j+1].clas);
m[j].less.cgrade=m[j+1].less.cgrade;
m[j].less.egrade=m[j+1].less.egrade;
m[j].less.mgrade=m[j+1].
展开阅读全文