最新数据结构课程设计报告.docx

上传人:b****8 文档编号:11126859 上传时间:2023-02-25 格式:DOCX 页数:21 大小:64.17KB
下载 相关 举报
最新数据结构课程设计报告.docx_第1页
第1页 / 共21页
最新数据结构课程设计报告.docx_第2页
第2页 / 共21页
最新数据结构课程设计报告.docx_第3页
第3页 / 共21页
最新数据结构课程设计报告.docx_第4页
第4页 / 共21页
最新数据结构课程设计报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

最新数据结构课程设计报告.docx

《最新数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《最新数据结构课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。

最新数据结构课程设计报告.docx

最新数据结构课程设计报告

 

数据结构与算法课程论文

题目:

学生管理系统

 

 

院(系):

专业:

课程名称:

姓名:

学号:

指导老师:

2011年12月

学生管理系统

【设计目的】

设计“学生管理系统”使其具有数据插入、修改、删除、统计学生成绩、显示和查询等功能。

(1)数据包括:

学号、姓名、身份证信息及个人成绩等数据。

(2)可对记录中的学生信息进行修改。

(3)可增加或删除记录。

(4)可显示所有保存的记录。

(5)可按人名或学号进行查询。

(6)可进行成绩汇总统计和平均成绩及及格率的计算

【设计思路】

根据要求,学生管理系统数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。

【总体设计】

图1系统功能模块图

【详细设计】

一、代码分析

  此程序主要包含一个类student用来.对学生相关学籍信息的描述.School.

二、

(1)数据成员number;name.sex.place.nation.Birth.party.id.score

Number学生学号.Name学生姓名sex学生性别place学生籍贯nation民族

Birth学生生日party政治面貌id学生身份证score学生分数

  

(2)成员函数

getnumber().getscore().output().get();  input();mend()del();found();show()count();save();begin();clear();

三、函数实现说明

1.Show(  )函数:

  该函数列出一个清晰的结构,对本程序所运用的几个模块整体上有个统一认识,方便了对程序的调用,节省了时间。

2.Input(  )函数:

    该函数是一个输入函数,它运用了for循环语句,本程序定义了两个变量,通过scanf语句的使用,又调用了函数SIR,实现了简洁明了的对学生成绩,姓名以及学号等进行键入。

3.del(  )函数:

该函数实现的是删除功能。

该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的删除所选的目标

4.output()函数:

    该函数是一个输出函数,它运用了for循环语句,本程序定义了两个变量,通过scanf语句的使用,又调用了函数SIR,实现了简洁明了的对学生成绩,姓名以及学号等进行输出。

5.mend()函数

该函数实现的是修改功能。

该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的修改所选的目标

6.found()函数

该函数实现的是查找功能。

该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的查找所选的目标

7.main()函数:

  一个程序主函数不能少。

当以上的函数均编完之后,要实现各个功能操作的连接,还必须有主函数将它们联系起来,这样才能达到理想的结果。

对以上函数的连接,此程序采用了switch语句,格式清晰、容易接受。

至此学生成绩管理的基本功能便基本实现。

二  、系统软件环境:

MicrosoftVisualC++6.0

三 、程序主要功能:

实现基本的学生成绩数据管理,如:

具有建立文件,读取文件和保存记录的功能,并可增加、显示、修改、删除、查询学生记录的功能,并能对学生成绩进行统计.其中数据的查找、数据的删除又可通过不同的方式如按学号或姓名等进行操作。

四 、总结

系统功能说明:

1录入:

    作用:

用于对学生学籍信息进行输入,并保存.

    方法:

先输入学生学籍信息,然后录入,最后按enter结束.你所录入的文字

         就给保存到该文件里!

2显示

     输入学生学号,或者姓名可以显示学生的学籍信息

3查找:

有两种,一种按学号,一种按姓名。

4删除

    输入需要删除的学生的学号,或者姓名

5修改

输入需要修改的学生的学号,或者姓名

6统计:

      作用:

用于对学生学习成绩进行统计

      方法:

输入学生学号,或者姓名.然后按确定

7保存

.    按7,并按确定,可以保存学生学籍信息

0退出:

      作用:

退出整个"学生学籍管理系统";

      方法:

按0并按确定.

【附录程序】

//学生管理系统

//头文件及类

#include

#include

#includepoweredby

#include

usingnamespacestd;

classstudent

