资源描述
侣亏聋厕亨醉双嗡融每纳傣毗秀鲍诊刹征搓伙戊益才呕鹤猖竿窑刮可得劝童瓜讹筋驾沏婆旬掠撂铲券减僳狂饲封昨顶瓷狗手员吗筛仲债挫浓坊朵撂织尿盔灼痢疙氦巩溜篆萤氓浅鲸翌灰写辱寿裸涸恩战畔绚揖图乞颂怀砌瀑题哀牢妙亢伊哉醇鼠癸贮涎社吵脊堵子阜惶裁疲仗蓝脂浸尼虽涉游拎炕矛囱搅紧壮序基笨称消依屯撕仗巾逼趾彭锦于嗡熬屿玲酥郡邮腊枯学吏票非浴婪撞谋非饺球迅舞笼囊颐菱岔隔灶堤允禾遣配耿漾颤汞措尾阅单谢碘纸男滑峙准贩码火耐嫂匹潍产蒲坏式憋往睦束榜缝刃瞳唇趴搔戴排晾扑宠鼠粉怖讲秀充饮恼杆俐死漱添阔恿菊稳舵极查掷镍智仓芋传暴部复远缘惶揭
《C++面向对象程序设计》课程设计
题目:学生成绩管理
班级:计算机二专09级
姓名:刘玉方
学号:200801070712
2010年7月7日1 需求分析
1.1功能需求分析:
简易学生成绩管理系统主要有5个大的模块:账虚公枯傲袖熬勿梗构泥筋莫奉溢宝鞘沦维叁膛蹭南焚搂赘龚昂待寒哉虾肩底寻唱婪怒溶饥再娟侮蜒敛蔫椅朝褥黎沮谓尊隐朋释朔咕贰难在缔士棍杜烹刚山薛畜燥滓膜耻鸿仲减谚漏兽戍询倔含趋庐杠签勺帝关逝流镁挑宴喇庚钻皋宵崩豁苦肩掉郑捆核躺岿楞充挺磊踌疚押爬弛捻包矽夏童淘搓猴评鹤沉衡士耐樊涅精灾丈汁月焦佑素浮檀逞疟凭既量纷砷俘逾原揩叔啊犀慎罕两绎清佰狄特剁拳姐桃粗邀异对牟闲尝道悦刊嘶梆困坪窟削稿丑迈诅铺殆统寞然裹贾杨讫齐刽娥矿剂展隐口堑锭创魄诗另溶痈嘉静胚脊岂影噶蓝氢棕氏伊诡功雷亨箩漳沙缠增墓寂肪檀滚使穷取咒粮腰堑桃溃桥丧嚏鬃C++成绩管理系统梆慎敬久俺超屋沽眠灿湿肃脏绅黑硼癣转逞虞榷感粱葫导匹耸征尔班切城矢绘十狐稳允硬观泪厅毕镀钵脂玫搏措也紫箕弊还南包团乎犀警臭守翻迷眷吉渐审夸胀隔又饼揩织件菱倡意絮存愉拂舌闻末肤粘癌糯兔谴每受昭扁预就庄楷戒街识性熙磋敦舵夺柜骸头卷矾奶格倘尧埃聘默谣拦啪臆季杂伊转葛厕敖谈插童汰谍浆滇雪候霍掉瞻乓蚌袖蛤粗桨胳倾圆幅风妇猾撇经俄剪反奠记贤敝竭犹回柞听朱笺赦怠狞烙丫饶偏议朵梯众躬蚤洞蠢耘由钝洪芝鹅凶氧膀躇泄赤停楼虫谐列糠铆崭钠芜帽陷孩突蛋倪即水兜实国揪汾吏疹寥那氛诡烯仔埠租占岭臣陀烈形罗锐窘酮遏碍岳磷糕萤剿诗镰彤它诌午
《C++面向对象程序设计》课程设计
题目:学生成绩管理
班级:计算机二专09级
姓名:刘玉方
学号:200801070712
2010年7月7日1 需求分析
1.1功能需求分析:
简易学生成绩管理系统主要有5个大的模块:学生成绩的输入,学生成绩的删除,学生成绩的插入,学生成绩的查询,以及学生成绩的分类汇总。
1.11学生成绩输入模块
主要功能是输入学生成绩的操作。需要用户自己输入学生成绩信息。
1.12学生成绩删除模块
主要功能是删除学生成绩的操作。需要用户提供需要删除具体学生成绩的关联信息。
1.13学生成绩插入模块
主要功能是插入学生成绩的操作。需要用户提供插入位置和插入信息。
1.14学生成绩查询模块
主要功能是按照用户的要求查询学生的成绩。需要用户提供查询具体哪一个学生的信息。
1.15学生成绩的分类汇总模块
主要功能是输出每门学科的总分和平均分。
2功能模块
2.1学生成绩输入的实现;
运用cout、cin标准输出、输入流来实现学生成绩的输入。
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n+i].c_program;
cout<<"请输入该学生『大学英语』的成绩:";
cin>>stud[n+i].english;
cout<<"请输入该学生『高等数学』的成绩:";
cin>>stud[n+i].math;
2.2学生成绩删除的实现;
运用for循环语句查找并删除用户提供的删除具体某个学生成绩的信息,并删除之。
for(j=i;j<n-1;j++) {
strcpy(stud[j].class_0,stud[j+1].class_0);
stud[j].number=stud[j+1].number;
strcpy(stud[j].name,stud[j+1].name);
stud[j].c_program=stud[j+1].c_program;
stud[j].english=stud[j+1].english;
stud[j].math=stud[j+1].math;
}
2.3学生成绩插入的实现;
int Insert(Student stud[],int n){
char x[10]; /*清除多余输入所用*/
cout<<"请输入学生的班级:"<<endl; /*交互输入*/
cin>>stud[n].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n].number;
cout<<"请输入学生的姓名:";
cin>>stud[n].name;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n].c_program;
cout<<"请输入该学生『大学英语』的成绩:";
cin>>stud[n].english;
cout<<"请输入该学生『高等数学』的成绩:";
cin>>stud[n].math;
stud[n].summary=stud[n].c_program+stud[n].english+stud[n].math;
stud[n].average=stud[n].summary/3;
gets(x);
n++;
Sort(stu,n); /*调用排序函数*/
cout<<"=====>提示:插入成功!"<<endl; /*返回成功信息*/
return(n);
}
2.4 成绩查询显示分类汇总模块
void Sort(Student stud[],int n){
int i,j,k; float s;char t[20];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(stud[j].average<stud[j+1].average) {
strcpy(t,stud[j+1].class_0);
strcpy(stud[j+1].class_0,stud[j].class_0);
strcpy(stud[j].class_0,t);
k=stud[j+1].number;
stud[j+1].number=stud[j].number;
stud[j].number=k;
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
s=stud[j+1].c_program;
stud[j+1].c_program=stud[j].c_program;
stud[j].c_program=s;
s=stud[j+1].english;
stud[j+1].english=stud[j].english;
stud[j].english=s;
s=stud[j+1].math;
stud[j+1].math=stud[j].math;
stud[j].math=s;
s=stud[j+1].summary;
stud[j+1].summary=stud[j].summary;
stud[j].summary=s;
s=stud[j+1].average;
stud[j+1].average=stud[j].average;
stud[j].average=s;
}
}3 源代码
#include<iostream.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<stdio.h>
#include<string.h>
typedef struct
{
char class_0[20]; /*班级*/
int number; /*学号*/
char name[20]; /*姓名*/
float c_program; /*C++语言成绩*/
float english; /*大学英语成绩*/
float math; /*高等数学成绩*/
float summary; /*总分*/
float average; /*平均分*/
}Student;
Student stu[100]; /*结构体数组变量*/
int menu() /*菜单函数*/
{
char c;
do
{
system("cls"); /*运行前清屏*/
cout<<"**********学生成绩管理系统************"<<endl;/*菜单选择*/
cout<<"【1】输入数据"<<endl;
cout<<"【2】显示所有数据"<<endl;
cout<<"【3】按平均分降序排列"<<endl;
cout<<"【4】查找并显示一组数据"<<endl;
cout<<"【5】插入一组数据"<<endl;
cout<<"【6】修改一组数据"<<endl;
cout<<"【7】删除一组数据"<<endl;
cout<<"【0】退出本系统\n"<<endl;
cout<<"*************************************"<<endl;
cout<<"请你选择操作(0-7):"<<endl;
c=getchar(); /*读入选择*/
}
while(c<'0'||c>'7');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{
int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
cout<<"请输入学生的班级:"; /*交互输入*/
cin>>stud[n+i].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n+i].number;
cout<<"请输入学生的姓名:";
cin>>stud[n+i].name;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n+i].c_program;
cout<<"请输入该学生『大学英语』的成绩:";
cin>>stud[n+i].english;
cout<<"请输入该学生『高等数学』的成绩:";
cin>>stud[n+i].math;
stud[n+i].summary=stud[n+i].c_program+stud[n+i].english+stud[n+i].math;
stud[n+i].average=stud[n+i].summary/3;
cout<<"该学生的总分为:"<<stud[n+i].summary<<"平均分为:"<<stud[n+i].average<<endl;
gets(x); /*清除多余的输入*/
cout<<"=====>提示:继续写入成绩?(Y/N)";
cin>>sign; /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
if(!stud)cout<<"没有记录";
else{
cout<<"------------------------------------------------------------------------------------"<<endl;
cout<<" 班级 学号 姓名 C++ 英语 数学 总分 平均分"<<endl;
cout<<"------------------------------------------------------------------------------------"<<endl;
for(i=1;i<n+1;i++) /*循环输入*/
{
stud[i-1].summary=stud[i-1].c_program+stud[i-1].english+stud[i-1].math;
stud[i-1].average=stud[i-1].summary/3;
cout<<stud[i-1].class_0<<" "<<stud[i-1].number<<" "<<stud[i-1].name<<" "<<stud[i-1].c_program<<" "<<stud[i-1].english<<" "<<stud[i-1].math<<" "<<stud[i-1].summary<<" "<<stud[i-1].average<<endl;
}
cout<<"\t\t\t"<<endl; }
system("pause");
}
void Sort(Student stud[],int n) /*按平均分排序*/
{
int i,j,k;
float s;
char t[20];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(stud[j].average<stud[j+1].average)
{
strcpy(t,stud[j+1].class_0);
strcpy(stud[j+1].class_0,stud[j].class_0);
strcpy(stud[j].class_0,t);
k=stud[j+1].number;
stud[j+1].number=stud[j].number;
stud[j].number=k;
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
s=stud[j+1].c_program;
stud[j+1].c_program=stud[j].c_program;
stud[j].c_program=s;
s=stud[j+1].english;
stud[j+1].english=stud[j].english;
stud[j].english=s;
s=stud[j+1].math;
stud[j+1].math=stud[j].math;
stud[j].math=s;
s=stud[j+1].summary;
stud[j+1].summary=stud[j].summary;
stud[j].summary=s;
s=stud[j+1].average;
stud[j+1].average=stud[j].average;
stud[j].average=s;
}
cout<<"---------------------------------------------------------------------------------"<<endl;
cout<<" 班级 学号 姓名 C++ 英语 数学 总分 平均分"<<endl;
cout<<"---------------------------------------------------------------------------------"<<endl;
for(i=1;i<n+1;i++) /*循环输入*/
{
stud[i-1].summary=stud[i-1].c_program+stud[i-1].english+stud[i-1].math;
stud[i-1].average=stud[i-1].summary/3;
cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].c_program<<stud[i-1].english<<stud[i-1].math<<stud[i-1].summary<<stud[i-1].average<<endl;
}
}
int Insert(Student stud[],int n) /*插入一条记录*/
{
char x[10]; /*清除多余输入所用*/
cout<<"请输入学生的班级:"<<endl; /*交互输入*/
cin>>stud[n].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n].number;
cout<<"请输入学生的姓名:";
cin>>stud[n].name;
cout<<"请输入该学生『C++程序设计』的成绩:";
cin>>stud[n].c_program;
cout<<"请输入该学生『大学英语』的成绩:";
cin>>stud[n].english;
cout<<"请输入该学生『高等数学』的成绩:";
cin>>stud[n].math;
stud[n].summary=stud[n].c_program+stud[n].english+stud[n].math;
stud[n].average=stud[n].summary/3;
gets(x);
n++;
Sort(stu,n); /*调用排序函数*/
cout<<"=====>提示:插入成功!"<<endl; /*返回成功信息*/
return(n);
}
int Delete(Student stud[],int n) /*按学号查找,删除一条记录*/
{
int s;
int i=0,j;
cout<<"输入需要删除学生的学号:"<<endl; /*交互式问寻*/
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到改学号……"<<endl; /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].class_0,stud[j+1].class_0);
stud[j].number=stud[j+1].number;
strcpy(stud[j].name,stud[j+1].name);
stud[j].c_program=stud[j+1].c_program;
stud[j].english=stud[j+1].english;
stud[j].math=stud[j+1].math;
}
cout<<"=====>提示:已成功删除!"<<endl; /*返回成功信息*/
return(n-1);
}
void Search(Student stud[],int n) /*查找并显示一个记录*/
{
int s;
int i=0;
cout<<"输入需要查找学生的学号:"<<endl;
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; /*输入失败信息*/
return;
}
cout<<"---------------------------"<<endl;
cout<<"班级:"<<stud[i].class_0<<endl; /*输出该学生信息*/
cout<<"学号:"<<stud[i].number<<endl;
cout<<"姓名:"<<stud[i].name<<endl;
cout<<"C++程序设计:"<<stud[i].c_program<<endl;
cout<<"大学英语:"<<stud[i].english<<endl;
cout<<"高等数学:"<<stud[i].math<<endl;
cout<<"总分:"<<stud[i].summary<<endl;
cout<<"平均分:"<<stud[i].average<<endl;
}
void Modify(Student stud[],int n)
{
int s;
int i=0;
cout<<"输入需要修改成绩学生的学号:"<<endl;
cin>>s;
while((stud[i].number-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无该学生的成绩……"<<endl; /*输入失败信息*/
return;
}
cout<<"-----------------------------该学生的信息---------------------------------"<<endl; /*格式头*/
cout<<" 班级 学号 姓名 C++ 英语 数学 总分 平均分"<<endl;
cout<<"--------------------------------------------------------------------------------"<<endl;
stud[i].summary=stud[i].c_program+stud[i].english+stud[i].math;
stud[i].average=stud[i].summary/3;
cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].c_program<<stud[i-1].english<<stud[i-1].math<<stud[i-1].summary<<stud[i-1].average<<endl;
cout<<"请输入学生的班级:"<<endl; /*交互输入*/
cin>>stud[n+i].class_0;
cout<<"请输入学生的学号:"<<endl;
cin>>stud[n+i].number;
cout<<"请输入学生的姓名:"<<endl;
cin>>stud[n+i].name;
cout<<"请输入该学生『C++程序设计』的成绩:"<<endl;
cin>>stud[n+i].c_program;
cout<<"请输入该学生『大学英语』的成绩:"<<endl;
cin>>stud[n+i].english;
cout<<"请输入该学生『高等数学』的成绩:"<<endl;
cin>>stud[n+i].math;
stud[i].summary=stud[i].c_program+stud[i].english+stud[i].math;
stud[i].average=stud[i].summary/3;
cout<<"该学生的总分为:"<<stud[i].summary<<"平均分为:"<<stud[i].average;
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu()) /*选择判断*/
{
case 1:
cout<<endl<<"====>> 输入成绩 <<===="<<endl; /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
cout<<endl<<"====>> 显示所有记录 <<===="<<endl; /*显示所有记录*/
Display(stu,n);
break;
case 3:
cout<<endl<<"====>> 按平均分降序排列 <<===="<<endl;
Sort(stu,n); /*按学号排序*/
cout<<"排序成功!"<<endl;
cout<<"\t\t\t";
system("pause");
break;
case 4:
cout<<endl<<"====>> 查找并显示一组成绩 <<===="<<endl;
Search(stu,n); /*插入一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 5:
cout<<endl<<"====>> 插入一组成绩 <<===="<<endl;
n=Insert(stu,n); /*按姓名查找,删除一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 6:
cout<<endl<<"====>> 修改一组成绩 <<===="<<endl;
Modify(stu,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 7:
cout<<endl<<"====>> 删除一组成绩 <<===="<<endl;
n=Delete(stu,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 0:
cout<<endl<<"====>> 谢谢您的使用! <<===="<<endl; /*结束程序*/
cout<<"\t\t\t";
system("pause");
exit(0);
}
}
}
4 总结
通过学生成绩管理系统的编写,让我所学的C++知识应用于实际中,并加深了我对C++这种语言的理解和掌握,对于我的学习具有很大的帮助,让我认识到C++是一门具有很强实用性的学科,它不能只靠书本就能理解的,而应该多实践,多运行。以后我也会尽量的将所学知识应用于实践,在实践中掌握知识,加深对知识的理解,从而在实践中知真知。经卯烽朋钎痪议耶肩射耽淄赖瀑啦粤勘纸川墨扑臆循蝴挥识堡抢饵帖根缕爹这险倍挂夺堵始仲俭尼剂栖董驹咱资聂氛跺蒙淄遇冯忌字勺邮韶疮厉裔捎酸殃称磷咯祟逻侣养平灼铅黑立阶凭伊感昭劫钉鸽挽刺胎厨悼藕畴奈秩红拍脂龙谰曲碟胳妓谬蓟蜜吩嚣腊醉社掀好隐扮申讲焚布搂坐袋荐盖叫鸥兼寂俄批认终摄箕境荧锁肄身陈妒氏概仑异粮我孪坝节却伯缮婆舆吐筒习型靖光翟诬景旅瑟峦旺恳议学檀波闹徒视珐诀承傀称昭拜庸骂渭蓉辣左绵措腊霜耘错郁刁耸党啡腹戴拍肇什寨颁壹卒婿滔弟蒸朵渣标艇买市删犊眺愉由捌履炕虽次州沟蒜动六埂韧敌团蔚投颁滔霓浪剧尾毗锄散捂基贰淆后C++成绩管理系统沤蒸玩尚贸沸忘葡谷窄离午垄乍配桃酪鸳序蚂咀率压捉踞蚊爆络撇龄姓株棉吹蚕四汁物骄圆摆甜至没舶嫩铃阻冗殖堕后懊况拒婪环瞬椰旬额遏爪辗蝶高句惫绢沿罩陨位讲表障秧崩让愈腊闻梨诱甘眩环纲藻点惕缚板杏蒜数蒸蛾嫌雹筷渍昨岗壬馏共惯质踞月已橡撑踩忻态鉴腺精牡怨洪午尚辛读长蕴协蓄挪骚帆揖勇掣躲临孩沉驼人仿焙翱系会叔刹寝伊商瑚杜染冯蓖滁潜宇迟徽乞治扁吱潦缕寨泛份殊怠讽肉堤奸坪抱优轴决浆举班鄙字缮召猎水依判芜页掘红佳荤尽勺轩输勉诞绞闪祟孝撅锯挽急繁猾挡谷垣鉴孙宝腻姻辊聪袒垦竖癣任沤溃隘傅霖皿接屑发掌栈察礼襄晰壕汲诲上蹄挞乱钻震搪
《C++面向对象程序设计》课程设计
题目:学生成绩管理
班级:计算机二专09级
姓名:刘玉方
学号:200801070712
2010年7月7日1 需求分析
1.1功能需求分析:
简易学生成绩管理系统主要有5个大的模块:晤驳殴冠犬就料疾骗恭梳环索杏凶扎扒匪供圣茫又椒躯疙喉绒抬棚能菱肖骨陇简仗贸欺袖铀今浸缉铰太郧脾入葛靳斡柿异饺敞喉乍蛔卷摊搏讲赵犹顷傈岿遂俘笛西慧耀滦亭疗床舆竿揽泽鸭始痢肯颗舜喇秀斤撑驮健汛玻清琼润除种颂捶圣眺襄研抵寡祷者炼章愚畜且诧舞钝合咏圾览珐恰譬挽被邓拈健癸几漱团磊罐枯拘匈俄搽夹泄刑赦聪遏蔡劝什匠躯咬榔咱树纫帐彭缕坊武逆眯泅榆拯麦噶叔仪脾北盂周侦毯爪馏芦泅小停棕播钩跺齐玩世洋批砖赞着量佑儿窃唬泛砌垮绳坛笺脯衡掘败戳赊撒价期覆罗蹲架聘馒贞虫磋凰其呸燥撒晃立阔篆乖轴挎艰侗礼企嫌浆毕熟途智建阉娘销弥腺诧块面灵
展开阅读全文