C语言课程设计报告学生信息管理.docx
- 文档编号:24164328
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:16
- 大小:18.84KB
C语言课程设计报告学生信息管理.docx
《C语言课程设计报告学生信息管理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生信息管理.docx(16页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告学生信息管理
C语言课程设计报告
班级:
学生姓名:
学号:
指导老师:
日期:
目录
1.前言………………………………3
2.需求分析…………………………3
3.总体设计…………………………3
4.详细设计…………………………4
5.程序清单…………………………4
6.调试过程…………………………11
7.结束语……………………………11
8.参考文献…………………………11
1.前言
“C语言课程设计”是在学习“C语言程序设计基础”课程之后进行的一个实践教学环节,课程设计的目的是:
进一步培养学生结构化程序设计的思想,加深对C语言基本语法和程序结构的理解。
针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
掌握C语言的编程技巧和上机调试程序的方法。
掌握程序设计的常用算法。
为以后编写大型程序打下基础。
2.需求分析
1、程序结构合理
2、界面比较美观(两级菜单)
3、最好使用单链表(成绩可以评为优)
4、输入时有提示,输出美观,整齐
学生数据由学号、姓名、班级、三门课(数学、英语、计算机)的成绩和平均成绩构成。
功能要求:
(1)添加学生的记录
(2)查询学生(分别按学号和姓名)
(3)对学生数据排序(分别按平均成绩和计算机成绩的降序)
(4)删除学生记录
(5)修改学生记录
(6)班级成绩分析(各科平均成绩、最高分、最低分、及格率)
(7)输出学生信息表
3.总体设计(包括功能划分、数据结构、总流程图)
此系统划分为如下模块:
输入模块、查询模块、修改模块、输出模块、排序模块、删除模块和成绩分析模块。
通过定义的结构体来处理学生信息
4.详细设计
1.输入学生信息:
其中包括学号,班级,姓名及学生的数学英语计算机成绩,可用函数input(STUDENT*stu,int*len)来实现。
2.查询模块:
可用find(STUDENT*stu,intlen)函数实现,找到就输出此学生的全部信息
3.修改模块:
可用modify(structstudentstu[])函数实现。
4.输出学生信息:
利用output(STUDENT*stu,intlen)函数,输出学生的全部纪录。
5.排序:
可用sort(STUDENT*stu,intlen)函数,分别按平均成绩和计算机成绩排序。
6.删除学生纪录:
可用delete_item(STUDENT*stu,int*len)函数删除纪录‘
7.班级成绩分析:
利用stat(STUDENT*stu,intlen)函数得到各科各科平均成绩、最高分、最低分、及格率。
5.程序清单
#include
#include
#include
#defineMAXN35
#defineMAX_NAME256
typedefstructstudent//学生信息
{
intno,clas;
charname[MAX_NAME];
doubleenglish;
doublemath;
doubleProgramming;
doublemark_ave;
doublemark_tot;
doubleaverage;
}STUDENT;
/*-----------输入信息子程序---------*/
voidinput(STUDENT*stu,int*len)
{
intno;
putchar('\n');
printf("%s\n","请输入新的记录,如果需要退出当前菜单请输入-1.");
printf("%s\n","格式:
\n学号\n班级\n");
printf("%s\n","姓名英语数学C语言");
putchar('\n');
printf("如:
\n");
printf("04\n");
printf("1郭旺100100100\n");
scanf("%d",&no);
while(no!
=-1){
stu[*len].no=no;
scanf("%d%s%lf%lf%lf",&stu[*len].clas,&stu[*len].name,&stu[*len].english,&stu[*len].math,&stu[*len].Programming);stu[*len].mark_ave=(stu[*len].english+stu[*len].math+stu[*len].Programming)/3.0;stu[*len].mark_tot=stu[*len].english+stu[*len].math+stu[*len].Programming;
(*len)++;
scanf("%d",&no);
}
}
/*-------修改信息子程序------*/
voidmodify(structstudentstu[])
{
inti;
charz;
printf("Inputnum:
");
scanf("%ld",&stu[i].no);
printf("Inputname:
");
scanf("%s",&stu[i].name);
printf("Inputclas:
");
scanf("%d",&stu[i].clas);
printf("InputscoreofMath:
");
scanf("&d",&stu[i].math);
printf("InputscoreofEnglish:
");
scanf("&d",&stu[i].english);
printf("InputscoreofComputer:
");
scanf("&d",&stu[i].Programming);
stu[i].average=(stu[i].math+stu[i].english+stu[i].Programming)/3;
printf("\tNUM\tNAME\tCLAS\tMATH\tENGLISH\tCOMPUTER\tAVERAGE\n");
printf("\t%4ld\t",stu[i].no);
printf("%s\t",stu[i].name);
printf("%4d\t%4d\t%4d\t%4d\n",stu[i].math,stu[i].english,
stu[i].Programming,stu[i].average);
printf("Next?
y/n?
?
?
");
scanf("%s",&z);
if(z=='y')
modify(stu);
}
/*---------------输出信息子程序---------------*/
voidoutput(STUDENT*stu,intlen)
{
inti;
system("cls");
printf("%8s","学号");
printf("%8s","班级");
printf("%8s","姓名");
printf("%8s","英语");
printf("%8s","数学");
printf("%10s","C语言");
printf("%12s","平均分");
printf("%10s","总分");
putchar('\n');
for(i=0;i<80;i++)
putchar('=');
putchar('\n');
for(i=0;i { printf("%8d",stu[i].no); printf("%2d",stu[i].clas); printf("%8s",stu[i].name); printf("%8.1lf",stu[i].english); printf("%8.1lf",stu[i].math); printf("%10.1lf",stu[i].Programming); printf("%12.1lf",stu[i].mark_ave); printf("%10.1lf",stu[i].mark_tot); putchar('\n'); } for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("按回车键继续."); getchar(); getchar(); } /*--------------排序子程序------------*/ voidsort(STUDENT*stu,intlen) { inti,j,k; STUDENTtemp; for(i=0;i for(k=i,j=i+1;j if(stu[k].mark_ave>stu[j].mark_ave)k=j; if(k! =i){ temp=stu[i]; stu[i]=stu[k]; stu[k]=temp; } } } /*--------------------查询子程序-----------------------*/ voidfind(STUDENT*stu,intlen) { intfind_no,result; inti; lab: result=0; printf("%s\n","请输入需要查找的学生的学号,退出当前菜单请输入-1."); scanf("%d",&find_no); if(find_no==-1)return;/*exitthefinesubprogram*/ while(stu[result].no! =find_no&&result if(result>=len){ printf("%s\n","未查询到相关信息"); gotolab; } else{ system("cls"); printf("%s\n","查询信息如下: "); for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("%8s","学号"); printf("%8s","姓名"); printf("%8s","班级"); printf("%8s","英语"); printf("%8s","数学"); printf("%10s","C语言"); printf("%12s","平均分"); printf("%10s","总分"); putchar('\n'); printf("%8d",stu[result].no); printf("%8s",stu[result].name); printf("%2d",stu[result].clas); printf("%8.1lf",stu[result].english); printf("%8.1lf",stu[result].math); printf("%10.1lf",stu[result].Programming); printf("%12.1lf",stu[result].mark_ave); printf("%10.1lf",stu[result].mark_tot); putchar('\n'); for(i=0;i<80;i++) putchar('='); putchar('\n'); gotolab; } } /*-------------删除子程序--------------*/ voiddelete_item(STUDENT*stu,int*len) { intno,i,pos; lab: pos=0; printf("%s\n","输入需要删除的学生的学号,退出当前菜单请输入-1."); scanf("%d",&no); if(no==-1)return; while((stu[pos].no! =no)&&(pos<*len))pos=pos+1; if(pos>=*len){ printf("%s\n","未找到需要删除的学生"); gotolab; } else{ for(i=pos+1;i<*len;i++) stu[i-1]=stu[i]; *len=*len-1; if(*len==0){ printf("%s\n","没有任何记录,请按回车键返回."); getchar(); getchar(); return; } gotolab; } } /*---------------成绩分析子程序------------*/ voidstat(STUDENT*stu,intlen) { intno_59=0,no_69=0,no_79=0,no_89=0,no_100=0; inti; floatpercent; for(i=0;i if(stu[i].mark_ave<=59)no_59++; elseif(stu[i].mark_ave<=69)no_69++; elseif(stu[i].mark_ave<=79)no_79++; elseif(stu[i].mark_ave<=89)no_89++; elseno_100++; } system("cls"); for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("%10s","分数"); printf("%10s","0--59"); printf("%10s","60--69"); printf("%10s","70--79"); printf("%10s","80--89"); printf("%10s","90--100"); putchar('\n'); putchar('\n'); printf("%10s","学生"); printf("%10d",no_59); printf("%10d",no_69); printf("%10d",no_79); printf("%10d",no_89); printf("%10d",no_100); putchar('\n'); percent=no_59/(no_59+no_69+no_79+no_89+no_100); printf("%f",percent); for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("按回车键返回"); getchar(); getchar(); } /*---------------输出学生信息信息子程序------------*/ voidpaint() { inti; system("cls"); printf("%55s\n","华中科技大学文华学院学院学生管理系统\n"); for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("1输入信息2输出信息\n"); printf("3排序4查找\n"); printf("5修改信息6删除\n"); printf("7成绩分析8退出\n"); for(i=0;i<=79;i++) putchar('='); putchar('\n'); printf("%s\n","请输入各操作对应的序号: "); } /*-----------主程序--------------*/ voidmain() { STUDENTstu[MAXN]; intlen=0; charctrl_ch; paint(); scanf("%c",&ctrl_ch); while(ctrl_ch! ='0'){ switch(ctrl_ch){ case'1': input(stu,&len); break; case'2': output(stu,len); break; case'3': sort(stu,len); break; case'4': find(stu,len); break; case'5': modify(stu); break; case'6': delete_item(stu,&len); break; case'7': stat(stu,len); break; default: if(ctrl_ch! ='\n')printf("%s\n","输入错误! "); break; } if(ctrl_ch! ='\n')paint(); scanf("%c",&ctrl_ch); } } 6、调试过程 Compiling... 学生成绩管理系统.cpp C: \DocumentsandSettings\Administrator\桌面\学生成绩管理系统.cpp(43): errorC2065: 'i': undeclaredidentifier C: \DocumentsandSettings\Administrator\桌面\学生成绩管理系统.cpp(220): warningC4244: '=': conversionfrom'int'to'float',possiblelossofdata Errorexecutingcl.exe. 学生成绩管理系统.exe-1error(s),1warning(s) 解决办法: 在修改程序函数中定义inti; 将220行中int改为float. 7.结束语(包括程序有待改进的地方、收获与体会) 通过此次学生成绩管理系统的设计,使我对C语言程序设计有了深一步的了解,对系统设计及开发有了比较全面的思路。 首先,对系统进行需求分析,确定各个功能函数;然后一个个对它们进行的编程,并仔细检查是否有错;在完成这一步后才开始构造主函数,通过主函数把各个功能函数联系起来,编译修改错误和不足之处。 此次课程设计锻炼了我们分析问题和解决问题的能力,提高了适应实际,实践编程的能力,为今后的学习和实践大下了良好的基础。 参考文献 《C程序设计》(第三版)潭浩强 《C语言课程设计》(中国铁道出版社)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 学生 信息管理
![提示](https://static.bdocx.com/images/bang_tan.gif)