数据结构之学生成绩管理系统_第1页
数据结构之学生成绩管理系统_第2页
数据结构之学生成绩管理系统_第3页
数据结构之学生成绩管理系统_第4页
数据结构之学生成绩管理系统_第5页
已阅读5页,还剩19页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

学生成绩管理系统

一、试验目的

1.通过本次课程设计中学生成绩管理系统的题礼掌握链表等数据构造的基本

操作方面的知识,并能灵活I内处理某些基本的问题,加深对其性质及各项操作的

理解;

2.将所学数据构造方面的知识与一门详细的语言一一C语言来进行实现,感受

数据构造口勺强大作用,加深理解。

二、试验规定

(1)管理系统中有五个规定:输入查找修改插入删除

存储

(2)输入规定:可以通过健盘输入和文献输入两种

(3)查找规定:可以根据学生号查找单个学生的信息,也可以遍历所有学生信息

(4)修改规定:可以根据学生号修改单个学生所有信息

(5)插入规定:可以实现头插和尾插

(6)胞除规定:可以根据学生号删除单个学生信息

三、存储规定:通过链表存储所有信息

四、算法的思想与算法实现环节

1.基本思想

通过链表数据类型进行基本操作,重要有三个模块:分别是主函数模块、

直要操作函数及基木操作函数。

其中,主函数负贡其他了•函数的调用实现以及基本界面的操作

市要函数包括:

voidStuInput(Student*):〃学生戌绩管理系统的输入函数,由主困数调用

voidStuSelect(Student♦)://学生成绩管理系统的查找函数,由主函数调用

voidStuAlter(Student*);〃学生戌绩管理系统时修改函数,由主函数调用

voidStulnsert(Student*);〃学生成绩管理系统的插入函数,由主函数调用

voidStuDelect(Student♦);〃学生成绩管理系统H勺删除函数,由主函数调用

voidStuSave(Student*);〃学生成绩管理系统的存储函数,由主函数调用

基本操作函数:

voidSluCkitput(Student*p);〃输出函数

illStuImport(Student*head,Student*p);//输入函数

voidStuInputHand(Student*hoad);〃学生成绩管理系统口勺手动输入函数,由输入函

我调用

voidSlulnputFile(Student*head):〃学生成绩管理系统H勺文献输入函数,由输入函

奴调用

voidStuSclcctErg(Student*hcad):〃学生成绩管理系统的遍历函数,由查找函数调

用

vaidStuSelectNumEind(Student*head);〃学生成绩管理系统H勺按学号杳找函数,由杳

找函数调用

voidStuSelectSubFind(Student*head);〃学生成绩管理系统R勺按科目查找函数,由查

投函数调用

2.实现环节

首先,分析题口规定划分实现模块,定义基本数据类型,诸如构造体、链表

等;

另一方面,针对上述的基本操作实现详细需要进行的操作,详细实现每个环节

苗要进行H勺基本操作,即详细编写每个小函数实现功能;

最终,编写主函数对•每个实现进行按需调用,实现操作。

批注[减软用户11:

3.流程图

vjidStuInpuKStudcnt,);〃学生成绩管理系统的临入函数,由主函数阚用

voidStuSelecKStudeni*);〃学生成绩管理系统的查找函数,由主函数调用

vjidSluAheKStudeiil*);〃学生成绩管理系统的修改函数.由上函数调用

vjidSluInscrKSludcnt»);〃学生成绩管理系统的插入函数,由主函数调用

V3idStuDelecUStudent•);〃学生成绩管理系统的删除函数,由主函数调用

V3idStuSave(Student•):〃学生成绩管理系统的存储函数.由主函数调用

vjidStuOutpuKSludcnl*p);〃输出函数

intStuImport(Student*head,Student*p);〃临入函数

V3idStuOutpuKStudent-p)〃打印函数,将链表内该节点信息输出

