C语言成绩信息管理系统课程设计--成绩信息管理系统

上传人:re****.1 文档编号:507718660 上传时间:2022-08-17 格式:DOC 页数:35 大小:1.12MB
返回 下载 相关 举报
C语言成绩信息管理系统课程设计--成绩信息管理系统_第1页
第1页 / 共35页
C语言成绩信息管理系统课程设计--成绩信息管理系统_第2页
第2页 / 共35页
C语言成绩信息管理系统课程设计--成绩信息管理系统_第3页
第3页 / 共35页
C语言成绩信息管理系统课程设计--成绩信息管理系统_第4页
第4页 / 共35页
C语言成绩信息管理系统课程设计--成绩信息管理系统_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《C语言成绩信息管理系统课程设计--成绩信息管理系统》由会员分享,可在线阅读,更多相关《C语言成绩信息管理系统课程设计--成绩信息管理系统(35页珍藏版)》请在金锄头文库上搜索。

1、?C语言程序设计?课程设计报告专 业: 电子信息工程 班 级: 电信1001 姓 名: 指导教师: 卢嫣 丁雄 2021年12月28日 目 录1课程设计目的2 2课程设计题目描述和要求2 3.课程设计报告内容 3 3.1 所涉及知识点 3 3.2课程设计的思路以及流程图 3 3.3个人负责程序说明 43.4课程设计中遇到的问题以及解决方法 11 4.个人设计总结11 5.参考书目11 6.附录源程序代码11 ?C语言程序设计?课程设计任务书1、课程设计目的1、熟练掌握C语言课程中所学的理论知识;2、通过综合C语言的根本知识来解决实际问题;3、加强分析和解决问题的能力。2、课程设计题目描述和要求

2、1课程设计题目:成绩信息管理系统。2课程设计要求:a,设计包含N个学生的数据信息的学生成绩管理系统,包括以下信息: 学号、 姓名拼音、三门课程成绩高数、英语、计算机 b,系统功能包括: 1、学生信息的录入增加数据。用数组数据类型赋初值的方法或从键盘输入的方法把学生的数据送到各个数组中注意要是合法数据,然后把它们输出显示。2、学生信息的删除删除数据。任意输入一位学生的学号,将它所有的信息从数组中删除。3、学生信息的浏览查找数据。任意输入一位学生的学号,打印出他的所有数据。要求能屡次查找。4、学生信息的修改修改数据。任意输入一位学生的学号,打印出所有相关信息后,可对某一项信息进行修改并保存。5、学

3、生信息的计算并排序。计算每个学生三门课程的总分sum,整型及平均分aver,单精度,输出一位小数,将包括所有数据的数组元素按总分从大到小的顺序排序打印出来。6、程序编译成员及模块分配主函数的设计-信息录入模块的设计-删除模块的设计-修改模块的设计-浏览模块的设计-计算与排序模块的设计-3、课程设计报告内容3.1. 所涉及知识点:指针的定义与引用;函数的定义与调用;局部变量和全局变量大的定义; for循环语句的使用;if语句的使用;break语句的使用;格式输入与输出;比拟法排序;函数的定义;数组作为函数参数。32课程设计的思路以及流程图一:课程设计思路主程序为main,子程序有个分别为Add(

4、l),Qur(l), Modify(l), Insert(l), Tongji(l), Sort(l), Save(l)。分别可以实现录入学生信息,删除学生信息,浏览学生信息,修改学生信息,对信息学生排序,以及对学生信息保存。二、课程设计思路及结构图 根据题目的要求,需要一个主程序main()和假设干子程序,其如结构图下:主程序初始输入显示排序查找插入删除保存退出1、初始化函数 STUDENT *init()这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。比方:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!2、菜单项选

5、择择函数 int menu_select();这是一个无参函数,主要实现“功能选择的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!3、输入记录函数 STUDENT *create()这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入,函数结束后,带回一个指向链表头的指针head。算法:先声明一个首节点head,并将head-next设为NULL。每输入一个数据就声明一个新节点p,把p-next设为NULL,并且链接到之前列表的尾端。N-S流程图如下:4、显示

6、记录函数 void print(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针,负责对全部学生成绩记录的输出,缺乏之处就是不能对学生成绩进行分页显示。算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。N-S流程图如下:5、查找记录函数 void search(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针,实现按学号对某个学生进行查找,并显示所查找到的记录。算法:采用线性查找法往下一

7、个节点查找。输入所要查找的学生的学号s,设一个指针变量p,先指向第一个结点,当strcmp(p-name,s) & p != NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。N-S流程图如下:源程序如下:/*作用:用于定位链表中符合要求的节点,并返回指向该节点的指针参数:findmess保存要查找的具体内容; nameornum保存按什么查找; 在单链表l中查找;*/Node* Locate(Link l,char findmess,char nameornum)Node *r;if(strcmp(nameornum,num)=0) /*按学号查询*/r=l-next;wh

8、ile(r) if(strcmp(r-data.num,findmess)=0) /*假设找到findmess值的学号*/ return r; r=r-next;else if(strcmp(nameornum,name)=0) /*按姓名查询*/r=l-next;while(r) if(strcmp(r-data.name,findmess)=0) /*假设找到findmess值的学生姓名*/ return r; r=r-next;return 0; /*假设未找到,返回一个空指针*/*输入字符串,并进行长度验证(长度lens)printf(n 超出要求范围! n); /*进行长度校验,超过

9、lens值重新输入*/ while(strlen(n)lens); strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/*输入分数,0分数100 | t100 | taverageaverage,那么待插入的结点不应插在p1所指的结点之前。此时将p1后移,并使p2指向刚刚p1所指的结点。重复以上的步骤,直到p0-average=p1-average为止。这时将p0指向的结点插到p1所指结点之前。但是如果p1所指的已是表尾结点,那么p1就不应后移了。如果p0-average比所有结点的average都小,那么应将p0所指的结点插到链表末尾。如果插入的位置既不在第一个结点之前,又不在表

10、尾结点之后,那么将p0的值赋给p2-,使p2-next指向待插入的结点,然后将p1的值赋给p0-next,使得p0-next指向p1指向的变量。如果插入位置为第一个结点之前,那么将p0赋给head,将p1赋给p0-next。如果要插到表尾之后,应将p0赋给p1-next,NULL赋给p0-next。最后再调用排序的函数,将学生成绩重新排序.N-S流程图如下:9、保存数据到文件函数 void save(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针,可以把学生记录保存在电脑上由自己任意命名的二进制文件。N-S流程图如下:10、从文件读数据函数 STUDENT *load()这是一个不返回值的有参函数,形参为“链表头的指针,根据输入的文件地址进行读取。N-S流程图如下:3.3 个人负责程序说明学生信息的浏览查找数据。任意输入一位学生的学号,打印出他的所有数据。要求能屡次查找。3.4课程设计中遇到的问题以及解决方法1刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!参加初始化函数后,这种现象也随之消失。2刚开始时,先把成绩按平均分排序,再插入一个学生的成绩,执行显示功能,虽然插入的学生的成绩能正常插入,但该学生的名次为0。后来,在插入成绩之后,调用排序函数,把所

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号