学生学籍信息管理系统 C++
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
break;
}
//输入学生的成绩信息到内存s[i]中
for(i=0;i<3;i++)
{
cout<<"请开始输入"<<s[i].courseName<<"成绩"<<endl;
for(j=0;j<stuNum;j++)
{
cout<<"学号"<<endl;
cin>>s[i]. score_talbe[j].stuNo;
case '7': help();
}
}while(ch!='0');
return 0;
}
void create()
{ //模块一录入学生信息
int i,j,t=0;
char m;
StuGraInfo s[3]={{"数学",10,5},{"英语",11,4},{"程序设计",12,4}};
fstream file;
char courseName[10]; //课程名称
int courseNo; //课程编号
int creditHour; //学分
struct score
{
int stuNo; //学号
float triGrade; //平时成绩
float examGrade; //卷面成绩
float totalGrade; //综合总评成绩
cout<<setw(60)<<"--------------------------------------"<<endl;
cout<<"请选择(0~7):";
cin>>ch;
while(!(ch<='7'&&ch>='0')) /*输入不在0到5之间无效*/
{
cout<<"数据输入错误,请重新选择(0~7):";
if(!outFile) //使用错误流对象输出错误信息
{
cout<<"文件无法打开"<<endl;
abort();
}
else
{
for(i=0;i<3;i++)
outFile.write((char*)&s[i],sizeof(StuGraInfo));
outFile.close ();//关闭文件
cout<<s[i].courseName<<"平时成绩"<<endl;
cin>>s[i]. score_talbe[j]. triGrade;
cout<<s[i].courseName<<"卷面成绩"<<endl;
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;
cout<<"请输入性别"<<endl;
cin>>d[i].sex;
cout<<"请输入宿舍号"<<endl;
cin>>d[i].domNum;
cout<<"请输入电话号"<<endl;
cin>>d[i].tel;
stuNum++;
cout<<"是否继续?是y,否n"<<endl;
cin>>m;
if(m!='y')
if(!infile)
{
cout<<"data.txt文件不能打开"<<endl;
abort();
}
else
{
for(i=0;i<3;i++) //将文件中的数据读出放在p[i]内
//从文件中读字节到指定的存储器区域。
infile.read ((char*)&p[i],sizeof(StuGraInfo));
int stuNum=0;
int main( )
{
char ch;
do{
cout<<setw(60)<<" "<<endl;
cout<<setw(60)<<"---------欢迎进入系统!--------------"<<endl;
cout<<setw(40)<<"1:创建"<<endl<<setw(40)<<"2:查询"<<endl<<setw(40)<<"3:修改"<<endl<<setw(40)<<"4:排序"<<endl<<setw(40)<<"5:删除"<<endl<<setw(40)<<"6:添加"<<endl<<setw(40)<<"7:帮助"<<endl<<setw(40)<<"0:退出"<<endl;
infile.close ();//关闭文件
}
switch(n)
{
case 1:
cout<<"按学号查询请输入a,按姓名查询输入b,按宿舍号查询输入c"<<endl;
cin>>m;
if(m=='a')
{
cout<<"请输入学号"<<endl;
cin>>k;
for(i=0;i<stuNum;i++)
if(d[i].stuNo==k)
if(!infile)
{
cout<<"test.txt文件不能打开"<<endl;
abort();
}
else
{
for( i=0;infile.peek() != EOF;i++) //将文件中的数据读出放在d[i]
//从文件中读字节到指定的存储器区域。
infile.read ((char*)&d[i],sizeof(StuInfo));
}
else
{
cout<<"请输入好查找的学生的宿舍号"<<endl;
cin>>k;
for(i=0;i<stuNum;i++)
if(d[i].domNum==k)
{
cout<<"该学生学号:"<<d[i].stuNo<<endl;
cout<<"该学生姓名:"<<d[i].name<<endl;
cout<<"该学生性别:"<<d[i].sex<<endl;
cout<<"该学生姓名:"<<d[i].name<<endl;
cout<<"该学生性别:"<<d[i].sex<<endl;
cout<<"该学生宿舍号:"<<d[i].domNum<<endl;
cout<<"该学生电话:"<<d[i].tel<<endl;
t=1;
}
if(t==0) //容错处理
cout<<"没找到"<<endl;
cout<<"该学生宿舍号:"<<d[i].domNum<<endl;
cout<<"该学生电话:"<<d[i].tel<<endl;
t=1;
}
if(t==0) //容错处理
cout<<"没找到"<<endl;
}
break;
case 2:
infile.open ("D:\\data.txt",ios::in|ios::binary);
}
}
//声明文件流对象
ofstream outFile;
//将基本信息写入文件test
outFile.open("D:\\test.txt",ios::out|ios::binary);
if(!outFile) //使用错误流对象输出错误信息
{
cout<<"文件无法打开"<<endl;
abort();
{
cout<<"该学生学号:"<<d[i].stuNo<<endl;
cout<<"该学生姓名:"<<d[i].name<<endl;
cout<<"该学生性别:"<<d[i].sex<<endl;
cout<<"该学生宿舍号:"<<d[i].domNum<<endl;
cout<<"该学生电话:"<<d[i].tel<<endl;
(4)排序模块
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果,排序标准包括总分、某课成绩、某课卷面成绩等。
(5)追加模块
追加学生信息
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
for(i=0;i<N;i++) //输入学生基本信息到内存
{
cout<<"请输入学号"<<endl;
cin>>d[i].stuNo;
for(int k=0;;k++)
{
for(j=0;j<i;j++)
if(d[i].stuNo==d[j].stuNo)
{
cout<<"此学号已存在,请重新输入!"<<endl;
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;
成绩包括数学、英语、程序设计基础三门课成绩
基本信息存放在一个文件,成绩信息存放在另一个文件。
(1)数据录入模块
学生基本信息文件可以在磁盘建立,采用写文件方式录入学生基本信息、各门课程的成绩单。综合成绩通过平时成绩和卷面成绩获得计算得到(平时30%,卷面70%)。
(2)数据修改模块
采用读文件方式读入学生成绩基本信息,进行修改后,以写文件方式写回原文件中。修改时,首先询问要修改信息学生的姓名或学号,然后选择要修改的内容,并输入新的数据进行修改。
t=1;
cin>>d[i].stuNo;
break;
}
if(d[i].stuNo==0)
{
cout<<"学号不能为0,请重新输入!"<<endl;
cin>>d[i].stuNo;
t=1;
break;
}
if(t==0)
break;
}
cout<<"请输入姓名"<<endl;
cin>>d[i].name;
}
else
{
//将内存中从a[i]地址开始的sizeof(d[i])的内容写入文件中
for(i=0;i<stuNum;i++)
outFile.write((char*)&d[i],sizeof(StuInfo));
outFile.close ();//关闭文件
}
outFile.open("D:\\data.txt",ios::out|ios::binary);
#inclபைடு நூலகம்de<iomanip.h>
#define N 80
struct StuInfo
{
int stuNo; //学号
char name[20]; //姓名
char sex[3]; //性别
int domNum; //宿舍号
char tel[12]; //电话号码
}; //学生基本信息结构体
struct StuGraInfo{
(3)查询模块
通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,然后把查找结果输出。若选择后者,则先查找学号对应的姓名,再查找该学生的课程情况,并统计科目和实得总学分,输出结果。
(3)删除模块
通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在两个文件中查找该生信息,删除之。
}score_talbe[N];
}; //成绩单基本信息结构体
void create();
void search();
void insert();
void repin();
void del();
void help();
void recreate();
StuGraInfo p[3];
StuInfo d[N];
一、学生学籍信息管理系统设计
1、需求分析
学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
2、总体设计
整个系统可以设计为数据录入模块、数据修改模块、数据查询模块、数据删除模块和数据排序模块。
t=1;
}
if(t==0) //容错处理
cout<<"没找到"<<endl;
}
else if(m=='b')
{
cout<<"请输入要查找学生的姓名"<<endl;
cin>>a;
for(i=0;i<stuNum;i++)
if(strcmp(d[i].name,a)==0)
{
cout<<"该学生学号:"<<d[i].stuNo<<endl;
cout<<setw(60)<<"--------------------------------------"<<endl;
cin>>n;
while(!(n<=3&&n>=1)) /*输入不在1到3之间无效*/
{
cout<<"数据输入错误,请重新选择(1~3):";
cin>>n;
}
infile.open ("D:\\test.txt",ios::in|ios::binary);
}
}
void search()
{ int n,k,i,j,sum=0,t=0;
char m,a[20];
ifstream infile;
cout<<setw(40)<<"1:查询基本信息"<<endl<<setw(40)<<"2:查询成绩"<<endl<<setw(40)<<"3:退出"<<endl;
}
//输入学生的成绩信息到内存s[i]中
for(i=0;i<3;i++)
{
cout<<"请开始输入"<<s[i].courseName<<"成绩"<<endl;
for(j=0;j<stuNum;j++)
{
cout<<"学号"<<endl;
cin>>s[i]. score_talbe[j].stuNo;
case '7': help();
}
}while(ch!='0');
return 0;
}
void create()
{ //模块一录入学生信息
int i,j,t=0;
char m;
StuGraInfo s[3]={{"数学",10,5},{"英语",11,4},{"程序设计",12,4}};
fstream file;
char courseName[10]; //课程名称
int courseNo; //课程编号
int creditHour; //学分
struct score
{
int stuNo; //学号
float triGrade; //平时成绩
float examGrade; //卷面成绩
float totalGrade; //综合总评成绩
cout<<setw(60)<<"--------------------------------------"<<endl;
cout<<"请选择(0~7):";
cin>>ch;
while(!(ch<='7'&&ch>='0')) /*输入不在0到5之间无效*/
{
cout<<"数据输入错误,请重新选择(0~7):";
if(!outFile) //使用错误流对象输出错误信息
{
cout<<"文件无法打开"<<endl;
abort();
}
else
{
for(i=0;i<3;i++)
outFile.write((char*)&s[i],sizeof(StuGraInfo));
outFile.close ();//关闭文件
cout<<s[i].courseName<<"平时成绩"<<endl;
cin>>s[i]. score_talbe[j]. triGrade;
cout<<s[i].courseName<<"卷面成绩"<<endl;
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;
cout<<"请输入性别"<<endl;
cin>>d[i].sex;
cout<<"请输入宿舍号"<<endl;
cin>>d[i].domNum;
cout<<"请输入电话号"<<endl;
cin>>d[i].tel;
stuNum++;
cout<<"是否继续?是y,否n"<<endl;
cin>>m;
if(m!='y')
if(!infile)
{
cout<<"data.txt文件不能打开"<<endl;
abort();
}
else
{
for(i=0;i<3;i++) //将文件中的数据读出放在p[i]内
//从文件中读字节到指定的存储器区域。
infile.read ((char*)&p[i],sizeof(StuGraInfo));
int stuNum=0;
int main( )
{
char ch;
do{
cout<<setw(60)<<" "<<endl;
cout<<setw(60)<<"---------欢迎进入系统!--------------"<<endl;
cout<<setw(40)<<"1:创建"<<endl<<setw(40)<<"2:查询"<<endl<<setw(40)<<"3:修改"<<endl<<setw(40)<<"4:排序"<<endl<<setw(40)<<"5:删除"<<endl<<setw(40)<<"6:添加"<<endl<<setw(40)<<"7:帮助"<<endl<<setw(40)<<"0:退出"<<endl;
infile.close ();//关闭文件
}
switch(n)
{
case 1:
cout<<"按学号查询请输入a,按姓名查询输入b,按宿舍号查询输入c"<<endl;
cin>>m;
if(m=='a')
{
cout<<"请输入学号"<<endl;
cin>>k;
for(i=0;i<stuNum;i++)
if(d[i].stuNo==k)
if(!infile)
{
cout<<"test.txt文件不能打开"<<endl;
abort();
}
else
{
for( i=0;infile.peek() != EOF;i++) //将文件中的数据读出放在d[i]
//从文件中读字节到指定的存储器区域。
infile.read ((char*)&d[i],sizeof(StuInfo));
}
else
{
cout<<"请输入好查找的学生的宿舍号"<<endl;
cin>>k;
for(i=0;i<stuNum;i++)
if(d[i].domNum==k)
{
cout<<"该学生学号:"<<d[i].stuNo<<endl;
cout<<"该学生姓名:"<<d[i].name<<endl;
cout<<"该学生性别:"<<d[i].sex<<endl;
cout<<"该学生姓名:"<<d[i].name<<endl;
cout<<"该学生性别:"<<d[i].sex<<endl;
cout<<"该学生宿舍号:"<<d[i].domNum<<endl;
cout<<"该学生电话:"<<d[i].tel<<endl;
t=1;
}
if(t==0) //容错处理
cout<<"没找到"<<endl;
cout<<"该学生宿舍号:"<<d[i].domNum<<endl;
cout<<"该学生电话:"<<d[i].tel<<endl;
t=1;
}
if(t==0) //容错处理
cout<<"没找到"<<endl;
}
break;
case 2:
infile.open ("D:\\data.txt",ios::in|ios::binary);
}
}
//声明文件流对象
ofstream outFile;
//将基本信息写入文件test
outFile.open("D:\\test.txt",ios::out|ios::binary);
if(!outFile) //使用错误流对象输出错误信息
{
cout<<"文件无法打开"<<endl;
abort();
{
cout<<"该学生学号:"<<d[i].stuNo<<endl;
cout<<"该学生姓名:"<<d[i].name<<endl;
cout<<"该学生性别:"<<d[i].sex<<endl;
cout<<"该学生宿舍号:"<<d[i].domNum<<endl;
cout<<"该学生电话:"<<d[i].tel<<endl;
(4)排序模块
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果,排序标准包括总分、某课成绩、某课卷面成绩等。
(5)追加模块
追加学生信息
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
for(i=0;i<N;i++) //输入学生基本信息到内存
{
cout<<"请输入学号"<<endl;
cin>>d[i].stuNo;
for(int k=0;;k++)
{
for(j=0;j<i;j++)
if(d[i].stuNo==d[j].stuNo)
{
cout<<"此学号已存在,请重新输入!"<<endl;
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;
成绩包括数学、英语、程序设计基础三门课成绩
基本信息存放在一个文件,成绩信息存放在另一个文件。
(1)数据录入模块
学生基本信息文件可以在磁盘建立,采用写文件方式录入学生基本信息、各门课程的成绩单。综合成绩通过平时成绩和卷面成绩获得计算得到(平时30%,卷面70%)。
(2)数据修改模块
采用读文件方式读入学生成绩基本信息,进行修改后,以写文件方式写回原文件中。修改时,首先询问要修改信息学生的姓名或学号,然后选择要修改的内容,并输入新的数据进行修改。
t=1;
cin>>d[i].stuNo;
break;
}
if(d[i].stuNo==0)
{
cout<<"学号不能为0,请重新输入!"<<endl;
cin>>d[i].stuNo;
t=1;
break;
}
if(t==0)
break;
}
cout<<"请输入姓名"<<endl;
cin>>d[i].name;
}
else
{
//将内存中从a[i]地址开始的sizeof(d[i])的内容写入文件中
for(i=0;i<stuNum;i++)
outFile.write((char*)&d[i],sizeof(StuInfo));
outFile.close ();//关闭文件
}
outFile.open("D:\\data.txt",ios::out|ios::binary);
#inclபைடு நூலகம்de<iomanip.h>
#define N 80
struct StuInfo
{
int stuNo; //学号
char name[20]; //姓名
char sex[3]; //性别
int domNum; //宿舍号
char tel[12]; //电话号码
}; //学生基本信息结构体
struct StuGraInfo{
(3)查询模块
通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,然后把查找结果输出。若选择后者,则先查找学号对应的姓名,再查找该学生的课程情况,并统计科目和实得总学分,输出结果。
(3)删除模块
通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在两个文件中查找该生信息,删除之。
}score_talbe[N];
}; //成绩单基本信息结构体
void create();
void search();
void insert();
void repin();
void del();
void help();
void recreate();
StuGraInfo p[3];
StuInfo d[N];
一、学生学籍信息管理系统设计
1、需求分析
学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
2、总体设计
整个系统可以设计为数据录入模块、数据修改模块、数据查询模块、数据删除模块和数据排序模块。
t=1;
}
if(t==0) //容错处理
cout<<"没找到"<<endl;
}
else if(m=='b')
{
cout<<"请输入要查找学生的姓名"<<endl;
cin>>a;
for(i=0;i<stuNum;i++)
if(strcmp(d[i].name,a)==0)
{
cout<<"该学生学号:"<<d[i].stuNo<<endl;
cout<<setw(60)<<"--------------------------------------"<<endl;
cin>>n;
while(!(n<=3&&n>=1)) /*输入不在1到3之间无效*/
{
cout<<"数据输入错误,请重新选择(1~3):";
cin>>n;
}
infile.open ("D:\\test.txt",ios::in|ios::binary);
}
}
void search()
{ int n,k,i,j,sum=0,t=0;
char m,a[20];
ifstream infile;
cout<<setw(40)<<"1:查询基本信息"<<endl<<setw(40)<<"2:查询成绩"<<endl<<setw(40)<<"3:退出"<<endl;