成绩管理小软件

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct stu
{  
         int num;               //学生的学号
         char name[10];         //学生的姓名
         float score;           //学生的成绩
 }STUDENT;                      //存放单个学生信息的结构体类型

typedef struct node
   { 
      STUDENT  data;       //结点的值
      struct node  *next;//指向下一个结点的地址
   }SNODE;

void showmenu()
{          //显示菜单
    printf("    欢迎使用成绩管理小软件\n");
    printf("\t1、创建学生信息\n");
    printf("\t2、插入学生信息\n");
    printf("\t3、删除学生信息\n");
    printf("\t4、显示学生信息\n");
    printf("\t5、退出程序\n");   
}

SNODE *listcreate(SNODE *head,int n)        //n为该班级的实际人数
{                                         //建立班级学生信息
    int i; 
    SNODE *p=NULL,*q=NULL;
    p=head;
    for(i=1;i<=n;i++)       //循环插入n个学生
    {
        printf("\n请输入第%d位学生的信息:\n",i);
        q=(SNODE *)malloc(sizeof(SNODE));
        printf("学号=");scanf("%d",&q->data.num);     
        printf("姓名=");scanf("%s",q->data.name);     
        printf("成绩=");scanf("%f",&q->data.score);   
        q->next=NULL;
        p->next=q;
        p=q;
        head->data.num++;
    }
    return head;
}

//学生结点的插入
SNODE * listinsert(SNODE * pHead,int pos)
{
    SNODE * cur = NULL;
    SNODE * prev = pHead;
    int i;
    cur = (SNODE * )malloc(sizeof(SNODE));
    if(NULL == cur)
    {
        printf("动态内存分配失败!\n");
        exit(-1);
    }
    else
    {
        while(pos<1||pos>pHead->data.num+1)
        {
            printf("插入的位置非法,请从新输入!\n");
            printf("有效插入位置为1至班级学生人数+1!\n");
            scanf("%d",&pos);
        }
        printf("请输入学生信息:\n");
        printf("学号=");
        scanf("%ld",&cur->data.num);
        printf("姓名=");
        scanf("%s",cur->data.name);
        printf("分数=");
        scanf("%f",&cur->data.score);
        for(i = 1;i<pos;i++)
        {
            prev = prev->next;
        }
        if(prev->next==NULL)
        {
            prev->next = cur;
            cur->next = NULL;
            pHead->data.num ++;
        }
        else
        {
            cur->next = prev ->next;
            prev->next = cur;
            pHead->data.num++;
        }   
    }
    return pHead;
}

//学生结点的删除
SNODE * listdel(SNODE * pHead,int  pos)
{
    SNODE * prev;
    SNODE * cur;
    int i;
    prev = pHead;
    while(pos<1||pos>pHead->data.num)
    {
        printf("您的输入有误,请从新输入!\n");
        printf("有效删除位置为1至班级学生人数!\n");
        scanf("%d",&pos);
    }
    for(i = 1;i<pos;i++)
    {
        prev = prev->next;
    }
    cur = prev->next;
    if(NULL == cur->next )
    {
        prev->next = NULL;
        free(cur);
        pHead->data.num--;
    }
    else
    {
        prev->next = cur->next;
        free(cur);
        pHead->data.num--;
    }
    return pHead;
}

void listdisplay(SNODE *head)
{
     //显示所有学生信息
    SNODE *p;
    p=head->next;
    printf("班级学生信息如下:\n");
    printf("      学号      姓名      成绩\n");
    while(p!=NULL)
        {
         printf("%10d%10s%10.2f\n",p->data.num,p->data.name,p->data.score);
         p=p->next;
        }
    return;
}

