欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    C语言程序设计课程设计学生成绩管理系统.doc

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

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

    C语言程序设计课程设计学生成绩管理系统.doc

    成绩 课程设计报告 题 目 学生成绩管理系统 课 程 名 称 结构化程序设计课程设计院 部 名 称 专 业 计算机科学与技术 班 级 )学 生 姓 名 学 号 课程设计地点 课程设计学时 指 导 教 师 金陵科技学院教务处制(一)课程设计目的与要求本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉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("p->data.name:%s",p->data.name); stringinput(p->data.name,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语言程序设计是十分必要的。回顾起此次课程设计,自从拿到题目到完成整个编程,从理论到实践,在短短一周里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多书本上所没有学到过的知识。通过这次课程设计我们懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得到结论,才能真正为社会服务,从而提高自己的实践动手能力和独立思考的能力。在设计的过程中难免遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计之后,我们把前面所学的知识又重新温故了一遍。

    注意事项

    本文(C语言程序设计课程设计学生成绩管理系统.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开