C语言课程设计报告.docx
- 文档编号:12208144
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:16
- 大小:104.26KB
C语言课程设计报告.docx
《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告
C语言课程设计报告
题目:
学生成绩管理
设计者:
XXX
专业班级:
通信工程XX班
学号:
XX
指导教师:
XXX
2011年10月5日
XXX大学XX学院
目录
1.程序设计与要求…………………………………
2.设计内容与要求…………………………………
3.系统设计的知识…………………………………
4.设计分析…………………………………………
5.部分程序功能简介………………………………
6.程序段的流程图…………………………………
7.运行结果…………………………………………
8.设计总结…………………………………………
1课程设计的目的
1.加深对《c语言升序设计》课程知识的理解,掌握c语言应用程序的开发方法和步骤;2.进一步掌握合理利用c语言进行程序设计的能力;
3.进一步理解和运用结构化程序设计的思想和方法;
4.初步掌握开发一个小型实用系统的基本方法;
5.学会调试一个较长程序的基本方法;
6.学会利用流程图或N-S图表示算法;
7.掌握书写程序设计开发文档的能力(书写课程设计报告)。
2设计内容与要求
设计内容:
学生成绩管理
设计要求:
1信息维护:
要求学生信息数据要以文件的形式保存,能实现学生信息数据的维护。
此模块包括子模块有:
增加学生信息、删除学生信息、修改学生信息
2信息查询:
要求查询时可实现姓名查询、学号查询
3成绩统计:
要求输入学生的成绩和分数
4排序:
能对用户指定的任意课程名,按成绩的升序排列并显示排序结果。
5至少采用文本界面
6学生可自动增加新的功能
3系统设计的知识
函数的声明与应用struct结构for语句if语句return语句break语句循环语句等
4设计分析
1输入学生信息(学号、姓名、数学成绩、c语言成绩、英语成绩、线性代数成绩、大学物理成绩)利用struct结构;
2显示学生信息(将输入的信息显示出来);
3排序(按成绩的高低排序)利用sort函数;
4查询(按学生学号、姓名)searchNum函数;
5插入学生信息(添加学生的新信息)利用insert函数;
6删出学生信息(把多余的学生信息删除)利用del函数;
5.部分程序功能简介
当程序打开时程序会显示:
1输入学生信息2显示学生信息
3排序4按学号查询学生信息
5插入学生信息6删出学生信息
7清除所有记录8退出系统
部分程序功能如下:
structstudentinput()/*输入学生信息*/
{inti;
doublesum=0;
structstudentt;
printf("\n请输入学号:
");
printf("\n请输入姓名:
");
scanf("%d",&t.num);
fflush(stdin);
gets(t.name);
printf("\n请输入数学成绩:
");
scanf("%lf",&t.score[0]);
printf("\n请输入c语言成绩:
");
scanf("%lf",&t.score[1]);
printf("\n请输入英语成绩:
");
scanf("%lf",&t.score[2]);
printf("\n请输入线性代数成绩:
");
scanf("%lf",&t.score[3]);
printf("\n请输入大学物理成绩:
");
scanf("%lf",&t.score[4]);
for(i=0;i<5;i++)
{sum+=t.score[i];
}
t.ave=sum/5;
returnt;
}
voiddisplay(structstudents[],inttotal)//输出学生信息
{inti;
printf("\t学号\t姓名\tc语言\t数学\t英语\t线性代数\t大学物理\t平均\n\n");
for(i=0;i { printf("\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].ave); } } 可以按学生成绩的高低进行排序: voidsort(structstudents[],inttotal)//学生成绩排序 { inti,j; structstudenttemp; for(i=0;i { for(j=0;j {if(s[j].ave {temp=s[j]; s[j]=s[j+1]; s[j+1]=temp;}}}} 输入了成绩、姓名、学号,如果错了可以删除: intdel(structstudents[],inttotal)//删除学生成绩信息 {intt,i,j; printf("\t请输入要删除的学号: "); scanf("%d",&t); for(i=0;i { if(t==s[i].num) break; } if(i { for(j=i;j { s[j]=s[j+1]; } return1; } else { return0; }} 如果有新同学的到来可以插入新信息: voidinsert(structstudents[],inttotal)//插入学生成绩信息 { structstudentt; inti,k; t=input(); for(i=0;i { if(t.ave>s[i].ave) break; } k=i; for(i=total;i>k;i--) { s[i]=s[i-1]; } s[k]=t}; 如果学生成绩有误也可以删除(只输入学号就可以): intdel(structstudents[],inttotal)//删除学生成绩信息 { intt,i,j; printf("\t请输入要删除的学号: "); scanf("%d",&t); for(i=0;i { if(t==s[i].num) break; } if(i { for(j=i;j { s[j]=s[j+1]; } return1; } else { return0; }} 如果要查询学生信息只输入学号: voidsearchNum(structstudents[],inttotal)//查询学生成绩信息 { intnum,i; printf("\n\t请输入要查询的学号: \n\n\t"); scanf("%d",&num); printf("\n"); for(i=0;i { if(num==s[i].num) break; } if(i { printf("\t学号\t姓名\tc语言\t数学分析\t英语\t高等代数\t大学物理\t平均\n\n"); printf("\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].ave);} else printf("\t该学号不存在\n\n\t"); } 主函数(增加学生、排序、显示、删除): voidmain()/*主函数*/ {structstudentstu[N]; charch; inttotal=0,select;//total为学生总数,select为选择 do{ system("cls"); menu(); printf("\t\t\t\t\t请输入你的选择: "); fflush(stdin); scanf("%d",&select); system("cls"); switch(select) {case1: do {system("cls"); stu[total]=input(); total++;//人数+1 printf("\n是否继续Y/y: "); fflush(stdin); ch=getchar(); }while(ch=='Y'||ch=='y'); printf("\n"); break; case2: display(stu,total);//显示 printf("\n"); break; case3: sort(stu,total);//排序 display(stu,total);//显示 break; case4: searchNum(stu,total); break; case5: do {system("cls"); display(stu,total);//显示 insert(stu,total);//插入 total++;//人数+1 system("cls"); display(stu,total);//显示 printf("\n是否继续插入学员Y/y: "); fflush(stdin); ch=getchar(); printf("\n"); }while(ch=='Y'||ch=='y'); break; case6: do {system("cls"); display(stu,total);//显示 if(del(stu,total))//删除 {total--;//人数-1 system("cls"); display(stu,total);//显示 } else {printf("\n\t该学号不存在\n\n\t"); system("pause"); system("cls"); display(stu,total); } printf("\n是否继续删除学员Y/y: "); fflush(stdin); ch=getchar(); printf("\n"); }while(ch=='Y'||ch=='y'); break; case7: printf("\n\n\n\n\n\n\n\n\n\t\t\t此操作将删除所有记录"); printf("\n\n\t\t\t是否继续Y/y: "); fflush(stdin); ch=getchar(); if(ch=='Y'||ch=='y') {total=0; } break; default: printf("\n\n\n\n\n\n\n\n\n\t\t\t真的要退出吗Y/y: "); fflush(stdin); ch=getchar(); printf("\n\n\t\t"); if(ch=='y'||ch=='Y') {exit(0); } break; } system("pause"); }while (1); } 6程序段的流程图 7.运行结果 8.设计总结 本人在撰写该论文的过程中主要做了以下工作: 1.阅读大量的参考资料,对现有学生成绩管理系统的进行了了解和分析。 2.依据本人所掌握的计算机相关技术进行了系统总体结构的设计。 通过对本系统的研究,得出了以下几点结论: (1).在进行设计之前,必需要做大量的系统分析和相关资料的收集和整理。 系统分析越准确,设计的系统越精确,可以大大减少后期的修改、维护工作。 (2).进行程序设计时,要尽量使用开发工具提供的各种功能,这样不仅大大减少代码量,同时可以提高程序的运行效率。 这次的毕业设计中虽然时间紧迫但我学会了很多,也感到自身知识的贫乏,设计中存在许多不足之处,有待于不断完善,敬请老师批评指正。 8参考文献 [1]谭浩强,C程序设计(第二版),北京: 清华大学出版社,2001.1 [2]陈朔鹰,C语言程序设计习题集,北京: 人民邮电出版社,2003.6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告