数据结构课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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