C语言课程设计学生成绩管理系统_第1页
C语言课程设计学生成绩管理系统_第2页
C语言课程设计学生成绩管理系统_第3页
C语言课程设计学生成绩管理系统_第4页
C语言课程设计学生成绩管理系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告题姓目:名:学生成绩管理系统田世强虽元成张斌学院:工程系专业:电子信息工程技术班级:2班学号:指导教师:曹红波2010年9月16日.1设计目的课程设计的内容课程设计的要求与数据课程设计应完成的工作总体设计(包含几大功能模块)详细设计(各功能模块的具体实现算法流程图).6调试分析(包含各模块的测试用例,及测试结果).7.8.9总结 参考资料 .设计目的进一步加深、巩固所学专业课程(C语言程序设计)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。课程设计的内容对学生信息(包括学号、语文、数学、英语

2、、平均分 )进行管理 ,包括学生成绩的 信息输入、输出、查询、删除、排序、统计、退出 . 将学生的成绩信息进行记录,信息 内容包含:( 1)学生的学号( 2)学生的姓名( 3)学生的成绩。假设,现收集到了一 个班学生的所有成绩信息,要求用 C语言编写一个简单的成绩管理系统,可进行录入、 查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。三 课程设计的要求与数据1、用C语言实现系统;2、对学生信息 (包括学号、姓名、语文、数学、英语、平均分 )进行管理 ,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能

3、够完成以下功能:(1) 每一条记录包括一个学生的学号、姓名、3门课成绩(2) 、成绩信息录入功能: ( 成绩信息用文件保存,可以一次完成若干条记录的输入。)(3) 、成绩信息显示浏览功能:完成全部学生记录的显示。(4) 、查询功能:完成按姓名查找学生记录,并显示。(5) 成绩信息的删除 : 按学号进行删除某学生的成绩 .(6) 、排序功能:按学生平均成绩进行排序。(7) 、应提供一个界面来调用各个功能 , 调用界面和各个功能的操作界面应尽可能清 晰美观!四 课程设计应完成的工作(1) 编写算法;(2) 算法测试,并有具体的测试结果和结果分析;(3) 撰写课程设计报告。内容包括:1)封面扉页2)

4、设计任务书3)目录4)总体设计方案(包括流程图)5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语五 总体设计(包含几大功能模块)1、成绩录入功能2、成绩输出功能3、成绩查询功能4、删除模块5 、排序功能6 、统计功能7 、退出系统六 详细设计(各功能模块的具体实现算法流程图)6.1 各函数的功能和实现来实现此操作。1、输入初始的学生信息:输入信息包括学生的姓名、学号以及学生的成绩等相关信息;可用函数 void input(STUDENT *data, int *len)2、成绩输出模块:输出学生的信息以及成绩 void output(S

5、TUDENT*data, int len) : 通过学生的姓名来查看学生的相关成绩,同时也可以分别通过 caverage()? 、maverage()? 、eaverage()? 和 comaverage()? 来输出成绩的平均分数、 最高和最低分数。3、成绩查询模块:可用 void fin d(STUDENT *data, i nt le n)?来实现。找到就输出此学生全部信息。4、删除模块:用函数 void delete_item(STUDENT *data, int *len)5、 排序模块:用函数 void sort(STUDENT *data, int len)来实现来实现&

6、 统计功能能:用函数 void stat(STUDENT *data, i nt le n)7、退出系统:可用一个函数 exit来实现()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。如图6.1图6.1七 调试分析(包含各模块的测试用例,及测试结果)学生信息Chinese; math; English; mark_ave; mark_tot;7.1 源程序 #include <stdlib.h> #include <stdio.h> #include <string.h> #define MAXN 35 #define MAX_NAM