{

protected:

intnumber;

charname[20];

charsex[6];

charplace[20];

charnation[6];

charbirth[20];

charparty[10];

charid[20];

floatscore[5];

public:

student*next;

student(){}

~student(){}

char*getname(){returnname;}

intgetnumber(){returnnumber;}

doublegetscore(inti){returnscore[i];}

floatgetg(){return(score[0]+score[1]+score[2]+score[3]+score[4]+score[5]);}

voidinput()

{

inte=1;

cout<<"\t\t\t按提示输入:

"<

cout<<"\t\t输入学号:

";

cin>>number;

cout<<"\t\t输入姓名:

";

cin>>name;

do

{

cout<<"\t\t输入性别:

";

cin>>sex;

if(strcmp(sex,"男")==0||strcmp(sex,"女")==0)

{

cout<<"\t\t输入籍贯:

";

cin>>place;

cout<<"\t\t输入民族:

";

cin>>nation;

cout<<"\t\t输入生日:

";

cin>>birth;

cout<<"\t\t输入政治面貌:

";

cin>>party;

cout<<"\t\t输入身份证号:

";

cin>>id;

cout<<"\t\t输入数据结构与算法分数:

";

cin>>score[0];

cout<<"\t\t输入信息管理与信息系统分数:

";

cin>>score[1];

cout<<"\t\t输入ERP原理与应用分数:

";

cin>>score[2];

cout<<"\t\t输入数据库原理与应用分数:

";

cin>>score[3];

cout<<"\t\t输入企业认知实践分数:

";

cin>>score[4];

cout<<"\t\t输入体测分数:

";

cin>>score[5];

e=0;

}

else

{

cout<<"\t\t\t无此类型性别!

重新输入!

"<

e=1;

}

}while(e);

return;

}

voidinput(ifstream&is)

{

is>>number>>name>>sex>>place>>nation>>birth>>party>>id

>>score[0]>>score[1]>>score[2]>>score[3]>>score[4]>>score[5];

is.get();

}

voidoutput()

{

cout<<"学生基本信息如下:

"<

cout<<"学号:

"<

<<"姓名:

"<

<<"性别:

"<

<<"籍贯:

"<

<<"民族:

"<

<<"生日:

"<

<<"政治面貌:

"<

<<"身份证号:

"<

<<"数据结构与算法:

"<

<<"信息管理与信息系统:

"<

<<"ERP原理与应用:

"<

<<"数据库原理与应用:

"<

<<"企业认知实践:

"<

<<"体测:

"<

<<"总分:

"<

}

voidoutput(ofstream&os)

{

os<

<

<

<

<

<

<

<

<

<

<

<

<

<

}

};

classschool

{

public:

school(){head=newstudent;head->next=NULL;key=0;}

~school(){deletehead;}

voidinput();

voidmend();

voiddel();

intfind(student**p,intnum,char*pn="^");

voidfound();

voidshow();

voidcount();

voidsave();

voidbegin();

voidclear();

charmainmenu();

intgetkey(){returnkey;}

voidsetkey(intk){key=k;}

private:

student*head;

intkey;

};

//录入函数

voidschool:

:

input()

{

student*p,*p2=NULL;

p=head;

intn;

while(p->next)

p=p->next;

while(n)

{

p2=newstudent;

p2->input();

p->next=p2;

p2->next=NULL;

p=p->next;

school:

:

setkey

(1);

cout<<"\t\t\t按1继续,按0返回:

";

cin>>n;

}

}

//子查找函数

intschool:

:

find(student**p1,intnum,char*pn)

{

student*p;

p=head;

while(p->next)

{

(*p1)=p;

if((p->next)->getnumber()==num||!

strcmp((p->next)->getname(),pn))

return1;

p=p->next;

}

return0;

}

//查找函数

voidschool:

:

found()

{

student*p;

intnum=-1,n=9;

charname[20]="^";

do

{

cout<<"\t\t1:

按学号查找,2:

按姓名查找:

";

cin>>n;

}while(n<1||n>2);

if(n==1)

{

cout<<"\t\t\t输入学号:

";

cin>>num;

}

if(n==2)

{

cout<<"\t\t\t输入姓名:

";

cin>>name;

}

if(!

find(&p,num,name))

{

cout<<"\t\t找不到你要查找的内容!

"<

return;

}

(p->next)->output();

}

//删除函数

voidschool:

:

del()

{

student*p,*p2;

intnum;

cout<<"\t\t\t输入学号:

";

cin>>num;

if(!

find(&p,num,"^"))

{

cout<<"\t\t找不到你要删除的内容!

"<

return;

}

(p->next)->output();

p2=p->next;

p->next=p2->next;

deletep2;

school:

:

setkey

(1);

}

//显示函数

voidschool:

:

show()

{

student*p;

p=head;

while(p->next)

{

(p->next)->output();

p=p->next;

}

}

//修改函数

voidschool:

:

mend()

{

student*p;

intnum=-1,n;

charname[20]="^";

do

{

cout<<"\t\t1:

按学号修改,2:

按姓名修改:

";

cin>>n;

}while(n<1||n>2);

if(n==1)

{

cout<<"\t\t\t输入学号:

";

cin>>num;

}

if(n==2)

{

cout<<"\t\t\t输入姓名:

";

cin>>name;

}

if(!

find(&p,num,name))

{

cout<<"\t\t找不到你要修改的内容!

"<

return;

}

(p->next)->output();

(p->next)->input();

school:

:

setkey

(1);

}

//保存函数

voidschool:

:

save()

{

student*p;

p=head;

ofstreamos("student.txt",ios:

:

out);

if(school:

:

getkey()==1)

{

while(p->next)

{

(p->next)->output(os);

p=p->next;

}

}

cout<<"\t\t\t文件已保存!

"<

school:

:

setkey(0);

}

//初始化函数

voidschool:

:

begin()

