c++课程设计报告学生信息管理系统文档格式.docx
《c++课程设计报告学生信息管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《c++课程设计报告学生信息管理系统文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
3、修改功能:
对指定学生的信息进行修改。
4、查询功能:
选择某种方式并输入该信息查询符合条件的学生信息。
5、统计功能:
对某几个专业的人数、男女性别学生信息进行统计。
6、排序功能:
以英语课程的分数为依据对学生信息进行排序。
7、显示功能:
将以上功能操作后的学生信息显示出来。
8、退出主菜单。
3程序流程图
各功能模块的实现流程图:
1增加学生信息
调用函数Node*Create()判断gg是否等于一如果是可创建链表输入相应的学生信息如果不是则需要运用Insert(p)函数插入结点增加学生信息的,并通过chundang(p)函数进行存档,具体流程如下图所示
流程图
2删除学生信息
调用函数Node*Delete(Node*head,intnum)
删除学生的信息则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接,完成链表结点的删除任务
流程图
3.导入学生信息
打开存档文件ifstreamFilein("
out.txt"
);
输出说存档的学生信息
4、学生信息的搜索
调用函数Node*sousuo(Node*head,charna[20]),按学生的姓名进行搜索
流程图:
5信息的统计
调用函数Node*tongji(Node*head)运用一个for循环,将输入的相应的学生信息用strcmp()函数与对应的数组进行比较,然后再进行统计
。
6、按英语成绩进行排序:
调用函数Node*paixu(Node*head)完成排序功能
它的主要思想的:
首先设置英语成绩的最大值100,最小值0(也可以使150或者其他)然后让输入的学生信息英语成绩一次比较进行比较,(如果有相等的就输出排名1,然后排名加1),否则最大值减1,然后再次进行比较(如果等于99且上次没有等于100的,就输出排名1,然后排名加1,如果上次有等于100的排名为2),如果没有与99相等的.,则继续循环……
总功能模块图:
各功能显示效果模块图:
增加学生信息和导入学生信息
保存学生信息
统计电子、建筑、通信、三个专业的人的个数,按英语成绩进行排名并输出
删除相应学生的信息
4、程序清单
#include"
stdafx.h"
#include<
iostream.h>
string.h>
#include<
fstream>
cassert>
usingnamespacestd;
intnn=0;
structNode
{intnum;
charname[20];
charxb[20];
charzy[20];
intnian,yue,ri;
chardz[20];
intmark;
Node*next;
};
//*********************************************************************************
Node*Create()//链表创建
{cout<
<
"
请输入学生信息(输入0退出):
endl;
intn=0;
Node*p1,*p2,*head;
p1=p2=newNode;
p1->
num=1;
head=NULL;
n++;
while(p1->
num!
=NULL)
{if(n==1){head=p1;
}
elsep2->
next=p1;
p2=p1;
p1=newNode;
inta;
nn++;
num=nn;
cout<
姓名:
;
cin>
>
p1->
name;
a=(int)p1->
name[0]-48;
if(a==0)break;
性别:
xb;
专业:
zy;
出生日期:
nian;
yue;
ri;
家庭地址:
dz;
英语入学成绩:
mark;
n++;
}
p2->
next=NULL;
returnhead;
}
//***********************************************************************************
voidchundang(Node*head)//存档
{Node*p=head;
p=p->
next;
ofstreamFileout("
Fileout<
学生资料"
-------------------------------------------------------------------"
while(p)
{
Fileout<
"
--编号:
p->
num<
name<
性别:
xb<
专业:
zy<
出生日期:
nian<
/"
yue<
ri<
地址:
dz<
英语入学成绩:
mark<
Fileout.close();
//********************************************************************************
Node*Insert(Node*head)//插入节点
{Node*p0,*p1,*p2;
p1=head;
p0=newNode;
p0->
if(head==NULL)
{
head=p0;
p0->
num&
&
next)
p2=p1;
p1=p1->
if(p1->
num>
=p0->
num)
{if(p1==head)head=p0;
elsep2->
next=p0;
else
}
//*****************************************************************************
//*****************************************************************************
Node*Delete(Node*head,intnum)//删除节点
{if(head==NULL)
不存在此编号"
Node*p1,*p2;
=num&
next)
{p2=p1;
num==num)
{if(p1==head)
{head=p1->
next=p1->
elsecout<
没找编号为"
的学生!
//********************
nn--;
intkk=0;
//整顿编号
while(p1)
{kk++;
num=kk;
}//*******************
Node*sousuo(Node*head,charna[20])//搜索
{Node*p1=head;
while(p1!
=NULL){
if(!
strcmp(p1->
name,na))
{cout<
编号:
p1=p1->
return0;
Node*tongji(Node*head)//统计
inta=0,b=0,c=0,d=0,e=0,i[100],j[100];
charaa[]="
通信"
bb[]="
建筑"
cc[]="
电子"
nan[]="
男"
nv[]="
女"
for(intk=0;
k<
100;
k++){i[k]=k;
j[k]=0;
while(p1)
{if(!
zy,aa)){a++;
elseif(!
zy,bb)){b++;
zy,cc)){c++;
if(!
xb,nan)){d++;
xb,nv)){e++;
for(intl=0;
l<
l++)
if(2010-p1->
nian==i[l]){j[l]++;
//-------------------------------------------------存档
ofstreamFileout("
统计.txt"
统计信息"
a专业的个数:
a<
endl<
b专业的个数:
b<
c专业的个数:
c<
男性个数:
d<
女性个数:
e<
for(intmm=0;
mm<
mm++)
{if(j[mm]!
=0){Fileout<
年龄"
i[mm]<
的个数:
j[mm]<
Fileout.close();
//-------------------------------------------------
cout<
-------------------------------------------------"
通信专业的个数:
建筑专业的个数:
电子专业的个数:
for(intm=0;
m<
m++)
{if(j[m]!
=0){cout<
i[m]<
j[m]<
//***********************************************************************************
Node*paixu(Node*head)//英语成绩排序
{Node*p1=head;
intrr=100;
//成绩
intll=1;
//排名
英语成绩排序.txt"
英语成绩排序"
排名成绩姓名"
while(rr+1)
{p1=head;
while(p1)
if(p1->
mark==rr){Fileout<
ll<
ll++;
next;
rr--;
return0;
}
main()
{intgg=1;
intstrcmp(constchar*s1,constchar*s2);
Node*p;
//============================================
***************☆学生信息管理系统☆***************"
<
**********★★★★★★★★★★★★★★★★********"
***************★☆1.增加学生信息☆★***************"
***************★☆2.删除学生信息☆★***************"
***************★☆3.导入学生信息☆★***************"
***************★☆4.学生信息搜索☆★***************"
***************★☆5.学生信息统计☆★***************"
***************★☆6.按英语成排序☆★***************"
***************★☆7.学生信息保存☆★***************"
cout<
***************★☆8.退出☆★***************"
请输入您的选择(1--8):
while
(1)//输出操作文本
{intline=0;
charbuf[100];
ifstreamFilein("
in.txt"
while(Filein.getline(buf,100))
{++line;
buf<
Filein.close();
intn;
n;
//-----------------------------------------------
if(n==1)//新增学生信息
{if(gg){
p=Create();
//调用创建列表
gg--;
else{Insert(p);
//新增学生信息
nn++;
chundang(p);
//信息存档
//----------------------------------------------
elseif(n==2)//删除学生信息
{intline=0;
//导入学生信息
输入要删除的学生编号:
intcc;
cc;
Delete(p,cc);
//------------------------------------------------
elseif(n==3)//导入学生信息
intline=0;
elseif(n==4)//学生信息搜索
请输入所要查找的学生的姓名:
charname[20];
s