1、 C 语言课程设计报告语言课程设计报告 学生成绩简单管理程序 一一、程序的主要功能 用单向链表结构实现简单的学生成绩管理功能,要求具有链表建立、链表输出、结点有 序插入、节电删除、数据查询等功能。 各项菜单功能: (1)Creat List(建立有序单向链表) 从键盘上一次输入一个学生的姓名和成绩,以姓名为序建立有序链表。插入一条记录后, 显示提示信息:确认是否输入下一条记录,如确认,继续输入,否着推出输入功能。 (2)Display All Record(显示所有结点记录) 按顺序显示链表中所有记录,每屏显示 10 条记录。每显示 10 条,按键继续显示 下一屏。 (3)Insert a R
2、ecord(插入一条结点记录) 在以姓名为序排列的链表中插入一条记录,插入后,链表仍然有序。输出成功信息。 (4)Delete a Record(按姓名查找,删除一条结点记录) 输入待删除记录的姓名,显示提示信息,让用户再次确认是否要删除。确认后,将该姓名的记 录删除。 (5) Query(查找并显示一个结点记录) 输入姓名,查找该记录,并显示该学生成绩。 (6)Add Records from a Text File (从正文文件添加数据到链表中) 用户可提前建立一个正文文件 data.txt,存放多个带加入的记录。提示输入正文的文件名,然 后从该文件中一次性加入多条学生记录。文件 data
3、.txt 格式如下: 2 /*表示带添加的记录数*/ WangXiao 95 /*下面每行为姓名和成绩*/ LiuLin 87 (7)Write to a Text File 将链表中的全部记录写入文件 records.txt,要求文件格式和 data.txt 相同。 新增菜单功能: (8)Reverse List 将链表中的所有结点逆序存放。 (9) Delete the Same Record 删除相同姓名的记录。 (0) Quit 退出系统并释放链表存储空间。 二二、主要问题及解决方法: 在写程序中遇到的问题是:开始时无法正确完成“确认后再继续”的问题再后来写附加程 序对链表逆序有些疑惑
4、。面对遇到的问题我先自己认真耐心的修改,严格按照老师说的各个功 能分步测试方法,解决了其中的大多数问题,对遗留下来的以和同学交流探讨与问老师相结合 的方式来达到彻底的解决。 心得体会: 完成之后程序运行到一半会停止,不得不对 300 多行的程序进行单步调试,解决了很多问题之 后,发现编程需要非常严谨的态度和足够的耐心,否则就会因为一些问题而卡住甚至放弃。当 然在整个过程中, 同学帮助解决了许多自己没有意识到得错误, 换一个角度, 才能发现问题吧。 三三、源程序及注释: #include /*库函数调用*/ #include #include #include #include struct stud /*定义一个结构体类型 struct stud*/ char name20; float score; struct stud *next; ; typedef struct stud Student; /*用 Student 替代 struct stud*/ int menu_select(); /*全体函数的外部申明*/ St