学生学籍信息管理系统C++.docx

上传人:b****1 文档编号:2007902 上传时间:2023-05-02 格式:DOCX 页数:29 大小:21.04KB
下载 相关 举报
学生学籍信息管理系统C++.docx_第1页
第1页 / 共29页
学生学籍信息管理系统C++.docx_第2页
第2页 / 共29页
学生学籍信息管理系统C++.docx_第3页
第3页 / 共29页
学生学籍信息管理系统C++.docx_第4页
第4页 / 共29页
学生学籍信息管理系统C++.docx_第5页
第5页 / 共29页
学生学籍信息管理系统C++.docx_第6页
第6页 / 共29页
学生学籍信息管理系统C++.docx_第7页
第7页 / 共29页
学生学籍信息管理系统C++.docx_第8页
第8页 / 共29页
学生学籍信息管理系统C++.docx_第9页
第9页 / 共29页
学生学籍信息管理系统C++.docx_第10页
第10页 / 共29页
学生学籍信息管理系统C++.docx_第11页
第11页 / 共29页
学生学籍信息管理系统C++.docx_第12页
第12页 / 共29页
学生学籍信息管理系统C++.docx_第13页
第13页 / 共29页
学生学籍信息管理系统C++.docx_第14页
第14页 / 共29页
学生学籍信息管理系统C++.docx_第15页
第15页 / 共29页
学生学籍信息管理系统C++.docx_第16页
第16页 / 共29页
学生学籍信息管理系统C++.docx_第17页
第17页 / 共29页
学生学籍信息管理系统C++.docx_第18页
第18页 / 共29页
学生学籍信息管理系统C++.docx_第19页
第19页 / 共29页
学生学籍信息管理系统C++.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生学籍信息管理系统C++.docx

《学生学籍信息管理系统C++.docx》由会员分享,可在线阅读,更多相关《学生学籍信息管理系统C++.docx(29页珍藏版)》请在冰点文库上搜索。

学生学籍信息管理系统C++.docx

学生学籍信息管理系统C++

一、学生学籍信息管理系统设计

1、需求分析

学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。

2、总体设计

整个系统可以设计为数据录入模块、数据修改模块、数据查询模块、数据删除模块和数据排序模块。

成绩包括数学、英语、程序设计基础三门课成绩

基本信息存放在一个文件,成绩信息存放在另一个文件。

(1)数据录入模块

学生基本信息文件可以在磁盘建立,采用写文件方式录入学生基本信息、各门课程的成绩单。

综合成绩通过平时成绩和卷面成绩获得计算得到(平时30%,卷面70%)。

(2)数据修改模块

采用读文件方式读入学生成绩基本信息,进行修改后,以写文件方式写回原文件中。

修改时,首先询问要修改信息学生的姓名或学号,然后选择要修改的内容,并输入新的数据进行修改。

(3)查询模块

通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,然后把查找结果输出。

若选择后者,则先查找学号对应的姓名,再查找该学生的课程情况,并统计科目和实得总学分,输出结果。

(3)删除模块

通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在两个文件中查找该生信息,删除之。

(4)排序模块

通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果,排序标准包括总分、某课成绩、某课卷面成绩等。

(5)追加模块

追加学生信息

#include

#include

#include

#include

#include

#defineN80

structStuInfo

{

intstuNo;//学号

charname[20];//姓名

charsex[3];//性别

intdomNum;//宿舍号

chartel[12];//电话号码

};//学生基本信息结构体

structStuGraInfo{

charcourseName[10];//课程名称

intcourseNo;//课程编号

intcreditHour;//学分

structscore

{

intstuNo;//学号

floattriGrade;//平时成绩

floatexamGrade;//卷面成绩

floattotalGrade;//综合总评成绩

}score_talbe[N];

};//成绩单基本信息结构体

voidcreate();

voidsearch();

voidinsert();

voidrepin();

voiddel();

voidhelp();

voidrecreate();

StuGraInfop[3];

StuInfod[N];

intstuNum=0;

intmain()

{

charch;

do{

cout<

cout<

--------------"<

cout<

创建"<

查询"<

修改"<

排序"<

删除"<

添加"<

帮助"<

退出"<

cout<

cout<<"请选择(0~7):

";

cin>>ch;

while(!

(ch<='7'&&ch>='0'))/*输入不在0到5之间无效*/

{

cout<<"数据输入错误,请重新选择(0~7):

";

cin>>ch;

}

switch(ch)

{

case'1':

create();break;

case'2':

search();break;

case'3':

insert();break;

case'4':

repin();break;

case'5':

del();break;

case'6':

recreate();break;

case'7':

help();

}

}while(ch!

='0');

return0;

}

