假期任务-程序设计
- 格式:doc
- 大小:53.00 KB
- 文档页数:4
《计算机程序设计基础》假期开发任务
使用本学期所学的所有知识,完成“学生成绩信息管理系统”的开发。
本系统的功能分为“基本功能”和“扩展功能”,要求每个学生必须完成基本功能,在基本功能的基础上根据个人的能力情况,选择是否完成扩展功能。
1.验收时间
下学期开学后第一周完成验收,
2.任务内容
(一)基本功能
1、录入
完成学生信息的增加,学生的信息包括:学号,姓名,性别,成绩。
其中,输入时要求注意以下两点:
学号要求不能重复,如果重复,提示“该学号已存在,请重新输入!”。
成绩必须在0-100之间。
2、显示
在屏幕上输出所有学生的信息,输出必须按列对齐。
如果系统中没有任务学生的信息,要求提示“本系统当前没有学生的信息!”。
3、查找
提供两种查找方式,一是按学号查找;二是按姓名查找。
菜单如下图所示:
其中,按姓名查找时,如果有同名的情况,将输出所有满足要求的学生信息。
4、统计
对当前系统提供两种两种统计方式,一是按成绩统计;二是按性别统计。
按成绩统计,主要统计,最高分,最低分,平均分;及格人数和及格率;不及格人数和不及格率。
按性别统计,要求统计系统中,男生总人数和比例,女生总人数和比例。
5、写入文件
将系统中所有的学生信息,以覆盖写的方式重新写入到文件“Stu_Data.dat”中。
6、读取文件
从文件“Stu_Data.dat”中读取文件中所有的学生信息,并将这些信息自动添加到系统中。
注意,学号不能重复!
(二)扩展功能
1、排序
对当前系统中所有学生信息进行排序,提供两种排序方式,具体菜单如下图所示:
排序后,输出排序结果,并按列对齐,对齐格式和“显示”功能的要求一样。
2、修改
首先输入要修改的学生的学号,然后在系统中进行查找。
若找到,显示该学生的原有信息,并提示用户选择相应的项进行修改;若未找到,提示“本系统中没有该学生的信息”。
注意:修改的时候,学号不能修改!成绩仍要进行合法性判断。
3、删除
首先输入要删除的学生的学号,然后在系统中进行查找。
若找到,显示该学生的原有信息,并提示用户是否确认进行修改,确认之后,删除掉该学生的信息;若未找到,提示“本系
3.技术要点
本系统实现时主要可采取两种技术路线,一是使用数组进行学生信息的存储;二是使用链表进行动态学生信息的存储。
(一)数组存储
存储方式,如下所示。
#define MAX 200
struct Student //学生类型
{
int num;
char name[20];
char sex;
double score;
};
struct Student stu[MAX]; //学生类型的数组Stu
int stu_num; //当前系统中存储的学生数量
(二)链表存储
存储方式,如下所示。
#define MAX 200
struct Student //学生类型
{
int num;
char name[20];
char sex;
double score;
};
struct Node //学生类型链表结点
{
Student data;
Node * next
};
struct Node * head; //链表头指针
其中:
主要涉及的链表操作有:
1、链表初始化
head=NULL;
2、添加
方法一:无序插入,采用头插法。
Node * AddNode(Node * head)
{
//创建一个新的结点p
//输入该结点的学生信息
//如果链表为空,则p成为链表的首结点,同时也是尾结点
//否则,p成为链表首结点
return head; //返回头指针
}
方法二:有序插入,先找到合适的插入位置,再修改链表的指针完成插入操作。
例如:保持成绩由小到大的方式完成有序插入。
Node * AddNode(Node * head)
{
//创建一个新的结点s
//输入该结点的学生信息
//指针q和p初始化指向头结点
while( (p不为空) && (s所指结点的成绩大于p所指结点的成绩) )
{
q指向p;
p指向p的下一个结点
}
如果p所指的是头结点
{
S成为新的头结点
S的下一个结点是p
}
Else
{
q的下一个结点是s;
s的下一个结点是p;
}
return head; //返回头指针
}
3、显示
参考教材中相应内容
4、编辑和删除
根据上述内容,自行查阅资料完成代码的编写。