1、 淮 海 工 学 院 计算机工程学院 课程设计报告 设计名称: C++语言课程设计 姓 名:学 号: 专业班级: 系 (院): 计算机工程学院软件工程系 设计时间:2011.6。8~2011.6。24 设计地点:计算机工程学院机房 成绩: 指导教师评语: 签名: 年 月 日 C++课程设计报告 第 25 页,共 25 页 1.课程设计目的 C++课程设计是计算机科学与技术专业重要的实践性教学环
2、节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务. 2.课程设计任务与要求: 要求: 本次课程设计利用《C++程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务. 要求: 1、对系统进行功能需求分析 2、设计合理的数据结构和系统框架 3、编程简练,程序功
3、能齐全,能正确运行 4、说明书、流程图要清楚 5、课题完成后必须按要求提交课程设计报告 任务: 设计一个学生成绩排名系统,该系统的主要功能如下: 1) 具备对成绩的管理功能(添加、删除、排序) 2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等) 3) 具备按学号、姓名、或课程名查询成绩的功能。 4)学生成绩应该保存在文件中。 3.课程设计说明书 ⑴概要设计 模块说明: 在我设计的程序中一共包括了九个模块,分别是:浏览模块、添加模块、删除模块、查询模块、编辑模块、排序模块、读入文件模块、统计模块、退出系统模块.这九个功能中各个都是独立分开作为子函数的
4、也就是说为了实现这九个功能我写了九个函数,在主函数中通过switch语句,把九个函数联系了起来,同时,为了实现多次使用这九个函数,就在switch语句外加了for循环。
功能机构图:
⑵详细设计
总体流程图:
各功能模块流程图:
①浏览功能模块流程图②添加功能模块流程图③删除功能模块流程图
④查询功能模块流程图
⑤修改功能模块流程图
⑥排序功能模块流程图
⑦读入文件功能模块流程图
⑧统计功能模块流程图
⑨退出系统功能模块流程图
4.课程设计成果
源代码:
#include〈iostream>
#include〈string>
#include 5、stream〉
#include〈iomanip>
using namespace std;
struct lesson
{
float cgrade;
float egrade;
float mgrade;
};
struct man
{
char name[10];
char clas[20]; 6、
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()
{
7、 int a;
cout<〈"添加学生信息"< 8、
{
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 9、de+m[i].less.mgrade;
m[i]。average=m[i]。sum/3;
cout〈 10、e< 11、
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+ 12、1].num;
}
for(i=0;i 13、 }
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].le 14、ss。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)
15、 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 16、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]。les 17、s。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_c 18、grade=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。mgrad 19、e;
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〈<”请输入学生学号:”〈 20、ess.egrade+m[i]。less。mgrade;
cout<<”他是:”< 21、
{
case 1:cout<<"(1)C++成绩最高分: ”〈〈maxc
〈〈" C++成绩最低分: ”〈〈minc〈〈endl;
cout〈<” C++全班平均分: "〈 22、e〈 23、 case 4:cout〈<” 全班最高分: ”〈〈max_score〈〈endl;
cout<〈"他的信息为:"〈 24、〈max_num<<” "
< 25、 〈〈setw(15)〈〈”姓名"〈〈setw(12)〈<"班级”〈〈setw(12)
〈<"C++”〈 26、
break;
default:error(); break;
}
}
}
void search1()
{
data_show();
cout〈〈”请输入您要查找的学号:"〈 27、 {
cout〈〈setiosflags(ios::left)〈〈setw(2)〈<”学号"〈<" "
〈 28、less.cgrade<〈setw(15)〈〈m[i]。less。egrade〈 29、
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)
〈 30、〈”C++”< 31、
}
}
if(bool==0)
cout<〈”———抱歉没有您要查询的信息———”< 32、
{
if(a==”C++”)
{
cout〈〈setiosflags(ios::left)<〈setw(2)〈 33、s。cgrade<〈endl;
cout〈〈endl;
bool=1;
}
else if(a==”英语”)
{
cout〈 34、 35、 cout〈〈endl;
bool=1;
}
}
if(bool==0)
cout<〈"—-—抱歉没有您要查询的信息--—"〈〈endl;
search();
}
void search()
{
cout〈〈"按学号查找请输入1”<〈endl;
cout〈〈"按姓名查找请输入2”< 36、
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() 37、
{
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〈 38、l;
cout〈〈”(2).班级:";
cout〈 39、ess。mgrade< 40、l;
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<〈”学号:”;
41、 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;b 42、reak;
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 43、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 44、[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+ 45、1].less.mgrade=temp6;
m[j+1]。num=temp7;
}
}
}
data_show();
cout〈〈"sort sucess!"<〈endl;
cout〈 46、
{
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 47、[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 48、
cout〈〈"sort sucess!”< 49、1,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]。les 50、s.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<<






