计算机科学与技术系
课程设计报告
2012~2013学年第二学期
课程
面向过程综合设计
课程设计名称
C语言成绩簿
学生姓名
学号
专业班级
指导教师
2013年6月
第一章 需求分析
1.1 任务要求:
编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的成绩;
(3)按学号或姓名查询成绩;
(4)添加成绩记录;
(5)修改指定姓名或学号的学生的成绩并可存盘;
(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息(可选项)。
任务问题:
如何运用我们已学的c语言知识完成要求?如何制作相应界面?switch的应用该如何实现?如何完成相应的数组或链表的实现与应用?怎样进行相应的文件的读写?
任务的解决步骤:
步骤:
1.建立一个主界面。
2.用switch语句进行分类讨论。
3.分别进入录入,查询,修改,学生分数段统计等子函数。
4.将子函数与主函数相连即可。
第二章 算法设计
1、设计思想
2.1 程序结构(流程图)
开始
开始
输入口令
输入口令
主菜单
主菜单
No
选择的序号是否符合需求
选择的序号是否符合需求
Yes
添加学生成绩修改学生成绩各分数段成绩输出退出系统读取文件写入文件查询学生成绩
添加学生成绩
修改学生成绩
各分数段成绩输出
退出系统
读取文件
写入文件
查询学生成绩
重要的数据结构
修改成绩添加成绩
修改成绩
添加成绩
添加学生成绩按照学号修改按照姓名修改
添加学生成绩
按照学号修改
按照姓名修改
添加学生学号添加学生姓名
添加学生学号
添加学生姓名
查询分数段查询学生成绩
查询分数段
查询学生成绩
按各分数段输出
按各分数段输出
姓名查询学号查询
姓名查询
学号查询
主函数
主函数
按分数段显示信息修改成绩添加成绩查询求平均值
按分数段显示信息
修改成绩
添加成绩
查询
求平均值
退出
退出
主要算法思想(文字描述)
本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、修改等。我设计的这个通讯录系统也初步实现了人员信息的显示、修改、查找、等必要的功能,并通过子函数与主函数相连来完成相应的功能。
2.设计表示
int Student_Insert( ); (添加学生成绩)
void edit( ); (修改)
void Student_Search( );(查找)
void WriteFile( ); (写入文件)
void ReadFile( ); (读取文件)
void Student_Select( );(分数段选择)
void PrintMark( );(打印学生分数)
void NameChange( );(按姓名修改)
void NumberChange( );(按学号修改)
3.实现注释
除了没有用链表进行实验的缺点外,基本可以实现任务要求,界面简洁,程序简单,易操作。
4.算法设计中一些新的想法:
本程序主要包含了结构体与动态变量的相关知识;
其中也多次用到了循环和判断结构;
本程序还可以通过子函数实现删除,排序等操作。用链表,指针也可以实现相应的任务要求。
第三章 用户手册
3.1使用说明
主程序提供一个界面,允许用户选择。使用switch语句,用时直接输入数字即可。
增加函数,功能是插入学生成绩。使用一个无穷循环,直到录入”n”时结束。
修改函数,功能是修改,分为两步,先插入学生成绩后才能进行修改。修改用strcmp函数来做。如果找到记录i值,反之记为-1;修改可以从i项开始将数组的后一项的新的数值赋值给前一项。前一项自动被替换。这样完成修改。
查询函数与之类似,用strcmp函数将修改变为输出即可;
求各分数段的学生的相应成绩数据时,引用if-else语句可进行有效筛选。
退出函数什么都不写,即可。
所有修改,添加程序都可以用姓名,学号两种方式实现,可以实际情况实现。输入的数据应按照固定的格式和顺序“姓名-学号-成绩”,否则会出现错误,无法输出。
注:
输入项:
char name[10] 定义学生名称为字符型
long number 定义学号为长整型
int score 定义学生成绩为整形
输出项:
int m1