精品C语言毕业课程设计学生成绩管理系统.docx
- 文档编号:8514200
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:20
- 大小:309.09KB
精品C语言毕业课程设计学生成绩管理系统.docx
《精品C语言毕业课程设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《精品C语言毕业课程设计学生成绩管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
精品C语言毕业课程设计学生成绩管理系统
青岛农业大学
课程设计报告
题目:
学生成绩管理系统
姓名:
田世强元成张斌
学院:
工程系
专业:
电子信息工程技术
班级:
2班
学号:
指导教师:
曹红波
2010年9月16日
一设计目的…………………………………………………………….1
二课程设计的内容........................................2
三课程设计的要求与数据..................................3
四课程设计应完成的工作..................................4
五总体设计(包含几大功能模块)...........................5
六详细设计(各功能模块的具体实现算法——流程图)………….6
七调试分析(包含各模块的测试用例,及测试结果)…………….7
八总结………………………………………………………………...8
十参考资料…………………………………………………………….9
一设计目的
进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
二课程设计的内容
对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:
(1)学生的学号
(2)学生的姓名(3)学生的成绩。
假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
三课程设计的要求与数据
1、用C语言实现系统;
2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.
3、学生信息包括:
其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:
(1)每一条记录包括一个学生的学号、姓名、3门课成绩
(2)、成绩信息录入功能:
(成绩信息用文件保存,可以一次完成若干条记录的输入。
)
(3)、成绩信息显示浏览功能:
完成全部学生记录的显示。
(4)、查询功能:
完成按姓名查找学生记录,并显示。
(5)成绩信息的删除:
按学号进行删除某学生的成绩.
(6)、排序功能:
按学生平均成绩进行排序。
(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
四课程设计应完成的工作
(1)编写算法;
(2)算法测试,并有具体的测试结果和结果分析;
(3)撰写课程设计报告。
内容包括:
1)封面扉页
2)设计任务书
3)目录
4)总体设计方案(包括流程图)
5)使用说明及运行实例(包括界面)
6)成员设计内容简介
7)项目源程序代码(注意注释的使用)
8)指导教师评语
五总体设计(包含几大功能模块)
1、成绩录入功能
2、成绩输出功能
3、成绩查询功能
4、删除模块
5、排序功能
6、统计功能
7、退出系统
六详细设计(各功能模块的具体实现算法——流程图)
6.1各函数的功能和实现
1、输入初始的学生信息:
输入信息包括学生的姓名、学号以及学生的成绩等相关信息;可用函数voidinput(STUDENT*data,int*len)来实现此操作。
2、成绩输出模块:
输出学生的信息以及成绩voidoutput(STUDENT*data,intlen):
通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出成绩的平均分数、最高和最低分数。
3、成绩查询模块:
可用voidfind(STUDENT*data,intlen) 来实现。
找到就输出此学生全部信息。
4、删除模块:
用函数voiddelete_item(STUDENT*data,int*len)来实现
5、排序模块:
用函数voidsort(STUDENT*data,intlen)来实现
6、统计功能能:
用函数voidstat(STUDENT*data,intlen)来实现
7、退出系统:
可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
如图6.1
图6.1
七调试分析(包含各模块的测试用例,及测试结果)
7.1源程序
#include { intno; putchar('\n'); printf("%s\n","请输入新的记录,如果需要退出当前菜单请输入-1."); printf("%s\n","格式: \n学号\n"); printf("%s\n","姓名语文数学英语"); putchar('\n'); printf("如: \n"); printf("1\n"); printf("杨江彬939589\n"); scanf("%d",&no); while(no! =-1){ data[*len].no=no; scanf("%s%lf%lf%lf",data[*len].name,&data[*len].Chinese,&data[*len].math,&data[*len].English);data[*len].mark_ave=(data[*len].Chinese+data[*len].math+data[*len].English)3.0;data[*len].mark_tot=data[*len].Chinese+data[*len].math+data[*len].English; (*len)++; scanf("%d",&no); } *---输出信息子程序---* voidoutput(STUDENT*data,intlen) { inti; system("cls"); printf("%8s","学号"); printf("%8s","姓名"); printf("%8s","语文"); printf("%8s","数学"); printf("%10s","英语"); printf("%12s","平均分"); printf("%10s","总分"); putchar('\n'); for(i=0;i<80;i++) putchar('='); putchar('\n'); for(i=0;i { printf("%8d",data[i].no); printf("%8s",data[i].name); printf("%8.1lf",data[i].Chinese); printf("%8.1lf",data[i].math); printf("%10.1lf",data[i].English); printf("%12.1lf",data[i].mark_ave); printf("%10.1lf",data[i].mark_tot); putchar('\n'); } for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("按回车键继续."); getchar(); getchar(); } *--排序子程序* voidsort(STUDENT*data,intlen) { inti,j,k; STUDENTtemp; for(i=0;i for(k=i,j=i+1;j if(data[k].mark_ave>data[j].mark_ave)k=j; if(k! =i){ temp=data[i]; data[i]=data[k]; data[k]=temp; } } } *搜索子程序* voidfind(STUDENT*data,intlen) { intfind_no,result; inti; lab: result=0; printf("%s\n","请输入需要查找的学生的学号,退出当前菜单请输入-1."); scanf("%d",&find_no); if(find_no==-1)return;*exitthefinesubprogram* while(data[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("%10s","英语"); printf("%12s","平均分"); printf("%10s","总分"); putchar('\n'); printf("%8d",data[result].no); printf("%8s",data[result].name); printf("%8.1lf",data[result].Chinese); printf("%8.1lf",data[result].math); printf("%10.1lf",data[result].English); printf("%12.1lf",data[result].mark_ave); printf("%10.1lf",data[result].mark_tot); putchar('\n'); for(i=0;i<80;i++) putchar('='); putchar('\n'); gotolab; } } *-----插入子程序-* voidinsert(STUDENT*data,int*len) { intno,pos; doubleChinese,math,English,mark_ave,mark_tot; inti; charname[MAX_NAME]; lab: printf("%s\n","输入新的记录,退出当前菜单请输入-1."); printf("%s\n","格式: 学号"); printf("%s\n","姓名语文数学英语"); scanf("%d",&no); if(no==-1)return; data[*len].no=no; scanf("%s%lf%lf%lf",name,&Chinese,&math,&English); mark_ave=(Chinese+math+English)3.0; mark_tot=Chinese+math+English; pos=0; while((data[pos].mark_ave pos++; for(i=*len-1;i>=pos;i--) data[i+1]=data[i]; data[pos].no=no; strcpy(data[pos].name,name); data[pos].Chinese=Chinese; data[pos].math=math; data[pos].English=English; data[pos].mark_ave=mark_ave; data[pos].mark_tot=mark_tot; (*len)++; gotolab; } *-删除子程序--* voiddelete_item(STUDENT*data,int*len) { intno,i,pos; lab: pos=0; printf("%s\n","输入需要删除的学生的学号,退出当前菜单请输入-1.") scanf("%d",&no); if(no==-1)return; while((data[pos].no! =no)&&(pos<*len))pos=pos+1; if(pos>=*len){ printf("%s\n","未找到需要删除的学生"); gotolab; } else{ for(i=pos+1;i<*len;i++) data[i-1]=data[i]; *len=*len-1; if(*len==0){ printf("%s\n","没有任何记录,请按回车键返回."); getchar(); getchar(); return; } gotolab; } } *---统计子程序* voidstat(STUDENT*data,intlen) { intno_59=0,no_69=0,no_79=0,no_89=0,no_100=0; inti; for(i=0;i if(data[i].mark_ave<=59)no_59++; elseif(data[i].mark_ave<=69)no_69++; elseif(data[i].mark_ave<=79)no_79++; elseif(data[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",""); 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'); for(i=0;i<80;i++) putchar('='); putchar('\n'); printf("按回车键返回"); getchar(); getchar(); } *---显示信息子程序* voidpaint() { inti; system("cls"); printf("%55s\n","海都学院学生成绩管理系统\n"); printf("制作者: \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"); printf("0退出\n"); for(i=0;i<=79;i++) putchar('='); putchar('\n'); printf("%s\n","请输入各操作对应的序号: "); } voidsave(STUDENT*data,intlen)将数据保存到文件 { inti; FILE*fp; fp=fopen("成绩统计表.txt","w"); fprintf(fp,"%8s","学号"); fprintf(fp,"%8s","姓名"); fprintf(fp,"%8s","语文"); fprintf(fp,"%8s","数学"); fprintf(fp,"%10s","英语"); fprintf(fp,"%12s","平均分"); fprintf(fp,"%10s\n","总分"); fprintf(fp,"========================================================================\n"); putchar('\n'); for(i=0;i { fprintf(fp,"%8d",data[i].no); fprintf(fp,"%8s",data[i].name); fprintf(fp,"%8.1lf",data[i].Chinese); fprintf(fp,"%8.1lf",data[i].math); fprintf(fp,"%10.1lf",data[i].English); fprintf(fp,"%12.1lf",data[i].mark_ave); fprintf(fp,"%10.1lf\n",data[i].mark_tot); } fprintf(fp,"========================================================================\n"); fclose(fp); printf("文件已保存到\"成绩统计表.txt\""); getchar();getchar(); } *主程序--* voidmain() { STUDENTdata[MAXN]; intlen=0; charctrl_ch; paint(); scanf("%c",&ctrl_ch); while(ctrl_ch! ='0'){ ;case'1': input(data,&len); break; case'2': output(data,len); break; case'3': sort(data,len); break; case'4': find(data,len); break; case'5': insert(data,&len); break; case'6': delete_item(data,&len); break; case'7': stat(data,len); break; case'8': save(data,len); break; default: if(ctrl_ch! ='\n')printf("%s\n","输入错误! "); break; } if(ctrl_ch! ='\n')paint(); scanf("%c",&ctrl_ch); } } 7.2调试与测试 7.2.1算法调试过程中出现的问题及解决方法(以下为其中一例) Configuration: Cpp1-Win32Debug Compiling... Cpp1.cpp C: \DocumentsandSettings\Administrator\桌面\Cpp1.cpp(9): errorC2065: 'MAX_MAME': undeclaredidentifier C: \DocumentsandSettings\Administrator\桌面\Cpp1.cpp(9): errorC2057: expectedconstantexpression C: \DocumentsandSettings\Administrator\桌面\Cpp1.cpp(10): errorC2229: struct'student'illegalzero-sizedarray 执行cl.exe时出错. Cpp1.obj-1error(s),0warning(s) 解决方法: 把“MANE”改成“NAME”---拼写错误。 7.2.2主要程序运行结果 运行开始(如图7.1) 图7.1 选择1输入成绩(7.2) 图7.2 选择3按平均分排序再按2输出成绩(如图7.3) 图7.3 选择4查找(输入学号3)(如图7.4) 图7.4 选择5插入新数据(图7.5) 图7.5 选择6按学号删除(输入学号4)(图7.6) 图7.6 选择7按平均分输出统计信息(图7.7) 图7.7 选择8保存(图7.8.17.8.2) 图7.8.1 图7.8.2 选择0退出(如图7.9) 图7.9 八总结 由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。 在用的时候难免出现这样那样的错误。 如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。 解决的这个问题的办法是调整。 一个系统的菜单和提示信息非常重要。 如果没有这些用户根本不知道怎么用你设计的这个系统。 在设计的调试过程中也无法顺利的完成调试工作。 有了一个清晰简单的菜单和一些提示信息这后,调试过程完成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 语言 毕业 课程设计 学生 成绩管理系统