C语言 code blocks 结构体 学生管理系统使用指南

C语言 code blocks 结构体 学生管理系统使用指南,第1张

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>//conio 其中定义了通过控制台进行数据输入和数据输出的函数

                  //主要是一些用户通过按键盘产生的对应 *** 作,比如getch()函数等等。

#include <string.h> 

#define TITLE "The student achievement manage system v1.0" 

#define WELCOME "Please input the number of students:(1~%d)\n"

#define TIPS "Please enter your choice \n"

#define MAX 30

#define MENU_MAIN_COUNT 8 /* 主菜单的选项个数*/

//创建一个学生的结构体 

typedef struct student

{

    int xuhao/*学号*/

    float scores[3]//成绩

    struct student *next /*指向学生的指针*/

}stu//用结构体声明一个变量 

stu *head = NULL /*定义结构体链表的头指针并初始化*/ 

//学生人数

int NUM = 0

//菜单

char menu_main[] = "1:Append record\n2:Calculate total and average scores of course\n3:Sort in descending order by score\n4:Sort by ascending order by number\n5:Search by number\n6:Statistic analysis\n7:List record\n0:Exit\n"

//函数声明

void print_menu_main()

//添加学生(增加)

void append_record()

{

stu *p = head

        add()

printf("按任意键返回菜单...\n")

getch()

print_menu_main() 

void add()

{

stu *p,*q

int i,j=0//要初始化

p = (stu *)malloc(sizeof(stu))

printf("\n请输入所添加学生的序号:")

scanf("%d",&(p->xuhao))

printf("\n请输入所添加学生的成绩:")

for(i=0i<3i++)

{

    scanf("%f",p->scores+i)

}

p->next=NULL

if(head==NULL)

{

            head=p//头指针为空,p作为新的头指针 

}

q=head//使q指向头结点

while(q->next&&j < (p->xuhao)-1)//要考虑p是头结点的情况

{

q=q->next

++j

}

        if(q != p)//p不是头结点才连接结点

        {

    p->next=q->next//连接节点 

    q->next=p

        }

void print_menu_main()

{

    int selected = 0//搜选 

    //system("cls")//这个函数的作用是清屏 

    print_menu_tile(TITLE)//打印标题和菜单

    while(!(selected >= 1 && selected <= MENU_MAIN_COUNT))

    {

        printf(TIPS)

        scanf("%d\n",&selected)

        printf("*********************Choice Finished*************\n")

if(selected >= 0 && selected <= MENU_MAIN_COUNT)

{

    break

}

printf("\n>输入错误!(注:请选择 0 - %d)\n", MENU_MAIN_COUNT)

    }

    //执行相应的功能

    menu_main_func[selected]()

}

void (* menu_main_func[])()= //功能菜单,这个是函数类型的指针数组 

{

        exit_system,//退出系统

append_record,//1是输入信息 

total_average,//2求和 平均值

sort_by_score,//排序

sort_by_number,//排序

search,//搜索

stat_analysis,//统计

        list_record,//输出

}

//输出菜单等信息

void print_menu_tile(char *title)

{

    printf("%s\n",TITLE)

    printf(menu_main)

}

void init()

{

    printf(WELCOME,MAX)

    scanf("%d",&NUM)//输入学生人数

}

int main()

{

    init()

    print_menu_main()

}

先写一部分,明天再补充

#includestruct stud { int numchar name[30]float score[3]} int main(){ struct stud stu int ifloat avg printf("input number: ")scanf("%d", &stu.num )printf("input name: " )scanf("%s", stu.name )printf("input 3 score:\n")avg=0for( i=0i<3i++ ) { scanf("%f", &stu.score[i] )avg += stu.score[i] } avg /= 3 printf("average score: %f\n", avg )return 0}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11796669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存