

免费预览已结束,剩余11页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩 课程设计报告 题 目 学生成绩管理系统 课 程 名 称 结构化程序设计课程设计院 部 名 称 专 业 计算机科学与技术 班 级 )学 生 姓 名 学 号 课程设计地点 课程设计学时 指 导 教 师 金陵科技学院教务处制(一)课程设计目的与要求本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉c语言的文件和单链表的各种基本操作。本程序中涉及结构体、单链表、文件等方面的知识。通过本程序的训练,使读者能对c语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的信息管理系统打下坚实的基础。通过这个课程设计,要求学生能够遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,独自地完成设计、编写、调试和测试应用程序及编写文档的任务。(二)课程设计的主要内容1、项目名称:学生成绩管理系统2、实验设备:机房软件环境:c+、c语言;硬件环境:具备c+、tc的计算机3、软件功能介绍及结构设计此成绩管理系统主要利用单链表实现,它由如下五大功能模块组成。(1)输入记录模块。输入记录模块主要完成将数据存入单链表中的工作。在此成绩管理系统中,记录可以从以二进制形式存储的数据文件中存入,也可以从键盘逐个输入学生记录。学生记录由学生的基本信息和成绩信息字段构成。当从数据文件中读入记录时,它就是在以记录为单位存储的数据模块中,将记录逐条复制到单链表中。(2)查询记录模块。查询记录模块主要完成在单链表中查找满足相关条件的学生记录。在此成绩管理系统中,用户可以按照学生的姓名或学号在单链表中进行查找。若找到该学生的记录,则返回指向该学生记录的指针。否则,返回一个值为null的空指针,并打印出未找到该学生记录的提示信息。(3)更新记录模块。更新记录模块主要完成对学生记录的维护。在此成绩管理系统中,它实现了对学生记录的修改、删除、插入和排序操作。一般而言,系统进行了这些操作之后,需要将修改的数据存入源数据文件。(4)统计记录模块。统计记录模块主要完成对各门功课最高分和不及格人数的统计。(5)输出记录模块。输出记录模块主要完成两个任务。第一,她实现对学生记录的存盘操作,即将单链表中的各节点中存储的学生记录信息写入数据文件中。第二,它实现将单链表中存储的学生记录信息以表格形式在屏幕上打印出来。学生成绩管理系统输入记录模块查询记录模块更新记录模块修改记录输出记录模块统计记录模块及格人数统计各科最高分和不输出至文件输出至屏幕从文件读入从键盘输出按学号查询按姓名查询删除记录插入记录排序记录图1.1 学生成绩管理系统功能模块图本成绩管理系统执行主流程如下。它先以可读写的方式打开数据文件,此文件默认为“c:student”,若该文件不存在,则新建此文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的单链表中,然后执行显示主菜单和进入主循环操作,进行按键判断。在判断键值时,有效的输入为0至9之间的任意数值,其他输入都被视为错误按键。若输入为0(即变量select=0),它会继续判断是否在对记录进行了更新操作之后进行了存盘操作,若未存盘,则全局变量saveflag=1,系统会提示用户是否需要进行数据存盘操作,用户输入y或y,系统会进行存盘操作。最后,系统执行退出成绩管理系统的操作。若选择1,则调用add()函数,执行增加学生记录操作;若选择2,则调用del函数,执行删除学生记录操作;若选择3.则调用qur()函数,执行查询学生记录操作;若选择4,则调用modify函数,执行修改学生记录操作;若选择5,则调用insert()函数,执行插入学生记录操作;若选择6,则调用tongji()函数,执行统计学生记录操作;若选择7,则调用sort()函数,执行按降序排序学生记录的操作;若选择8,则调用save()函数,执行将学生记录存入磁盘中的数据文件的操作;若选择9,则调用disp()函数,执行将学生记录以表格形式打印输出至屏幕的操作;若输入为0-9之外的值,则调用wrong()函数,给出按键错误的提示。重要函数介绍:数据输入函数:“stringput()”.”numberinput()”增加记录函数:“add()”查找记录函数:“qur()”删除记录函数:“del()”修改记录函数:“modify()”插入记录函数:“insert()”排序函数:“sort()”以可读写的方式打开一个数据文件将此文件的内容读出,并存入一个新的单链表中调用menu(1)菜单函数进入while(1)主循环开始输入【0-9】中的一数值,选择相应操作输入是否为0?判断键值,调用相应函数,完成相应功能是否已对修改进行了存盘调用save()函数,进行写数据文件操作结束是否否是图1.2 主控函数执行流程图4、主要内容和步骤个人模块:更新记录模块中的修改记录和删除记录1)修改记录: 开始输入是否存在输入要修改的学生学号输入学生新信息修改成功结束退出图1.3修改学生记录算法展示:/*修改学生记录。先按输入的学号查询到该记录,然后提示用户修改学号之外的值,学号不能修改*/void modify(link l)node *p;char findmess20;if(!l-next) system(cls); printf(n=no student record!n); getchar(); return;system(cls);printf(modify student recorder);disp(l);stringinput(findmess,10,input the existing student number:); /*输入并检验该学号*/p=locate(l,findmess,num); /*查询到该节点*/if(p) /*若p!=null,表明已经找到该节点*/ printf(p-data._class:%s,p-data._class); stringinput(p-data._class,3, input new class:); printf(p-data.num:%s,p-data.num); stringinput(p-data.num,5, input new number:); printf(:%s,); stringinput(,5, input new name:); printf(c language score:%d,p-data.cgrade); p-data.cgrade=numberinput( c language score0-100:); printf(math score:%d,p-data.mgrade); p-data.mgrade=numberinput( math score0-100:); printf(english score:%d,p-data.egrade); p-data.egrade=numberinput( english score0-100:); p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=(float)(p-data.total/3); p-data.mingci=0; printf(n=modify success!n); disp(l); saveflag=1;else nofind(); getchar();运行结果:修改前、修改中修改后2)删除记录开始删除是否合法输入删除学生学号删除成功结束退出图1.4修改学生记录选择1?输入删除学生姓名算算法展示:/*删除学生记录:先找到保存该学生记录的节点,然后删除该节点*/void del(link l)int sel;char ch;node *p,*r;char findmess20;if(!l-next) system(cls); printf(n=no student record!n); getchar(); return;system(cls);disp(l);printf(n =1 delete by number =2 delete by namen);printf( please choice1,2:);scanf(%d,&sel); if(sel=1) stringinput(findmess,10,input the existing student number:); p=locate(l,findmess,num); if(p) printf(n=whether delete the record to file?(y/n):n); scanf(%s,&ch); if(ch=y|ch=y) r=l; while(r-next!=p) r=r-next; r-next=p-next;/*将p所指节点从链表中去除*/ free(p); /*释放内存空间*/ printf(n=delete success!n); getchar(); saveflag=1; else nofind(); getchar(); else if(sel=2) /*先按姓名查询到该记录所在的节点*/stringinput(findmess,15,input the existing student name:); p=locate(l,findmess,name); if(p) printf(n=whether delete the record to file?(y/n):); scanf(%s,&ch); if(ch=y|ch=y) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=delete success!n); getchar(); saveflag=1; else nofind(); getchar(); elsewrong(); getchar();运行结果:删除前 删除中(三)遇到的问题以及解决方法学生成绩管理系统虽然是一个简单的小程序,但在做的过程中还是遇到了一些问题。在删除记录的操作中,我加入了确定删除命令,这一想法主要是看到言承旭最后对于修改后文件的是否确认保存。在删除后的结果显示里,尽管已经删除成功,最后一行还会显示出删除未成功,后来检查时发现是两个对应的else字符丢失,导致出现错误,但不影响删除过程的进行。修改学生记录中,源程序执行后的运行是从学号后的位置依次向后修改,开始考虑有switch,case程序实现对修改的选择,但未实现,后考虑用循环嵌套实现此功能。(四)课程设计心得 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说是无处不在。因此掌握程序开发技术是十分重要的,而c语言又是最常见,功能最强大的一种高级语言,因此做好c语言程序设计是十分必要的。回顾起此次课程设计,自从拿到题目到完成整个编程,从理论到实践,在短短一周里
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年特种作业类危险化学品安全作业化工自动化控制仪表作业-加氢工艺作业参考题库含答案解析
- 2025年学历类自考专业(电子商务)电子商务法概论-经济学(二)参考题库含答案解析
- 2025年学历类自考专业(电子商务)电子商务安全导论-市场信息学参考题库含答案解析
- 2025年学历类自考专业(法律)西方法律思想史-国际私法参考题库含答案解析
- 健身器材行业绿色环保趋势分析健身器材市场国际化合作模式考核试卷
- 典当行客户满意度调查分析考核试卷
- 智能家居与智能交通系统的整合设计考核试卷
- 2025年学历类自考专业(护理)护理教育导论-护理学研究参考题库含答案解析
- 2025年学历类自考专业(护理)护理学导论-精神障碍护理学参考题库含答案解析
- 2025年学历类自考专业(护理)急救护理学-内科护理学(二)参考题库含答案解析
- T-CDHA 20-2024 T-CAR 20-2024 供热碳排放核算和碳排放责任分摊方法
- 2024年高等职业教育社区管理与服务专业人才培养方案修订调研报告
- 动力电池气密性检测及故障处理
- 2025年文化产业与商业模式知识测评试卷及答案
- 中建材特种玻璃深加工一期工程项目环评报告
- T/GIEHA 013-2019商用厨房油烟管道系统清洗规范
- 团体标准解读及临床应用-成人经鼻高流量湿化氧疗技术规范2025
- DB34T 5137-2025电化学储能液冷系统设计技术要求
- 旧房拆除重建协议书
- 2025质量工程师笔试题库及答案
- 期货保密协议书
评论
0/150
提交评论