tfquot请你输入新的 c 语言成绩原来是d 分:quotp-gtdata.cgradescanfquotdquotampp-gtdata.cgradegetcharprintfquot请你输入新的数学成绩原来是d 分:quotp-gtdata.mgradescanfquotdquotampp-gtdata.mgradegetcharprintfquot请你输入新的英语成绩原来是d 分:quotp-gtdata.egradescanfquotdquotampp-gtdata.egradep-gtdata.totlep-gtdata.egradep-gtdata.cgradep-gtdata.mgradep-gtdata.avep-gtdata.totle/3printfquotngt提示:资料修改成功nquot(5)、学生成绩的排序,并统计单科的最高分。
(6)、退出系统。
2、系统程序流程图 开始 登 删 修 保 记 查 改 存 退 学 询 除 学 学 生 生 出 生 学 学 资 生 生 资 资 系 料 资 资 料 料 统 料 料 图 1.1 总流程图 开始输入学生学号 是否存在 转为修改 新建 结束 图 1.2 登记学生资料 开始输入是否合法 退 出按学号查询 按姓名查询 输入学号 输入姓名 显示结果 显示结果 结束图 1.3
查询学生资料 开始 删除的是否合法 退 出 选择 1 输入删除学生姓名输入删除学生学号 删除成功 结束 图 1.4 删除学生资料 开始 输入是否存在 退 出输入要修改的学生学号 输入学生新信息 修改成功 结束 图 1.5 修改学生资料 开始 文件是否存在 是否创建文件 退 出 输入文件新信息 导入成功 是否保存? 退 出 保存成功 结束 图 1.6 保存文件与退出系统3、重要函数介绍 数据输入函数“cin ” 查看数据函数“lookdata ” 插入数据的函数“insert ” 查看数据的函数“find ” 更新数据的函数“update ” 保留数据函数“save ”主函数 main 利用无限次循环 for和 swithch实现各函数的调用,
系统根据输入的数字选项来调用相应的函数。
初始化函数 STUDENT init 这是一个无参函数,里面只有一个语句,它的作用是使链表初始化使 head的值为 NULL。
比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!菜单选择函数 int menu_select 这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能, 根据每个功能前面的序号进行选择,中间还显示系统当前的时间。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!输入记录函数 STUDENT create 这是一个无参函数,用来执行第学生成绩记录的输入,当学生为 0 时停止输入,函数结束后,带回一个指向链表头的指针 head。
算法:先声明一个首节点 head,并将 head-gtnext 设为 NULL。
每输入一个数据就声明一个新节点 p,把 p-gtnext 设为 NULL,并且链接到之前
列表的尾端。
在定义数据类型时,由于学生成绩管理信息需要由不同类型的数据反映出来。
如:姓名、性别都需要用 char 型数据,而学号和成绩则需要用 int 型数据,并且每位同学的以上信息都需要一次性输入,所以采用结构体类型定义。
如: typedef struct student /定义结构体/ char name 20 ; -------------------- 定义 char 型姓名 int num10 -------------------- 定义 int 型学号 char sex -------------------- 定义 char 型性别 int cgrade -------------------- 定义 int 型英语成绩 int mgrade -------------------- 定义 int 型数学成绩 int egrade -------------------- 定义 int 型计算机成绩 totle struct student next -------------------- 结构体指针 stu五、程序运行背景:VC VC简介 现在说的 VC 就是指的 VC。
是指编程工具.vc就和 tc 差不多,是一个调试,运行的环境,是微软开发的 visual 组件.VC是微软公司开发的一个 IDE集成开发环境换句话说就是使用 c的一个开发平台.有些
软件就是这个编出来的...另外还有 VBVF.只是使用不同语言...但是vc是 Windows 平台上的 C编程环境,学习 VC 要了解很多 Windows 平台的特性并且还要掌握 MFC、ATL、COM 等的知识,难度比较大。
Windows 下编程需要了解 Windows 的消息机制以及回调(callback)函数的原理;MFC 是 Win32API 的包装类,需要理解
文档视图类的结构,窗口类的结构,消息流向等等;COM 是
代码共享的二进制标准,需要掌握其基本原理等等。
VC 作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天, 究其原因主要是大家对他错误的认识造成的,严格的来说VC不是门语言,虽然它和 C之间有密切的关系如果形象点比喻的话,可以C看作为一种”工业标准”,而 VC则是某种操作系统平台下的”厂商标准”而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。
VC应用程序的开发主要有两种模式,一种是 WIN API 方式,另一种则是MFC 方式,传统的 WIN API 开发方式比较繁琐,而 MFC 则是对 WIN API 再次封装,所以 MFC 相对于 WIN API 开发更具备效率优势。
六、调试问题及解决方法:问题一、学生初始信息模块: 其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算计相 关信息;可用函数 cinstu p1来实现此操作。
当正确输入存在的学生学号, 系统进行判断时,提示不存在此学生。
解决办法及步骤: 1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。
2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错 3、输出用于循环检查语句中的学生信息,发现乱码 4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构 体指针变量定义为了其他类型的指针变量。
问题二、查询模块: 可用 stu lookdatastu p1 来实现。
找到就输出此学生全部信息包括学生 的语文、数学、英语和计算机等的成绩。
当正确输入查找信息时,系统却不能 够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
解决办法及步骤: 1、检查所编写的程序
代码是否完全正确,若不是,则改之,然后再继续正确 输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语 和
计算机的成绩。
2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。
七、心得 课程设计是培养学生综合运用所学知识 发现提出分析和解决实际
问题锻炼实践能力的重要环节是对我们的实际
工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。
因此 而作为二十一世纪的大学来说掌握
程序开发技术是十分重要的, C 语言又是最常见,功能最强大的一种高级语言,因此做好 C 语言课程
设计是十分必要的。
回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。
我做的是学生成绩管理系统,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。
更加是第一次做
课程设计,所以连续做了几天却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。
可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。
特别是结构体,指针的部分,几乎是一片空白。
不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。
不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了 C 语言编程的基本过程和方法。
经过一波三折,终于开始正式编程。
编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。
而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。
所以认真仔细就是非常重要的了。
开始的时候真的感觉编程是一件很无聊的事情, 不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。
又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。
无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习 C 语言的一次实践
作业,自己进步的证明。
通过这次课程设计,使我对 C 语言有了更进一步的认识和了解,要想学好它要重在实践, 要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过
学习也有所改进;再有对 C 语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对 C 语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习 C 语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!八、参考资料 : 1.秦友淑、曹化工。
C 语言程序设计教程。
华中科技大学出版社。
2.郭翠英。
C 语言课程设计案例精编。
中国水利水电出版社。
3.汪晓平。
C 语言高级实例解析。
清华大学出版社。
4.张翔。
C 语言函数大全。
电子工业大学出版社。
5 田淑清。
全国计算机等级考试二级教程.高等教育出版社。
附:源程序及调试结果源程序:include quotstdio.hquotinclude quotstdlib.hquotinclude quotstring.hquotint shoudsave0 / /struct studentchar num10/ 学号 /char name20char sex4int cgradeint mgradeint egradeint totleint avechar neartime10/ 最近更新时间 /typedef struct nodestruct student datastruct node nextNodeLinkvoid menuprintfquotquotprintfquott1 登记学生资料ttttt2 删除学生资料nquotprintfquott3 查询学生资料ttttt4 修改学生资料nquotprintfquott5 保存学生资料ttttt0 退出系统nquotprintfquotnquotvoid printstartprintfquot-----------------------------------------------------------------------nquotvoid Wron
gprintfquotngt提示:输入错误nquotvoid Nofindprintfquotngt提示:没有找到该学生nquotvoid printc / 本函数用于输出中文 /printfquot 学号t 姓名 性别 英语成绩 数学成绩 C 语言成绩 总分 平均分nquotvoid printeNode p/ 本函数用于输出英文 /printfquot-12sststdtdtdt dtdnquotp-gtdata.nump-gtdata.namep-gtdata.sexp-gtdata.egradep-gtdata.mgradep-gtdata.cgradep-gtdata.totlep-gtdata.aveNode LocateLink lchar findmesschar nameornum / 该函数用于定位连表中符合要求的接点,并返回该指针 /Node rifstrcmpnameornumquotnumquot0 / 按学号查询 /rl-gtnextwhilerNULLifstrcmpr-gtdata.numfindmess0return rrr-gtnextelse ifstrcmpnameornumquotnamequot0 / 按姓名查询 /rl-gtnextwhilerNULLifstrcmpr-gtdata.namefindmess0return rrr-gtnextreturn 0void AddLink l / 增加学生 /Node prschar num10rlsl-gtnextwhiler-gtnextNULLrr-gtnext / 将指针置于最末尾 /while1printfquot请你输入学号以0返回上一级菜单:quotscanfquotsquotnumifstrcmpnumquot0quot0breakwhilesifstrcmps-gtdata.numnum0printfquotgt提示:学号为s的学生已经存在若要修改请你选择4 修改nquotnumprintstartprintcprintesprintstartprintfquotnquotreturnss-gtnextpNode mallocsizeofNodestrcpyp-gtdata.numnumprintfquot请你输入姓名:quotscanfquotsquotp-gtdata.namegetcharprintfquot请你输入性别:quotscanfquotsquotp-gtdata.sexgetcharprintfquot请你输入 c 语言成绩:quotscanfquotdquotampp-gtdata.cgradegetcharprintfquot请你输入数学成绩:quotscanfquotdquotampp-gtdata.mgradegetcharprintfquot请你输入英语成绩:quotscanfquotdquotampp-gtdata.egradegetcharp-gtdata.totlep-gtdata.egradep-gtdata.cgradep-gtdata.mgradep-gtdata.avep-gtdata.totle / 3/ 信息输入已经完成 /p-gtnextNULLr-gtnextprpshoudsave1void QurLink l / 查询学生 /int selchar findmess20Node pifl-gtnextprintfquotngt提示:没有资料可以查询nquotreturnprintfquotngt1 按学号查找ngt2 按姓名查找nquotscanfquotdquotampselifsel1/ 学号 /printfquot请你输入要查找的tsquotfindmesspLocatelfindmessquotnumquotifpprintfquottttt 查找结果nquotprintstartprintcprintepprintstartelseNofindelse ifsel2 / 姓名 /printfquot请你输入要查找的姓名:quotscanfquotsquotfindmesspLocatelfindmessquotnamequotifpprintfquottttt 查找结果nquotprintstartprintcprintepprintstartelseNofindelseWrongvoid DelLink l / 删除 /int selNode prchar findmess20ifl-gtnextprintfquotngt提示:没有资料可以删除nquotreturnprintfquotngt1 按学号删除ngt2 按.