#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct student
{
char sno[12];
char name[9];
char sex[5];
struct score
{
double China;
double shuxue;
double English;
double sum;
double average;
} fenshu;
int age;
struct student *next;
};
typedef struct student ID;//声明结构体同义词,方便使用
int total;//学生管理系统的实际人数
//各函数的声明
ID* Create(); //创建学生管理系统
void Save(ID *head); //保存学生信息文件
ID * Read(); //读取学生信息文件
void Display(ID * head); //显示学生信息文件
ID* Add(ID* head); //添加学生信息
ID* Change(ID* head); //修改学生信息
void Search(ID *head); //按照姓名或者类型查找学生
ID* Delete(ID *head); //删除学生信息
void Sort(ID *head);
/************************************************
*函数名: main(主函数)
*功能:显示主菜单
*返回值:NULL
*************************************************/
void main()
{
ID*head=NULL;//链表头结点
int choice;//用户菜单选择
while(1)
{
system("cls");//清屏
printf("\n");
printf("*************简易学生管理系统*************\n\n");
printf("\t1.创建简易学生管理系统\n\n");
printf("\t2.显示学生文件信息\n\n");
printf("\t3.添加新学生\n\n");
printf("\t4.修改学生的信息\n\n");
printf("\t5.查找学生\n\n");
printf("\t6.删除学生\n\n");
printf("\t7.排序学生\n\n");
printf("\t8.退出简易学生管理系统\n\n");
printf("\n\n");
printf("请输入你的选择(1~8):");
scanf("%d",&choice);//选择功能
getchar();//吸收回车符
switch(choice)
{
case 1: head=Create(); //创建学生管理系统子函数
break;
case 2: head=Read(); //读取学生管理系统文件子函数
if(head!=NULL)
Display(head); //显示学生管理系统
break;
case 3: head=Read(); //读取学生管理系统文件子函数
if(head!=NULL)
head=Add(head); //添加新生
break;
case 4: head=Read();
if(head!=NULL)
head=Change(head); //修改新生
break;
case 5: head=Read();
if(head!=NULL)
Search(head); //查找学生
break;
case 6: head=Read();
if(head!=NULL)
head=Delete(head); //删除学生
break;
case 7: head=Read();
if(head!=NULL)
Sort(head); //排序学生
break;
case 8: exit(0); //退出
break;
default: printf("\n你输入错了,请你重新输入\n");
getch();
}
}
}
/***********************************************
*函数名:Create(创建)
*功能:创建一个单链表,把数据放在链表里面,一旦需要保存,就调用save函数保存在文件中
*返回值:ID *(结构体链表头节点指针)
***********************************************/
ID* Create()
{
int k=0;
FILE *fp; //定义一个文件指针,接收fopen的返回值,用于最后的关闭文件
ID *head,*p1,*tail,*p3;
if ((fp=fopen("student.txt","r"))==NULL) //如果文件不存在就创建
{
head=p1=tail=NULL;
while(1) //这个循环可以实现多次添加新学生信息
{
bb1: p1= (ID*)malloc(sizeof(ID)); //给p1分配一个动态存储空间
p1->next=NULL;
printf("请输入姓名(当你不想录入时,在姓名处输入*,结束录入):\n");
fflush(stdin);
scanf("%8s",p1->name); //输入姓名
p1->name[8]=0;
if(strcmp(p1->name,"*")==0) //判断输入的是否为*号,是则结束函数
{
if(total==0) //当记录人数为0时不创建学生文件
{
printf("你输入了0条记录,单链表没有创建...\n");
史上最详细c语言学生管理系统(完整的源代码)
最新推荐文章于 2025-11-06 23:46:16 发布

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