7、E 256 typedef struct student / int no; char nameMAX_NAME; double double double double double STUDENT;*/* 输入信息子程序 void input(STUDENT *data, int *len)请输入新的记录,如果需要退出当前菜单请输入 -1." 格式:n学号n");姓名 语文 数学 英语 "); int no; putchar('n'); printf("%sn", " printf("%sn",

8、 " printf("%sn", " putchar('n'); printf(" 如 :n"); printf("1n"); printf(" 杨江彬 93 95 89n"); scanf("%d", &no); while(no != -1) data*len.no = no; scanf("%s %lf %lf %lf", data*, &data*len.Chinese, &data*len.

9、math,&data*len.English);data*len.mark_ave=(data*len.Chinese+data*len.math+data*len.Engl ish)/3.0;data*len.mark_tot=data*len.Chinese+data*len.math+data*len.Engli sh;(*len)+; scanf("%d", &no);/* 输出信息子程序void output(STUDENT *data, int len) int i;system("cls"); printf("%8

10、s", " printf("%8s", " printf("%8s", " printf("%8s", " printf("%10s", " printf("%12s", " printf("%10s", " putchar('n');学号"); 姓名"); 语文");数学");英语"); 平均分 "); 总分"

11、);for (i =0; i < 80; i+) putchar('='); putchar('n'); for (i = 0; i< len; i+) printf("%8d", datai.no); printf("%8s", ); printf("%8.1lf", datai.Chinese); printf("%8.1lf", datai.math); printf("%10.1lf", datai.English); pr

12、intf("%12.1lf", datai.mark_ave); printf("%10.1lf", datai.mark_tot); putchar('n'); for (i =0; i < 80; i+) putchar('='); putchar('n'); printf(" 按回车键继续 ."); getchar(); getchar(); /* 排序子程序 void sort(STUDENT *data, int len) int i,j,k; STUDENT temp;

13、 for (i=0; i<len-1; i+) for (k=i, j=i+1; j<len; j+)if (datak.mark_ave > dataj.mark_ave) k=j; if (k != i) */*/temp = datai; datai = datak; datak = temp;*/* 搜索子程序void find(STUDENT *data, int len) int find_no, result ;int i;lab: result=0;printf("%sn", "请输入需要查找的学生的学号,退出当前菜单请输入-1.

14、");scanf("%d", &find_no);if (find_no = -1) return; /*exit the fine sub program*/ while( dataresult.no != find_no && result < len) result +; if (result >= len ) 未查询到相关信息 ");printf("%sn", "goto lab;else system("cls");查询信息如下: ");printf

