上海应用技术学院课程设计报告

上传人:痛*** 文档编号:195051796 上传时间:2023-03-14 格式:PDF 页数:14 大小:549.25KB
返回 下载 相关 举报
上海应用技术学院课程设计报告_第1页
第1页 / 共14页
上海应用技术学院课程设计报告_第2页
第2页 / 共14页
上海应用技术学院课程设计报告_第3页
第3页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
上海应用技术学院课程设计报告 课程名称 C 语言课程设计 设计题目 成绩记录簿 姓 名 叶箭 专业班级 101041B2 学号 1010411232 组别 无 同 组 者 指导教师 日期 成绩 一、目的及要求(1)目的 1.巩固和加深学生对 C 语言课程的基本知识的理解和掌握;2.掌握 C 语言编程和程序调试的基本技能;3.利用 C 语言进行基本的软件设计;提高学生的编程能力 4.掌握书写程序设计说明文档的能力 5.提高运用 C 语言解决实际问题的能力。(2)课程设计要求 1.分析课程设计题目的要求;2.写出详细设计说明;用户提供的主操作界面应该为菜单形式 3.编写程序代码,调试程序使其能正确运行;4 设计完成后提交课程设计报告和源代码文件的电子文档 最后提交的课程设计成果包括:a)课程设计报告电子稿;b)源程序文件;(.cpp 文件)二、课程设计内容说明 1.课程设计题目:成绩记录簿 2.设计理念:成绩记录簿中记录以下数据:学号、姓名,语文,数学,英语,学分,所有成绩都以百分制计分。在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的学分。也可以查出一个班的成绩表 输入信息时要检查数据项学号的合法性,学号:8 位数字;成绩:0 100 之间的整数。程序的主界面如下:1 程序系统的结构:F.2.1 程序描述:(1)目的:对成绩录入簿进行良好的添加,查询,删除。(2)特点:方便,灵活,直观,易用。意义:编写此程序,可以巩固和加深我们对 C 语言课程的基本知识的理解和掌握;也使我们能掌握 C 语言编程和程序调试的基本技能;使我们有能力利用 C语言进行基本的软件设计;更令我们掌握了书写程序设计说明文档的能力:且 提高运用 C 语言解决实际问题的能力。F.2.2 功能:通过主菜单,我们可以迅速的选择我们所需的操作了,比如:添加或删除每个人的成绩,学分,学号等一系列的内容,又或者可以随时方便快捷的查询个人成绩或班级成绩,F.2.3 性能:可以应付简单的添加,删除和查询;F.2.4 输人项 char name10 设置学生名称 成绩记录簿 1.添加 2.删除 3.查询学生成绩 4.查询班级成绩 0.退出 成绩记录簿 添加 查询学生成绩 删除 按姓名查询 按学号查询 按姓名删除 按学号删除 查询班成绩 退出 long int id 定义学号为长整型 float avg 平均分为实数 F.2.5 输出项 int m1,m2,m3,score,xf;定义整型 float avg;以浮点型输出平均分 F.2.6 算法 1.for 语句,不断循环接受新的信息 2.if 语句,判断,然后选择输出 3.switch 语句,case 语句负责到是以名字或是学号等一系列信息进行删除或查询 F.2.7 流程逻辑 这是总的流程图。该流程分为五大模块:开始 删除 添加 选择删除方法 确认 是 删除成功 否 查询班成绩 查询学生成绩 选择查询方法 输出要查询的内容 输入 输入 主菜单(成绩记录簿)模块一:主菜单 模块二:tj()函数接受添加的数据,模块三:del()是删除不需要的数据的内容,可以通过学号和姓名两种方式进行操作,其中有确认操作,防止误操作,删除结束返回主菜单。模块四:checkstident()是通过按姓名与学号两种方法来查询学生个人成绩 模块五:checkclass()是通过一个 for 语句不断循环已经接受的内容来显示班级成绩 F.2.8 接口#include stdio.h#include#include struct stu long int id;char name10;开始 进入主菜单(成绩记录簿)添加 删除 查询班级成绩 tj()checkclass()退出 查询学生成绩 del()checkstudent()int m1,m2,m3,score,xf;/xf 为学分 float avg;f100;int x=0,a,choose,s=0,score1=0,score2=0,score3=0,c;long int id;float avg1,avg2,avg3;char name10;void tj()void del()void checkstudent()voidcheckclass()void main()int a;while(1)printf(nnn);printf(成绩记录簿n);printf(1:添加n);printf(2:删除n);printf(3:查询学生成绩n);printf(4:查询班成绩n);printf(0:退 出 n);printf(请输入数字选择:);scanf(%d,&a);switch(a)case 1:tj();break;case 2:del();break;case 3:checkstudent();break;case 4:checkclass();break;case 0:exit(0);default:;F.2.9 限制条件:1.一个学生必须有语文,数学,英语三门成绩 2.学号必须都是数字,且是八位,不能有0 F.2.10 测试计划 主函数:进入就可以选择要操作的选项 添加:进入主菜单,选择 1,输入要添加的人数,输入学生学号,语文,数学,英语及学分,然后输出 删除:进入主菜单,选择 2,在选择删除方法时,我选择了 1(按学号删除),然后输入学号,显示出要删除的内容,选 0(确定删除),删除成功 查询学生成绩:进入主菜单,选择 3,在选择查询方法时,我选择了 1(按学号查询),然后输入学号,显示出要查询的内容,查询班成绩:进入主菜单,选择 4,显示出班成绩 三、结论与体会 结论:对完成情况的评价:可以进行一些简单操作,可以比较迅速地进行添加,删除与查询 设计中存在的问题:目前程序虽然已经完成,但仍然有许多不足与漏洞。例如:1.在我的程序中查询班成绩是直接显出来的,不需要选择查询方法,然而,事实上,我本可以用 switch语句,case 语句来编程,这样的话,在查询班成绩时,就可以通过选择查询方法来查询了!可惜没时间了,否则一定将此不足改正。2.另一个不足之处是由于惯性,想当然的以为学号一定是数字,且通常是八位,所以在我的程序中,如果学号中有字母,程序将陷入死循环:如果学号超过八位,将提示输入有误!体会:短短的一周已经过去了,在此我将交出我一周的成果,我真是百感交错!事实上,与过去相比,我认为这短短的一周给我的感悟更为强烈。在此,首先我要感谢 老师,是 老师把我带进了这一门,俗话说的好“万丈高楼平地起”,所以说,基础很重要。而 老师讲课认真,讲也很透彻,使我们能较好的理解这门课,可以跟紧课堂进度,是我们有机会能打下结实良好的基础。而且 老师在平时也鼓励我们多提问,在我们遇到问题时,富有耐心地为我们解答。在此再次感谢老师对我们不辞操劳的讲解!谢谢!一开始,当我第一眼看到这课程设计的时候,我感到十分的“痛苦”,老实说,在还未进行编程之前,我就感到这与我们之前的编程完全不一样,与这次相比,以前的上机实验就像是小孩子玩得,一点技术含量也没有。以前的那些实验只要看看书,花上一二个小时,基本就可以完成了,而且以前的小程序最多也不过二三十行,不像这次要百来行。从中可见它的难度,从而联想到那些专业编程员,我更深刻感到自己的不足。由于之前从未进行过如此大的编程,所以一开始根本没头绪,后来只好用死办法,像写作文一样,首先先在纸上列出大致的提纲,然后再一个个慢慢延伸展开,最后再输入计算机,用它来运行。可惜不运行还好,一运行只见一片的红色错误提示。有些错误很简单,很好改,是由于自己的粗枝大叶引起的,比如:有些字符未定义,漏了一个“;”等。但也有些高深莫测的问题,例如:当我好不容易把程序运行出来后,却发现当我选择删除这一项时,会发现不论我选择是按学号删除还是按姓名删除都不会出现我所要删除的内容,而是直接询问确定删除请按 1。又或者是当我添加时是添加了三个同学的成绩,但当我查询全班成绩时,却只有两位同学的成绩。后来在百思不得其解之下,我只好向周围同学寻求帮助,最终在大家的帮助之下才解决的,诸如此类的问题还不少!有的已经解决,但有些还未,可惜时间不够,也只能如此。经过这一周的课程设计,我发现我懂得了很多,它使我在编程时更仔细了,也使我学会了向周围人求教,培养了我自我学习,独立思考。并且,使我更体会到了和高中的不一样,一切靠自觉,没有人会跟在你后面一直催你,告诉你该怎样怎样。同时,我也更加了解到自己的不足,基础严重不扎实。虽然这门课快结束了,但我会努力在假期中把自己的基础补好,期待在下次的课程设计时能够得心应手!参考文献 C 语言程序设计实用教程 周雅静主编 清华大学出版社 2009 附录:程序清单 附录源程序#include stdio.h#include#include struct stu long int id;char name10;int m1,m2,m3,score,xf;/xf 为学分 float avg;f100;int x=0,a,choose,s=0,score1=0,score2=0,score3=0,c;long int id;float avg1,avg2,avg3;char name10;void pt()/分割线 printf(nn);void tj()printf(你要添加几个学生成绩:);scanf(%d,&a);printf(请输入:学号 姓名 语文 数学 英语 学分 n);a=a+s;for(;xa;x+)scanf(%ld%s%d%d%d%d,&fx.id,fx.name,&fx.m1,&fx.m2,&fx.m3,&fx.xf);fx.score=fx.m1+fx.m2+fx.m3;fx.avg=(fx.score)/3;s+;if(fx.m1100|fx.m2100|fx.m3100|fx.id99999999|fx.id10000000)printf(n 输入有误n);s-;x-;break;/删除错误行并且退出程序 for(x=0;xs;x+)printf(学号 姓名 语文 数学 英语 平均分 总分 学分n);printf(%-2ld%s%5d%5d%5d%5.1f%5d%5dn,fx.id,fx.name,fx.m1,fx.m2,fx.m3,fx.avg,fx.score,fx.xf);void del()int y=0;pt();printf(按学号删除请按 1n 按姓名删除请按 2n);scanf(%d,&choose);switch(choose)case 1:printf(n 请输入学号);scanf(%ld,&id);for(x=0;xs;x+)if(fx.id=id)printf(学号 姓名 语文 数学 英语 平均分 总分 学分n);printf(%-2ld%s%5d%5d%5d%5.1f%5d%5dn,fx.id,fx.name,fx.m1,fx.m2,fx.m3,fx.avg,fx.score,fx.xf);y+;printf(确定删除该学生成绩按 0n 其他数字退出删除n);scanf(%d,&c);if(c=0)for(y;ys;y+)fy.name=fy+1.name;fy.id=fy+1.id;fy.m1=fy+1.m1;fy.m2=fy+1.m2;fy.m3=fy+1.m3;fy.avg=fy+1.avg;fy.score=fy+1.score;s-;printf(删除成功);break;else printf(删除以取消);break;case 2:printf(n 请输入姓名:);scanf(%s,&name);for(x=0;xs;x+)if(strcmp(fx.name,name)=0)printf(学号 姓名 语文 数学 英语 平均分 总分 学分n);printf(%-2ld%s%5d%5d%5d%5.1f%5d%5dn,fx.id,fx.name,fx.m1,fx.m2,fx.m3,fx.avg,fx.score,fx.xf);y+;printf(确定删除该学生成绩按 1n 其他数字退出删除n);scanf(%d,&c);if(c=1)for(y;ys;y+)fy.name=fy+1.name;fy.id=fy+1.id;fy.m1=fy+1.m1;fy.m2=fy+1.m2;fy.m3=fy+1.m3;fy.avg=fy+1.avg;fy.score=fy+1.score;s-;break;else printf(删除以取消);break;pt();void checkstudent()pt();printf(按照学号查询请按 1n 按照名字查询请按 2n);scanf(%d,&choose);switch(choose)case 1:printf(n 请输入学号);scanf(%ld,&id);for(x=0;xs;x+)if(fx.id=id)printf(学号 姓名 语文 数学 英语 平均分 总分 学分n);printf(%-2ld%s%5d%5d%5d%5.1f%5d%5dn,fx.id,fx.name,fx.m1,fx.m2,fx.m3,fx.avg,fx.score,fx.xf);break;case 2:printf(n 请输入姓名);scanf(%s,name);for(x=0;xs;x+)if(strcmp(fx.name,name)=0)printf(学号 姓名 语文 数学 英语 平均分 总分 学分n);printf(%-2ld%s%5d%5d%5d%5.1f%5d%5dn,fx.id,fx.name,fx.m1,fx.m2,fx.m3,fx.avg,fx.score,fx.xf);break;default:printf(输入有误);break;pt();void checkclass()float avg1,avg2,avg3;pt();printf(全班的成绩是:n);printf(学号 姓名 语文 数学 英语 平均分 总分 学分n);for(x=0;xs;x+)printf(%-2ld%st%5d%5d%5d%5.1f%5d%5dn,fx.id,fx.name,fx.m1,fx.m2,fx.m3,fx.avg,fx.score,fx.xf);pt();void main()int a;while(1)printf(nnn);printf(tt*成绩记录簿*n);/*菜单选择*/printf(ntt|1.添加|n);printf(ntt|2.删除|n);printf(ntt|3.查学生成绩|n);printf(ntt|4.查班级成绩|n);printf(ntt|5.写入文件|n);printf(ntt|6.读取文件|n);printf(ntt|0.退出|n);printf(tt*n);printf(tttGive your Choice(0-6):);scanf(%d,&a);switch(a)case 1:tj();break;case 2:del();break;case 3:checkstudent();break;case 4:checkclass();break;case 0:exit(0);default:;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!