学生信息系统
已实现功能:添加学生,列出学生信息列表,删除学生,退出,学号重复检查,排序功能, 多科成绩录入(求平均成绩,及总平均成绩),保存记录,读取记录,修改功能; 待实现功能:查询......
1创建文件,开始编写,增加添加学生函数,增加列出学生函数,增加删除学生函数,退出 版本1.0
2修改内容:增加学号重复检查函数,修复显示内容时程序终止,输出列表函数优化,添加学生函数优化 1.1
3修改内容:增加排序函数,删除函数内部优化,main函数内部改动,添加学生函数优化 1.2
4修改内容:增加多科目录入,添加函数优化,新增总成绩与平均成绩显示,排序函数优化,输出函数改动 1.3,更新到此告一段落,继续学习去(^_^)
5修改内容:新增保存函数,读取函数,主程序修改,新增链表清除函数1.4 修改内容:新增修改函数,新增宏定义MAX_SCORE and MAX_SNO,方便程序的修改,修改程序中所有warning,一些bug修正1.5
#include
#include
#include
#include
#define bool int
#define true 1
#define LEN sizeof(struct ryb)
#define DATAFILE "DATAFILE.WL"
#define MAX_SCORE 150
#define MAX_SNO 200
struct ryb * del_item_ryb (struct ryb * head,int sno,int * del_message);
struct ryb * create_item_ryb (struct ryb * head);
void put_ryb (struct ryb * head);
bool is_sno(struct ryb * head, int sno );
false
struct ryb * order(struct ryb * head, enum ordertype type, int fs );
bool save_data(struct ryb * head);
struct ryb * read_data(void);
void clear(struct ryb * head);
void amend_ryb(struct ryb * head, int sno);
struct ryb { //定义链表数据结构
int sno; //学号
char name[9]; //姓名
int chinese; //语文
int math; //数学
int english; //英语
int clanguage; //C语言
int tiyu; //体育
int score; //总成绩
struct ryb *next;
};
enum ordertype{//定义排序枚举类型
asc,desc
};
int main ( void )
{
struct ryb * head,* temp_h;//链表头,临时链表
bool exit = false;
short int value;//接受输入信息1,2,3,4 1表示添加信息,2显示信息,3删除信息,4排序,5退出
int sno, del_message = 0;//学号,删除函数处理结果(1为删除成功,0为删除失败)
int pxfs,pxlx;//排序方式,排序类型(方式asc\desc);(类型 1学号,2成绩)
char is_quit;//表示是否退出,y或Y表示退出,否则不退出
char is_save;//表示是否保存数据,y或Y表示保存,否则不保存
char is_read;//表示是否读取数据,y或Y表示读取,否则不读取
bool ssave;//表示是否保存成功,true表示成功,false表示保存失败
int amend_sno; //表示要修改的学号
head = (struct ryb *) malloc(LEN);//创建初始链表
head->sno =0;//链表赋初值
head->next = NULL;
do
{
printf("蔚蓝学生管理系统v1.6(C语言版) \n\n");
printf("①添加学生\n②显示成绩列表\n③删除学生\n④排序\n⑤保存数据\n⑥读取数据\n⑦修改\n⑧退出系统\n\n");
printf("等待命令输入:");
fflush(stdin);//清空键盘缓冲区
scanf("%d",&value);
if(value == 1)//添加
{
head = create_item_ryb(head);//添加信息
printf("录入信息结束!\n");
system("pause");
}else if (value == 2)//显示
{
put_ryb(head); //显示信息
system("pause");
}
else if(value == 3)//删除
{
printf("请输入要删除的学生学号:");
fflush(stdin);//清空键盘缓冲区
scanf("%d",&sno);
head = del_item_ryb(head,sno, &del_message); //删除
if(del_message == 1)
{
printf("删除成功!!!\n");
}
else
{
printf("删除失败!!!\n");
}
system ("pause");
}
else if(value == 4)//排序
{ r:
printf ("请请输入排序方式(1升序,2降序):");
fflush(stdin);
scanf("%d",&pxfs);
printf ("请输入排序类型(1按学号,2按成绩):");
fflush(stdin);
scanf("%d",&pxlx);
if (pxfs >2 || pxfs <0 || pxlx > 2 || pxlx <0 )
{
printf ("排序方式或排序类型输入不符合规定!!!请重新输入!!!\n");
system ("pause");