




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安文理学院软件学院课程设计报告设计名称: 程序语言课程设计 设计题目: 成绩记录薄 学生学号: 专业班级: 软件工程4班 学生姓名: 学生成绩: 指导教师(职称): 课题工作时间: 2014.12.5 至 2014.12.17 软件学院课程设计任务书学生姓名 学号 专业班级软件工程4班设计题目成绩记录簿内容概要: 设计或开发环境:vc+6.0 技术:c+语言 1.创建信息并以磁盘文件保存; 2.读取磁盘文件并显示输出所有学生的成绩;3.按学号或姓名查询成绩;4.添加成绩记录;5.修改指定姓名或学号的学生的成绩并可存盘;6.显示输出60分以下、6079、8089、90分以上各分数段的学生信息; 7.退出。文献资料:陈维兴.林小茶. c+面向对象程序设计(第3版)m.清华大学出版社,2012.谭浩强. c程序设计(第四版)m.清华大学出版社.2012. 罗建军.朱丹军.顾刚.刘路. c+程序设计教程 .北京:高等教育出版社,2012. 郑莉.董渊.张瑞峰. c+语言程序设计(第三版)m.北京.清华大学出版社,2012.设计要求: 1.分析课程设计题目的要求; 2.写出详细设计说明;3.编写程序代码,调试程序使其能正确运行; 4.设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5.设计完成后提交课程设计报告和源代码文件的电子文档。工作期限:设计工作自2014年12月5日至2014年12月17日止。指导教师: 谢巧玲 院长: 日 期:2014年12月5日软件学院课程设计进度安排表学生姓名: 马跃聪 学号: 1402120419 专业: 软件工程 班级: 4 起止日期内 容备注12月5日下达任务书,制定进度安排计划 12月6日12月7日系统整体设计和详细设计12月8日12月12日系统编码实现12月12日12月13日系统测试 12月14日12月16日撰写课程设计报告 12月17日演示软件和答辩 指导教师签名: 2014年12月6日成绩评定表学生姓名: 马跃聪 学号: 1402120419 专业: 软件学院 班级: 4 类别合计分值各项分值评分标准实际得分合计得分平时表现1010按时参加设计指导,无违反纪律情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。报告质量3510报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。5课题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全面的总结,得出有价值的结论或结果。5参考文献数量在2篇以上,格式符合要求,在正文中正确引用。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩: 分 指导教师: (签字) 日期:2014 年12月 17 日摘 要摘要:成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0100之间的整数,学分:15之间的实型数。添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或姓名作为关键字,可查询一个学生的成绩,和已完成的总学分。查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。拓展功能:a)程序启动时先从文件读入数据,如果文件中没有数据则给出提示;b)每次修改的数据写入文件。关键词:c成绩输入并存入磁盘;查询;修改;删除;显示 目 录第一章 课题背景(或绪论、概述)iv1.1 课题所设背景及要求iv1.1.1 课题背景iv1.1.2 目的和任务iv1.1.3 课程设计要求iv1.2 设计内容iv第二章 设计简介及设计方案论述iv2.1 设计题目iv2.2 设计要求iv2.3 设计方案iv第三章 详细设计iv3.1 主模块设计iv3.2 数据结构设计iv3.3 函数功能描述iv第四章 设计结果及分析错误!未定义书签。4.1 编码和调试iv4.1.1 调试过程iv4.1.2 结果展示iv4.3 设计分析iv总结iv参考文献错误!未定义书签。附录主要程序代码4第一章 课题背景(或绪论、概述)1.1 课题所设背景及要求1.1.1 课题背景这一章设计课题是计算机科学与技术专业重要的实践性环节之一,是在学生学习完c程序设计语言与c+面向对象程序设计课程后进行的一次全面的综合练习。1.1.2目的和任务 1.巩固和加深学生对c语言课程的基本知识的理解和掌握; 2.掌握c或c语言编程和程序调试的基本技能; 3.利用c或c+语言进行基本的软件设计; 4.掌握书写c或c+程序设计说明文档的能力; 5.提高运用c或c+语言解决实际问题的能力。1.1.3课程设计要求1.数据组织方面尽量使用到:数组、链表、结构体、文件;2.程序结构方面做到函数调用,尽量采用指针运算;3.代码编写规范,形成良好的编程习惯;4.程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。5.课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。课设报告内容包括以下几个方面:程序的总体设计和算法分析。程序流程图、函数说明源程序代码清单测试数据和测试过程记录遇到的问题及解决方法分析课程设计小结1. 2 设计内容1. 选题与开题:题目可来自教师指定的参考题目,也可自由选题,特别鼓励有创新 性的题目或是在已知题目的基础上进行创新。2. 系统设计:系统设计的任务是对所确定的题目从问题需求、数据结构、程序结构、 难点及关键技术等方面进行分析,形成的系统设计方案,并进行详细的分工。3. 系统编码实现:小组成员根据初步的系统设计方案,对系统编程实现。4. 系统测试:在各程序模块编码完成并集成后,就可以开始对整个系统进行测试。5. 撰写课程设计报告:完成文档整理,按照要求完成课程设计报告。6. 系统评价与验收:通过小组答辩的形式对程序的功能进行评价与验收。第二章 设计简介及设计方案论述2.1 设计题目成绩记录簿2.2设计要求1.问题描述(功能要求): 编制一个c语言成绩记录簿,每个学生信息包括:学号,姓名,成绩。具体功能: (1)创建信息并以磁盘文件保存; (2)读取磁盘文件并显示输出所有学生的成绩; (3)按学号或姓名查询成绩; (4)添加成绩记录; (5)修改指定姓名或学号的学生的成绩并可存盘; (6)显示输出60分以下、6079、8089、90分以上各分数段的学生信息。2.其他要求: 只能使用c/c+语言,源程序要有适当的注释,使程序容易阅读。2.3设计方案 根据系统的功能要求,可以将问题解决分为以下步骤: 1.分析系统中的各个实体之间的关系及属性和行为; 2.根据问题描述,设计系统的类层次; 3.完成类层次中各类的描述(包括属性和行为); 4.完成类中各个成员函数的定义; 5.完成系统总结报告以及系统使用说明书; 6.功能测试; 7.完善系统总结报告以及系统使用说明书。 第三章 详细设计3.1 主模块设计 开 始3.1.1 欢迎使用学生信息查询系统,请安提示使用! 请从序号06中选择:(输入n) n=0? y n n7? y n 进入相应功能模块。 您输入有误,请重新输入! 结束3.1.1主要流程图如上图 首先进入void函数程序调用菜单函数menu(),在主函数运行时,调用void xuanzhe函数默认对系统进行初始化,并将初始化函数返回的值付给头指针next,在屏幕上显示菜单。 3.1.2输入信息模块输入1进行编辑 返回主模块 信息导入返回主模块 继续输入任意键返回主模块 执行“1.添加”操作时,调用next()时,将调用()对每个的信息用头插法建立链表节点并同时进行对每一个人的信息进行输入(由ip()调用指针()实现)3.2.3 修改成绩模块 输入5 进行编辑 返回主模块 信息录入 y 返回主模块 修改成功 y 任意键返回主模块执行“2.修改成绩”时调用,指针()函数,要求用户键入要修改的学生的姓名或学号,然后键入要修改的课程编号,在输入成绩时,如果是已经有成绩则提示“已经有程序”以后有“是否修改成绩?”的提示。3.2.4删除模块输入3进行删除 返回主模块信息录入返回主模块删除成功任意键返回主模块 执行“3.删除”时,用户输入要删除的学生姓名或学号,检查合法性后,调用查找(char*)(学号查找)或(char*)(姓名查找),将返回的链接地址给xuesehng(显示在屏幕)并且提示用户是否删除。如果删除,则继续将返回的链表给xuesheng函数,将这个链表的下一个节点的头指针连接到这个链表的上一个未指针,则删除成功。3.2.5查学生成绩模块摄入4学生姓名 返回主模块信息录入返回主模块 显示c成绩任意键返回主模块 调用()函数,要求用户输入学号或者是姓名,通过xueshengguanli()和xueshenggl()函数判断姓名或者学号的合法性(即是否姓名为字母,学号为数字)。 3.2.6查班成绩表模块 通过调用xueshenggl()函数,要求用户输入课程编号进入,通过课程编号查找所有节点的相同课程编号,并且输出所有学生的这一课程编号的成绩、学分和平均分;成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。3.2.7入文件模块 通过调用cincout()函数,提示用户输入文件名,这里为用户自己定义,文件以“w”方式,当程序开始运行时,提示是否打开文件,文件名称要用户自己定义。 3.2.8取文件模块 通过指针()函数,可将本程序保存的数据文件在程序重新期待时读写到系统内存里,可对其进行查看、编辑、处理等任务。 3.2.9出模块 退出时,释放链表内存。然后return(0)退出程序。1目录主要源码 int main() xueshenggl head; int sel;coutnn -n;couttt* 设计者*ntt* *n tt* 学号: *n; cout -nn; while(1) couttt-n tt欢迎使用学生信息管理系统n tt 1输入学生信息n tt 2修改学生信息n tt 3删除学生信息n tt 4查找学生信息n tt 5学生综合成绩排序信息n tt 6显示学生信息n tt 0返回n tt-nnn; coutsel;coutnext;out_stream.open(student.txt,ios:trunc);(删除接受的s节点的指令)函数运行(返回前一个节点的功能),将所要删除的信息的后一个链表连接到要删除的信息的前一个链表。5.xueshenggl lookup(xueshenggl top) xueshenggl lookup()函数为查询查学生成绩的操作,用户输入要查询的学生学号或者是姓名,调用number,l=0判断输入合法性和正确性后再判断是学号还是姓名,最后再调用void。第四章 设计结果及分析4.1 编码和调试在设计该程序第我采用了结构话程序方法编制,并在源代码的基础上添加了中文注释,但是在该系统的编写过程中仍然有很多错误,主要是:注释文字的排版,定义错误,句式的语法错误。在完善程序时,我将源代码逐一排查,反复的琢磨和研究,力图在上机运行时少一些低级错误,如:“:”等。在仔细检查之后,将源代码上机调试进行编译,在编译和连接过程中发现错误,屏幕上显示出错信息,根据提示找到出错的位置,并加以改正直到显示出我预期的效果。4.1.1 调试过程1.首先,在本次调试过程中我遇见了在上机前根本没有想到的错误:在注释时,注释文字应写在一起中间不能有中断,不能再其中包含语言的语句,否则会产生错误,例如格式不正确或是多了字符等。2.缺少变量定义或是定义的位置不正确由于该程序比较长,前后的变量容易混淆,但是在错误信息的提示下也不是很容易找到。需要注意的是在定义时候有些函数使用同样的变量名却表示不同的作用,因此使用过程中要非常的小心,在定义及定义的位置也需要特别的留意。为减少这些不必要的麻烦,采用不同的变量名来表示,从而解决了变量名混淆问题。3.句式的语法错误大多的语法错误在相关的参考书下可以修改解决。主要是平时看书不仔细,不注意细节而产生的。如:没有注意具体数据使用是有一定的范围限定:过分的注重分号的重要性而在for,if,while语句中添加多余;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不是很注意而造成匹配问题;还有漏掉形参的定义使值不能传递等等。这些语法错误有信息的提示是可以排除的。其实,编译,链接的成功并不意味着该程序的成功。逻辑上的错误,机器不容易检查出来,这时候就需要编译人员相当的耐心和细心对数据结果进行分析去把问题找出来。其间,可以采用“分段检查”的方法,在程序的不同位置设置几个printf函数语句,输出有关的变量值,铸段往下检查,或用debug进行测试,对检查出的错误进行修改,当调试完毕后记得将设置的printf都删除。若在程序中找不到问题,则进行另一方面程序的检查与修改。如此循环,直到最后程序的运行成功。在本次的程序编译过程中,我就是遇见修改许多次后编译能通过,能够运行程序时才想起要去查看数据文件中的数据记录。有时候数据记录却显示不出来,开始怀疑什么地方把变量的定义或使用错误。此时才在每个主要函数的操作过程中添加printf语句去检查是否有问题。如果有错误,就说明该函数编写有错误。以此类推,不断缩小检查错误的范围,直到把错误找出来,并进行修改。因此,再找到错误时就及时改正,使得程序功能显示正常。以上就是调试的过程。4.1.2 结果展示步骤一: 根据数字提示从06选择要操作的功能,如图所示:图1软件使用图示步骤二: 按1键,会出现提示“输入学生信息”;按2键,会出现“修改学生信息”;按3键,会出现“删除学生信息”;按4键,会出现“查找学生信息”;按5键,会出现“学生综合成绩排序信息”;按6键,会出现“显示学生信息”;按0键即可退出,如图42所示: 图2软件使用图示步骤三: 键入2回车,会出现“请输入修改人的姓名”,现在就可以直接修改学生的信息,如图43所示 图3软件使用图示步骤四: 键入3回车,会出现“请输入删除学生的姓名”,会显示出“请输入要删除学生的学号”,回车后就出现“删除成功”。就可以直接修改学生的信息,如图44所示 图4软件使用图示步骤五:键入4回车,会出现“学生成绩查询”,就可以直接查看学生的信息,如图45所示 图5软件使用图示 步骤六: 键入5回车,会出现“学生成绩排序”,就可以直接查看学生的信息,如图46所示 图6软件使用图示步骤七: 键入6回车,会出现“全部学生成绩查询”,就可以直接查看学生的信息,如图47所示 图47软件使用图示4.3 设计分析 通过对此次课程设计的了解与实践,让我深有感触。就设计方面来说,页面并不美观,所要求的成绩记录簿的功能没有全部实现。还需尽快完善要求中的第六个功能:显示输出60分以下、6079、8089、90分以上各分数段的学生信息。在程序中通过对函数与指针的调用,实现相应的功能。 总结(1)我的题目是成绩记录簿,第一次做这样大的程序,我按照指导书的指导,一步一步的去做:分析课题要求,确定设计方案,按功能模块编写详细设计说明,绘制程序流程图,编写程序,调试程序,写课程设计报告等。对于完成的程序,还有几部分可以改进: 界面的美观,在设计时候应该想到的是做用户喜欢的东西,界面首先要美观。 功能的拓展,例如将输入学生的信息排序并打印出来等。 (2)在课程设计过程中,遇到了不少的问题。于是我就不得不查阅参考书及相关资料,向同学请教等。最终把程序写出来。但是在运行时却出现了很多的问题,自信心大受打击,但坚持去查看究竟是哪里出错了。有的错误我怎么卡也看不明白,就问同学或是上网查。改过很多次以后,终于能运行出来。虽然结果很是不理想。通过编译,链接,运行进行调试,程序的功能都能够实现,感觉不是很有成就感。在调试的过程中,总会出现编译错误,因为程序很长挺难修改的,突然觉得认真细心很重要,自己做事太粗心了。期间,我也找过别人帮忙,我认为合作也是一件很有意义的事情,办事效率非常的高。对于运行结果,让我有点惊讶。仅仅通过几个函数就能够实现一些功能,而且运行的结果简单明了。当然,运行的结果并不理想。总的来说,学习c语言其实是一件很有价值的事情。这次编程感触也特别的深,那就是用的时间比较长,又和我们的web网页设计凑在了一起。时间紧张。个人感觉这次的程序很难的,以后应该会更复杂跟难吧。不管怎么样,接触这门课程也有两年了,还是多少有点收获的。其实,计算机也不是有多么的神秘,有时候我就想,在以后的学习只能发一定要多练习,多学习,多了解这门语言课,并争取吧它学的更好。 参考文献 1陈维兴 林小茶c+面向对象程序设计(第3版).北京:清华大学出版社,2012.10 2谭浩强 c程序设计(第四版)北京:清华大学出版社,2012.63罗建军,朱丹军,顾刚等 c+程序设计教程北京:高等教育出版社,2012.3 4郑莉,董渊,张瑞峰 c+语言程序设计(第三版).北京:清华大学出版社,2011.9附录主要程序代码#include#include#include#includeusing namespace std;struct xueshengguanli string name; int num; float c; xueshengguanli *next; typedef xueshengguanli* xueshenggl;/将信息存入xueshenggl input(xueshenggl head) char sel=y; int m=0; xueshenggl p1,p2,top; ofstream out_stream; out_stream.open(student.txt,ios:app); /以追加数据信息打开文件 if(out_stream.fail() coutnext=null; coutp1-name; coutp1-num; coutp1-c; if(m=0) head=p1; p2=head; m=1; else p2-next=p1; p2=p1; coutsel; top=head; /写入文件 while(head!=null) out_streamname numtc; head=head-next; out_stream.close(); /关闭文件 if(sel=n|sel=n) cout输入完毕.n; return top; /返回链表头结点地址/从文件里读取数据xueshenggl wenjian(xueshenggl top) int n=0; xueshenggl p,h; ifstream in_stream; in_stream.open(student.txt); if(in_stream.fail() coutnext=null; in_streamp-namep-nump-c; if(n=0) top=p; h=top; n=1; else h-next=p; h=p; in_stream.close(); return top;/返回链表头接点地址void xuanzhe(xueshenggl top) int h; while(h3) couth; if(h=1) break; else if(h=3) couttop-c; break; else coutn输入错误!请重输!n; /修改xueshenggl change(xueshenggl top) string name; int num,l=0; char sel=y; xueshenggl q,head; coutname; coutnum; top=wenjian(top); q=top; while(top!=null) if(top-name=name&top-num=num) l=1; while(sel=y|sel=y) coutn1姓名 2学号 3c成绩n; xuanzhe(top); coutn这是修改后的学生信息:n; coutn姓名t学号tc成绩n; coutnametnumtcendl; coutsel; if(sel=n|sel=n) coutnext; /修改后学生信息写入文件 if(l=1) head=q; ofstream out_stream; out_stream.open(student.txt,ios:trunc); /以覆盖文件原数据方式打开文件 if(out_stream.fail() cout打开文件失败.n; exit(1); while(head!=null) out_streamname numtc; head=head-next; out_stream.close(); else coutn对不起,没有你要修改的人.nn; return q;/删除xueshenggl del(xueshenggl top) string name; int num,l=0,n=0; xueshenggl p,h,q,back,head; coutname; coutnum; ofstream out_stream; ifstream in_stream; in_stream.open(student.txt); if(in_stream.fail() cout打开文件失败.n; coutnext=null; in_streamp-namep-nump-c; if(n=0) top=p; h=top; n=1; else h-next=p; h=p; in_stream.close(); q=top; while(1) if(name=top-name&num=top-num&top-next=null) l=2; top=q-next; out_stream.open(student.txt,ios:trunc);/删除文件 break; if(name=top-name&num=top-num&top-next!=null) l=1; top=q-next; coutnext=null) printf(nnot found!n); break; back=q; q=q-next; if(name=q-name&num=q-num) l=1; back-next=q-next; coutn删除成功.n; break; /删除学生信息后重新写入文件 if(l=1) head=top; out_stream.open(student.txt,ios:trunc); if(out_stream.fail() cout打开文件失败.n; exit(1); while(head!=null) out_streamname numtc; head=head-next; out_stream.close(); else if(l=2) coutn删除成功.n; else coutn找不到此人信息!n; return top;/查询 xueshenggl lookup(xueshenggl top) string xm; int number,l=0; coutxm; coutnumber; top=wenjian(top); while(top!=null) if(xm=top-name&number=top-num) l=1; coutendl; coutn这是你要查询人的信息.n; coutn姓名t学号tc成绩n; coutnametnumtcnext; if(l=1) coutn谢谢你的查询.n; else coutn对不起,没有你要查询人的信息.n; coutendl; return top;xueshenggl sort(xueshenggl top) string name1; int num1; float c1; int n=0,l=0; xueshenggl p1,p2,p3,p,h,head; ifstream in_stream; in_stream.open(student.txt); if(in_stream.fail() cout打开文件失败.n; coutnext=null; in_s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《结直肠癌化疗路径解析》课件
- 培训效果评估
- 安全逃生绳使用指南
- 2025年事业单位办公室文秘工作总结模版
- 2025债务转让合同协议书范例
- 2025咖啡馆的装修设计合同范本
- 后备干部培训汇报
- 2025公交车广告投放合同范本
- 2025年办公用品采购合同
- 2025企业办公租赁合同
- 河南省郑州市新郑市2023-2024学年八年级下学期期末英语试题(无答案)
- 2023北京顺义区招录乡村振兴协理员及考察笔试历年典型考题及考点剖析附答案带详解
- 中国慢性冠脉综合征患者诊断及管理指南2024版解读
- 跟着音乐游中国智慧树知到期末考试答案章节答案2024年广州大学
- 传统文化醒狮模板
- 小区彩钢棚顶维修合同范本
- 蓝色海洋智慧树知到期末考试答案章节答案2024年大连海洋大学
- 教科版四年级上册科学第一单元《声音》测试卷附答案(精练)
- FZT 64056-2015 洁净室用擦拭布
- 预应力筋用锚具、夹具和连接器应用技术规程JGJ85-2010
- 家长会课件:八年级下学期期中家长会课件
评论
0/150
提交评论