栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言项目演练【学生信息管理系统】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言项目演练【学生信息管理系统】

参考 exit(0)结束程序

system ("cls"); 清除屏幕

system("pause");

清空缓存区 fflush(stdin);

#include
#include
#include
#include

#define N   10      //数据  
#define LEN 10      //学号
#define NUM 100     //录入学生人数

typedef struct student
{
    char   num[LEN];
    char   name[N];
    float  chinese;
    float  math;
    float  english;
    float  ave;
    student *next;
}student;

void check(student *p)
{
	char   num[LEN],name[N];
    float  chinese,math,english;
    while(1)
    {
    	scanf("%s%s%f%f%f",&num,&name,&chinese,&math,&english);
        if(strlen(num)==9&&(chinese>=0&&chinese<=100)
        &&(math>=0&&math<=100)&&(english>=0&&english<=100))
        {
        	strcpy(p->num,num);strcpy(p->name,name);
	    	p->chinese=chinese,p->english=english,p->math=math;
	    	return ;
        }
        else
        {
            printf("数据错误,请检查一下重新输入->");
        }
    }
}
student *addstu()
{
    system("cls");
    student *p,*q,*h=NULL;
    printf("请输入你想要录入的学生信息人数-> ");
    int n,i;
    scanf("%d",&n); 
    printf("请按照如下格式填写n000000000 张三 100 99 98n");
    for(i=0;inext=NULL;
        printf("---> ");
        check(p);
        //scanf("%s%s%f%f%f",&p->num,&p->name,&p->chinese,&p->math,&p->english);
        if(h==NULL) h=p;
            else     q->next=p;
        q=p;
        printf("n");
    }
    system("pause");
    return h;
}

void all(student *h)
{
    system("cls");
    student *p=h;
    while(p)
    {
        printf("学号tt姓名t语文t数学t英语t平均分tn");
        printf("%stt%st%.1ft%.1ft%.1ft%.2ftn",
        p->num,p->name,p->chinese,p->math,p->english,p->ave);
        p=p->next;
    }
    printf("--------------------------------------------------------------n");
    printf("                          输出完毕                             n");
    system("pause");
}

void bad(student *h)
{
    system("cls");
    student *p=h;
    while(p)
    {
        printf("学号tt姓名t语文t数学t英语t平均分tn");
        if(p->chinese<60||p->english<60||p->math<60)
        {
            printf("%stt%st%.1ft%.1ft%.1ft%.2ftn",
            p->num,p->name,p->chinese,p->math,p->english,p->ave);
        }
        p=p->next;
    }
    printf("--------------------------------------------------------------n");
    printf("                          输出完毕                             n");
    system("pause");
}

void swap(student *s,student *p)
{
    student *t=(student *)malloc(sizeof(student));
    strcpy(t->num,s->num);strcpy(s->num,p->num);strcpy(p->num,t->num);
    strcpy(t->name,s->name);strcpy(s->name,p->name);strcpy(p->name,t->name);
    t->chinese=s->chinese;s->chinese=p->chinese;p->chinese=t->chinese;
    t->english=s->english;s->english=p->english;p->english=t->english;
    t->math=s->math;s->math=p->math;p->math=t->math;
    t->ave=s->ave;s->ave=p->ave;p->ave=t->ave;
    t->next=s->next;s->next=p->next;p->next=t->next;
}

void insert_num(student *h)
{
    student *p,*q,*s;
    int t;
    for(p=h;p;p=p->next)
    {
        s=p;
        for(q=p->next;q;q=q->next)
        {
            if(strcmp(s->num,q->num)>0)
            s=q;
        }
        if(s!=p)   //交换
            swap(s,p);
    }
    printf("交换完毕n"); 
    system("pause");
}
void insert_ave(student *h)
{
    student *p,*q,*s;
    int t;
    for(p=h;p;p=p->next)
    {
        s=p;
        for(q=p->next;q;q=q->next)
        {
            if(s->ave > q->ave)
            s=q;
        }
        if(s!=p)   //交换
            swap(s,p);
    }
    printf("交换完毕n"); 
    system("pause");
}

void ave(student *h)
{
    student *p=h;
    while(p)
    {
        p->ave=(p->chinese+p->english+p->math)/3;
        p=p->next;
    }
    printf("计算完毕n");
    system("pause");
}

void destroy(student *h)
{   student *p;
    while(h!=NULL)
    {
        p = h;              //p指向要销毁的结点
        h = h ->next;    //head指向再下一个要销毁的结点
        free(p);               //销毁p指向的结点
    }
}

int login()
{
    char key[N];
    printf("请输入密码->__");
    while(1)
    {
        scanf("%s",&key);
        if((strcmp("12345",key)==0))
        {
            printf("yeah!n");
            return 1;
        }
        else
        printf("one more time-> ");
    }//重复输入密码直到正确
}

void menu()
{
	system("cls");
    printf("n");
    printf("--------------------___学生信息管理系统___--------------------n");
    printf("-----                                                   ------n");
    printf("-----                        菜单                       ------n");
    printf("-----                                                   ------n");
    printf("-----               [0]退出                              -----n");
    printf("-----               [1]录入                              -----n");
    printf("-----               [2]计算各科平均分                    -----n");
    printf("-----               [3]按平均分排序                      -----n");
    printf("-----               [4]按学号排序                        -----n");
    printf("-----               [5]查看挂科学生信息                  -----n");
    printf("-----               [6]查看全部学生信息                  -----n");
    printf("n");
    printf("--------------------------------------------------------------n");
    student *h=NULL;
    int n;
    printf("PS: 不要忘记先录入成绩哦__");
    printf("选择菜单编号:  ");
    scanf("%d",&n);
    switch(n)
    {
    	case 0:   printf("end......n");destroy(h);exit(0); //退出
     	case 1:   h=addstu();break;  //录入 
		case 2:   ave(h);break;  //计算各科平均分
		case 3:   insert_ave(h);break; //按平均分排序
		case 4:   insert_num(h);break;  //按学号排序 
		case 5:   bad(h);break;  //查看挂科学生信息
		case 6:   all(h);break;  //查看全部学生信息 
		default : printf("请在 0~6 之间进行选择!n");break;
   }
}

int main()
{
    if(login()==0)return 0;
    while(1)
    {
    	menu();
    }
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857085.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号