资源描述
淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称: C++语言课程设计
姓 名:学 号:
专业班级:
系 (院): 计算机工程学院软件工程系
设计时间:2011.6。8~2011.6。24
设计地点:计算机工程学院机房
成绩:
指导教师评语:
签名:
年 月 日
C++课程设计报告 第 25 页,共 25 页
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]。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<<
展开阅读全文