欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载  

    数据结构课程设计报告-学生成绩管理系统[1](1)资料.pdf

    • 资源ID:5417529       资源大小:513.54KB        全文页数:37页
    • 资源格式: PDF        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计报告-学生成绩管理系统[1](1)资料.pdf

    第 1 页 共 37 页 武 汉 理 工 大 学 华 夏 学 院 课 程 设 计 报 告 书 课程名称:数据结构课程设计 题目:用 C语言实现成绩统计程序的设计 系名:信息工程系 专业班级:计算机 1121 姓名:吴涛 学号:10210412104 指导教师 :司晓梅 2016 年 3 月 20日 第 2 页 共 37 页 武汉理工大学华夏学院信息工程系 课 程 设 计 任 务 书 课程名称:数据结构课程设计指导教师:司晓梅 班级名称:计算机 1121 开课系、教研室:信息系计算机 一、课程设计目的与任务 数据结构 课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强 实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学 会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界 中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。提 高学生的程序设计能力、掌握基本知识、 基本技能, 提高算法设计质量与程序设计素质的培 养就是本门课程的课程设计的目的。 任务:根据题目要求,完成算法设计与程序实现,并按规定写出课程设计报告。 二、课程设计的内容与基本要求 设计题目:用C 语言实现成绩统计程序的设计 问题描述给出n 个学生的m 门课程的考试成绩信息,每条信息由姓名、课程代号与 分数组成,要求设计算法: ( 1)输入每个人的各门课程的成绩,计算每人的平均成绩; ( 2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名次; ( 3)按名次列出每个学生的姓名和各科成绩; 基本要求学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 算法提示可以用选择排序、冒泡排序等多种排序算法求解; 具体要完成的任务是: A. 编制完成上述问题的C 语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 三、课程设计步骤及时间进度和场地安排 时间: 1 周地点:现代教育中心 具体时间安排如下: 第一天:布置题目,确定任务、查找相关资料 第二天第四天:功能分析,编写程序,调试程序、运行系统; 第五天上午:撰写设计报告; 第五天下午:程序验收、答辩。 四、课程设计考核及评分标准 第 3 页 共 37 页 课程设计考核将综合考虑学生的系统设计方案、运行结果、 课程设计报告书的质量、态 度、考勤、答辩情况等各因素。具体评分标准如下: (1)设计方案正确,具有可行性、创新性; 30分 (2)系统开发效果较好; 20分 (3)设计报告规范、课程设计报告质量高; 20分 (4)课程设计答辩时,问题回答正确; 20分 (5)态度认真、刻苦钻研、遵守纪律; 10分 按上述五项分别记分后求和,总分按五级制记载最后成绩。 优秀( 10090分) ,良好( 8089分) ,中等( 7079分) ,及格( 6069分) , 不及格( 0 59分) 第 4 页 共 37 页 目录 一、问题描述 5 二、基本要求 5 三、数据结构设计 6 四、软件模块结构图 7 五、程序设计思想 9 六、程序流程图 .13 七、源程序 .18 八、调试分析 .32 九、测试数据 .33 十、用户使用手册 .35 一、问题描述 第 5 页 共 37 页 问题描述给出n 个学生的 m门课程的考试成绩信息,每条信息由姓名、课 程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名 次; (3)按名次列出每个学生的姓名和各科成绩; 基本要求学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 算法提示可以用选择排序、冒泡排序等多种排序算法求解; 二、基本要求 基本要求学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 算法提示可以用选择排序、冒泡排序等多种排序算法求解; 三、数据结构的设计 第 6 页 共 37 页 为了对学生信息进行统一操作,使用了结构体这一数据结构, 学 生的各项数据信息都能用结构体来表示,具体如下: struct stu int num;/* 学号,整型变量 */ char name50; /* 姓名,长度为 50的字符串数组 */ char classes50/* 班级名称,长度为 50的字符串数组 */ ; double gsps_score; /* 高等数学平时成绩,双精度实型变量*/ double gsks_score;/* 高等数学考试成绩,双精度实型变量*/ double gszh_score; /* 高等数学综合成绩,双精度实型变量*/ double dlps_score;/* 电路理论平时成绩,双精度实型变量*/ double dlks_score;/* 电路理论考试成绩,双精度实型变量*/ double dlzh_score;/* 电路理论综合成绩,双精度实型变量*/ double yyps_score;/* 英语平时成绩,双精度实型变量*/ double yyks_score;/* 英语考试成绩,双精度实型变量*/ double yyzh_score;/* 英语综合成绩,双精度实型变量*/ double wlps_score;/* 物理平时成绩,双精度实型变量*/ double wlks_score;/* 物理考试成绩,双精度实型变量*/ double wlzh_score;/* 物理综合成绩,双精度实型变量*/ double pj_score;/* 平均成绩,双精度实型变量*/ student1000;/* 最多存储 1000 个学生数据 */ 该结构体数据定义为全局变量。 四、软件模块结构图 第 7 页 共 37 页 模块功能描述: a. 主菜单控制模块: 主菜单直接控制七个模块 (学生信息输出模块的 两个子模块直接归主菜单控制) ,在各模块间起到纽带的作用。在主 菜单,可以通过选择进入其他模块, 其他模块运行结束后也可回到主 菜单继续选择。 b. 学生信息录入模块: 循环输入学生信息, 建立临时的学生信息数据 库。 c. 学生信息查询模块: 可选择按学号或者按姓名查询学生信息,如学 生信息不存在则给出提示。 d. 学生信息修改模块: 查找到要修改的学生信息后,可对该学生的信 主 菜 单 控 制 模 块 学生信息录入模块 学生信息查询模块 学生信息修改模块 学生信息删除模块 学生信息插入模块 学生信息输出模块 按学号查询学生信息 按姓名查询学生信息 输出优秀学生相关信息 输出不及格学生信息 课程成绩统计模块 每门课程的平均成绩 按单科成绩排名次 第 8 页 共 37 页 息进行逐项修改。 e. 学生信息删除模块: 查找到要删除的学生信息后,可对其进行删除 操作。 f. 学生信息插入模块: 在数据库末尾插入学生信息,逐项输入要插入 的学生信息即可。 g. 学生信息输出模块: 输出优秀学生信息模块能够输出优秀学生(平 均成绩大于等90 分)的学号和姓名;输出不及格学生信息模块能够 输出不及格学生的相关信息。 h. 课程成绩统计模块: 可以得到每门课程的平均成绩,还可以任意抽 取一门课按单科成绩排定学生名次。 五、程序设计思想 第 9 页 共 37 页 结构化的程序设计主要靠设计和调用各模块的函数来实现。本程 序设计了多个函数, 每个函数自身能完成一个任务,有的函数和别的 函数结合能完成更大的任务。 每一个模块功能的实现其实就是对函数 的调用,本说明首先介绍本程序所涉及的子函数,再介绍主函数,最 后介绍程序整体的实现过程。 1.void Inputfun()此函数较特别,它只进行输入操作,但由于此函 数所包含的语句较长且需要被其他三个函数使用,为方便调用单写了 一个函数。此函数在源程序中放在最前,所以在此先作说明。此函数 可细分为 11 个小块,用来输入学生的基本数据。每小块的结构基本 相同即for(;)基本语句 + 一个continue语句 +基本语句 +一个 break 语句 之所以用这个结构为了使输入的数据更加正规。比如在 分数的输入中就限定了只能输入0 至 100 之间的数值,这也符合分数 录入规则。需要特别注意的是, 这个函数完成了本程序中要做的两个 计算。其一是在每门课的考试试成绩输入后完成了对这门课的综合成 绩的加权计算 (考试成绩 *0.7+ 平时成绩 *0.3 ) ;其二是在最后一门课 程的综合成绩算出后,计算了该学生四门课的平均成绩。 2.void Getinformation() 此函数用来录入学生信息。 它调用了 void Inputfun()函数,其实它的主体部分就是void Inputfun()函数。这 函数还用了一个 for 循环以达到循环输入的目的。 3.int Searchbynum (int no)int Searchbyname (char na50) 这 是两个“兄弟函数”,是按学号查找和按姓名查询模块中的两个重要 函数。主要功能是根据用户输入的学号姓名返回改学生所在的的数 第 10 页 共 37 页 组下标。利用 for 循环嵌套一个 if语句实现,若找到学生该学生信 息就返回数组下标,若找不到就返回-1。 4.void Seekinformation()void Printinformation(int x) 这两 个函数关系紧密,所以一起介绍。void Seekinformation()函数利用 for循环和 if语句使查找中能够使用学号和姓名两种方式。如源程 序所示,在用 if语句确定了查找方式后先后调用了int Searchbynum (int no)int Searchbyname (char na50)和void Printinformation(int x)两个函数,根据int Searchbynum (int no)int Searchbyname (char na50)返回的数组下标,运用void Printinformation(int x)输出所查询的内容。所以 int Searchbynum (int no)int Searchbyname (char na50)void Seekinformation()void Printinformation(int x) 这四个函数是查 询模块的四个联系紧密的重要函数,在它们的共同作用下查询模块的 功能得以实现。 5.void Modifyinformation()此函数用于修改学生信息。基本原理 就是用输入的新数据覆盖原来的老数据,达到修改的目的。 本函数还 调用了查找模块的函数, 使修改前能按学号或姓名找到要修改的学生 信息。修改过程中调用了Inputfun()函数 6.void Deleteinformation() 此函数用于删除学生信息。同样调用 了查找模块的函数。删除模块的关键语句是for (i=x;i #include #include #include struct stu/*定义结构体 */ int num; char name50; char classes50; double gsps_score; double gsks_score; double gszh_score; double dlps_score; double dlks_score; double dlzh_score; double yyps_score; double yyks_score; double yyzh_score; double wlps_score; double wlks_score; double wlzh_score; double pj_score; student1000; int a,b,c,d,x,i,j,k,s,y,flag; char s150,c1; double f,t,gp,dp,yp,wp; /*录入、修改、插入学生信息三个模块调用了输入模块 */ void Inputfun()/*输入学生信息模块 */ for(; ;)/*设计死循环以至于在输入格式错误时可以再次输入*/ printf(“请输入班级名称 :t“); /*输入班级名称 */ scanf(“%s“, if(strlen(s1)20) printf(“您输入的班级名称过长 !n“); continue; strcpy(studenti.classes,s1); break; /*格式正确后跳出死循环 */ 第 19 页 共 37 页 for(; ;) printf(“请输入学号 :t“);/*输入学号 */ scanf(“%d“, if(studenti.num20) printf(“您输入的姓名过长 !n“); continue; strcpy(studenti.name,s1); break; for(; ;) printf(“请输入该生高等数学平时成绩:t“);/*输入各科平时成绩和考试成 绩*/ scanf(“%lf“, if(f100|f100|f100|f100|f100|f100|f100|f100|f=90) printf(“学号:%dn“,studenti.num); 第 30 页 共 37 页 printf(“姓名:%snn“,studenti.name); printf(“n返回主菜单请按0n“); scanf(“%d“, void Chengjitongji()/*按要求统计成绩 */ int flag=0; double gp=0,dp=0,yp=0,wp=0; system(“cls“); printf(“每门课程平均成绩请按1,单科成绩排序请按2n“); scanf(“%d“, if(s=1) for (i=0;i0) flag+; gp=gp/flag;dp=dp/flag;yp=yp/flag;wp=wp/flag; system(“cls“); printf(“高等数学平均成绩 :t%5.2fn“,gp); printf(“电路理论平均成绩 :t%5.2fn“,dp); printf(“英语平均成绩 :t%5.2fn“,yp); printf(“物理平均成绩 :t%5.2fn“,wp); printf(“n返回主菜单请按0n“); scanf(“%d“, if(s=2) printf(“请选择 nn“); printf(“高等数学成绩排序请按1n“); printf(“电路理论成绩排序请按2n“); printf(“英语成绩排序请按 3n“); printf(“物理成绩排序请按 4n“); scanf(“%d“, if(y=1) paixugs();/*调用相应的排序函数 */ if(y=2) paixudl(); if(y=3) paixuyy(); if(y=4) paixuwl(); /* */ void main() /*主函数*/ printf(“tt *nn“);/*开始 界面*/ 第 31 页 共 37 页 printf(“tt *学生成绩管理系统 *nn“); printf(“tt *设计者:乐骏彦 *nn“); printf(“tt *指导老师:彭春华 *nn“); printf(“tt *通信工程 0902 班*nn“); printf(“tt *2011年 6 月 30 日*nn“); printf(“tt *nn“); printf(“nnnn“); printf(“请输入系统启动口令 n“);/*启动口令 */ scanf(“%d“, if(a!=1) printf(“口令错误 ! 系统即将关闭 !n“); exit(0); for (;) system(“cls“); printf(“请从主菜单选择您所需要的操作nn“);/*系统主菜单 */ printf(“1.首次输入学生信息请按 n“); printf(“2.查找学生信息 n“); printf(“3.修改学生信息 n“); printf(“4.删除学生信息 n“); printf(“5.插入学生信息 n“); printf(“6.优秀学生信息 n“); printf(“7.不及格学生信息 n“); printf(“8.课程成绩统计 n“); printf(“0.退出n“); scanf(“%d“, switch(c)/*利用 switch 语句集成各个功能函数 */ case 1 : Getinformation();break;/*获得学生信息 */ case 2 : Seekinformation();break;/*查找学生信息 */ case 3 : Modifyinformation();break;/*修改学生信息 */ case 4 : Deleteinformation();break;/*删除学生信息 */ case 5 : Insertinformaton();break;/*插入学生信息 */ case 6 : Stu_p();break;/*显示优秀学生信息 */ case 7 : Showthefail();break;/*显示不及格学生信息 */ case 8 : Chengjitongji();break;/*课程成绩的统计 */ case 0 : exit(0);/*退出*/ default: break; 第 32 页 共 37 页 八、调试分析 调试程序比编写程序还要困难,花的时间也最多, 对于整个程序 的分析在程序设计思想一节里已经讨论过了,这里就不在赘述。 而调 试的过程比较繁琐对于很多小错误也没有留心去记录,这里只举出一 个我映像较深的例子来说明调试的过程。例如下面这段代码 (按学号 查找学生信息的函数) int Searchbynum (int no) /*按学号查找 */ for (j=0;j1000;j+) if (studentj.num=no) return j; return -1; 我在刚开始时吧return -1;这句代码写到了for循环内部,编译时 并没有错误, 只有一条警告“ warning C4715: 'Searchbynum' : not all control paths return a value ”,当时也没在意,然而当运 行到学生信息查询模块时, 只能查询第一个学生的数据, 从第二个数 据开始就无法查询到了。后来经过仔细检查才发现了这个错误。 通过这个例子,我明白了编程中出现语法错误机器会帮你找出, 而出现逻辑错误想靠机器帮你找出的是不太可能的!所以在以后的编 程中要尽量避免出现逻辑错误。 第 33 页 共 37 页 九、测试数据 如果把每一个功能的测试的结果都截图放到报告中来,将会占用 很大的篇幅,所以这里只贴出在设计题目要求中着重提到的几个功能 (优秀学生和不及格学生的信息输出、每门课程的平均成绩以及高等 数学按学生成绩的排序) 的测试的数据。 此次测试输入了5 名学生的 成绩进行测试,其中有两人为优秀学生,有两人有不及格的记录。测 试截图如下: 第 34 页 共 37 页 各科平均成绩: 高等数学成绩排名: 第 35 页 共 37 页 十、用户使用手册 此学生成绩管理系统为中文界面,提示清楚,界面友好,只要输 入学生信息及成绩,即可自动生成优秀学生信息、不及格学生信息、 各科成绩平均分、以及各科成绩排名。还可以查找、修改、插入、删 除学生信息与成绩,是一个较全面的成绩管理系统。 输入学生信息及成绩时请注意以下几点: 1、输入学生姓名和班级名称时不要过长(超过50 个字符),否 则系统会判定为恶意输入; 2、输入学号时请不要超过10 位数字,否则也会被判定为恶意输 入; 3、学生成绩分为平时成绩与考试成绩,输入时请看清楚,不要 混淆; 4、输入学生成绩时请出入0 到 100 之间的数,成绩不能小于0 也不能大于 100; 5、本管理系统最多可存储1000 个学生的信息。 第 36 页 共 37 页 设计过程中质疑(或答辩)记载: 问: void Inputfun()是做什么的? 答:void Inputfun()此函数较特别,它只进行输入操作,用于输 入学生信息。 指导教师评语: 签名: 年月日 第 37 页 共 37 页

    注意事项

    本文(数据结构课程设计报告-学生成绩管理系统[1](1)资料.pdf)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开