鱼C论坛

 找回密码
 立即注册
查看: 2079|回复: 0

[见证历程] 写了个小甲鱼老师留的作业 学生数据管理

[复制链接]
发表于 2018-3-3 16:28:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct student)
struct student
{
        int num;
        int scoer;
        struct student *next;
};
int n;
int main()
{
        struct student *found();
        void print(struct student *);
        struct student *del(struct student *);
        struct student *insert(struct student *,struct student *stu);
        struct student *linked_list=NULL;
        struct student *stu,stud;
    int temp=0;
        char temp1;
        stu = &stud;
        li:
        printf("*********************************************************************\n\n\n");
        printf("                               学生管理系统                               \n\n\n  ");
        printf("*********************************************************************\n");
        printf("创建数据/F      输出数据/P    插入数据/L    删除数据/D\n");

                scanf_s("%c", &temp1, 1);
                getchar();

        if (temp1 == 'F')
        {
                printf("学号输入为0时创建结束\n");
                linked_list = found();
            temp++;
                printf("数据创建完毕\n");
                goto li;
        }
        else if (temp != 0)
        {
                switch (temp1)
                {
                case 'P':print(linked_list); break;
                case 'L':linked_list = insert(linked_list, stu); break;
                case 'D':linked_list = del(linked_list); break;
                default:printf("您输入的不正确。\n");
                }
                goto li;
        }
        else
        {
                printf("请先创建数据\n\n\n\n");
                goto li;
        }

}
struct student *found()
{
        struct student *head, *p1, *p2;
        int back;
        head = NULL;
        n=1;
        p1 = (struct student *)malloc(LEN);
        head = p2 = p1;
       
        do
        {
                printf("please input number :\n");
                back = scanf_s("%d", &p1->num);
                getchar();
        } while (back == 0);


        do
        {
                printf("please input scoer :\n");
                back = scanf_s("%d", &p1->scoer);
                getchar();
        } while (back == 0);
        while (p1->num != 0)
        {
                n = n + 1;
                p1 = (struct student *)malloc(LEN);
               
                do
                {
                        printf("please input number :\n");
                        back = scanf_s("%d", &p1->num);
                        getchar();
                } while (back == 0);

               
                do
                {
                        printf("please input scoer :\n");
                        back = scanf_s("%d", &p1->scoer);
                        getchar();
                } while (back == 0);
                if (p1->num == 0)
                {
                        break;
                }
                else
                {
                        p2->next = p1;
                        p2 = p1;
                }
                p2->next = NULL;


        }
        return head;
}
void print(struct student *head)
{
        struct student *p1, *p2 = NULL;
        p1 = head;
        if (head == NULL)
        {
                printf("The linked list is NULL");
        }
        else
        {
                do
                {
                        printf("number is %d\n",p1->num);
                        printf("scoer is %d\n",p1->scoer);
                        p2 = p1;
                        p1 = p1->next;
                } while (p2->next != NULL);
        }

}
struct student *del(struct student *head)
{
        struct student *p1, *p2 = NULL;
        int num;
        int back;
        p1 = head;
        printf("please input delete number:\n");
        do
        {
                back = scanf_s("%d", &num);
                getchar();
        } while (back == 0);
        while (p1->num != num && p1->next!=NULL)
        {
                p2 = p1;
                p1 = p1->next;
        }
        if (p1 == head)
        {
                head = p1->next;
        }
        else if (p1->num == num)
        {
                if (p1->next == NULL)
                {
                        p2->next= NULL;
                }
                else
                {
                        p2->next = p1->next;
                }
        }
        else
        {
                printf("NO data found\n");
        }
        return head;

}
struct student *insert(struct student *head,struct student *stu)
{
        struct student *p0, *p1, *p2=NULL;
        int back;
        p0 = stu;
        p1 = head;
        do
        {
                printf("please input number:\n");
                back = scanf_s("%d", &p0->num);
                getchar();
        } while (back == 0);
        do
        {
                printf("please input scoer:\n");
                back = scanf_s("%d", &p0->scoer);
                getchar();
        } while (back == 0);
        if (head == NULL)
        {
                head = p0;
        }
        else
        {
                while (p0->num > p1->num&&p1->next != NULL)
                {
                        p2 = p1;
                        p1 = p1->next;
                }if (p1 == head)
                {
                        head = p0;
                        p0->next = p1;
                }
                else if (p0->num <= p1->num)
                {
                        p2->next = p0;
                        p0->next = p1;
                }
                else
                {
                        p1->next = p0;
                        p0->next = NULL;
                }



        }
        return head;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 09:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表