(

prinif("学生姓名「);

prinif("%s",p->namc);

prinrf("学生号:。

printf("%d",p->num);

priniff科目:");

printf("%s".p->subjcct);

priniR"学生成绩:");

printf("%d\n".p->grade);

}

iniS(uImport(S(u<lent*head,Sludenl*p)

(

Student•Opinion=(Studcnt*)malloc(sizcof(Studcnt));〃用来判断输入节点

中学生号与否有反复

Opinion=hcad->ncxt;

priniR"学生姓名:\n");

scanf("%s-.p->namc):

prinlR"学生号:W);

scanf("%d".&p->num):

primff科目:\iT);

scanf("%s".p->subject):

if(Opinion!=NULL)

[

if(Opinion->num==p->num&&!strcnip(Opinion->siibjcct,p->subjccO)

(

printf("该学生这门科目已经有成绩.请重新输入5”):

returnI;

)

Opinion=Opinion->ncxt;

priniR"学生成绩:\n");

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

return0;

1

v?idmain()

(

StuMain();

vjidStuMain()

{

chardecide='y';〃定义while变量,函数与否继续进行

intnum=l;〃定义switch变城,函数跳转至J哪个

开函数

Student*head:〃定义边表内头指针

hcad=(Studcnt*)malloc(sizcof(Studcnt));〃给头指针开辟空间

head->next=NULL;〃初始化头指针

whilc(dccidc!='n')

printf("****,******,****•**,字*****,**4(4««*,******,*字****•,字*5**);

prinlfc*"名"***«&1输入2查找3修改4插入*g"****\n。;

printfC**********5删除6存储7退出*******/-);

printf("*********«・******,,******・************«,,**********5-):

scanf("%d".&num);

switch(num)

caseI:

Stulnput(hcad):

break;

case2:

StuSelecl(hcad);

break;

case3:

StuAker(head);

break;

case4:

Stulnsert(hcad);

break;

case5:

StuDclcct(head);

break;

case6:

StuSave(head):

break;

default:

dccidc='n';

break;

}

voidStulnpulHand(Student*head);〃学生成绩管理系统的手动输入函数,由输入函数调用

voidStuInputFile(Siudent*head);〃学生成绩管理系统的文献输入函数,由输入函数调用

vjidStuInpuKStudcnt*hcad)〃学生成绩管理系统的输入函数,由主函数调用

chardccidc='y':〃定义while变量.函数与否继续进行

intnum;〃定义switch变量,函数跳转到哪个子函

数

while(decide!='n')

!i:i!;i

printf("****:****i*s»***«*«****«*«*»*****s***********«*s****\n");

printft"**1手动输入2文献输入3退出

printf("*********«・******,,******・************«,,****,****«5一):

scanft"%d".&num);

switch(num)

caseI:

StuInputHand(hcad):

break;

case2:

StuInpuiFile(head);

default:

dcxidc='n\

break:

}

}

vuidStu!nputHand(Studcnt*hcad)〃学生成绩管理系统的手•动输入函数,由输入函数调用

if(hcad->ncxt=NULL)

Student*p<)int=(Student*JmalkctsizcoftStudcnt));〃链表中最终一种

节点,只在该函数中存在

point->ncxt=NULL;

intdecide=I;

whilc(dccidc!=O)

(

Student.pTStudent*)malloc(sizcof(Studcnt));

p->next=NULL;

Stulinportfhead.p):

if(head->next==NUI.L)

{

hcad->ncxt=p;

|X)int=p;

}

else

p()int->nexi=p;

point=p:

]

prin【f("与否继续:1心n");

scanf("%d",&decide);

)

else

