计算机科学与技术学院
课程设计报告
2015— 20叵学年第二学期
课程名称 C 语言程序设计 题 目 学生成绩管理系统
学生姓名 XXX _______________ 学 号 XXX _______________ 专业班级 XXX _______________ 指导教师 XXX _______________ 合作者
XXX _______________ 2016年
6 月 30 日
学生成绩管理系统
本程序可实现对学生语数外三门课程成绩的录入与保存。
1、
设计目的
本程序旨在训练读者的基本编程能力, 了解管理信息系统幵发流程, 语言的各种语法、编写流程、以及能够熟练运用各种算法、以及各种函数的使用。
2、
功能描述
本程序可实现的功能:
(1) 录入学生的成绩 (2) 输出学生的成绩
熟悉C
3) 添加学生的成绩信息 4) 5)
删除指定学生的成绩信息
按照要求对学生成绩信息进行排序
6) 根据学号查询指定学生的成绩
将学生的成绩信息以文件形式保存
7)
3
总体设计
、 具体实现 3.1
main
()函数:程序首先调用 menu ()函数,显示出系统主菜单,然
k值赋予k,接着进入switch — case
后将menu()函数返回的从用户读取的选项
语句进入对应选项函数,若输入错误没有该选项则给出提示( default )以上过 程为一个死循环,直到用户输入 0 为止。
menu ()函数:在屏幕上打印选项名称,然后用一个
int类型的变量接受
从用户输入的选项,最后将其 return 至主函数。
score *creatlink ()函数:创建链表主要实现流程如下:
print() 函数:先令P=head,使p指向第一个节点,当 head二! NULL时说明 没
有到链表尾端,那么就输出 p 所指向的结构数据,然后让 p 指向下一个节点, 直到发现p==NULL为止。而当head==NULL说明链表中不存在数据,直接停止输 出。
score *add ()函数,添加新的学生信息, 具体实现路程如流程图所示 (图 片制
作时没有加 Y/N 判断,在判断图框中均为向左为真,向右为假) :
score *search ()函数:用来查询学生成绩,传递给函数指向链表的头 指针,查询
时,如果找到与输入相匹配的学号则打印此学生,反之则输出“没 有任何学生资料! ”:
score *sortdata() 函数:该函数有学号、姓名、单科成绩排序(冒泡排序 法),实
行过程如图:
save ()函数:用来保存数据,首先从用户输入取得要保存的文件名,然
后定义一个指向文件的指针,以读写方式打开文件。将写生信息依次存入文件。
score *load() 函数:用于读取数据,通过“ r+ ”方式打开文件并判断是否 打开
成功。具体实现如下:
score *statistics() 函数:它能实现程序的统计,通过 switch-case 语句 选择
统计方式,通过循环计算总分或者平均分并打印出来,流程都是通过循环, 让指针逐个遍历整个链表,读取相应的数据并实现统计
3.2 数据结构设计
数据结构:定义了一个包含学生成绩信息的结构体( struct scorenode {}),学生信息包括学号(n umber)、姓名(name[10])、语文、数学、英语 成绩( chinese 、 mathmatic 、 english )、以及指向下一个结构体的链表指针
(struct scorenode *next) 。 3.3 函数功能描述
main ()函数:主函数功能主要是让程序选择将要进行的操作,通过
menu
)函数返回的选项进入其他函数执行。
int menu (int k )函数:此函数显示主菜单内容,需要一个 int 类型变量
作为输入要执行的选项并返回给 main ()函数。
score *creatlink() 函数:此函数用于创建链表,为了节省内存空间,我 们采用