void main()      
{
    SNODE *head=NULL;
    int no,stu_count,pos;
    head=(SNODE *)malloc(sizeof(SNODE));//动态建立第一个结点,作为头结点,head指针指向它,
    head->data.num=0;                  //链表为带头结点的单链表
    head->next=NULL;
    while(1)
    {
        showmenu();
        printf("    请输入你的选择:");
        scanf("%d",&no);
        switch(no)
        {
            case 1: printf("班级信息初始化,按任意键继续……\n");
                    getch();
                    printf("请输入班级学生原始人数:");
                    scanf("%d",&stu_count);
                    head=listcreate(head,stu_count);
                    system("cls");
                    showmenu();
                    listdisplay(head);
                    printf("班级信息初始化已经完成,按任意键继续……\n");
                    getch();
                    system("cls");
                    break;
            case 2:printf("插入前班级信息:\n");
                   listdisplay(head);
                   printf("请输入插入位置:");
                   scanf("%d",&pos);                  
                   head=listinsert(head,pos);
                   printf("插入后班级信息:\n");
                   listdisplay(head);
                   printf("插入已经完成,按任意键继续……\n");
                   getch();
                   system("cls");
                   break;
            case 3:printf("删除前班级信息:\n");
                   listdisplay(head);
                   printf("请输入删除位置:");
                   scanf("%d",&pos);
                   head=listdel(head,pos);
                   printf("删除后班级信息:\n");
                   listdisplay(head);
                   printf("删除已经完成,按任意键继续……\n");
                   getch();
                   system("cls");
                   break;
            case 4:listdisplay(head);
                   printf("显示结果如上所示,按任意键继续……\n");
                   getch();
                   system("cls");
                   break;
            case 5:return;
        }
    }   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
才子学生成绩管理系统现推出永久免费版本,无任何时间、功能限制,欢迎广大学校交流使用!如贵校感觉程序好用,请帮助共同宣传推广,谢谢! 1、学籍管理 2、成绩管理 3、作业管理(美术培训学校专用) 4、学生素质评价管理 5、家校沟通(互动)管理   才子学生成绩管理系统 6.0.9升级了以下内容: 1、修正了差序与无差序排列的科目班级排名和年级排名的BUG 2、修正了表前缀为大写时数据库备份显示不了表格的BUG 3、加入了飞信号可以重复 4、管理员登录成绩管理模块中有成绩导入 5、学生登录,成绩综合查询时已显示“缺考”。 6、二次更改学生信息,不能更改学生父母的工作单位和职务BUG。 7、评价模块,启用勾选取消后,校长室成员登录和学生登录也能还能查看的BUG。 8、学生素质评价标题去掉单位名称 软件名称 9、管理员不能查看班级公告的BUG 10、加入了新的软件升级方法   产品优势: (1)适用对象广泛:中小学校、民办学校、培训学校、美术学校、各类教育培训机构! (2)五大功能模块:1、学籍管理 2、成绩管理 3、作业管理(美术培训学校专用) 4、学生素质评价管理 5、家校沟通(互动)管理 (3)B/S模式(什么是B/S模式),只要在能上网的地方,打开IE浏览器就能访问和使用,教师可以在家里上网改作业、录成绩,学生、家长以在家里查询学生的成绩、在校表现、教师的评语并与教师交流……本程序同时也能在单机、局域网中使用。 (4)最完整、详尽的视频帮助教程,让您立刻上手! (5)永久免费提供升级服务,永久免费提供技术售后服务,免去您的一后顾之忧! (6)客户案例众多,反馈使用效果好评如潮,甚至被作为当地政府新闻发布   各用户类型登录名和密码如下: 用户登录 类型 用户名 密码 管理员 admin admin 校长室 老师帐号 老师帐号 班主任 老师帐号 老师帐号 任课老师 老师帐号 老师帐号 年级组长 老师帐号 老师帐号 督察人员 老师帐号 老师帐号 学生 学生学号 学生学号 家长 学生学号 学生学号 'jz' 比如学生学号为20080101 则家长登录密码为20080101jz 注:老师帐号就是他的编号

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值