学生信息管理系统数据结构课程设计_第1页
学生信息管理系统数据结构课程设计_第2页
学生信息管理系统数据结构课程设计_第3页
学生信息管理系统数据结构课程设计_第4页
学生信息管理系统数据结构课程设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华中科技大学文华学院

数据结构

课程设计报告

题目:学生信息管理系统

专业:计算机应用与技术

学号:

姓名:

指导老师:

•时间:

一、总体框架图

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的长度减L

}ADTList

三、模块设计

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

对函数进行声明

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

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

模块四:链表的建立,用voidcrcat()来建立链表

模块五:显示学生信息,声明voidprint。显示学生的信息

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

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

模块七:删除学生信息通过voiddelete。实现学生信息的删除,

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

模块七:插入学生信息,通过voidinsert。为插入函数,通过switch(a)插入到指定

学生的后面。

模块八:学生信息按学号排序声明voidsort。将录入学生系按升序排列,

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

四、系统设计流程图

五、源代码

学生信息管理系统

#includeustdio.h"

#include

菜单项选择

退

,'stdlib.h"

#include"string.h"

#defineSTUDENT2

typedefstructstudent

(

intnum;〃学号

charname[20];〃姓名

intmath;〃高数

intEnglish;〃英语

intDaia;//数据结构

structstudent*next;

}student;

student*head=NULL;

intlength;〃链表的长度

voidcreate()

student*pl,*p2;

length=O;

intnumber=0;

p1-(sludcul*)iiialluc(sizcuf(studcnl));

pl->num=-l;

if(head==NULL)

head=p1;

prinlf(”请输入学生的学号、姓名、高数、英语、数据结构:\n");

while(number<=3)

(

p2=(studcnt*)malloc(sizcof(studcnt));

scanf(n%d%s%d%d%d,,,&p2->num,p2->name,&p2->math,&p2->English,&p2->Da[a);〃输入

学生信息

if(p2->num==0)

(

printf("链表创立完成!\n");

break;

1

]eng[h++;〃链表的长度

pl->next=p2;

p2->next=NULL;

pl=pl->next;

numbcr++;

)

return;

1

voiddisplayO

(

student*p=head->next;

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

while(p!=NULL)

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

p-p->ucxl;

return;

}

voidsearch()

(

intnum_;

student*p=hcad->ncxt;

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[20J;

student*p=head->next;

printf(”需要查找的学生姓名为:”);

scanf("%s",na_me);

whilc(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)

prinlf("无此记录!\nM);

return;

)

voidinsert()

(

intnum_,i;

student*p,*q;

p二head;

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

scanf(n%dn,&num_);

if(num_>length)

{

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

return;

)

else

(

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

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

scanf("%d%s%d%d%dn,&q->num,q->namc,&q->math,&q->EngIish,&q->Data);

while(p!=NULL)

(

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

(

pcntf(“该学号已经存在,无法插入!\n");

return;

}

p=p->next;

}

p=head;

for(i=0;i<num_;i++)

p=p->next;

q->ncxt=p->next;

p->next=q;

length++;

printf("插入成功!\n");

return;

)

1

voidDclcteO

(

intnum_;

student*p,*q;

q=head,p=head->next;

prinlf("请输入要删除的学生的学号:\n”);

scanf("%d",&num_);

while(p!=NULL)

if(p->num==num_)

q->ncxt=p->ncxt;

free(p);

length-;

printf("删除成功!\n");

return;

)

p=p->ncxt;

q=q->next;

)

if(p==NULL)

(

printf("找不到要删除的编号!\n");

return;

)

I

voidmenu()

printfC\n");

printf(H|学生信息管理系统|\nH);

printf(u|退出系统|\nH);

printf(n|1>建立链表|\nH);

printf(,'|2>显示链表|\nH);

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

printfC|4.删除链表中指定学号的学生|\n");

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

printfC\n");

return;

}

ininiain(vuid)

inta;

menu();

intchoice;

while(l)

(

printf(”请选择相应的功能:”);

scanf(”%d”,&a);

switch(a)

(

case0:

return0;

case1:

create();

menu();

break;

case2:

if(head)

{

displayO;

mcnu();

(

else

{

primf("链表为空,请先建立链表!\n");

menu();

)

break;

case3:

if(head)

printf(”请选择是按学号查找还是按姓名查找,假设是学号就按

7,姓名按8\n");

scanf("%dn,&choice);

if(choice==7)

(

search();

)

else(

search1();

)

menu();

)

else

{

printf("链表为空,请先建立链表!\n");

menu();

1

break;

case4:

if(hcad)

(

Delete();

menu();

)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论