1、 . 一、学生学籍信息管理系统设计 1、需求分析 学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要XX现删除操作;排序功能要XX现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体
2、设计 整个系统可以设计为数据录入模块、数据修改模块、数据查询模块、数据删除模块和数据排序模块。 成绩包括数学、英语、程序设计基础三门课成绩 基本信息存放在一个文件,成绩信息存放在另一个文件。 (1)数据录入模块 学生基本信息文件可以在磁盘建立,采用写文件方式录入学生基本信息、各门课程的成绩单。综合成绩通过平时成绩和卷面成绩获得计算得到(平时30%,卷面70%)。 (2)数据修改模块 采用读文件方式读入学生成绩基本信息,进行修改后,以写文件方式写回原文件中。修改时,首先询问要修改信息学生的XX或学号,然后选择要修改的内容,并输入新的数据进行修改。 (3)查询模块 通过
3、菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、XX或宿舍,然后把查找结果输出。若选择后者,则先查找学号对应的XX,再查找该学生的课程情况,并统计科目和实得总学分,输出结果。
(3)删除模块
通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在两个文件中查找该生信息,删除之。
(4)排序模块
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果,排序标准包括总分、某课成绩、某课卷面成绩等。
(5)追加模块
追加学生信息
#include
4、
#include
5、nt courseNo; //课程编号 int creditHour; //学分 struct score { int stuNo; //学号 float triGrade; //平时成绩 float examGrade; //卷面成绩 float totalGrade; //综合总评成绩 }score_talbe[N]; }; //成绩单基本信息结构体 void create(); void search(); void insert(); void repin(); void del(); void h
6、elp();
void recreate();
StuGraInfo p[3];
StuInfo d[N];
int stuNum=0;
int main( )
{
char ch;
do{
cout< 7、w(40)<<"3:修改"< 8、
{
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 9、': del(); break;
case '6': recreate(); break;
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;
for(i=0;i 10、学生基本信息到内存
{
cout<<"请输入学号"< 11、入!"< 12、ndl;
cin>>m;
if(m!='y')
break;
}
//输入学生的成绩信息到内存s[i]中
for(i=0;i<3;i++)
{
cout<<"请开始输入"< 13、 score_talbe[j]. triGrade;
cout< 14、test
outFile.open("D:\\test.txt",ios::out|ios::binary);
if(!outFile) //使用错误流对象输出错误信息
{
cout<<"文件无法打开"< 15、/关闭文件
}
outFile.open("D:\\data.txt",ios::out|ios::binary);
if(!outFile) //使用错误流对象输出错误信息
{
cout<<"文件无法打开"< 16、int n,k,i,j,sum=0,t=0;
char m,a[20];
ifstream infile;
cout< 17、 数据输入错误,请重新选择(1~3):";
cin>>n;
}
infile.open ("D:\\test.txt",ios::in|ios::binary);
if(!infile)
{
cout<<"test.txt文件不能打开"< 18、ead ((char*)&d[i],sizeof(StuInfo));
infile.close ();//关闭文件
}
switch(n)
{
case 1:
cout<<"按学号查询请输入a,按XX查询输入b,按宿舍号查询输入c"< 19、
{
cout<<"该学生学号:"< 20、找到"< 21、 cout<<"该学生宿舍号:"< 22、 cout<<"该学生学号:"< 23、
break;
case 2:
infile.open ("D:\\data.txt",ios::in|ios::binary);
if(!infile)
{
cout<<"data.txt文件不能打开"< 24、节到指定的存储器区域。
infile.read ((char*)&p[i],sizeof(StuGraInfo));
infile.close();
cout<<"请输入要查找的学生的学号"< 25、 //容错处理
cout<<"没找到"< 26、talbe[j].examGrade;
cout<<"\t"<<"总分:"< =60)
sum+=p[i].creditHour; //用sum记录及格科目的学分
}
}
cout<<"该学生实得学分为"< 27、ndl;
}
case 3:
break;
}
}
void insert()
{
//模块三修改学生信息
fstream infile,outFile;
int n,i,j,t=0;
char course[10];
infile.open ("D:\\data.txt",ios::in|ios::binary);
if(!infile)
{
cout<<"data.txt文件不能打开"< 28、) //将文件中的数据读出放在p[i],并输出
//从文件中读字节到指定的存储器区域。
infile.read ((char*)&p[i],sizeof(StuGraInfo));
infile.close ();//关闭文件
cout<<"请输入要修改学生的学号:"< 29、 if(t==0)
{
cout<<"找不到该学生!"< 30、ndl;
return;
}
for(j=0;j 31、e*0.3+ p[i]. score_talbe[j]. examGrade*0.7;
}
outFile.open("D:\\data.txt",ios::out|ios::binary);//打开文件
if(!outFile) //使用错误流对象输出错误信息
{
cout<<"文件无法打开"< 32、p[i],sizeof(StuGraInfo));
outFile.close ();//关闭文件
cout<<"修改成功!"< 33、t.txt文件不能打开"< 34、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<<"未找到该学生!"< 35、l; //提示错误信息
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 36、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<<"文件无法打开"< 37、else
{
//将内存中从d[i]地址开始的sizeof(d[i])的内容写入文件中
for(i=0;i<3;i++)
outFile.write((char*)&d[i],sizeof(StuInfo));
outFile.close ();//关闭文件
cout<<"基本信息删除成功!"< 38、开"< 39、
double q[N]={0},t;
int stu[N],num;
char name[N][20],stuName[20];
file.open("D:\\data.txt",ios::in|ios::binary);
for(i=0;i<3;i++)
file.read((char *) &p[i],sizeof(StuGraInfo));
file.close();
file.open("D:\\test.txt",ios::in|ios::binary);
for(i=0;i 40、[i],sizeof(StuInfo));
file.close();
cout< 41、 for(j=0;j 42、[max] 43、排序结果为:"< 44、 if(p[i].courseNo==courseNo)
{
k=1;
break;
}
if(k==0) //容错处理
{
cout<<"找不到该课程!"< 45、 for(i=0;i 46、按该课程排序结果为:"< 47、].courseNo==courseNo)
{
k=1;
break;
}
if(k==0) //容错处理
{
cout<<"找不到该课程!"< 48、
}
for(i=0;i 49、 cout<<"按该课程卷面成绩排序结果为:"< 50、进行写入文件,用于保存数据"<>s[i]. score_talbe[j].stuNo;
cout<>s[i]>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;
}
}
//声明文件流对象
ofstream outFile;
//将基本信息写入文件






