一、本设计涉及的重要C语言知识有:
1.单链表的各种操作
2.文件流的操作
3.单链表的排序
二、本设计主要以下几个模块组成
1.学生成绩添加模块
2.学生成绩删除模块
3.学生成绩修改模块
4.学生成绩检索模块
5.学生成绩显示模块(包括成绩排序)
6.学生成绩保存模块
效果图:


本设计大概5、6百行代码左右,通过这个设计,本人感觉C语言熟练了很多,希望能对像我一样的C语言菜鸟同学会有点帮助,废话少说,咱们上代码!
三、程序代码
1.main.c
这个文件内主要完成主菜单的跳转和接受用户信息完成到各个模块的跳转。
#include
#include "students.h"
int select_menu(void);
void hand_menu(int cmd, int *flag);
void quit();
int main(int argc, char *argv[])
{
int cmd;
int flag = 0;
while(1){
cmd = select_menu();
hand_menu(cmd, &flag);
}
}
int select_menu(void)
{
int select = 0;
printf("**************************************************************\n\n");
printf(" 学生管理系统 \n");
printf(" 1:添加学生信息 2:删除学生信息\n");
printf(" 3:修改学生信息 4:查询学生信息\n");
printf(" 5:查看学生信息 6:保存\n");
printf(" 0:退出\n\n");
printf("**************************************************************\n");
printf("请选择:");
select=getch();
while(select<'0'||select>'6'){
printf("\n输入错误,请重新选择:");
select=getch();
}
return select;
}
void hand_menu(int cmd, int *flag)
{
static STU *stu_head = NULL;
if(*flag == 0){
stu_head = init_student(stu_head);
*flag = 1;
}
switch(cmd){
case '0':
save_student(stu_head);
quit();
break;
case '1':
system("cls");
stu_head = add_student(stu_head);
system("cls");
break;
case '2':
system("cls");
stu_head = del_student(stu_head);
system("cls");
break;
case '3':
system("cls");
modify_student(stu_head);
system("cls");
break;
case '4':
system("cls");
search_student(stu_head);
system("cls");
break;
case '5':
system("cls");
stu_head = display_student(stu_head);
system("cls");
break;
case '6':
system("cls");
save_student(stu_head);
system("cls");
break;
default:
break;
}
}
void quit()
{
printf("\n感谢使用学生管理系统!\n");
exit(0);
}
2.students.h
这个文件主要包含students.c文件函数操作所需的定义。
#ifndef _STUDENTS_H_
#define _STUDENTS_H_
typedef struct st{
unsigned long ID;
char name[10];
float chinese;
float math;
float english;
double all_sub;
float average;
struct st* next;
}STU;
#define ASK_STU(p) do{p=(STU *)malloc(sizeof(STU));\
if(p==NULL){printf("malloc memory failed!\n");exit(1);}\
}while(0)
STU *search_by_nb(STU *stu_head, unsigned long nb);
STU *search_by_name(STU *stu_head, char name[]);
STU *select_sort(STU *g, char flag);
STU *add_student(STU *stu_head);
STU *del_all(STU *stu_head);
STU *del_one(STU *stu_head, int flag);
STU *del_student(STU *stu_head);
void modify_student(STU *stu_head);