正文

成绩系统2005-08-07 10:37:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/3586.html

分享到:

#include <iostream.h>
#include <string.h>
#include <fstream.h>

struct student
{
char num[10];
char name[20];
int  age;
int  score;
struct student *next;
};
class grade
{
private :
    struct student * head,* last;    
public :
    void init();
    void insert();
    int delete();
    int select();
    int modify();
    int display();
    int total();
    void savefile();
    void quit();
};

void grade::init()
{
printf("************************************主菜单************************************\n");
printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n");
printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");
printf("\t5显示学生资料\t\t\t\t\t6统计学生成绩\n");
printf("\t7保存学生资料\t\t\t\t\t0退出系统\n");
printf("******************************************************************************\n");
head=last=NULL;
}

void grade::insert()
{
struct student * p;
p=(struct student *)malloc(sizeof(struct student));
cout<<"please insert num,name,age,score"<<endl;
cin>>p->num>>p->name>>p->age>>p->score;
if (head==NULL) {head=p;last=p;last->next=NULL;}
else
    {
    last->next=p;
    last=p;
    last->next=NULL;
    }
}

int grade::delete()
{
char dnum;/* 要删除的学号*/
struct student * p,p1;
cout<<"请你输入要删除的学号:"<<endl;
cin>>dnum;
if (head==NULL) {cout<<"no student can be found"<<endl;return 0;}
if (head->next=NULL && strcpy(head->num,dnum)==0)/* 只有一个记录且是要删除的数据*/
    {head=NULL;last=NULL;return 0;}
p=head;
while(p->next!=NULL)
{
p1=p->next;
if (strcpy(p->num,dnum)==0 && p1->next==NULL )/* 数据在到数第二的位置*/
    {p->next=last;cout<<"one student has been deleted"<<endl;return 0;}
else if (p1==NULL && strcpy(p1->num,dnum)==0)/* 数据在到数第一的位置*/
     {p->next=NULL;last=p;cout<<"one student has been deleted"<<endl;return 0;}
else if (strcpy(p->num,dnum)==0 && p1->next!=NULL )
    {p->next=p1->next;p=p1;/*p=p1;等一下次执行p=p->next;实际p已经指到p1->next了*/
    cout<<"one student has been deleted"<<endl;return 0;}
p=p->next;
}
cout<<"no student can be found"<<endl;return 0;
}

int grade::select()
{
char snum;/* 要查询的学号*/
struct student * p;
cout<<"请你输入要查询的学号:"<<endl;
cin>>snum;
p=head;
while(p!=NULL)
{
if (strcpy(p->num,snum)==0)
    {
    cout<<"num:"<<p->num<<"\nname"<<p->name<<"\nage"<<p->age<<"\nscore"<<p->score<<endl;
    return 0;
    }
p=p->next;
}
cout<<"no student can be found"<<endl;return 0;
}


int grade::modify()
{
char mnum;/* 要修改的学号*/
struct student *p;
cout<<"请你输入要修改的学号:"<<endl;
cin>>mnum;
p=head;
while(p!=NULL)
{
if (strcpy(p->num,mnum)==0)
    {
    cout<<"please insert the new name,age,score"<<endl;
    cin>>p->name>>p->age>>p->score;
    cout<<"one student has been modify"<<endl;
    return 0;
    }
p=p->next;
}
cout<<"no student can be found"<<endl;return 0;
}

int grade::display()
{
struct student *p;
p=head;
if (head==NULL) {cout<<"no student can be found"<<endl;return 0;}
while(p!=NULL)
{
cout<<"num:"<<p->num<<"\nname"<<p->name<<"\nage"<<p->age<<"\nscore"<<p->score<<endl;
p=p->next;
}
return 0;
}


int grade::total()
{
int max,jg_num=0;
struct student *p;
p=head;
if (head==NULL) {cout<<"no student can be found"<<endl;return 0;}
max=p->score;
while(p!=NULL)
{
if (p->score>max) max=p->score;
if (p->score<60) jg++;
p=p->next;
}
cout<<"the high score:"<<max<<endl;
cout<<"不及格学生人数:"<<jg<<endl;
return 0;
}

void savefile()
{
struct student * p;
ifstream input;
input.open("student");
p=head;
while(p!=head)
{
input>>p->num>>p->name>>p->age>>p->score;
p=p->next;
}
cout<<"the file save over"<<endl;
}

int main()
{
int choice;
grade Grage;
Grade.init();
while(1)
{
cin>>choice;
switch(choice)
{
case 1:void Grade.insert(); break;
case 2:int  Grade.delete(); break;
case 3:int  Grade.select(); break;
case 4:int  Grade.modify(); break;
case 5:int  Grade.display();break;
case 6:int  Grade.total();  break;
case 7:int Grade.savefile();break;
case 0:     return 0;       
}
}
return 0;
}

阅读(3966) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册