史上最详细c语言学生管理系统(完整的源代码)

#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");
     
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值