数据结构课程设计报告

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

数据结构课程设计报告书

学校青岛科技大学

学号

姓名

指导老师刘勇

课程设计的名称:学生成绩管理

1.问题描述:

学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,该题目是对学生的成绩管理作一个简单的模拟,其中学生信息包括:学号、姓名与成绩。成绩分为课程1成绩、课程2成绩、课程3成绩和总成绩。要求设计一个简易的成绩管理系统,输入各门功课的成绩后能自动求出总成绩,并通过菜单选择操作方式完成下列功能:

①登记学生成绩;

②②查询学生成绩;

③插入学生成绩;

④④删除学生成绩;

⑤按总成绩降序排序。

2.基本要求:

该题目涉及到单链表的各种操作,包括单链表的建立、结点的查找、插入、删除等基本运算。首先建立学生成绩单链表,链表中每个结点由4个域组成,分别为:学号、姓名、成绩、存放下一个结点地址的next域。然后将要求完成的四项功能写成四个函数,登记学生成绩对应建立学生单链表的功能,后三个功能分别对应单链表的查询、插入与删除三大基本操作。

3.算法思想:

Creat()函数算法思想:从0至n循环输入n个同学的三科成绩,并且计算总成绩。

Inquiry()函数算法思想:将学号与已输入的所有学号做比较,一旦相同则输出该学号信息,否则显示没有该学生信息。

Insert ()函数算法思想:生成一个新节点,然后将其接到原有链表尾部。

Delete()函数算法思想:通过ID找到该节点,并删去该节点。

Sort(函数算法思想:利用排序算法对每一个节点作比较并更换其在链表中的位置顺序。

4.模块划分

(1)LinkList Creat(LinkList T,int n)其功能是创造节点,录入成绩。

(2)void Inquiry(LinkList T)其功能是查询与已知ID一致的学生信息并展示出来。(3)void Insert(LinkList T,int n) 其功能是添加若干个学生的成绩信息。

(4)void Delete(LinkList T) 其功能是删除若干个学生的成绩信息。

(5)void Sort(LNode *p) 其功能是排序并展示若干个学生的成绩信息。

5.数据结构:

数据类型LNode定义如下:

typedef struct LNode

{

int ID;

char name[20];

int score1;

int score2;

int score3;

int total;

struct LNode *next;

}LNode,*LinkList;

6.源程序:

源代码

//main.c

#include

#include

typedef struct LNode

{

int ID;

char name[20];

int score1;

int score2;

int score3;

int total;

struct LNode *next;

}LNode,*LinkList;

LinkList Creat(LinkList T,int n); void Delete(LinkList T);

void Inquiry(LinkList T);

void Insert(LinkList T,int n); void Sort(LNode *p);

void Insert(LinkList T,int n) {

int i;

LNode *r=T,*p;

while((r->next)!=NULL)

{

r=r->next;

}

for(i=0;i

{

p=(LNode *)malloc(sizeof(LNode));

printf("Please enter the student's student ID:");

scanf("%d",&p->ID);

printf("Please enter the student's name: ");

scanf("%s",p->name);

printf("Please enter the student's score 1: ");

scanf("%d",&p->score1);

printf("Please enter the student's score 2: ");

scanf("%d",&p->score2);

printf("Please enter the student's score 3: ");

scanf("%d",&p->score3);

p->total=p->score1+p->score2+p->score3;

printf("The total score is %d\n",p->total);

p->next=NULL;

r->next=p;

r=p;

}

printf("\nInsert is complete!");

}

void Inquiry(LinkList T)

{

int id;

printf("Please enter the student ID you want to inquire about: ");

scanf("%d",&id);

LNode *p=T;

p=p->next;

while(p!=NULL)

{

if(p->ID==id)

{

printf("\nThe student scores information has been successfully inquired!\n");

printf("ID: %d\nName: %s\nScore 1: %d\nScore 2: %d\nScore

相关文档
最新文档