数据结构课程设计报告 成绩分析问题 和 通讯录

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程设计报告

5 : 成绩分析问题

16 : 通讯录

学院(系):*************

班级:*********

学生姓名:* * * 学号**********

指导教师:* * *

时间:从2011年12月31日到2012年1月6日

一、课程设计概述:

本次数据结构课程设计共完成两个题:成绩分析问题和通讯录

使用语言:C

编译环境:TC3.0 / VC6.0

二、课程设计题目一

[实验内容]

成绩分析问题

[问题描述]

录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。

[需求分析]

(1)通过键盘输.入各学生的多门课程的成绩,建立相应的文件input.dat。

(2)对文件input.dat中的数据进行处理,要求具有如下功能:

1)按各门课程成绩排序,并生成相应的文件输出。

2)计算每人的平均成绩,按平均成绩排序,并生成文件。

3)求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79

分人数、80~89分人数、90分以上人数。

4)根据姓名或学号查询某人的各门课成绩,重名情况也能处理。

(3)界面美观。

[概要设计]

-=ADT=

{

int right(STD *h,int i);

// 查看学号i 是否存在

void newstu(STD *h);

// 新增一个学生

STD *find(STD *h,char nam);

// 查找姓名为nam的学生,返回该学生上一结点的地址

STD *find(STD *h,char num);

// 查找学号为mum的学生,返回该学生上一结点的地址

void show(STD *p,int i);

// 输出结点p的信息,若i=0 只输出姓名和学号,i=1,输出全部信息void show(STD *h);

// 按提示输出学生的信息

void intos cores(STD *h);

// 按提示录入学生的成绩

void sort(STD *h,int a,int b);

/*对学生信息排序,a为0以数学成绩为关键字排序a=1-4为英语成绩、计算机成绩、总成绩、学号。b=0为降序,b=1为升序*/

void cjjpx(STD *h);

// 按提示对学生信息排序

void tjcj(STD *h);

// 统计学生成绩

void del(STD *h);

// 按提示删除学生

int into(STD *h);

// 从文件中读数据放在头结点为h的链表中

int save(STD *h);

// 将头结点为h的链表数据保存在文件中

}

[存储结构]

struct STD //学生信息链表

{

char name[20]; //姓名

int number; //学号

int scores[4]; //各科成绩

struct STD *next;//指向下一结点的指针

};

struct STDD // 记录数据

{

char name[20];//姓名

int number; //学号

int scores[4]; //各科分数

};

[流程图]

int right(STD *h,STDD student);

//判断学号student.number是否存在

void newstu(STD *h) STD *find(STD *h,char name[]) //添加一个新学生 //以姓名为关键字

STD *find(STD *h,char name[]) //以学号为关键字

void intoscores(STD *h) // 录入学生的成绩

void show(STD *h) //输出学生信息

void tjcj(STD *h) //学生信息统计

void sort(STD *h,int a,int b) //对学生信息按要求进行排序

void del(STD *h) //删除学生

[详细设计]

// 成绩分析问题.cpp

#include

#include

#include

#include

struct STD{ //学生成绩链表

char name[20]; //学生姓名

int number; //学生学号

int scores[4]; //学生成绩

struct STD *next; //指向下一学生结点

};

struct STDD //学生结点

{

char name[20];

int number;

int scores[4];

};

int right(STD *h,STDD student)

{

STD *p; //定义结点p,使之在链表中遍历

p=h->next; //p指向头结点的下一个结点开始遍历

while(p!=NULL) //判断p是否为空

{

if(student.number==p->number)//否p不为空再判断学号是否相同

return (0); //若学号相同,返回0

p=p->next; //若学号不同,p指向下一结点继续比较

}

return (1); //若学号都没相同的,返回1。

}

void newstu(STD *h)

{

STDD students; //定义STDD结构体变量students来存储一些数据int i; //定义整型变量

STD *p,*q; //定义STDD链表结点

p=h; //p指向头结点

while(p->next!=NULL) //找到最后一个结点

{

p=p->next;

}

system("cls & title 学生注册");

printf("\n\n\n");

相关文档
最新文档