voidcreate()

{//模块一录入学生信息

inti,j,t=0;

charm;

StuGraInfos[3]={{"数学",10,5},{"英语",11,4},{"程序设计",12,4}};

fstreamfile;

for(i=0;i

{

cout<<"请输入学号"<

cin>>d[i].stuNo;

for(intk=0;;k++)

{

for(j=0;j

if(d[i].stuNo==d[j].stuNo)

{

cout<<"此学号已存在,请重新输入!

"<

t=1;

cin>>d[i].stuNo;

break;

}

if(d[i].stuNo==0)

{

cout<<"学号不能为0,请重新输入!

"<

cin>>d[i].stuNo;

t=1;

break;

}

if(t==0)

break;

}

cout<<"请输入姓名"<

cin>>d[i].name;

cout<<"请输入性别"<

cin>>d[i].sex;

cout<<"请输入宿舍号"<

cin>>d[i].domNum;

cout<<"请输入电话号"<

cin>>d[i].tel;

stuNum++;

cout<<"是否继续?

是y,否n"<

cin>>m;

if(m!

='y')

break;

}

//输入学生的成绩信息到内存s[i]中

for(i=0;i<3;i++)

{

cout<<"请开始输入"<

for(j=0;j

{

cout<<"学号"<

cin>>s[i].score_talbe[j].stuNo;

cout<

cin>>s[i].score_talbe[j].triGrade;

cout<

cin>>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)//使用错误流对象输出错误信息

{

cout<<"文件无法打开"<

abort();

}

else

{

//将内存中从a[i]地址开始的sizeof(d[i])的内容写入文件中

for(i=0;i

outFile.write((char*)&d[i],sizeof(StuInfo));

outFile.close();//关闭文件

}

outFile.open("D:

\\data.txt",ios:

:

out|ios:

:

binary);

if(!

outFile)//使用错误流对象输出错误信息

{

cout<<"文件无法打开"<

abort();

}

else

{

for(i=0;i<3;i++)

outFile.write((char*)&s[i],sizeof(StuGraInfo));

outFile.close();//关闭文件

}

}

voidsearch()

{intn,k,i,j,sum=0,t=0;

charm,a[20];

ifstreaminfile;

cout<

查询基本信息"<

查询成绩"<

退出"<

cout<

cin>>n;

while(!

(n<=3&&n>=1))/*输入不在1到3之间无效*/

{

cout<<"数据输入错误,请重新选择(1~3):

";

cin>>n;

}

infile.open("D:

\\test.txt",ios:

:

in|ios:

:

binary);

if(!

infile)

{

cout<<"test.txt文件不能打开"<

abort();

}

else

{

for(i=0;infile.peek()!

=EOF;i++)//将文件中的数据读出放在d[i]

//从文件中读字节到指定的存储器区域。

infile.read((char*)&d[i],sizeof(StuInfo));

infile.close();//关闭文件

}

switch(n)

{

case1:

cout<<"按学号查询请输入a,按姓名查询输入b,按宿舍号查询输入c"<

cin>>m;

if(m=='a')

{

cout<<"请输入学号"<

cin>>k;

for(i=0;i

if(d[i].stuNo==k)

{

cout<<"该学生学号:

"<

cout<<"该学生姓名:

"<

cout<<"该学生性别:

"<

cout<<"该学生宿舍号:

"<

cout<<"该学生电话:

"<

t=1;

}

if(t==0)//容错处理

cout<<"没找到"<

}

elseif(m=='b')

{

cout<<"请输入要查找学生的姓名"<

cin>>a;

for(i=0;i

if(strcmp(d[i].name,a)==0)

{

cout<<"该学生学号:

"<

cout<<"该学生姓名:

"<

cout<<"该学生性别:

"<

cout<<"该学生宿舍号:

"<

cout<<"该学生电话:

"<

t=1;

}

if(t==0)//容错处理

cout<<"没找到"<

}

else

{

cout<<"请输入好查找的学生的宿舍号"<

cin>>k;

for(i=0;i

if(d[i].domNum==k)

{

cout<<"该学生学号:

"<

cout<<"该学生姓名:

"<

cout<<"该学生性别:

"<

cout<<"该学生宿舍号:

"<

cout<<"该学生电话:

"<

t=1;

}

if(t==0)//容错处理

cout<<"没找到"<

}

break;

case2:

infile.open("D:

\\data.txt",ios:

:

in|ios:

:

binary);

if(!

infile)

{

cout<<"data.txt文件不能打开"<

abort();

}

else

{

for(i=0;i<3;i++)//将文件中的数据读出放在p[i]内

//从文件中读字节到指定的存储器区域。

infile.read((char*)&p[i],sizeof(StuGraInfo));

infile.close();

cout<<"请输入要查找的学生的学号"<

cin>>k;

for(i=0;i

if(d[i].stuNo==k)

{

cout<<"该学生姓名为:

"<

t=1;

}

if(t==0)//容错处理

cout<<"没找到"<

for(i=0;i<3;i++)//找到该学生,输出成绩信息并记录实得学分

for(j=0;j

{

if(p[i].score_talbe[j].stuNo==k)

{

cout<

"<

cout<<"\t"<<"卷面成绩:

"<

cout<<"\t"<<"总分:

"<

if(p[i].score_talbe[j].totalGrade>=60)

sum+=p[i].creditHour;//用sum记录及格科目的学分

}

}

cout<<"该学生实得学分为"<

}

case3:

break;

}

}

voidinsert()

{

//模块三修改学生信息

fstreaminfile,outFile;

intn,i,j,t=0;

charcourse[10];

infile.open("D:

\\data.txt",ios:

:

in|ios:

:

binary);

if(!

infile)

{

cout<<"data.txt文件不能打开"<

abort();

}

else

{

for(i=0;i<3;i++)//将文件中的数据读出放在p[i]内,并输出

//从文件中读字节到指定的存储器区域。

infile.read((char*)&p[i],sizeof(StuGraInfo));

infile.close();//关闭文件

cout<<"请输入要修改学生的学号:

"<

cin>>n;

for(i=0;i<3;i++)

for(j=0;j

if(p[i].score_talbe[j].stuNo==n)

{

t=1;

break;

}

if(t==0)

{

cout<<"找不到该学生!

"<

return;

}

cout<<"输入要修改的科目的课程名称"<

cout<<"课程包括数学、英语、程序设计"<

cin>>course;

for(i=0;i<3;i++)

if(strcmp(p[i].courseName,course)==0)

{

t=0;

break;

}

if(t==1)//容错处理

{

cout<<"没找到该科目!

"<

return;

}

for(j=0;j

if(p[i].score_talbe[j].stuNo==n)

{

cout<<"请输入该学生平时成绩"<

cin>>p[i].score_talbe[j].triGrade;

cout<<"请输入该学生卷面成绩"<

cin>>p[i].score_talbe[j].examGrade;

p[i].score_talbe[j].totalGrade=p[i].score_talbe[j].triGrade*0.3+p[i].score_talbe[j].examGrade*0.7;

}

outFile.open("D:

\\data.txt",ios:

:

out|ios:

:

binary);//打开文件

if(!

outFile)//使用错误流对象输出错误信息

{

cout<<"文件无法打开"<

abort();

}

else//输出数据到与对象outFile关联的文件中

{

//把新信息写入文件

for(i=0;i<3;i++)

outFile.write((char*)&p[i],sizeof(StuGraInfo));

outFile.close();//关闭文件

cout<<"修改成功!

"<

}

}

}

voiddel()

{

intnum,i=0,j=0,t=0;

fstreaminfile,outFile;

cout<<"请输入要输入学生的学号"<

cin>>num;

infile.open("D:

\\test.txt",ios:

:

in|ios:

:

binary);

if(!

infile)

{

cout<<"test.txt文件不能打开"<

abort();

}

else

{

for(i=0;i<3;i++)//将文件中的数据读出放在p[i]内,并输出

//从文件中读字节到指定的存储器区域。

infile.read((char*)&d[i],sizeof(StuInfo));

infile.close();

for(i=0;i

if(d[i].stuNo==num)

{

t=1;

d[i].stuNo=0;

d[i].domNum=0;

strcpy(d[i].sex,"\0");

for(j=0;j<12;j++)

d[i].tel[j]=0;

strcpy(d[i].name,"\0");

}

if(t==0)

{

cout<<"未找到该学生!

"<

}

}

infile.open("D:

\\data.txt",ios:

:

in|ios:

:

binary);

if(!

infile)

{

cout<<"data.txt文件不能打开"<

abort();

}

else

{

for(i=0;i<3;i++)//将文件中的数据读出放在p[i]内

//从文件中读字节到指定的存储器区域。

infile.read((char*)&p[i],sizeof(StuGraInfo));

infile.close();

for(i=0;i<3;i++)

for(j=0;j

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;

}

}

outFile.open("D:

\\test.txt",ios:

:

out|ios:

:

binary);

if(!

outFile)//使用错误流对象输出错误信息

{

cout<<"文件无法打开"<

abort();

}

else

{

//将内存中从d[i]地址开始的sizeof(d[i])的内容写入文件中

for(i=0;i<3;i++)

outFile.write((char*)&d[i],sizeof(StuInfo));

outFile.close();//关闭文件

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2