#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}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)