学生信息管理系统C++语言程序代码文档格式.docx
- 文档编号:20029918
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:18
- 大小:54.37KB
学生信息管理系统C++语言程序代码文档格式.docx
《学生信息管理系统C++语言程序代码文档格式.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统C++语言程序代码文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
//构造函数.
~Information();
//析构函数.
student*creat();
//建立链表函数。
voidoutput(student*head);
intcount(student*head);
//定义函数count()统计考生总数
student*insert(student*head);
//指针函数*insert()用来添加考生信息.
student*cancel(student*head,longintnum);
//指针函数*cancel()用来删除考生信息.
student*find(student*head,longintnum);
//指针函数*find()用来查找考生信息.
voidinorder(student*head);
//定义inorder()函数将考生的总分从大到小排列并输出
voidaverage(student*head);
//求学生成绩的平均分的函数
voidsave(student*head);
//保存函数
student*Read();
//读取函数
private:
student*p1,*p2,*p3,*head,st;
Information:
:
Information()//构造函数
{
cout<
<
"
******************************************************************************\n"
;
------------------------<
欢迎您使用学生信息管理系统>
>
------------------------\n"
******************************************************************************\n\n"
}
~Information()//构造函数
谢谢您使用学生信息管理系统>
student*Information:
creat(void)//定义一个指向structstudent的结构体指针函数*creat()用来增加学生信息.
charch[20];
n=0;
p1=p2=(student*)malloc(LEN);
//调用malloc()函数用来开辟一个新的存储单元
-------------<
请建立学生考试信息表,在姓名处输入!
结束输入。
--------------"
endl;
姓名:
cin>
ch;
head=NULL;
//给指针head赋初值
while(strcmp(ch,"
!
)!
=0)//调用字符比较函数strcmp()用来判断是否继续输入
{
charstr[10];
intflag=0;
p1=(student*)malloc(LEN);
strcpy(p1->
name,ch);
//将循环结构前面输入的姓名复制到结构体名为p1的数组name中
性别:
p1->
sex;
院系:
;
str;
学号(9位):
do{
if(atol(str)>
999999999||atol(str)<
1)
对不起,请正确输入!
\n"
else
id=atol(str);
flag=1;
}
}while(flag==0);
flag=0;
语文成绩:
return(0);
elsereturn(1+count(head->
next));
//函数的递归调用
//插入学生的成绩信息的函数
insert(student*head)//插入新结点定义一个指向structstudent的结构体指针函数*insert()用来添加考生信息.
\t----------------<
请输入新增学生成绩信息>
----------------\n"
//使p1指向插入的新结点
姓名:
name;
//将输入的姓名存放到结构体名为p1的数组name中
99999999||atol(str)<
对不起,请请正确输入!
{p1->
if(atoi(str)>
100||atoi(str)<
对不起,请输入1-100之间的数字!
{p1->
score[0]=atoi(str);
外语成绩:
score[1]=atoi(str);
数学成绩:
score[2]=atoi(str);
C++成绩:
score[3]=atoi(str);
p1->
total=p1->
score[0]+p1->
score[1]+p1->
score[2]+p1->
score[3];
//计算总分
p2=head;
//将头指针赋给p2
if(head==NULL)//若没调用次函数以前的头指针head为空
head=p1;
next=NULL;
//则将p1赋给头指针head并将p1所指结构体成员指针next赋空值
while((p1->
id>
p2->
id)&
&
(p2->
next!
=NULL))
p3=p2;
//p3指向原p2指向的结点
p2=p2->
next;
}//p2后移一个结点
if(p1->
id<
=p2->
id)
if(head==p2)
next=head;
}//插入到第一个结点之前
p3->
next=p1;
next=p2;
}//插入到p3所指结点之后
p2->
}//插入到尾结点之后
n++;
//将学生人数加1
\t你输入的学生信息已经成功插入"
return(head);
//删除学生信息函数
cancel(student*head,longintnum)//定义一个指向structstudent的结构体指针函数*delete()用来删除考生信息.
if(head==NULL)//若调用次函数以前的头指针head为空
return(head);
else
p1=head;
//否则将头指针赋给p1
while(num!
=p1->
id&
=NULL)//寻找要删除的结点当p1所指的学号不是输入的学号并且p1所指的next指针不为空
p2=p1;
p1=p1->
//p2指向原p1指向的结点p1后移一个结点
}
if(num==p1->
id)//如果输入的学生准考证号是p1所指的学号结点找到后删除
if(p1==head)head=p1->
//如果head指针和p1指针相等则将下一个结点赋给指针head
next=p1->
//否则将p1所指结点赋给p2所指结点将要删除的学生信息跳过去
删除学号为"
num<
的学生\n"
n--;
//将学生人数减1
//将头指针返回
//查找学生信息函数
find(student*head,longintnum)//定义一个指向structstudent的结构体指针函数*find()用来查找学生信息.
if(head==NULL)//若调用次函数以前的头指针head为空
这是一个空表,请先输入考生成绩.\n"
=NULL)
//寻找结点当p1所指的学号不是输入的学生学号并且p1所指的next指针不为空
//p1后移一个结点
id)//如果要查找的学号是p1所指的学号
------------------------------------------------------------------------------\n"
学号姓名性别院系语文英语数学C++平均分总分\n"
setw(8)<
id
<
setw(9)<
name
sex
setw(13)<
score[0]
setw(16)<
score[1]
setw(10)<
score[2]
score[3]
setw(6)<
total/4.0
setw(11)<
total<
没找到学号为"
的学生.\n"
//结点没找到
voidInformation:
inorder(student*head)//定义inorder()函数将考生的总分从大到小排列并输出
inti,k,m=0,j;
student*p[20];
//定义一个指向structstudent的结构体指针数组p
if(head!
=NULL)//如果头指针是空则继续
{m=count(head);
学生成绩统计表\n"
学号姓名性别院系语文英语数学C++平均分总分名次\n"
for(k=0;
k<
m;
k++)
p[k]=p1;
m-1;
k++)//选择排序法
for(j=k+1;
j<
j++)
if(p[k]->
p[j]->
total)
p2=p[k];
p[k]=p[j];
p[j]=p2;
for(i=0;
i<
i++)
voidInformation:
average(student*head)//求各科平均成绩的函数
intk,m;
floatarg1=0,arg2=0,arg3=0,arg4=0;
if(head==NULL)//如果头指针是空则继续
这是一个空表,请先输入学生成绩.\n"
m=count(head);
arg1+=p1->
score[0];
arg2+=p1->
score[1];
arg3+=p1->
score[2];
arg4+=p1->
arg1/=m;
arg2/=m;
arg3/=m;
arg4/=m;
全班单科成绩平均分\n"
语文平均分:
setw(7)<
arg1
英语平均分:
arg2
数学平均分:
arg3
C++平均分:
arg4<
save(student*head)//保存函数.
ofstreamout("
data.txt"
ios:
out);
out<
count(head)<
while(head!
{out<
head->
name<
\t"
sex<
score[0]<
score[1]<
score[2]<
score[3]<
head=head->
Read()//读取函数的实现
{inti=0;
p1=p2=(student*)malloc(LEN);
head=NULL;
ifstreamin("
in>
i;
if(i==0){cout<
data.txt文件中的数据为空,请先输入数据。
return0;
else{
…………………………………………………………………………………………"
for(;
i>
0;
i--)
{p1=(student*)malloc(LEN);
st.name>
st.id>
st.sex
>
st.score[0]>
st.score[1]>
st.score[2]>
st.score[3]
st.total;
name,st.name);
id=st.id;
sex,st.sex);
score[0]=st.score[0];
score[1]=st.score[1];
score[2]=st.score[2];
score[3]=st.score[3];
total=st.total;
if(n==0)head=p1;
//如果是输入第一组学生考试信息就将指针p1赋给指针head
elsep2->
//否则将p1赋给p2所指结构体的next指针
//将指针p1赋给指针p2
n++;
//将n的值加1
"
//显示读入数据
//
cout<
数据已经成功读取完毕。
return(head);
intmain()//主函数.
system("
color4f"
);
//改变登陆界面颜色
Informationperson;
student*head=NULL;
charstr[5];
intchoice;
longinti;
charadmin[20];
charpass[30];
请输入账号\n"
admin;
请输入密码\n"
pass;
if(strcmp(admin,"
1111"
)==0&
strcmp(pass,"
222"
)==0)
{
***********************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 C+ 语言 程序代码