📄 课题一 学生学籍管理.cpp
字号:
#include<fstream.h>
#include<iostream.h>
#include<iomanip.h>//未知
#include<string.h>
static int count=0;//未知
class student{
private:
char numble[10];
char name[10];
char sex[8];
int grade;
float score;
float egtext;
public:
student *next;
char *getn()
{
return numble;
}
float getegtext()
{
return egtext;
}
int getgrade()
{
return grade;
}
void getdata()
{
cout<<"(学号 姓名 性别 年级 已获得学分 四级英语成绩):"<<endl;
cin>>numble>>name>>sex>>grade>>score>>egtext;
}
void disp()
{
cout<<setw(10)<<numble<<setw(6)<<name<<setw(5)<<sex<<setw(6)<<grade<<setw(10)<<score<<setw(10)<<egtext;
}
int cond()
{
if(score<60.0) return 0;
else if(egtext>=60.0) return 2;
else return 1;
}
};
void func1()
{
ofstream grade2("s2.dat");
if(!grade2)
{
cout<<"Cannot open file!\n";
return;
}
ofstream grade4("s4.dat");
if(!grade4)
{
cout<<"Cannot open file!\n";
return;
}
ofstream output("student.dat");
if(!output)
{
cout<<"Cannot open file!\n";
return;
}
student s;
int n;
cout<<"输入学生数据:" <<endl;
cout<<"学生人数:";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"第"<<i+1<<"个学生"<<endl;
s.getdata();
output.write((char*)&s,sizeof(s));
if(s.getgrade()==2)
{
grade2.write((char*)&s,sizeof(s));
count++;
}
if(s.getgrade()==4)
{
grade4.write((char*)&s,sizeof(s));
}
}
output.close();
grade2.close();
grade4.close();
}
void func2()
{
ifstream input("s4.dat");
if(!input)
{
cout<<"Cannot open file!\n";
return;
}
ofstream out("s1.dat");
if(!out)
{
cout<<"Cannot open file!\n";
return;
}
student s;
cout<<"输出四年级学生毕业情况"<<endl;
cout<<" 学号 姓名 性别 年级 已获得学分 四级英语成绩 "<<endl;
input.read((char*)&s,sizeof(s));
while(input)
{
if(s.cond()==0)
{
char data[30]="不能毕业,不能获得学士学位.";
out.write((char*)&s,sizeof(s));
out.write((char*)data,sizeof(data));
s.disp();
cout<<" 不能毕业,不能获得学士学位."<<endl;
}
if(s.cond()==1)
{
char data[30]="能毕业,但不能获得学士学位.";
out.write((char*)&s,sizeof(s));
out.write((char*)data,sizeof(data));
s.disp();
cout<<" 能毕业,但不能获得学士学位."<<endl;
}
if(s.cond()==2)
{
char data[30]="能毕业,能获得学士学位.";
out.write((char*)&s,sizeof(s));
out.write((char*)data,sizeof(data));
s.disp();
cout<<" 能毕业,能获得学士学位."<<endl;
}
input.read((char*)&s,sizeof(s));
}
out.close();
}
void func3()
{
ifstream in("s4.dat");
if(!in)
{
cout<<"Cannot open file!\n";
return;
}
student s;
char no[10];
int a;
for(int i=0;;i++)
{
cout<<"请输入要查询学生的学号与姓名:";
cin>>no>>a;
if(a==0) break;
in.read((char*)&s,sizeof(s));
while(in)
{
if(strcmp(s.getn(),no)==0)
{
s.disp();
if(s.cond()==0) cout<<"不能毕业,不能获得学士学位.";
if(s.cond()==1) cout<<"能毕业,但不能获得学士学位.";
if(s.cond()==2) cout<<"能毕业,能获得学士学位.";
cout<<endl;
}
break;
in.read((char*)&s,sizeof(s));
}
}
in.close();
}
student *creat()//用来存储学生信息的链表!
{
student stud[10],temp;
ifstream in("s2.dat");
if(!in)
{
cout<<"Cannot open file!\n";
}
for(int i=0;i<count;i++)
{
in.read((char*)&stud[i],sizeof(temp));
};
for(i=0;i<count;i++)
for(int j=0;j<count;j++)
if(stud[i].getegtext()<stud[j].getegtext())
{
temp=stud[i];
stud[i]=stud[j];
stud[j]=temp;
}
student *head;
student *p1,*p2;
int n=0;
p1=p2=new student;
*p1=stud[0];
head=NULL;
for(i=0;i<count;i++)
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=new student;
*p1=stud[i+1];
}
p2->next=NULL;
return head;
}
void p(student *head)
{
student *p;
p=head;
if(head!=NULL)
do
{
p->disp();
p=p->next;
cout<<endl;
}while(p!=NULL);
}
void main()
{ int sle;
do
{
cout<<"选择\n 1:输入学生数据\n 2:输出大四学生毕业与取得学位情况\n 3:输出大二学生的四级英语成绩(由高到低)\n 4:查询大四学生毕业与取得学位情况 \n";
cin>>sle;
switch(sle)
{
case 1:func1();break;
case 2:func2();break;
case 3:student *creat();p(creat());break;
case 4:func3();break;
}
}while(sle==1||sle==2||sle==3||sle==4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -