学生信息管理系统数据结构课程设计.docx

上传人:b****1 文档编号:23016627 上传时间:2023-04-30 格式:DOCX 页数:16 大小:97.08KB
下载 相关 举报
学生信息管理系统数据结构课程设计.docx_第1页
第1页 / 共16页
学生信息管理系统数据结构课程设计.docx_第2页
第2页 / 共16页
学生信息管理系统数据结构课程设计.docx_第3页
第3页 / 共16页
学生信息管理系统数据结构课程设计.docx_第4页
第4页 / 共16页
学生信息管理系统数据结构课程设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

学生信息管理系统数据结构课程设计.docx

《学生信息管理系统数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统数据结构课程设计.docx(16页珍藏版)》请在冰豆网上搜索。

学生信息管理系统数据结构课程设计.docx

学生信息管理系统数据结构课程设计

华中科技大学文华学院

 

数据结构

课程设计报告

 

题目:

学生信息管理系统

专业:

计算机应用与技术

学号:

姓名:

指导老师:

时间:

一、总体框架图

1、题目:

学生信息管理系统

2、设计内容及要求:

内容:

完成简单的学生信息管理系统

要求:

(1)学生信息包括:

学号、姓名、数学成绩、英语成绩、数构成绩;

(2)用链表存放学生信息;

(3)实现简单的菜单调用;

(4)程序的功能包括:

学生信息链表的建立;

学生信息的显示;

学生信息的查询;

学生信息的删除;

学生信息的插入;

编写算法,以实现基本要求。

二、本程序用到的基本操作

InintList(&l):

操作结果:

构造一个空的线性表L。

DestroList(&L)

初始条件:

线性表已存在。

操作结果:

销毁线性表。

ListInsert(&L,i,e)

初始条件:

线性表L已存在,

操作结果:

在L中第i个位置之前插入新的数据元素e。

L的长度加1.

ListDelete(&L,i,e)

初始条件:

线性表L已存在且非空

操作结果:

删除L的第i个数据元素,并用e返回其值,L的长度减1.

}ADTList

三、模块设计

模块一:

头文件,变量定义,函数的声明对系统所使用的变量进行定义,

对函数进行声明

模块二:

结构体的建立,定义学生的学号,名字,和各成绩

 模块三:

学生信息系统使用菜单声明函数voidmenu(),对整个系统进行明

模块四:

链表的建立,用voidcreat()来建立链表

模块五:

显示学生信息,声明voidprint()显示学生的信息

模块六:

学生信息的查找声明voidsearch()为查找函数,通过switch(a)

设定用学号查找,用姓名查找两个分支

模块七:

删除学生信息通过voiddelete()实现学生信息的删除,

确定要删除的信息,再删除掉。

模块七:

插入学生信息,通过voidinsert()为插入函数,通过switch(a)插入到指定学生的后面。

模块八:

学生信息按学号排序声明voidsort()将录入学生系按升序排列,

用的是“冒泡排序法”实现排序

四、系统设计流程图

五、源代码

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#defineSTUDENT2

typedefstructstudent

{

intnum;//学号

charname[20];//姓名

intmath;//高数

intEnglish;//英语

intData;//数据结构

structstudent*next;

}student;

student*head=NULL;

intlength;//链表的长度

voidcreate()

{

student*p1,*p2;

length=0;

intnumber=0;

p1=(student*)malloc(sizeof(student));

p1->num=-1;

if(head==NULL)

head=p1;

printf("请输入学生的学号、姓名、高数、英语、数据结构:

\n");

while(number<=3)

{

p2=(student*)malloc(sizeof(student));

scanf("%d%s%d%d%d",&p2->num,p2->name,&p2->math,&p2->English,&p2->Data);//输入学生信息

if(p2->num==0)

{

printf("链表创建完成!

\n");

break;

}

length++;//链表的长度

p1->next=p2;

p2->next=NULL;

p1=p1->next;

number++;

}

return;

 

}

voiddisplay()

{

student*p=head->next;

printf("链表中所有的学生信息如下:

\n");

while(p!

=NULL)

{

printf("%d%s%d%d%d\n",p->num,p->name,p->math,p->English,p->Data);

p=p->next;

}

return;

}

voidsearch()

{

intnum_;

student*p=head->next;

printf("需要查找的学生学号为:

");

scanf("%d",&num_);

while(p!

=NULL)

{

if(p->num==num_)

{

printf("学号为%d的学生的信息如下:

\n",num_);

printf("%d%s%d%d%d\n",p->num,p->name,p->math,p->English,p->Data);

return;

}

p=p->next;

}

if(p==NULL)

printf("无此记录!

\n");

return;

}

voidsearch1()

{

charna_me[20];

student*p=head->next;

printf("需要查找的学生姓名为:

");

scanf("%s",na_me);

while(p!

=NULL)

{

if(!

(strcmp(p->name,na_me)))

{

printf("姓名为%s的学生的信息如下:

\n",na_me);

printf("%d%s%d%d%d\n",p->num,p->name,p->math,p->English,p->Data);

return;

}

p=p->next;

}

if(p==NULL)

printf("无此记录!

\n");

return;

}

voidinsert()

{

intnum_,i;

student*p,*q;

p=head;

printf("请输入你要插入位置:

");

scanf("%d",&num_);

if(num_>length)

{

printf("找不到要插入的位置\n");

return;

}

else

{

printf("请输入你要插入的学生的学号、姓名、高数、英语、数据结构:

\n");

q=(student*)malloc(sizeof(student));

scanf("%d%s%d%d%d",&q->num,q->name,&q->math,&q->English,&q->Data);

while(p!

=NULL)

{

if(p->num==q->num)

{

printf("该学号已经存在,无法插入!

\n");

return;

}

p=p->next;

}

p=head;

for(i=0;i

p=p->next;

q->next=p->next;

p->next=q;

length++;

printf("插入成功!

\n");

return;

}

}

voidDelete()

{

intnum_;

student*p,*q;

q=head,p=head->next;

printf("请输入要删除的学生的学号:

\n");

scanf("%d",&num_);

while(p!

=NULL)

{

if(p->num==num_)

{

q->next=p->next;

free(p);

length--;

printf("删除成功!

\n");

return;

}

p=p->next;

q=q->next;

}

if(p==NULL)

{

printf("找不到要删除的编号!

\n");

return;

}

}

voidmenu()

{

printf("________________________________________________________________\n");

printf("|学生信息管理系统|\n");

printf("|0、退出系统|\n");

printf("|1、建立链表|\n");

printf("|2、显示链表|\n");

printf("|3、查找链表中的某个学生信息|\n");

printf("|4、删除链表中指定学号的学生|\n");

printf("|5、指定的位置上插入一个学生|\n");

printf("________________________________________________________________\n");

return;

}

intmain(void)

{

inta;

menu();

intchoice;

while

(1)

{

printf("请选择相应的功能:

");

scanf("%d",&a);

switch(a)

{

case0:

return0;

case1:

create();

menu();

break;

case2:

if(head)

{

display();

menu();

}

else

{

printf("链表为空,请先建立链表!

\n");

menu();

}

break;

case3:

if(head)

{

printf("请选择是按学号查找还是按姓名查找,若是学号就按7,姓名按8\n");

scanf("%d",&choice);

if(choice==7)

{

search();

}

else{

search1();

}

menu();

}

else

{

printf("链表为空,请先建立链表!

\n");

menu();

}

break;

case4:

if(head)

{

Delete();

menu();

}

else

{

printf("链表为空,请先建立链表!

\n");

menu();

}

break;

case5:

if(head)

{

insert();

menu();

}

else

{

printf("链表为空,请先建立链表!

\n");

menu();

}

break;

default:

break;

}

}

system("pause");

return0;

}

 

六、程序结果

建立链表

显示链表

查询学生信息

按学号查

按姓名查

删除信息

插入信息

退出系统

七、心得体会

这次的《学生信息管理系统》的设计中,使我懂得课堂上的知识,必须要通过实践操作才能掌握。

在练习中,遇到一些问题,需要具体分析,具体操作,不断调试。

在这过程中,遇到过很多问题。

刚建立链表时,总是出错,经过不断地调试后来解决了。

通过这次的设计,我发现了自身知识的欠缺,上机操作的经验不足,以及粗心。

比如,一些错误不知道怎么改,后来同学讨论后才调试成功,还有字符串的比较都不熟,有时掉了地址符等等。

虽然有很多欠缺,但在这过程中我也受益良多,感觉自己对程序的处理越来越清晰。

在调试过程中,我发现有时一个小小的错误也会给程序带来很大的麻烦,所以以后应该更加细心,多多操作,积累经验。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1