中南大学C语言课程设计-学生成绩管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学
二○一三~二○一四学年第一学期
信息科学与工程学院
程序设计基础实践
设计报告
课程名称:程序设计基础实践
班级:2013级物联网工程1302班学号:0919130205
姓名:X晨
指导教师:杨希
二○一三年十二月
目录/Contet
课程设计题目 (1)
题目初步分析 (1)
程序总体设计 (2)
程序具体设计………………………………………………………
10
程序调试测试………………………………………………………
12
心得与体会…………………………………………………………
33
源代码………………………………………………………………
33
课程设计题目
学生成绩管理系统
学生信息为:学号、XX、年龄、性别、出生年月、地址、、各科成绩等,试设计一个学生信息管理系统,使之能提供以下功能。
1.学生信息录入;
2.学生信息浏览;
3.按学号、XX查询;
4.学生成绩排序;
5.学生信息修改与删除。
6.综合信息输出。
题目初步分析
对对象的处理
1.由于每一个对象都包括多个成属性,所以要考虑数据的存储形式要用结构体类型来实现。
2.假如以数组的方式来存储,当然可以,但是定义一个数组,首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
3.由于题目中的数据需要长期保存,用普通的函数来写已经不可以满足要求了,所以需要用到文件来存储。
对过程的处理
1.输入学生信息(设计一个生成链表程序,并将链表中的数据保存到一个数据文件中);
2.插入(修改)学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后将处理后链表中的数据再次保存到一个数据文件中);
3.删除学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后按照要求将链表中的某个数据删除后再次保存到一个数据文件中);
4.浏览学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,再将链表中的数据显示出来)。
5.将学生总分排序(设计一个从数据文件中读数据的程序并将数据先存在链表中,后用一个数组记录总分,进行排序,在查找回相应信息,输出)。
程序总体设计
主要函数程序框图
2.修改函数。
4.显示函数。
5.排序函数。
程序具体设计
1.p():
为了方便输出图形。
2.wele():
调用了p()函数,实现打印出欢迎界面的功能。
3.seletionpage():
打印出选择界面;
4.file_():
用来在打开程序时,装载文件数据到链表。
该函数返回值是student类型的指针变量head;
5.save():
用来在每次修改或者输入学生基本信息之后实时保存数据。
保存采用删除再写入的方式进行的。
6.input():
调用了save()函数,主要实现建立链表和确定链表头尾节点。
该函数具有判断输入数据是否重复功能。
用键入字符的方式获取用户需要的操作。
7.search():
主要是用来根据或者XX来筛选,它服务于后面的其他函数。
它返回的值是要搜寻的链节的上一节点。但是它在返回是头的时候要分情况讨论。
用键入字符的方式获取用户需要的操作。
8.modifyone():
主要功能是修改某一个数据的值。
使用了search()函数来在链表中检索检索。
用键入字符的方式获取用户需要检索的方式。
选择并用select来区分当search返回值是头时的两种情况。
返回值用来判断用户的下一步操作。
9.revise():
主要功能是来执行modifyone,给modifyone()传递参数。
打印出修改界面;
调用modifyone();
用键入字符来判断用户的选择并且将参数传给modifyone。
10.deleteone():
主要功能是删除一个数据。
为deletee服务的函数。
调用了search()函数来选择要删除的方式。
使用save()来保存。
通过输入字符来判断筛选方式。
11.deleteall():
用一个循环一次性删除所有的数据。
使用save()来保存。
12.delete_():
主要功能是来实现deleteone和deleteall,并给出界面来让用户选择。
用户键入选择删除方式,并将它传给deleteone作为实参。
13.displayAll():
主要功能是显示出所有学生的信息。
通过遍历读取链表中的数据并显示。
14.displayOne():
主要功能是显示一个学生的信息。
通过search()函数查询数据。
通过键入的方式选择通过学号还是名字查找。
15.display():
主要功能是输出显示界面并进行选择。
调用了displayOne()和displayAll()。
16.sort():
主要功能是通过选择排序进行排序和数据的输出。
将链表中的数据存储在数组中,再通过查找返回链表综合输出相关信息。
17.exit():
显示退出界面。
18.Start():
通过用户输入信息执行相应语句。执行到exit()时退出系统。
调用了input()、revise()、delete()、display()、sort()和exit()函数。
19.main():
组合wele()和Start()函数
(附图:本程序所有编写的函数)
程序调试与测试
程序调试
在做好主界面后,对函数进行编写,每次写完一个小函数之后都会编译运行来测试函数是否可用,发现出错后找出问题所在再修改,以确保函数的准确性。大题框架完成后进行调试。多次调试把出现的小错误分别解决。