文档介绍:淮北师范大学
程序设计课程设计
简单学生成绩统计软件
学院计算机科学与技术
专业计算机科学与技术(师范)
学号
学生姓名
指导教师姓名
2011年03月 31 日
程序设计的内容与目的
内容:1. 学生记录应该包括学号、姓名、C 语言课设成绩等信息,是本程序的核心数据结构,定
义如下:
typedef struct
{
char num[11]; /*学号*/
char name[10]; /*姓名*/
int cgrade; /*c 语言课设成绩*/
}elemtype ;
使用链表实现学生记录的存储,链表中的结点结构如下:
typedef struct node
{ elemtype data;
struct node * next;
} NODE,*Nodeptr;
int n=0;
:
(1)以菜单形式显示主界面,提示用户进行选择,完成相应任务,如图1-1 所示。
(2)创建学生记录链表:从键盘输入一定数量的学生记录。
(3)插入学生记录:从键盘输入待插入的学生记录,插入到指定位置。
(4)对学生记录中的C 语言课设成绩按指定顺序(升序、降序)进行排序;
(5)删除学生记录:在指定位置上删除学生记录。
(6)能统计各分数段的人数,并以分布图显示,如图1-2 所示。
(7)输出学生记录到屏幕
目的: (1)每个学生记录中包含学号、姓名和C 语言课设成绩等信息;
(2)创建学生记录链表;
(3)更新学生记录(插入、排序、删除);
(4)能统计各分数段的人数,并以分布图显示;
(5)输出学生记录到屏幕。
二、算法的基本思想
这是一个简单的学生信息管理程序,包括学生信息的创建,显示,删除,插入,排序和汇总等功能。
本程序使用了结构体来存放学生信息。将学生的信息以链表的形式存储在内存中。
typedef struct
{
char num[11]; /*学号*/
char name[10]; /*姓名*/
int cgrade; /*c 语言课设成绩*/
} elemtype ;
typedef struct node{
elemtype data;
struct node * next;
} Node,*Nodeptr;
程序运行前先创建学生信息,创建完成后显示刚才创建的信息,然后根据需要进行删除学生信息,插入学生信息和对学生成绩进行汇总显示的操作。
创建学生信息的函数如下:
int CreateLink( Nodeptr L,int M[5])
{
for(int i=0;i<5;i++)
{
M[i]=0; //将M全部设置为0
}
ClearTheLink(L,M);
InsertElemToLink(L,M);
return 0;
}
在CreateLink函数中调用了ClearTheLink(L,M);函数,其函数的作用是将链表除了头结点以外的其他结点全部删除,并将存放学生汇总信息的数组置为空。函数的实现如下:
int ClearTheLink(Nodeptr L,int M[5]){
Nodeptr p;
int nCount=0;
p = L->next;
while (p)
{
L->next = p->next;
delete(p);
p = L->next;
nCount++;
}
L-> = 0;
for(int i=0;i<5;i++)
{
M[i]=0; }
return nCount;
}
该函数的传入参数为一个指向结构体指针和一个整形的一维数组。指针所指向的是链表的头结点,一维数组中所存放的是学生的汇总信息。
在CreateLink函数中还调用了另外一个函数InsertElemToLink(L,M),其作用是供用户输入学生信息,并存放在结点中。函数定义如下:
int InsertElemToLink(Nodeptr L,int M[5])
{
elemtype x;
int flag=1;
while(flag)
{
printf("请输入学生学号(不超过11位):");
scanf("%s",&);
printf("请输入该学生名字(不超过10位):");
scanf("%s",&);
printf("请输入该学生成绩:");
scanf("%d",&);
InsertElemToLink(L, x,M);
printf(