学生学籍信息管理系统C++Word格式.docx
《学生学籍信息管理系统C++Word格式.docx》由会员分享,可在线阅读,更多相关《学生学籍信息管理系统C++Word格式.docx(28页珍藏版)》请在冰点文库上搜索。
//性别
intdomNum;
//宿舍号
chartel[12];
//电话号码
};
//学生基本信息结构体
structStuGraInfo{
charcourseName[10];
//课程名称
intcourseNo;
//课程编号
intcreditHour;
//学分
structscore
{
floattriGrade;
//平时成绩
floatexamGrade;
//卷面成绩
floattotalGrade;
//综合总评成绩
}score_talbe[N];
//成绩单基本信息结构体
voidcreate();
voidsearch();
voidinsert();
voidrepin();
voiddel();
voidhelp();
voidrecreate();
StuGraInfop[3];
StuInfod[N];
intstuNum=0;
intmain()
charch;
do{
cout<
<
setw(60)<
"
"
endl;
cout<
---------欢迎进入系统!
--------------"
setw(40)<
1:
创建"
endl<
2:
查询"
3:
修改"
4:
排序"
5:
删除"
6:
添加"
7:
帮助"
0:
退出"
--------------------------------------"
请选择(0~7):
;
cin>
>
ch;
while(!
(ch<
='
7'
&
ch>
0'
))/*输入不在0到5之间无效*/
{
cout<
数据输入错误,请重新选择(0~7):
cin>
}
switch(ch)
{
case'
1'
:
create();
break;
2'
search();
3'
insert();
4'
repin();
5'
del();
case'
6'
recreate();
help();
}
}while(ch!
);
return0;
}
voidcreate()
{//模块一录入学生信息
inti,j,t=0;
charm;
StuGraInfos[3]={{"
数学"
10,5},{"
英语"
11,4},{"
程序设计"
12,4}};
fstreamfile;
for(i=0;
i<
N;
i++)//输入学生基本信息到内存
请输入学号"
d[i].stuNo;
for(intk=0;
k++)
{
for(j=0;
j<
i;
j++)
if(d[i].stuNo==d[j].stuNo)
{
cout<
此学号已存在,请重新输入!
t=1;
cin>
break;
}
if(d[i].stuNo==0)
学号不能为0,请重新输入!
t=1;
break;
if(t==0)
请输入姓名"
d[i].name;
请输入性别"
d[i].sex;
请输入宿舍号"
d[i].domNum;
请输入电话号"
d[i].tel;
stuNum++;
是否继续?
是y,否n"
m;
if(m!
y'
)
//输入学生的成绩信息到内存s[i]中
3;
i++)
请开始输入"
s[i].courseName<
成绩"
for(j=0;
stuNum;
学号"
cin>
s[i].score_talbe[j].stuNo;
平时成绩"
s[i].score_talbe[j].triGrade;
卷面成绩"
s[i].score_talbe[j].examGrade;
s[i].score_talbe[j].totalGrade=s[i].score_talbe[j].triGrade*0.3+s[i].score_talbe[j].examGrade*0.7;
//声明文件流对象
ofstreamoutFile;
//将基本信息写入文件test
outFile.open("
D:
\\test.txt"
ios:
out|ios:
binary);
if(!
outFile)//使用错误流对象输出错误信息
文件无法打开"
abort();
else
//将内存中从a[i]地址开始的sizeof(d[i])的内容写入文件中
i++)
outFile.write((char*)&
d[i],sizeof(StuInfo));
outFile.close();
//关闭文件
\\data.txt"
{
outFile.write((char*)&
s[i],sizeof(StuGraInfo));
outFile.close();
voidsearch()
{intn,k,i,j,sum=0,t=0;
charm,a[20];
ifstreaminfile;
查询基本信息"
查询成绩"
n;
(n<
=3&
n>
=1))/*输入不在1到3之间无效*/
数据输入错误,请重新选择(1~3):
infile.open("
in|ios:
infile)
test.txt文件不能打开"
for(i=0;
infile.peek()!
=EOF;
i++)//将文件中的数据读出放在d[i]
//从文件中读字节到指定的存储器区域。
infile.read((char*)&
infile.close();
switch(n)
case1:
按学号查询请输入a,按姓名查询输入b,按宿舍号查询输入c"
if(m=='
a'
{
k;
for(i=0;
if(d[i].stuNo==k)
{
cout<
该学生学号:
d[i].stuNo<
cout<
该学生姓名:
d[i].name<
该学生性别:
d[i].sex<
该学生宿舍号:
d[i].domNum<
该学生电话:
d[i].tel<
t=1;
}
if(t==0)//容错处理
没找到"
}
elseif(m=='
b'
请输入要查找学生的姓名"
a;
if(strcmp(d[i].name,a)==0)
}
else
请输入好查找的学生的宿舍号"
cin>
if(d[i].domNum==k)
{
cout<
t=1;
}
break;
case2:
infile.open("
data.txt文件不能打开"
for(i=0;
i++)//将文件中的数据读出放在p[i]内
infile.read((char*)&
p[i],sizeof(StuGraInfo));
infile.close();
请输入要查找的学生的学号"
if(d[i].stuNo==k)
该学生姓名为:
i++)//找到该学生,输出成绩信息并记录实得学分
for(j=0;
{
if(p[i].score_talbe[j].stuNo==k)
{
cout<
p[i].courseName<
\t"
平时成绩:
p[i].score_talbe[j].triGrade;
卷面成绩:
p[i].score_talbe[j].examGrade;
总分:
p[i].score_talbe[j].totalGrade<
if(p[i].score_talbe[j].totalGrade>
=60)
sum+=p[i].creditHour;
//用sum记录及格科目的学分
该学生实得学分为"
sum<
}
case3:
voidinsert()
{
//模块三修改学生信息
fstreaminfile,outFile;
intn,i,j,t=0;
charcourse[10];
infile.open("
for(i=0;
i++)//将文件中的数据读出放在p[i]内,并输出
//从文件中读字节到指定的存储器区域。
infile.read((char*)&
infile.close();
请输入要修改学生的学号:
if(p[i].score_talbe[j].stuNo==n)
t=1;
break;
if(t==0)
找不到该学生!
return;
输入要修改的科目的课程名称"
课程包括数学、英语、程序设计"
course;
if(strcmp(p[i].courseName,course)==0)
t=0;
if(t==1)//容错处理
没找到该科目!
return;
{
请输入该学生平时成绩"
请输入该学生卷面成绩"
p[i].score_talbe[j].totalGrade=p[i].score_talbe[j].triGrade*0.3+p[i].score_talbe[j].examGrade*0.7;
outFile.open("
//打开文件
if(!
abort();
else//输出数据到与对象outFile关联的文件中
//把新信息写入文件
outFile.write((char*)&
outFile.close();
修改成功!
}
voiddel()
intnum,i=0,j=0,t=0;
请输入要输入学生的学号"
num;
//提示错误信息
for(i=0;
infile.close();
if(d[i].stuNo==num)
t=1;
d[i].stuNo=0;
d[i].domNum=0;
strcpy(d[i].sex,"
\0"
for(j=0;
12;
d[i].tel[j]=0;
strcpy(d[i].name,"
未找到该学生!
if(p[i].score_talbe[j].stuNo==num)
p[i].score_talbe[j].examGrade=0;
p[i].score_talbe[j].stuNo=0;
p[i].score_talbe[j].totalGrade=0;
p[i].score_talbe[j].triGrade=0;
//将内存中从d[i]地址开始的sizeof(d[i])的内容写入文件中