c语言设计流程提问提问

设计一个C语言程序,至少包括1个循环结构、1个选择结构和1个含有参数的用户自定义函数,包涵流程图,解决有创意的实际应用问题。

img

img

img


#include<stdio.h>
    #include<conio.h>//getch的头文件
    #include<stdlib.h>//system的头文件 
    #include<string.h>
    //定义一个学生 
    typedef struct TagStudent
    { 
        int Num;//学号 
        char Name[20];//姓名 
        float Ascore;//平时成绩 
        float Hscore;//作业成绩 
        float Tscore;//考试成绩
        float total;//总成绩 
        struct TagStudent *next;//next指针变量 ,指向结构体变量 
    }Student;
Student *head=NULL;
    void Menu();
    void InputStudent();

    
    int main()
    {
        Menu();
        while(1)
        {   
            //    读取一个字符 
        char ch=getch(); 
            //打印菜单 
            if (ch!= '2')
            {
                system("cls");
                Menu();
                
            } 
            switch(ch)
             {
                case '1'://录入学生信息 
                    InputStudent();
                    break;    

                case '0'://退出系统 
                    printf("欢迎下次使用."); 
                    return 0;
                    break;                
            }            
        }
        return 0;
    } 

    void Menu()
    {
        
            printf("========欢迎使用学生成绩管理系统=======\n");//\t表示制表符
            printf("***************************************\n");
            printf("*\t    请选择功能列表            *\n");     
            printf("***************************************\n");
            printf("*\t    1.录入并保存学生信息      *\n");

        
            printf("*\t    0.退出系统                *\n");
            printf("***************************************\n");
        
    
            
    }


void InputStudent()
    {        
    
        Student* p=head;//当前节点 
        //找到尾节点 
        while(head!=NULL&&p->next!=NULL)
        {
            p=p->next; 
        }
        //定一个新节点
        Student *NewNode=(Student*)malloc(sizeof(Student));
        NewNode->next=NULL;
    
        if(head==NULL)
        {
            head=NewNode;
        }
        else{
            p->next=NewNode; 
        }
        printf("\n请输入学生信息\n ");
        //输入新的学元数据 
        printf("         学号:");
        scanf("%d", &NewNode->Num);
        printf("         姓名:");
        scanf("%s", NewNode->Name);
        printf("     平时成绩:");
        scanf("%f", &NewNode->Ascore);
        printf("     作业成绩:");
        scanf("%f", &NewNode->Hscore);
        printf("     考试成绩:");
        scanf("%f", &NewNode->Tscore);
        FILE *fp=fopen("E:\\student.txt","a");
        if(fp==NULL)
        {
            printf("打开文件失败\n");
            return ;
        }
        //写入数据 
        while(p!=NULL)
        {
            fprintf(fp,"%d %s %.2f  %.2f  %.2f\n",p->Num,
                                                p->Name,
                                                p->Ascore,
                                                p->Hscore,
                                                p->Tscore);    
            p=p->next; 
        }
        fclose(fp);        
        printf("学生信息录取并保存成功!\n");
    }