无语了 暂时 混乱至极
简直 无语了 第一个 选项 写完 一看 代码 .. 一个 悲摧啊~混乱 ......定义都是 随手的 ...
程序代码:# 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;
}