{

student*p,*p2;

p=head;

clear();

longt;

ifstreamis("student.txt",ios:

:

in);

if(!

is)

{

ofstreamos("student.txt",ios:

:

out);

os.close();

return;

}

intnum=-1;

while

(1)

{

num=-1;

t=is.tellg();

is>>num;

is.seekg(t);

if(num<0)

{

is.close();

return;

}

p2=newstudent;

p2->input(is);

p->next=p2;

p2->next=NULL;

p=p->next;

}

}

//清空函数

voidschool:

:

clear()

{

student*p,*p2;

p=head->next;

while(p)

{

p2=p;

p=p->next;

deletep2;

}

}

//统计函数

voidschool:

:

count()

{

student*p;

p=head;

intn=0;

doubleg[3]={0,0,0};

floatj[3]={0,0,0};

while(p->next)

{

p=p->next;

n++;

for(inti=0;i<3;i++)

{

g[i]=g[i]+(p->getscore(i));

(p->getscore(i))>=60?

j[i]++:

0;

}

}

cout<<"\t\t\b\b\b\b数据结构与算法总分:

"<

"<

<<"及格率:

"<

"<

<<"平均分:

"<

"<

<<"\t\t\b\b\b\bERP原理与应用总分:

"<

"<

<<"及格率:

"<

<<"\t\t\b\b\b\b数据库原理与应用总分:

"<

"<

<<"及格率:

"<

"<

<<"平均分:

"<

"<

<<"\t\t\b\b\b\b体测总分:

"<

"<

<<"及格率:

"<

}

//主选菜单函数

charschool:

:

mainmenu()

{

charn[6];

cout<<"\n\n☆☆☆☆欢迎进入学生管理系统☆☆☆☆"<

cout<<"专业:

信息管理与信息系统专业班级:

090509学号:

090509112姓名:

盛韩"<

<<"****************************"<

<<"****************************"<

<<"**1:

录入学生信息**"<

<<"**2:

显示设计学生信息**"<

<<"**3:

查找学生信息**"<

<<"**4:

删除学生信息**"<

<<"**5:

修改学生信息**"<

<<"**6:

统计学生成绩**"<

<<"**7:

保存学生信息**"<

<<"**0:

退出系统**"<

<<"****************************"<

<<"****************************"<

<<"请选择:

";

cin>>n;

returnn[0];

}

//主函数

voidmain()

{

schoolpp;

intk=1;

charn;

pp.begin();

while(k==1)

{

n=pp.mainmenu();

switch(n)

{

case'1':

pp.input();break;

case'2':

pp.show();break;

case'3':

pp.found();break;

case'4':

pp.del();break;

case'5':

pp.mend();break;

case'6':

pp.count();break;

case'7':

pp.save();break;

case'0':

if(pp.getkey()==1)

{

cout<<"\t\t\t是否保存?

1:

保存0:

不保存:

";

cin>>k;

if(k==1)

pp.save();

}

pp.clear();

k=0;

break;

}

}

}

//源程序结束

 

【设计体会】

做了这个学生学籍管理系统,懂得了很多.明白了做事情都必须要先做好准备.看了有关C++方面的资料,上网找了些程序以作参考.觉得我这个程序的优点在于简单快捷的录入学生信息,并可以进行保存,我加上了学生各科成绩的统计,让学校在查看学生学籍信息的时候可以对学生的成绩一目了然.只需要输入学生的学号或者姓名就可以找到学生的学籍信息,还可以进行修改,保存.

    但是存在的缺点就是,当录入的步骤有差错的时候不能够返回,有待完善与提高.

经过这次之后让我懂得一个程序的完善需要平时努力学习,积累知识,之后才可以找到解决方法的.改进方法就是增加个while

(1)死循环.

    经过这次设计程序之后,让我的逻辑思维,与动手能力都有所提高,使我一步步的向前.

总之,编程尤其是调试是一项细致深入的工作,需要下工夫、动脑子、善于积累经验,这往往能反映出一个人的水平、经验和科学态度。

【参考文献】

朱若愚.数据结构[M].北京:

电子工业出版社,2006.1:

41-65

晋良颍.数据结构[M].北京:

人民邮电出版社,2007.05:

21-45

刘大有.数据结构[M].北京:

高等教育出版社,2006.3:

30-58

赵文静.数据结构与算法[M].北京:

科学出版社,2007.8:

41-64 

徐孝凯.数据结构简明教程.[M].北京:

清华大学出版社,2006.04:

102-115

严蔚敏,吴伟民.数据结构(C语言版)[M].北京:

清华大学出版社,2007.4:

39-43

傅清祥,王晓东.数据结构与算法设计[M].北京:

电子工业出版社,2006.3:

31-46

王敬华,林萍,.陈静.C语言程序设计[M].北京:

清华大学出版社,2007.10:

22-39

李云清,杨庆红,揭安全.数据结构(C语言版)[M].北京:

人民邮电出版社,2006.1:

44-67

[10]李春葆.数据结构(C语言版)习题与解析[M].北京:

清华大学出版社,2006.1:

47-55

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

当前位置:首页 > 小学教育 > 小学作文

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

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