printf("管理系统中已存在信息,若想输入学生•信息.请转插入子系统”):

1

V3idStu!nputFile(Student*head)〃学生成绩管理系统的文献输入函数,由输入函数调用

(

if(head->next!=NULL)

(

printf("学生管理系统中已经有信息.请跳转到插入选项\n-):

return:

J

FILE*fp:

prinlf("请输入文献名(包括物理地址)W);

charfilename!10];

scanf("%s",filename);

if((fp=fopen(filename."r"))==NULL)

printf("cannotopenfile\n"):

re(um;

Student*point=(Studcnt*)malloc(sizcof(Studcnt));

Student*Opinion=(Student*)malloc(sizeof(Studeni));〃用来判断输入

节点中学生号与否有反亚

while(!feof(fp)){

Opinion=hcad->ncxt;

Student*p=(Studeni*)tnalloc(sizeof(Student));

p->next=NULL:

fread(p,sizcof(Sludeni),I,fp);

if(Opinion!=NULL)

(

if(Opinion->num==p->nu!n&&!strcmp(Opinion->subiect,p->subject))

{

prinlR”该文献中有反更学生信息,请验明再传播\n");

hcad->ncxt=NULL;

return;

Opinion=Opinion->ncxt;

if(head->nexi==NUI.L)

hcad->ncxt=p;

point=p:

)

else

(

point->next=p;

jx)int=p:

)

);

Opinion=hcad->ncxt;

while(Opinion->next!=NULL)

(

Opinion=Opinion->next;

if(Opinion->ncxt->ncxt==NULL)

Opinion->next=NULL;

);

fclosc(fp);

printf("传播成功\n");

voidStuSeleciErg(Sludent*head);〃学生成绩管理系统的遍历函数,由查找函数调用

vjidSluSekLlNuiiiHnd(Siudeiil*head);〃学生成绩管理系统的按学号直找函数.由直找函

数调用

vjidStuSelcctSubFind(Siudcnt*head);〃学生成绩管理系统的按科目查找函数,由查找函

数调用

vaidStuSelecKStudent*head)〃学生成绩管理系统时杳找函数,由主函数调用

(

chardecide=V:〃定义while变SL函数与否继续进行

ininum;〃定义swiich变址,函数跳转到哪个子函

聚

while(decide!-n')

printf("****************«********»*******************«*****曲“);

priiiif(-…eI遍历2学号直找3科目直找4退出

printf("**8******«****************************«************5“);

scanR"%d",&num);

switch(num)

SluSelectErg(head);

break;

case2:

StuSclcctNumFind(hcad);

break:

case3:

StuSeleciSuhFind(head);

break:

default:

decide='n':

break;

]

]

1

V3idStuSclcctErg(Student*hcad)〃学牛.成绩管理系统的遍历函数,由查找函数调用

(

Student*p=(Student*)malloc(sizcofiStudent)):

p=head->next;

inti=l:

whilc(p!=NULL)

prinlR"第%d位学生信息:'n",i);

StuOutput(p);

p=p->ncxt;

i++;

}

1

V3idStuSeleciNumFindfStudent*head)〃学生成绩管理系统的查找了系统,有直找函数调

用

in(num;

prinif(“输入想要查找学生的学生弓W):

scanf("%d",&num);

Student*p=(Student*)malloc(sizeofiStudent));

p=hcad->ncxt;

inti=l;

whilc(p!=NULL)

(

if(nuin==p->num)

StuOutput(p):

i++;

)

p=p->ncxt;

I

if(i==l)

priniR"没有该学生信息)

)

vjidSluSelcxtSubFind(SliKlcnt*hcad)〃学生成绩管理系统的按科目查找函数,由杳找函数

调用

(

charSub|10|:

printff输入想要杳找科目:W);

scanf("%s",Sub);

Student*p=(Sludcnl*)malloc(sizcofiStudent));

p=head->next;

inti=l;

while(p!=NULL)

if(!strcmp(Sub,p->subjccl))

StuOutput(p);

i++;

)

p=p->next;

}

if(i==l)

priniff没有该学生信息)

)

V3idStuAltertStudent*head)〃学牛成缔管理系纲内脩改函数.由主函数调用

(

intnum;

prinif(“输入想要查找学生的学生号:\n”);

scanf("%d".&num);

charSub|10|;

priniR"输入想要查找科目:\n”);

scanf("%s".Sub);

Student,p=(Studeni*)n)alloc(sizeoGStudeni));

p=head->next;

inti=l;

while(p!=NULL)

if(num==p->nuin&&!strcmp(Sib.p->subject))

priniR”输入修改成绩:\n");

scanf("%d".&p->gradc);

prinif("修改成功W);

i++;

)

p=p->next:

if(i==l)

print11•没有该学生信息)

I

1

vjidStulnserKSiudent*head)"学生成绩管理系统的插入函数,由主函数调用

(

Studentsp()ini=(Studcnis)inalloc(si/cof(StudcnO);

poini=head->nexi;

whilc(point->ncxt!=NULL)

point-point>ncx(;〃或到尼姑点

chardecide"';〃定义while变量,函数与否继续进行

〃定义swiich变量,函数跳转到哪个子函数

whilc(dcci<Jc!='n')

printf("

prinifC****I头插2足插3退出****\n");

printfC・1»***««******«・>»****«******«・*1»***««・*****«・>»****«415");

scanf("%d",&num);

Student*p=(Student*hnallocfsizeof(Student)):

swilch(num)

easeI:

Stulmport(head.p);

p->ncxt=hcad->ncxt;

head->next=p;

prinif("插入成功5");

break;

case2:

Stulmport(hcad,p);

point->next=p:

p->nex(=NULL;

printfC插入成功E”);

break;

default:

dccidc-n';

break;

)

)

)

vjidStuDelect(Student*head)〃学生成绩管理系统的删除函数,由主函数岗用

{

温馨提示

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

评论

0/150

提交评论