C++课程设计报告学生学籍管理系统.docx

上传人:b****6 文档编号:7721670 上传时间:2023-01-26 格式:DOCX 页数:21 大小:216.68KB
下载 相关 举报
C++课程设计报告学生学籍管理系统.docx_第1页
第1页 / 共21页
C++课程设计报告学生学籍管理系统.docx_第2页
第2页 / 共21页
C++课程设计报告学生学籍管理系统.docx_第3页
第3页 / 共21页
C++课程设计报告学生学籍管理系统.docx_第4页
第4页 / 共21页
C++课程设计报告学生学籍管理系统.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C++课程设计报告学生学籍管理系统.docx

《C++课程设计报告学生学籍管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告学生学籍管理系统.docx(21页珍藏版)》请在冰豆网上搜索。

C++课程设计报告学生学籍管理系统.docx

C++课程设计报告学生学籍管理系统

学籍管理系统的研究与设计

二维条码应用系统的研究

摘要

学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出等功能,从而能够对信息进行处理。

程序中运用了相关类的知识,同时定义了一定数量的数据及成员函数。

程序使用了数组记录统计的相关数据,运用了指针实现相应功能函数的功能,运用了student,school两个类实现面向对象的要求。

程序的完成涉及到程序的分析,模块的分解,程序的控制,程序的调试

【关键词】学籍管理vc++6.0面向对象程序控制类

1题目内容、要求与分组情况总体介绍5

2系统总体设计6

2.1系统开发模式、工具及环境6

2.2任务需求分析6

2.3系统功能模块设计6

2.4数据结构分析7

2.5工作原理等7

3具体实现-8

3.1类设计8

3.2第一模块界面及实现代码9

3.3第二模块界面及实现代码13

3.4第三模块界面及实现代码15

4运行调试与分析讨论(给出运行屏幕截图,分析运行结果,改进想法。

20

5设计体会与小结(设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。

)23

6参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)

24

第1章题目内容、要求与分组情况总体介绍

1.1题目内容和要求

课程设计的任务:

制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。

系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。

基本功能:

学生基本信息(编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩)

成绩统计(各科总成绩,各科平均成绩,各科的及格率)

扩展功能:

学生数据的添加、修改、与删除

学生数据的读取与存储

系统特点:

系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。

 

第2章系统总体设计

2.1系统开发模式、工具及环境

系统开发模式:

采用控制台系统开发模式

系统开发工具及环境:

VisualC++6.0VisualC++6.0集成开发环境。

 

2.2任务需求分析

1能够输入并浏览学生的基本信息;

2能够实现对学生信息的查询和修改;

3能够对成绩进行统计;

4能够对学生的信息进行保存;

现行的系统功能:

资料维护:

系统维护包括对各学生信息和成绩的录入操作。

资料维护:

对数据表中的信息进行浏览。

系统查询:

可以对不同科目的总成绩、不及率、各科平均成绩相关信息。

2.3系统功能模块设计

现行系统组织结构图:

 

 

2.4数据结构分析

使用整型,双精度,字符型定义变量和函数。

使用结构体,类等概念实现数据存储。

同时也是用这些自定义类型定义了变量和函数。

体现面向对象设计的特点。

2.5工作原理等

系统功能结构图:

第三章具体实现

3.1类设计

类:

student

数据成员

编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩

类:

school

成员函数

录入函数Input():

输入编号到计算机的成绩;

统计函数count():

统计各科的总成绩,计算平均成绩,统计各科的及格率;

查询函数found():

按学号或姓名查找学生的记录;

修改函数mend():

修改指定学号学生成绩记录;

删除函数del():

删除指定学号学生记录;

输出函数show():

输出班级所有学生成绩记录;

UML图:

3.2第一模块界面及实现代码

#include

#include

#include

#include

classstudent

{

protected:

intnumber;

charname[20];

charsex[6];

charplace[20];

charnation[6];

charbirth[20];

charparty[10];

charid[20];

floatscore[3];

public:

student*next;

student(){}

~student(){}

char*getname(){returnname;}

intgetnumber(){returnnumber;}

doublegetscore(inti){returnscore[i];}

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

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输入计算机分数:

";

cin>>score[2];

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];

is.get();

}

voidoutput()

{

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

"<

cout<<"编号:

"<

<<"姓名:

"<

<<"性别:

"<

<<"籍贯:

"<

<<"民族:

"<

<<"生日:

"<

<<"政治面貌:

"<

<<"身份证号:

"<

<<"数学:

"<

<<"英语:

"<

<<"计算机:

"<

<<"总分:

"<

}

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;

}

}

第二模块界面及实现代码

//查找函数

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.0?

j[i]++:

0;

}

}

cout<<"\t\t\b\b数学总分:

"<

"<

<<"及格率:

"<

"<

<<"平均分:

"<

"<

<<"\t\t\b\b计算机总分:

"<

"<

<<"及格率:

"<

}

//主选菜单函数

charschool:

:

mainmenu()

{

charn[6];

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

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

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

<<"**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;}

}

}

 

第四章.运行调试与分析讨论(给出运行屏幕截图,分析运行结果,改进想法。

系统主界面:

统计界面:

查找界面:

显示界面:

录入界面:

修改界面:

2.系统运行的结果

存在问题与改进想法:

1.系统中不存在报错的现象。

当籍贯等信息输入数字等时会出现这种现象,可设置提醒重新输入。

 

六、设计体会与小结(设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。

1.在做了课程实验以后,我对C++的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了!

这其中主要是对类的封装收获很多,在类的封装过程中,对数据的访问控制问题很重要;在面向对象程序设计中,对访问的控制也是比较重要,我相信这对以后学习其他面向对象程序语言会有很大的帮助!

2.作了学生学籍管理系统程序后,我对类和对象更加熟悉了,作为C++所特有得指针、类和对象再编写程序得过程中运用十分广泛,我还必须多加练习才能达到一个更高的水平,类和对象、指针都是非常重要的!

3.在完完整整的做完一个课程实验后,我对程序的整体性有了一个明确的认识,做一个程序必须要注意程序前后的联系,要具有清晰的思路,程序要具有层次。

对整体性的把握至关重要!

4.学习计算机语言,最重要的就是上机操作,我深感自己动手能力比较差,在以后的学习中,还必须多多上机调试程序,从实践中多积累经验,为以后工作打下坚实的基础。

 

参考文献

[1]陈雪飞《C++实例入门》,中国青年出版社,2004年5月出版

[2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版

[3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版

[4]韩滨魏海萍,《C++类库使用手册》,电子工业出版社,2007年7月出版

[5]陈灿煌,《C++彻底研究》中国青年出版社,2005年9月出版。

[6]谢昕,刘觉夫,王更生.C++程序设计(第一版).北京:

邮电大学出版社,2009

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

当前位置:首页 > 工程科技 > 信息与通信

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

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