课程设计-- 学生成绩管理系统.doc_第1页
课程设计-- 学生成绩管理系统.doc_第2页
课程设计-- 学生成绩管理系统.doc_第3页
课程设计-- 学生成绩管理系统.doc_第4页
课程设计-- 学生成绩管理系统.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

课 程 设 计 说 明 书课程名称:高级语言程序设计与编译 设计题目: 学生成绩管理系统 院 系: 计算机科学与信息工程系 学号姓名: 201003030017 张贺贺 201003030025 智 鹏 201003030031 焦海涛 专业班级: 10级软件工程1班 指导教师: 周 晏 2011 年 6 月 24 日课 程 设 计 任 务 书设计题目学生成绩管理系统学生姓名刘创所在院系计算机科学与信息工程系专业、年级、班08软件工程设计要求:完成一个学生成绩管理系统系统,具体要求如下: 1.输入学生信息 2.插入学生信息 3.按学号查找学生信息 4.按学号删除学生信息 5.分数统计 6.按平均分排序 7.保存到文件 8.从记录文件读取学生信息 学生应完成的工作:1 学生应认真学习参考程序,理解每个文件、每个函数以及各个变量的作用和意义。在此基础上进一步改进程序,最后正确地运行程序。2对程序进行测试,设计详细的测试计划,然后根据测试计划设计测试用例,对程序进行测试。测试时应注意对各种边缘情况进行测试。3 完成课程设计报告参考文献:1 刘振安等 C程序设计课程设计 机械工业出版社20102 谭浩强 C程序设计教程(第四版) 清华大学出版社2010工作计划:1. 小组审题,查阅资料,进行设计前的必要资料准备(2天)。 2. 把程序完整运行出来(3天)。 3. 增加改进程序(2天)。 4. 写课程设计报告(2天)。 5. 提交课程设计报告及答辩(1天)任务下达日期:2011 年 6 月 13 日 任务完成日期:2011 年 6 月 24 日指导教师(签名): 学生(签名):张贺贺、智鹏、焦海涛目 录一 成员分工3二 设计要求3三 系统的功能模块3四 数据结构设计描述4五 函数功能及参数说明、相互调用关系5六 各变量的定义和作用5七 各功能模块的算法处理流程图及相关说明6八 程序测试8九 程序设计过程中遇到的问题及解决过程11十 课程设计心得及体会12十一 参考文献12十二 源程序12一 成员分工本程序由智鹏、焦海涛、张贺贺三人共同努力完成。本实验小组经过共同商议,首先通过查找资料及商讨共同确定了程序的大致结构, 然后参照C程序设计(第四版)及相关资料完成了源程序的编写工作,由焦海涛同学经过几天的核对、检测程序,最终使该程序正常运行。二 设计要求1.要求使用多文件方式实现设计.2.要求在各个文件内实现结构化设计.3.每个模块作为一个单独的C文件.4.宏和数据结构等放在头文件中,并使用条件编译. 三 系统的功能模块总控函数、菜单文件student.c保存到文件按学号删除学生信息输入学生信息按平均分排序从记录文件读取学生信息按学号查找学生信息插入学生信息分数统计1. 学生平均成绩统计2. 科目平均成绩四 数据结构设计描述#define MAXN 35#define MAX_NAME 256typedef struct student/学生信息 int no;/学号 char nameMAX_NAME;/姓名 double english; double math; double computer; double zheng; double li; /科目 double mark_ave;/平均成绩 double mark_tot;/总成绩 STUDENT;每个学生信息资料用一个STUDENT结构来保存,用STUDENT数组save(STUDENT *data, int len)来保存一批学生的信息资料。#define MAXN 35、#define MAX_NAME 256表示数组初始大小。当数组内容被保存至文件后,设为“已保存”状态,当数组内容被修改之后,设为“为保存”状态。五 函数功能及参数说明、相互调用关系源文件函数名或其他成分功 能typedef struct student定义学生信息属性结构体结构体声明void input(STUDENT *data, int *len)STUDENT *data,输入信息void insert(STUDENT *data, int *len)char nameMAX_NAME;mark_ave mark_tot插入信息void delete_item(STUDENT *data, int *len)while( (datapos.no != no) & (pos *len) ) pos = pos +1删除信息void sort(STUDENT *data, int len)-统计子程序-成绩统计void paint()显示信息子程序-成绩显示六 各变量的定义和作用#define MAXN 35#define MAX_NAME 256typedef struct student/学生信息 int no;/学号 char nameMAX_NAME;/姓名 double english; double math; double computer; double zheng; double li; /科目 double mark_ave;/平均成绩 double mark_tot;/总成绩 STUDENT;七 各功能模块的算法处理流程图及相关说明1. 总控函数、菜单文件student.c初始化数组 给records申请空间 用malloc函数给cn赋值,用switchcase1case2case3case4case5case6case7输入学生信息调用子程序input(STUDENT *data, int *len)插入学生信息调用子程序 insert(STUDENT *data, int *len)查询学生信息调用自定义函数 find(STUDENT *data, int len)删除学生信息调用自定义函数 delete_item(STUDENT *data, int *len)对学生信息统计调用自定义函数 stat(STUDENT *data, int len)排序学生信息至记录文件调用自定义函数 sort(STUDENT *data, int len)保存学生信息到记录文件保存调用 paint()while循环不成立结束运行对循环规定,若不是0到7之间则输入错误2 输入功能-1退出格式正确信息保存格式不对,不存保存指定文件-1退出3 Input学生信息 是否添加信息 是y 否判断数组空间真 假重新申请空间 输入学生信息4 删除功能在主菜单中,选用3删除功能。输入学号后,按enter键,进行删除。倘若学号存在,对其进行删除函数调用。否则输出“学生信息不存在”。51学生成绩统计2科目平均成绩统计调用mark_ave; mark_tot; 调用mark_ave; mark_tot6.输入6后,将对前面输入的学生信息进行排序函数调用,并且将排序结果保存到制定文件夹。7.输入学生信息后,将对以上信息进行保存函数调用。八 程序测试1.测试系统能否正确显示菜单选项2.实现功能输入学生信息学号 姓名 英语 数学 计算机 政治 历史01 zhang 90 90 90 90 9002 jiao 80 90 90 100 10003 zhi 100 90 80 70 1003.“-1”退回菜单,“7”保存学生信息4.插入一个新学生信息5.按学号查找学生信息6.查询某学科的平均成绩7.实现学生平均成绩排序功能九 程序设计过程中遇到的问题及解决过程1我们在组建工程的时候,将各个程序分给小组成员,两个人设计一个模块,但是出现了连接错误,各个模块之间也出现了输入上的错误,致使程序不能运行。对于各个模块逐一检查,添加修改,最终使各个模块错误消除,同时连接错误也自行解决。2对程序整体理解,但在设计过程中,细节问题处理不当,造成程序不能运行或者运行错误,并且,对某一部分的程序不能独立设计出来。对此问题的解决是参考了c程序设计课程设计上的参考程序,完成了设计,但是不是一味的照搬,对参考程序进行了修改和添加。增加了按成绩区间查询的查询方式,增加了按总成绩排序的排序方式。3在刚开始程序设计的时候,不了解什么是组建工程,什么是模块,对于程序设计本身也有不理解的地方,不知道该从何下手。解决方法:先看c程序设计课程设计,了解怎样组建工程,理解每个模块的作用,弄清楚参考程序上的逻辑顺序以及如何设计等问题,然后再进行课程设计。十 课程设计心得及体会对于第一次做课程设计的我来说,这次的课程设计是一次既让人痛苦又让人开心的事情。开始的时候根本不清楚课程设计要设计什么,不知道到底怎样设计,因为平时所写的c程序都是一些简单而且基本的C程序,根本不是解决实际情况,符合客户要求的工程程序,所以觉得无从下手,觉得很困难,甚至没有一个思路,而且对于组建工程,构建模块等工作无法理解。这些情况都使自己陷入了苦恼的深渊。后来,听从辅导老师的意见,从c程序设计课程设计开始,一点点了解怎样组建工程,怎么样构建模块,对于每个模块应该怎么样进行设计,逻辑思维是什么,然后开始构建。在设计过程中一直都有错误存在,困难重重。遇到困难就开始用大量的时间进行修改以及整理,理出思路。最终将工程调试成功,添加模块成功,而这些成功的瞬间是最快乐最开心的时刻。而且通过这次课程设计我学会了好多东西,觉得自己设计的东西更加接近实际的程序要求。知道团队合作的重要性,知道怎样使团队一起合作构建程序。总的来说,获益匪浅。十一 参考文献1 刘振安等 C程序设计课程设计(第二版) 机械工业出版社20102 谭浩强 C程序设计教程(第四版) 清华大学出版社2010十二 源程序#include #include #include #define MAXN 35#define MAX_NAME 256typedef struct student/学生信息 int no; char nameMAX_NAME; double english; double math; double computer; double zheng; double li; double mark_ave; double mark_tot; STUDENT;/*-输入信息子程序-*/void input(STUDENT *data, int *len) int no; putchar(n); printf(%sn, 请输入新的记录,如果需要退出当前菜单请输入-1.); printf(%sn, 格式:n学号n); printf(%sn, 姓名 英语 数学 计算机 政治 历史); putchar(n); printf(如:n); printf(5n); printf(焦海涛 100 100 100 100 100n); scanf(%d, &no); while(no != -1) data*len.no = no; scanf(%s %lf %lf %lf %lf %lf, data*, &data*len.english, &data*len.math,&data*puter,&data*len.zheng,&data*len.li); data*len.mark_ave=(data*len.english+data*len.math+data*puter+data*len.zheng+data*len.li)/5.0; data*len.mark_tot=data*len.english+data*len.math+data*puter+data*len.zheng+data*len.li; (*len)+; scanf(%d, &no); /*-插入子程序-*/void insert(STUDENT *data, int *len) int no, pos; double english, math, computer,zheng,li, 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; scanf(%s %lf %lf %lf %lf %lf, name, &english, &math, &computer,&zheng,&li); mark_ave=(english+math+computer+zheng+li)/5.0; mark_tot=english+math+computer+zheng+li; pos = 0; while (datapos.mark_ave mark_ave) & (pos = pos; i-) datai+1 = datai; datapos.no = no; strcpy(, name); datapos.english = english; datapos.math = math; puter = computer; datapos.mark_ave = mark_ave; datapos.mark_tot = mark_tot; (*len)+; goto lab;/*-搜索子程序-*/void find(STUDENT *data, int len) int find_no, result ; int i;lab: result=0; printf(%sn, 请输入需要查找的学生的学号,退出当前菜单请输入 -1.); scanf(%d, &find_no); if (find_no = -1) return; /*exit the fine sub program*/ while( dataresult.no != find_no & result = len ) printf(%sn, 未查询到相关信息); goto lab; else system(cls); printf(%sn, 查询信息如下:); for (i =0; i 80; i+) putchar(=); putchar(n); printf(%8s, 学号); printf(%8s, 姓名); printf(%8s, 英语); printf(%8s, 数学); printf(%10s, 计算机); printf(%8s, 政治); printf(%8s, 历史); printf(%12s, 平均分); printf(%10s, 总分); putchar(n); printf(%8d, dataresult.no); printf(%8s, ); printf(%8.1lf, dataresult.english); printf(%8.1lf, dataresult.math); printf(%8.1lf, puter); printf(%8.1lf, dataresult.zheng); printf(%8.1lf, dataresult.li); 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 delete_item(STUDENT *data, int *len) int no, i, pos;lab: pos=0; printf(%sn, 输入需要删除的学生的学号,退出当前菜单请输入-1.); scanf(%d, &no); if (no = -1) return; while( (datapos.no != no) & (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, 没有任何记录,请按回车键返回.); getchar(); getchar(); return; goto lab; /*-统计子程序-*/void stat(STUDENT *data, int len) int i,j; double sum=0; while(1) printf(输入1统计某生的总分及平均分.输入2求该门课程的总平均分.输入3返回n); scanf(%d,&i);getchar(); switch(i) case 1: find(data, len); break; case 2: sum=0; printf(请输入课程号(1.英语,2.数学,3计算机,4政治,5历史n); scanf(%d,&j); for(i=0;ilen;i+) if(j=1) sum=sum+datai.english; if(j=2) sum+=datai.math; if(j=3) sum+=puter; if(j=4) sum+=datai.zheng; if(j=5) sum+=datai.li; printf(该门学科的总平均分为%fn,sum/(double)len); break; case 3: return ; /*-排序子程序-*/void sort(STUDENT *data, int len) int i,j,k; STUDENT temp; for (i=0; ilen-1; i+) for (k=i, j=i+1; j dataj.mark_ave) k=j; if (k != i) temp = datai; datai = datak; datak = temp; /*-显示信息子程序-*/void paint() int i; system(cls); printf(%43sn, 菜单); for (i = 0; i 80; i+) putchar(=); putchar(n); printf(n); printf( t*n); printf( t* 这是一个 *n); printf( t* 学生成绩管理程序 *n); printf( t* 可以对学生成绩管理 *n); printf( t* 欢迎使用程序管理 *n); printf( t*n); printf(n); printf( 1 输入 n); printf( 2 插入 n); printf( 3 按学号查找 n); printf( 4 按学号删除 n); printf( 5 统计 n); printf( 6 按平均分排序n); printf( 7 保存到文件 n); printf( 0 退出 n); for (i = 0; i= 79; i+) putchar(=); putchar(n); printf(%sn, 请输入各操作对应的序号:);void save(STUDENT *data, int len)/将数据保存到文件 int i; 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,%10sn, 总分); fprintf(fp,=n); put

温馨提示

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

评论

0/150

提交评论