无语了 暂时 混乱至极
简直 无语了 第一个 选项 写完 一看 代码 .. 一个 悲摧啊~混乱 ......定义都是 随手的 ...程序代码:
# include <stdio.h> # include <stdlib.h> # include <malloc.h> # define student_1 sizeof (struct student) # define NULL 0 # include <windows.h> //首先程序功能是 学生数据管理 所以 需要的功能尽量写上去 void esc_esc (void); void hello_1 (void); struct student * head, * p1, * p2; void wait_3 (void); int i = 2; struct student { char name[22]; char sex[1]; float score_1; float score_2; float score_3; float score_4; int number; struct student * next; }; void getchar_1_1 (struct student *); void getchar_1_2 (struct student *); void getchar_1_3 (struct student *); void getchar_1_4 (struct student *); void getchar_1_5 (struct student *); void getchar_1_4 (struct student *); void wait_1_1 (void); void wait_1_2 (void); void wait_1_3 (void); void wait_1_4 (void); void wait_1_5 (void); void wait_1_6 (void); void endschar (void); void getchar_1_x (void); void hello_1 (void); void judge_1_x (int ); int judge_no (void)//错误后输入 { int z; printf ("\n对不起,您的输入有误请重新输入..."); fflush(stdin);//清空磁盘缓冲区 scanf ("%d",&z); return z; } void changes (struct student * p1,struct student * p2)//此函数用于更改链表 思路 源于 TonyDeng兄 { } struct student * godis (void); void changes_1 (struct student * p, struct student * n)//此函数用于连接链表 { p->next = n; } void goto_1 ()//继续输入 { struct student * p; p1->next = p = godis (); p1 = p; p->number = i++; getchar_1_1 (p); endschar (); hello_1 (); getchar_1_x (); } void changes_1_x () {} void putchar_1 () { int j = 0; p1 = head; for (;j<i-1;) { printf ("%s %s %f %f %f %f\n", p1->name,p1->sex,p1->score_1,p1->score_2,p1->score_3,p1->score_4); printf ("%d\n", p1->number); p1 = p1->next; j++; } } void judge_1_x (int a) { switch (a) { case 1: { goto_1 ();//继续输入 break; } case 2: { changes_1_x ();//更改先前输入 break; } case 3: { putchar_1 ();//输出先前输入 break; } default : { esc_esc ();//退出 } } } void getchar_1_x (void) { int a; fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面 scanf ("%d", & a); for (;(a<=4)||(a>=1);) { if (a>4) { a = judge_no (); } else if (a<1) { a = judge_no (); } else { system("cls");//清屏 break; } } judge_1_x (a); } void hello_1 (void)//此函数用于输出 { system("cls");//清屏 printf ("第一位学生信息输入完毕\n"); printf ("1.继续输入\n"); printf ("2.更改先前输入\n"); printf ("3.将先前输入的学生信息输出\n"); printf ("4.退出程序\n"); printf ("*******************************************************************************\n"); printf ("请选择........"); } void save_1 (void) {} void read_1 (void) {} void endschar (void) { printf ("\n*******************************************************************************\n"); } void wait_1_6 (void) { printf ("\n"); printf ("*******************************************************************************\n"); printf ("你好欢迎使用\n请输入学生计算机成绩按回车结束......"); } void wait_1_5 (void) { printf ("\n"); printf ("*******************************************************************************\n"); printf ("你好欢迎使用\n请输入学生英语成绩按回车结束......"); } void wait_1_4 (void) { printf ("\n"); printf ("*******************************************************************************\n"); printf ("你好欢迎使用\n请输入学生语文成绩按回车结束......"); } void wait_1_3 (void) { printf ("\n"); printf ("*******************************************************************************\n"); printf ("你好欢迎使用\n请输入学生数学成绩按回车结束......"); } void wait_1_2 (void) { printf ("\n"); printf ("*******************************************************************************\n"); printf ("你好欢迎使用\n请输入学生性别(如:男)按回车结束......"); } void wait_1_1 (void) { system("cls");//清屏 printf ("\n"); printf ("*******************************************************************************\n"); printf ("你好欢迎使用\n请输入学生名字按回车结束......"); } struct student * godis (void)//此函数用于建立链表 并返回 头指针 { struct student * p; p = (struct student *) malloc (student_1); return p; } void getchar_1_6 (struct student * p) { wait_1_6 (); fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面 scanf ("%f", &(p->score_4)); } void getchar_1_5 (struct student * p) { wait_1_5 (); fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面 scanf ("%f", &(p->score_3)); getchar_1_6 (p); } void getchar_1_4 (struct student * p) { wait_1_4 (); fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面 scanf ("%f", &(p->score_2)); getchar_1_5 (p); } void getchar_1_3 (struct student * p) { float * k; k = &p->score_1; wait_1_3 (); fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面 scanf ("%f", k); printf ("%f",* k); getchar_1_4 (p); } void getchar_1_2 (struct student * p) { wait_1_2 (); fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面 scanf ("%s", &(p->sex)); printf ("%s", p->sex); getchar_1_3 (p); } void getchar_1_1 (struct student * p)//输入姓名函数 首先 这个 地方 需要 考虑的 是 要是 没有 输入的 话 这个 函数 会生成 一个 链表 所以 这里 采用 一个 函数 来建立链表 最好 { wait_1_1 ();//输出选择 fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面 scanf ("%s", &p->name); printf ("%s", p->name); getchar_1_2 (p); } void game_1 (void)//一号选择 函数(一号选择主函数 用于定义第一个链表传递值给予输入函数) { struct student * p; read_1 ();//读取 p = head = p1 = p2 = godis (); head = p; head->number = 1; printf ("%d",p->number); getchar_1_1 (p); endschar (); hello_1 (); getchar_1_x (); } void game_2 (void) {} void game_3 (void) {} void game_4 (void) {} void game_5 (void) {} void esc_esc (void) { printf ("\n\n退出中......"); } void bigan_1 (int z)//判断选择 { switch (z) { case 1: { game_1 (); break; } case 2: { game_2 (); break; } case 3: { game_3 (); break; } case 4: { game_4 (); break; } case 5: { game_5 (); break; } default : { esc_esc (); } } } int judge_1 (int z)//判断输入 { for (;1;) { system("cls");//清屏 if (z<1) { wait_3 (); z = judge_no (); } else if (z>6) { wait_3 (); z = judge_no (); } else { break; } } return z; } int getchar_1 (void)//输入 { int z; fflush(stdin);//清空磁盘缓冲区 printf ("\n\n请输入您的选择后按回车键......."); scanf ("%d",&z); system("cls");//清屏 return z; } void wait_3 (void)//输出选择 { printf ("\n\n\n"); printf ("****************************卍卍卍卍卍卍卍卍卍卍********************************\n"); printf ("*卍卍卍**卍****/////////****卍1.录入学生数据 卍******/////////******卍卍卍**卍*\n"); printf ("*****卍**卍****/////////****卍2.学生数据查询 卍******/////////**********卍**卍*\n"); printf ("*卍卍卍卍卍****/////////****卍3.学生数据更改 卍******/////////******卍卍卍卍卍*\n"); printf ("*卍**卍********/////////****卍4.数据排序选择 卍******/////////******卍**卍*****\n"); printf ("*卍**卍卍卍****/////////****卍5.单科成绩查询 卍******/////////******卍**卍卍卍*\n"); printf ("***************/////////****卍6.退出管理程序 卍******/////////*****************\n"); printf ("****************************卍卍卍卍卍卍卍卍卍卍********************************\n"); } int wait_2 (void)//用户选择输入函数 (主菜单) { int z, t; wait_3 ();//输出选择 z = getchar_1 ();//取的输入值 t = judge_1(z); return t; } void wait_1 (void)//首先调用进入的窗口 { printf ("*******************************************************************************\n"); printf ("*******************************************************************************\n"); printf ("*** O(∩_∩)O 欢迎使用学生系统 O(∩_∩)O ***\n"); printf ("*** O(∩_∩)O 本系统正在调试期 O(∩_∩)O ***\n"); printf ("*** O(∩_∩)O 谢谢使用 O(∩_∩)O ***\n"); printf ("**************************************小偌*************************************\n"); printf ("****************************这个程序的功能会尽力完善***************************\n"); printf ("**********************************~~~~(>_<)~~~~**************制作人: 小偌*****\n"); printf ("*******************************************************************************\n"); printf ("\n\n\n请按回车继续......"); getchar (); system("cls");//清屏 } int main (void) { int a; wait_1 ();//首先调用进入的窗口 a = wait_2 ();//调用录入函数 bigan_1 (a);//判断选择 save_1 (); printf ("\n谢谢使用\n"); return 0; }