C++课程设计报告学生学籍管理系统Word格式文档下载.docx
- 文档编号:5764582
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:20
- 大小:169.22KB
C++课程设计报告学生学籍管理系统Word格式文档下载.docx
《C++课程设计报告学生学籍管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告学生学籍管理系统Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。
制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。
4.基本功能:
学生基本信息(编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩)
成绩统计(各科总成绩,各科平均成绩,各科的及格率)
5.扩展功能:
学生数据的添加、修改、与删除,读取与存储。
6.系统特点:
系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;
系统数据的录入除可以手工录入外,还可以采用文件的录入;
系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;
程序中查找运用了两种查找方式即学号查找和姓名查找。
第3章总体设计
一、系统实现方案:
第一步:
分析题目。
第二步:
画出流程。
第三步:
上机调试程序(使用单步调试,设置断点、分块调试的方法)。
第四步:
及时整理资料,撰写课程设计报告中有关这个题目的内容。
二、现行系统组织结构图:
三、类设计(参考)
类:
student
数据成员:
编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩
school
成员函数:
录入函数Input():
输入编号到计算机的成绩;
统计函数count():
统计各科的总成绩,计算平均成绩,统计各科的及格率;
查询函数found():
按学号或姓名查找学生的记录;
修改函数mend():
修改指定学号学生成绩记录;
删除函数del():
删除指定学号学生记录;
输出函数show():
输出班级所有学生成绩记录;
四、输入输出的设计
1.界面的设计
①、界面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。
②、功能设计
通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。
2.数据输出设计:
系统主界面:
输入信息界面:
全部信息显示界面:
查找界面:
修改界面:
保存界面:
统计界面:
第4章系统实现
代码:
#include<
iostream>
string>
fstream>
iomanip>
usingnamespacestd;
classstudent//定义类-student
{
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按提示输入:
endl;
\t\t输入编号:
"
;
cin>
>
number;
\t\t输入姓名:
name;
do
\t\t输入性别:
sex;
/*strcmp为库函数,当前不等于后时,返回值为非零,当前等于后时,返回值0*/
if(strcmp(sex,"
男"
)==0||strcmp(sex,"
女"
)==0)
{
\t\t输入籍贯:
cin>
place;
\t\t输入民族:
nation;
\t\t输入生日:
birth;
\t\t输入政治面貌:
party;
\t\t输入身份证号:
id;
\t\t输入数学分数:
score[0];
\t\t输入英语分数:
score[1];
\t\t输入计算机分数:
score[2];
e=0;
}
else
\t\t\t无此类型性别!
重新输入!
e=1;
while(e);
return;
voidinput(ifstream&
is)//输入文件流类
{is>
number>
name>
sex>
place>
nation>
birth>
party>
id
>
score[0]>
score[1]>
is.get();
}
voidoutput()//输出学生的基本信息的函数
学生基本信息如下:
编号:
number<
姓名:
name<
性别:
sex<
籍贯:
place
民族:
nation<
生日:
birth<
政治面貌:
party<
endl
身份证号:
id<
数学:
score[0]<
英语:
score[1]
<
计算机:
score[2]<
总分:
getg()<
endl<
voidoutput(ofstream&
os)//输出文件流类
{os<
setw(6)<
number<
setw(15)<
setw(20)<
party
};
classschool//定义类-school
{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;
p=p->
school:
setkey
(1);
\t\t\t按1继续,按0返回:
n;
/*子查找函数*/
intschool:
find(student**p1,intnum,char*pn)
{student*p;
(*p1)=p;
if((p->
next)->
getnumber()==num||!
strcmp((p->
getname(),pn))
return1;
return0;
/*查找函数*/
found()
intnum=-1,n=9;
charname[20]="
{cout<
\t\t1:
按编号查找,2:
按姓名查找:
}while(n<
1||n>
2);
if(n==1)
\t\t\t输入编号:
num;
if(n==2)
\t\t\t输入姓名:
if(!
find(&
p,num,name))
\t\t找不到你要查找的内容!
return;
(p->
output();
/*删除函数*/
del()
{student*p,*p2;
intnum;
if(!
p,num,"
))
\t\t找不到你要删除的内容!
(p->
p2=p->
next=p2->
deletep2;
school:
show()//显示函数
{(p->
/*修改函数*/
mend()
student*p;
intnum=-1,n;
按编号修改,2:
按姓名修改:
\t\t找不到你要修改的内容!
save()//保存函数
ofstreamos("
student.txt"
ios:
out);
if(school:
getkey()==1)
while(p->
output(os);
\t\t\t文件已保存!
setkey(0);
begin()//初始化函数
p=head;
clear();
longt;
ifstreamis("
in);
is)
{ofstreamos("
os.close();
intnum=-1;
while
(1)
{num=-1;
t=is.tellg();
is>
is.seekg(t);
if(num<
0)
{is.close();
p2=newstudent;
input(is);
}}
voidschool:
clear()//清空函数
{student*p,*p2;
p=head->
while(p)
{p2=p;
deletep2;
count()//统计函数
{student*p;
intn=0;
doubleg[3]={0,0,0};
floatj[3]={0,0,0};
{p=p->
n++;
for(inti=0;
i<
3;
i++)
{g[i]=g[i]+(p->
getscore(i));
getscore(i))>
=60.0?
j[i]++:
0;
cout<
数学总分:
g[0]<
平均分:
g[0]/n
及格率:
j[0]/n<
英语总分:
g[1]
g[1]/n<
j[1]/n<
计算机总分:
g[2]<
g[2]/n
j[2]/n<
/*主选菜单函数*/
charschool:
mainmenu()
charn[6];
\n\n☆☆☆☆欢迎进入学籍管理系统☆☆☆☆"
*************************"
***********************"
**1:
录入学生信息**"
**2:
显示学生信息**"
**3:
查找学生信息**"
**4:
删除学生信息**"
**5:
修改学生信息**"
**6:
统计学生成绩**"
**7:
保存学生信息**"
**0:
退出系统**"
请选择:
returnn[0];
/*主函数*/
voidmain()
{schoolpp;
intk=1;
charn;
pp.begin();
while(k==1)
{n=pp.mainmenu();
switch(n)
{case'
1'
pp.input();
break;
//pp.***为引用类中的函数的格式
case'
2'
pp.show();
3'
pp.found();
4'
pp.del();
5'
pp.mend();
6'
pp.count();
7'
pp.save();
0'
if(pp.getkey()==1)
{cout<
\t\t\t是否保存?
1:
保存0:
不保存:
k;
if(k==1)
pp.save();
pp.clear();
k=0;
}}}
结论
本程序基本完成了题目要求的功能。
但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩。
程序可通过改进,增加科目数。
程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。
解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。
后记
此次c++课程设计,我们学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
参考文献
[1]《C++语言程序设计教程与实验》第三版
[2]C++相关视频
[3]利用网上的资源。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 学生 学籍 管理 系统