C语言程序设计实训报告 --学分管理系统 指导老师:陈旭东
目录
1.项目题目: ...............................................................................2 2.项目的说明 ...............................................................................2 3.实现目标 ...................................................................................2 4.项目涉及的理论基础 ..............................................................2 5.总体设计方案...........................................................................3 6.详细设计说明书 ......................................................................3 7.系统使用手册.........................................................................10 8.创新点 .....................................................................................12 9.有待改进的方面 ....................................................................13 10.自我体会与评价 ..................................................................13
第1页 11.参考文献 ...............................................................................13 12.附系统源代码 ......................................................................13
1.项目题目:
学分管理系统
2.项目的说明
由于大学每一位学生都有自己的学分,为了更好的管理学生的学分,所以我选择了这个项目,让学分的管理更为简单。
3.实现目标
(1)录入某位学生的学分;
(2)给定学号,显示某位学生的学分完成情况;
(3)给定某个班级的班号,显示该班所有学生的学分完成情况;
(4)给定某位学生的学号,修改该学生的学分信息; (5)按照某类课程的学分高低进行排序; (6)提供一些统计各类信息的功能。
4.项目涉及的理论基础
运用动态链表实现对学生信息的管理,运用链表实现成绩的
第2页 排序,查找等功能,运用二进制文件对信息的读取与存储,独立函数的应用使程序更简明,多源文件的应用使程序更易于管理。
5.总体设计方案
首先,从二进制文件读取数据创建新的链表,把头指针记录下来,多个函数调用头指针,每个函数独立完成对链表的修改与保存,整个程序运行完成后再把整个链表保存在二进制文件里。
6.详细设计说明书
首先调出主菜单,让用户选择需要:
第3页 进入不同的函数:
1.调用void search(struct stu *);,传递头指针,函数从头到尾查找找出某个学生的成绩,并把这个学生的学分打印出来。
headFrom head to NULLIf findCall printThere is no this one
2.调用struct stu *change(struct stu *);传递头指针,函数从头到尾查找并改变某个学生的成绩,让使用者选择要改的同学和要改的成绩,最后程序自动保存修改结果,返回修改之后的头指针。
第4页 headFrom head to NULLIf findCall the change to change the scoresThere is no this one
3.调用struct stu *add(struct stu *);传递头指针,添加某个学生的成绩,这个学生的学分自动保存在链表的最后,实现添加的功能,返回修改之后的头指针。
第5页 headFrom head to end and find the endThe endCall a new location and add the new structure to the endReturn the head
4.调用void save(struct stu *);传递头指针,保存整个链表,以二进制文件的形式保存。
第6页 headFrom head to end Each structure is stored in the file
5.调用void FindOneCla(struct stu *);查找整个班的成绩,传递头指针,如果某个学生的班级与所要查找的相同,就把该同学的信息存到新的链表中,同时把新的链表打印出来。
headFrom head to end If the cla is the same as the orderedCopy the structure to a new list The endPrint the new list 6.调用void SortOneScore(struct stu *);按某一门课排序,传递头指针,从开头节点开始,每一个节点 调用insert()插到新
第7页 的链表中,组成新的链表。
headFrom head to end Each structure is insert in a new listThe endPrint the new list
7.调用struct stu *insert(struct stu *,struct stu *,int a,struct stu *);,传递一个临时指与头指针,要查的分数与新的链表的头指针,把某个节点插入到新的链表中,返回插要的位置。
headCall the nearlocation functionFind the location should be insertReturn the location 8.调用void statistic(struct stu *);传递头指针,统计所有学生的成绩,并把新的数据打印出来。
第8页 headFind the highest and low endFind the average Find who is failed 9.调用void average(struct stu *);传递头指针,统计所有学生某一科的平均分。
10.调用void highest(struct stu *);传递头指针,查找最高的与最低的分。
11.调用void failed(struct stu *);传递头指针,查找不及格的学生。
12.调用struct stu *deleat(struct stu *head); 传递头指针,删除某一个学生的信息,并返回修改之后的头指针。
第9页 headFrom head to NULLIf findThe next pointer add to the now next pointerThere is no this one 每一个函数结束后返回新链表的头指针,并调用菜单函数让用户选择进一步操作。
7.系统使用手册
本管理系统已经录入了几位同学的学分信息,可以直接按5 进行学分排序功能的实现,也可以按2 输入某一个学生的学分,按1 可以查找某一个学生的学分,按4 修改某一个学生的学分,按3 可以查看某一个班的学生的学分,按5能删除某一个学生的成绩,按7 能进行各种统计的功能,求最高分与最低分,求平均分,可以查看不同科不及格的学生。按6能进行某一刻的排序。
如何退出?
第10页
按 0 直接回到上一个菜单,进行进一步的选择。
第11页
第一季菜单直接按0直接退出。
8.创新点
运用动态链表组成主框架,进行各系列的函数的应用,运用多源文件是程序更简洁,每一个函数独立的完成相应的功能,多个统计功能使系统更加完善。
第12页 9.有待改进的方面
用户界面有待改进,可以增加一些美观的东西,统计功能可以有更多的完善。
10.自我体会与评价
通过这个学分管理系统的设计实现与完善,我懂得了我不能畏惧困难,只有不断克服困难才能取得进步。刚开始,我对链表一点不熟悉,通过查找资料我发现使用链表更加方便,有了具体的思路之后,我就先实现创建一个链表的功能,然后就进一步完善每一个功能。我清醒的认识到遇到困难时要冷静,不要急躁,要冷静的思考到底哪里错了,才能更好的完善自己。
11.参考文献
标准C 语言基础教程; C程序设计; Baidu搜索网站
12.附系统源代码
1.头文件.
第13页