15、("%sn", " for (i =0; i < 80; i+)学号"); 姓名");语文");数学");英语"); 平均分 "); 总分");putchar('='); putchar('n');printf("%8s", "printf("%8s", "printf("%8s", "printf("%8s", " printf(&quo

16、t;%10s", " printf("%12s", " printf("%10s", "putchar('n');printf("%8d", dataresult.no); printf("%8s", );printf("%8.1lf", dataresult.Chinese); printf("%8.1lf", dataresult.math);printf("%10.1lf&q

17、uot;, dataresult.English); printf("%12.1lf", dataresult.mark_ave);printf("%10.1lf", dataresult.mark_tot); putchar('n');for (i =0; i < 80; i+) putchar('='); putchar('n'); goto lab; */ /* 插入子程序 -void insert(STUDENT *data, int *len) int no, pos; double Chi

18、nese, math, English, mark_ave, mark_tot; int i;char nameMAX_NAME;lab: printf("%sn", " 输入新的记录,退出当前菜单请输入 -1."); printf("%sn", "格式:学号 ");printf("%sn", " 姓名 语文 数学 英语 "); scanf("%d", &no); if (no = -1) return; data*len.no = no;scan

19、f("%s %lf %lf %lf", name, &Chinese, &math, &English); mark_ave=(Chinese+math+English)/3.0; mark_tot=Chinese+math+English; pos = 0;while (datapos.mark_ave < mark_ave) && (pos < *len) ) pos +;for (i = *len-1; i >= pos; i-) datai+1 = datai;datapos.no = no; strcpy(

20、, name); datapos.Chinese = Chinese; datapos.math = math; datapos.English = English; datapos.mark_ave = mark_ave; datapos.mark_tot = mark_tot; (*len)+; goto lab;/* 删除子程序 */void delete_item(STUDENT *data, int *len)int no, i, pos;lab: pos=0;printf("%sn", " 输入需要删除的学生的学号,退出当前菜单

21、请输入scanf("%d", &no);if (no = -1) return;while( (datapos.no != no) && (pos < *len) ) pos = pos +1;if (pos >= *len) printf("%sn", " 未找到需要删除的学生 "); goto lab;else for (i = pos+1;i < *len; i+)datai-1 = datai;*len = *len -1;if (*len = 0) printf("%sn&

22、quot;, " 没有任何记录,请按回车键返回 ."); getchar();getchar();return;goto lab;*/ /* 统计子程序 -void stat(STUDENT *data, int len) int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0; int i;for (i = 0;i < len; i+) if (datai.mark_ave <=59) no_59+; else if (datai.mark_ave <=69) no_69+;else if (datai.mark

23、_ave <=79) no_79+; else if (datai.mark_ave <= 89) no_89+; else no_100+; system("cls"); for (i =0; i < 80; i+) putchar('=');putchar('n'); printf("%10s", "分数 ");printf("%10s", "0-59"); printf("%10s", "60-69"

24、); printf("%10s", "70-79"); printf("%10s", "80-89"); printf("%10s", "90-100");-1.")putchar('n'); putchar('n'); printf("%10s", " 学生"); printf("%10d", no_59); printf("%10d", no_69);

25、 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();/*void paint() int i;system("cls"); printf("

26、;%55sn", " printf(" for (i = 0; i < 80; i+) putchar('=');显示信息子程序*/海都学院学生成绩管理系统制作者 :n");n");putchar('n');printf("n");printf("n");printf("n");printf("n");printf("1357输入信息按平均分排序插入按平均分输出统计信息输出信息按学号查找按学号删除保存到文件0for (

27、i = 0; i<= 79; i+) putchar('=');putchar('n');printf("%sn", "退出n");请输入各操作对应的序号 :");void save(STUDENT *data, int len)/ 将数据保存到文件int i;FILE *fp;学号"); 姓名"); 语文"); 数学");英语"); 平均分");总分");fp=fopen(" 成绩统计表 .txt","w&

28、quot;); fprintf(fp,"%8s", " fprintf(fp,"%8s", " fprintf(fp,"%8s", " fprintf(fp,"%8s", " fprintf(fp,"%10s", " fprintf(fp,"%12s", " fprintf(fp,"%10sn", "fprintf(fp,"= =n");putchar('n&

29、#39;);for (i = 0; i< len; i+)fprintf(fp,"%8d", datai.no); fprintf(fp,"%8s", ); fprintf(fp,"%8.1lf", datai.Chinese); fprintf(fp,"%8.1lf", datai.math); fprintf(fp,"%10.1lf", datai.English); fprintf(fp,"%12.1lf", datai.mark_ave);

30、fprintf(fp,"%10.1lfn", datai.mark_tot); fprintf(fp,"= =n");fclose(fp); printf(" 文件已保存到 " 成绩统计表 .txt""); getchar();getchar();*/ /* 主程序 -void main()STUDENT dataMAXN; int len = 0; char ctrl_ch; paint(); scanf("%c", &ctrl_ch); while (ctrl_ch != '

31、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':

32、 stat(data, len); break;case '8': save(data, len); break;default:输入错误 !");if (ctrl_ch != 'n') printf("%sn", " break; if (ctrl_ch != 'n') paint(); scanf("%c", &ctrl_ch); 7.2 调试与测试Win327.2.1 算法调试过程中出现的问题及解决方法(以下为其中一例) Configuration:Cpp1DebugCom

33、piling.Cpp1.cpp桌面 Cpp 1.cp p(9) : error C2065:'MAX_MAME' : undeclared identifier桌面 Cpp 1.cp p(9) : error C2057:桌面 Cpp 1.cpp(10): error C2229:expected constant expression C:Documents andstruct 'student' has an illegal zero-sized array 执行 cl.exe 时出错 .NAM”E - 拼写错误。Cpp1.obj - 1 error(s),

34、 0 warning(s) 解决方法:把“ MAN”E 改成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分数60697079ae®990100选择7按平均分输出统计信息(图7.7 )L':二才 DI -2学生按回车键返回图7.7选择8保存(图7.8.1 7.8.2)CAlbi厂-JL -中南大学学生成绩管理系统制作者:中南大学机电工程学院机械即即钟林成杨皓13570找罪息查信口出WMt H總入信息 均分排序黔均分输出统计信息I请输入各操作对应的序号:8反件已保存到“成缱统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论