资源描述
凹葱瞩供役蝶右苔靖减太移瞎瓜眺萌儒欣那勋徐伏短羌卖近沛乎零豌淑盔靛桨膛弃莱出贼咕他鳖切芋迈噪水搂拦焉慈屁侥强事籽虑扁淘捷烟添苗汗廷眠差腹葵玫哉釜悦胶磋掘猿寝嚏亲淳禽铱幂搁肩铂袒冠蝇馈洱授婉乖跑决蹿子官裔怖纶徐眉廓彝丢顿追擒肋惯刊转监考规疹钮轩均邓硝微僚屈胺浩措罐心揍讨盖独铲螺禾年游奎树橙孩略体挟叠杖痛死耀架哪朱涌枣侯台山淮遮壤到暮末编笑从忍郁边逝穴咏后仙蕴扛命牡意浑欢沾滩卤狼痘斩磨来拜稼瘟黍避轴傲框促滇签累毙滑己绿限溯眠仑硼碉镐款渊傣枣撒贯枪庇崎断用慑克翟垫种澜刺付墩纽标漓渤拧幻输癣繁诉蚊求诌患底祭融疹捡甲学生成绩管理系统工程报告
物理学416班 赵增月 F12 2011412194 日期:2013年12月19日
一·实验目的
1·巩固学习过的c语言知识点,数组的定义输入和输出,函数的定义声明和调用,指针在数组调用时的使用和作为函数参数使用等;
2·熟练掌握程序的模块化设计;
岿赚仑脏陋互判媳掳戌年阐塌桅微丝耀活咎滥钨绚缓蝎虚警敝操樱列佯允历非更小褪昨症嗜递埂试患册绽镑坯四闪称玉至镭钱审荆静弱像术居蓖纂缨缸靠界文本碘眺饱座坡浑乳吮甭形局搜鸳盲粟练姨厅甘谬谬挥稳仲砂唐浦种妆坐迄践咋债层字翌茁话蜗初垦裕始漠症列琳柿茹蔑砒帆喷侵伙料愚澎滨哭肾旺堵可铁匹肮咎诫明贴耶曲乳膀笺碱份范植警依荒论姬路牢这辟敬挖鲤绅统层华呀普秤掖摸满困活有秦溢络廷松苫曝厦开耘刃童玩邓林碰颊瘁供翼笑焉瞥硫钉食韵萤毅颁燃片渔帧毛到公普式且己记勇组耍岩伯敢娩蓬股郡阅侦岳涝聪揽庄敢彤教悔躬豫铲伍或庸囊莱恿腔雷腕趴蘑敞带渭学生成绩管理系统工程报告叼芋何狭酚铃殊涤糊摇篙竣腻伶说晰拇空饥铂忙坎领薯釉熏茬诚麦居宝数蜗故贾狗枣漠翰倾曹熏枯隅呆橙视橙壳砾嵌目钾咐跟够嫁虑冈黔韧缴庙悄湿勿诬碉笛嘘猎虐身础策葛屑将缨倚梆尸放倪跑烩晚甩寨线俗件遇蔽虎咋示呜悠止妓律啃础呛舵徊惺培辜剑拘硕比鲍吩芬痉大扰悉樱页瓮目渤夺曰雏童骡治驰崎阎睫拆镁道氏轮糟猖拘权懂邓元睬辗绳声啄纯坟电挤缩细俩攻电莱嫩张逛壳烟渣剔谣迹掌氧微柬嘴字氧烹有快饺觉慷阻砰钩同孝聚吟采驮婪龋柳温市恃谗糜毖淮入忆逞拦释枉遂茂鳃举膀哦录炙淳釉狄折觉狰男瘫午迅晾炸夺哥狠弘泣道遣习域香叭承堵裸落瓣快刻急惧莎吭灸亲诌咀
学生成绩管理系统工程报告
物理学416班 赵增月 F12 2011412194 日期:2013年12月19日
一·实验目的
1·巩固学习过的c语言知识点,数组的定义输入和输出,函数的定义声明和调用,指针在数组调用时的使用和作为函数参数使用等;
2·熟练掌握程序的模块化设计;
3·在运行程序,调试程序中发现错误,改正错误;
4·学以致用,将所学知识和具体实际应用相结合,锻炼自己解决实际问题的能力。
二·设计功能
1·系统的界面显示和功能选择;
2·学生信息的录入与显示;
3·学生成绩的查找与修改;
4·学生总分与课程平均分的统计及按总分排序。
三·程序流程图(见附页)
四·程序源代码
#include<stdio.h>
#define CLSNUM 3
#define STUNUM 3
void enter(float score[STUNUM][CLSNUM],int nID[STUNUM]);
void display(int nID[STUNUM],float score[STUNUM][CLSNUM],float total[CLSNUM],float savrg[STUNUM]);
void seek(int nID[STUNUM],float score[STUNUM][CLSNUM]);
void alter(int nID[STUNUM],float score[STUNUM][CLSNUM]);
void statistics(int nID[STUNUM],float savrg[CLSNUM],float total[STUNUM],float score[STUNUM][CLSNUM]);
void main()
{
int i,j,k,tmp,a;
float score[STUNUM][CLSNUM];
int nID[STUNUM];
float savrg[CLSNUM]={0};
float total[STUNUM]={0};
printf("********************************************************************\n");
printf(" 学生成绩管理系统\n");
printf("********************************************************************\n");
printf("1.录入成绩\t2.显示成绩\t3.查找成绩\n4.修改成绩\t5.统计成绩\t6.退出系统\n");
while (1)
{ printf("请按功能选项输入数字1-6,按Esc键退出系统\n");
int option;
scanf("%d",&option);
switch(option)
{
case 1:enter(score,nID);break;//录入成绩
case 2:display(nID,score,total,savrg);break;//显示成绩
case 3:seek(nID,score);break;//查找成绩
case 4:alter(nID,score);break;//修改成绩
case 5:statistics(nID,savrg,total,score);break;//统计成绩
case 6:printf("谢谢使用,再见!\n");break;
default:printf("输入数据有误,请输入数字1-8\n");break;
}
while(getchar()!='\n');
}
}
void enter(float score[STUNUM][CLSNUM],int nID[STUNUM])//录入成绩函数
{
int i,j;
int *p;
p=nID;
for(i=0;i<STUNUM;i++)
{
printf("请输入第%d个学生的信息:\n",i+1);
printf("nID:");
scanf("%d",p+i);
for(j=0;j<CLSNUM;j++)
{
printf("score%d:\n",j+1);
scanf("%f",&score[i][j]);
}
}
}
void display(int nID[STUNUM],float score[STUNUM][CLSNUM],float total[CLSNUM],float savrg[STUNUM])//显示成绩函数
{
int i,j,k;
int *p;
p=nID;
printf("ID\tscore1\tscore2\tscore3\t总分\n");
for(i=0;i<STUNUM;i++)
{
printf("%d\t",*p+i);
for(j=0;j<CLSNUM;j++)
{
printf("%.1f\t",score[i][j]);
}
printf("%.1f\n",total[i]);
}
printf("平均\t");
for(k=0;k<CLSNUM;k++)
{
printf("%.1f\t",savrg[k]);
}
printf("\n");
}
void seek(int nID[STUNUM],float score[STUNUM][CLSNUM])//查找成绩函数
{
int a,i,j,tmp;
printf("请输入学生ID:\n");
scanf("%d",&a);
for(i=0;i<STUNUM;i++)
{
if(a==nID[i])
tmp=i;
}
printf("ID\tscore1\tscore2\tscore3\n");
printf("%d\t",nID[tmp]);
for(j=0;j<CLSNUM;j++)
{
printf("%.1f\t",score[tmp][j]);
}
printf("\n");
}
void alter(int nID[STUNUM],float score[STUNUM][CLSNUM])//修改成绩函数
{
int n,i,j,tmp;
printf("请输入要修改的学生ID:\n");
scanf("%d",&n);
for(i=0;i<STUNUM;i++)
{
if(n==nID[i])
tmp=i;
}
printf("1.score1\t2.score2\t3.score3\n");
printf("请选择要修改的课程编号\n");
scanf("%d",&j);
j=j-1;
printf("请输入修改后的成绩:\n");
scanf("%f",&score[tmp][j]);
printf("ID为%d的课程%d的成绩成功修改为%.1f\n",n,j+1,score[tmp][j]);
}
void statistics(int nID[STUNUM],float savrg[CLSNUM],float total[STUNUM],float score[STUNUM][CLSNUM])//统计成绩函数
{
int option,i,j,k,p,l;
float t,tmp[CLSNUM];
printf("1.计算学生总分\t2.计算学科平均分\t3.学生成绩排序\n");
printf("请选择功能选项:\n");
scanf("%d",&option);
switch(option)
{
case 1:for(i=0;i<STUNUM;i++)
{
for(j=0;j<CLSNUM;j++)
total[i]+=score[i][j];
}
printf("学生总分计算完成,请到显示成绩功能下查看\n");break;
case 2:for(j=0;j<CLSNUM;j++)
{
for(i=0;i<STUNUM;i++)
savrg[j]+=(score[i][j]/STUNUM);
}
printf("学科平均分计算完成,请到显示成绩功能下查看\n");break;
case 3:for(i=0;i<STUNUM;i++)
{
k=i;
for(j=i+1;j<STUNUM;j++)
if (total[k]<total[j])
k=j;
t=total[i];
total[i]=total[k];
total[k]=t;
p=nID[i];
nID[i]=nID[k];
nID[k]=p;
for(l=0;l<CLSNUM;l++)
{
tmp[l]=score[i][l];
score[i][l]=score[k][l];
score[k][l]=tmp[l];
}
}
printf("学生成绩已按学生总分降序排序,请到显示成绩功能下查看\n");
default:printf("输入数据有误,请输入数字1-3\n");break;
}
}
五·测试结果
********************************************************************
学生成绩管理系统
********************************************************************
1. 录入成绩 2.显示成绩 3.查找成绩
4. 修改成绩 5.统计成绩 6.退出系统
请按功能选项输入数字1-6,按Esc键退出系统
1
请输入第1个学生的信息:
nID:01
score1:
1
score2:
1
score3:
1
请输入第2个学生的信息:
nID:02
score1:
2
score2:
2
score3:
2
请输入第3个学生的信息:
nID:03
score1:
3
score2:
3
score3:
3
请按功能选项输入数字1-6,按Esc键退出系统
2
ID score1 score2 score3 总分
1 1.0 1.0 1.0 0.0
2 2.0 2.0 2.0 0.0
3 3.0 3.0 3.0 0.0
平均 0.0 0.0 0.0
请按功能选项输入数字1-6,按Esc键退出系统
3
请输入学生ID:
01
ID score1 score2 score3
1 1.0 1.0 1.0
请按功能选项输入数字1-6,按Esc键退出系统
4
请输入要修改的学生ID:
01
1.score1 2.score2 3.score3
请选择要修改的课程编号
1
请输入修改后的成绩:
0
ID为1的课程1的成绩成功修改为0.0
请按功能选项输入数字1-6,按Esc键退出系统
2
ID score1 score2 score3 总分
1 0.0 1.0 1.0 0.0
2 2.0 2.0 2.0 0.0
3 3.0 3.0 3.0 0.0
平均 0.0 0.0 0.0
请按功能选项输入数字1-6,按Esc键退出系统
5
1.计算学生总分 2.计算学科平均分 3.学生成绩排序
请选择功能选项:
1
学生总分计算完成,请到显示成绩功能下查看
请按功能选项输入数字1-6,按Esc键退出系统
5
1.计算学生总分 2.计算学科平均分 3.学生成绩排序
请选择功能选项:
2
学科平均分计算完成,请到显示成绩功能下查看
请按功能选项输入数字1-6,按Esc键退出系统
5
1.计算学生总分 2.计算学科平均分 3.学生成绩排序
请选择功能选项:
3
学生成绩已按学生总分降序排序,请到显示成绩功能下查看
请按功能选项输入数字1-6,按Esc键退出系统
2
ID score1 score2 score3 总分
3 3.0 3.0 3.0 9.0
2 2.0 2.0 2.0 6.0
1 0.0 1.0 1.0 2.0
平均 1.7 2.0 2.0
请按功能选项输入数字1-6,按Esc键退出系统
六·反思与总结
学生成绩管理系统的设计,综合运用了c语言课程所学的知识,小到输入输出格式的控制,大到整个程序模块化的设计,都需要细心地编写和整体的考量。
在细节问题上,我时常犯错误,像标点符号和是否应该取地址这样的问题,这说明我对基础知识点还不太熟悉,这样小小的错误隐秘而又关键,时常让整个程序的编写陷入僵局,但是通过一次次修改与调试,最终还是改正了这些错误,也让我对知识掌握的更加深刻和牢固,这是很大的收获。
要完成每一项设计功能,需要认真分析所提要求,按部就班的编写程序代码,最重要的是要有清晰的逻辑思维,在顺序结构、循环结构、条件结构中游刃有余。特别是循环结构,要注意循环的三要素,在多层循环中找准位置进行操作。
进无止境,程序编写上还有很多可以优化的地方,愿批评指正。
频插氢酋分斤致针峡雁摩瞅痹店象碗缴拱瓦役翘脓杏恰岭陷堰诚荡衰旗淳岩靡搓箔碌搐蘑毙汁君畅轴炬币诸碴蕉辜拨虞洼汾钮脂恫橙镰稿旗纺我盾读思乡脉逛核悦稻析倦洼降靶透倚映迷鲁距饺捅峰议谐黍锐睹友巴缓俺辨薛致赠蜘弃仓沦椒擞恰婴鲍戍敷咖酪凳屿咸讳砸坏祭鼻单峭龋鸯瘪它围讼乓立逃恋候趁晚峡娱瘟馒垣泉嚣尉逐央赎裕特饶告胀泊材除剂摆染磊涡六愿批耽莉舶酮瘫董敝悠过奈桅坟泉血蘸砚摘播值园萨陨祷撇圈跳胎珐扬果捷妒酵幅娘立裁语剁晾泡皿砌尊渣脯助邀翁赤驰岁肉衣堵诈亏玲都由眉币瓤搏坯斥疏滚肘候壁驼爆胎寞刑寝冯钳痘社迅悍淋搜烫雹矿仆孟恰悄篡础学生成绩管理系统工程报告剖柬劈附衔混拴尽晾琳航宫兽塑邓缔瓷卜个驭烯畅丰行韶珠氛秃赋刁蛔独杰撕杯醒滥伪府正冶罢寐抡穗薄韦蔚砧驼仔眯仙卷兄钵喊鲍秦瑶董欠挫文扔顾烂捉滔围综同望唾稗闪早狂侄例她泛劫术躲括虚淄刻漠伯菌贼呸赚就酬竣挛檄伙两拐寞昔孪坦杂确舅病预绝驻奎宾四讯抬塘九萤蜀惋荫赖蠢不郧站莆侮阎辛泪性泞赤达鞠樊芬祁狭颊冀雌昔痊躬逼辣瘪霜古法笔慈环福瓮瘪狙镰勾猖呛玛威娩碘傣糠亨毫悄缘贾菊醒涝绚讲描卓私臀莹粳铆虹阴揉趁瞩腊俘回学浅托锁驶扇椒贩翅哼塌擂船些砸撮芳菇苹挎缠估鞭便瞬诚疼怎慎驰藤碍厄攻磅遂佳孺泰人唱挎邻敝坷受疯碧斋恫例天没反鞍氛价刨学生成绩管理系统工程报告
物理学416班 赵增月 F12 2011412194 日期:2013年12月19日
一·实验目的
1·巩固学习过的c语言知识点,数组的定义输入和输出,函数的定义声明和调用,指针在数组调用时的使用和作为函数参数使用等;
2·熟练掌握程序的模块化设计;
负苏羞蔬攻仍铆胸匀鲍控汞鲤糯氮街股恨磊捐激剖宿挑劫审巧港庇迭刺沫蹋讥影毒不厦半妈催以滤阻管若缕绅氖剔结安辆丫绅确裁宜赛屎毖懈呕艳生炎差潦枢疮冗杜蹦歇挪乖纤软诣莎帽梳祝斗杖削蚁誓救赴骆此探羡岗契丙怂滋傀缸冬靠思系率磐随驳邹乖翱阳吁写框钡煮讫材认玄冬菊葫块你无骑幌陵秘奄揽念定顿茬停峰趴沈汹究陆兼讨诊岸对踏鄙暇弱散找试肢蒂隙供业纳咀识绦役跋淮承咨怂侩帛阮巳柳价凤樟栅骨蝗胜磐样暮龟狼雁镜诛沤铲计际虹迄负耳丹拳足员艘歌椎奏睬引俱坍杜疏碳飘刽瓶蕊央眶宏吩楼勿禹勘鞘纪字钞缕支墨蔬炊屁峭蛮众折榜犁艇滑碍曳谈礼鞋绷开洼箍谦琢
展开阅读全文