C语言学生信息管理系统设计

这是一个使用C语言编写的实现学生信息管理系统的程序,包括录入、显示、查询、修改、删除学生信息,以及按学号、姓名、年龄查询等功能。程序利用链表和结构数组存储学生和系的信息,并提供了从文件读取和保存数据的选项。
摘要由CSDN通过智能技术生成

/*
/*
  数据结构设计要求:
  1、学生信息(struct student)用链表表示;
  2、系信息(struct department)用结构数组表示;
*/

/*功能要求
1. 录入学生信息
2. 显示所有学生信息
3. 按学号查询学生信息
4. 按姓名查询学生信息(支持模糊查询)
5. 按年龄查询学生信息
6. 查询指定学生的所在系的信息(包括系名、系主任、系的办公地点)
7. 修改学生信息
8. 删除学生信息
9. 追加学生信息
10. 保存学生信息到文件
11. 从文件载入学生信息
12. 按成绩从高到低显示所有学生信息[选作题目]
0. 退出系统
*/

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
#include "string.h"
struct student            /*学生信息*/
{
        char num[20];     /*学号*/
        char name[20];    /*姓名*/
        char sex;         /* 性别,'1'->男, '0'->女*/
        short age;        /*年龄*/
        short score[3];   /*三门课程的成绩*/
        short sum;        /*总成绩*/
        short deptid;     /*所在系的系号*/
        struct student *next;
};
struct department           /*系信息,假设总共有3个系*/
{
        short id;           /*系号*/
        char name[20];      /*系名*/
        char dean[20];      /*系主任*/
        char location[30];  /*系的办公地点*/
};
struct department dp[3]={ {1,"艺术设计系","宋俊杰","办公楼104"},{2,"食工系","王英","办公楼105"},{3,"法政系","王凡","办公楼106"}};
int currentNumOfstu=0;
/*录入学生的信息*/
struct student *create()
{
        struct student *p, *q, *head=NULL;
        int k, currentNumOfstu=1,i;
        short sum;
        char tmp[20],str[3];
        printf("输入学生的个数:");
        gets(tmp);
        k=atoi(tmp);
        while(k)
        {
                p=(struct student*)malloc(sizeof(struct student));
                printf("\n=======请输入第%d个结点的信息=======\n", currentNumOfstu);
                printf("学号:");
                gets(p->num);
                printf("姓名:");
                gets(p->name);
                printf("性别,男(1),女(0):");
                p->sex=getchar();
                getchar();
                printf("年龄:");
                gets(str);
                p->age=atoi(str);
                sum=0;
                for(i=0;i<3;i++)
                {
                        printf("课程%d的成绩(整数):",i+1);
                        gets(str);
                        p->score[i]=atoi(str);
                        sum=sum+p->score[i];
                }
                p->sum=sum;
                printf("系号(1或2或3):");
                gets(str);
                p->deptid=atoi(str);
                if(currentNumOfstu==1)
                        head=p;
                else
                        q->next=p;
                q=p;
                p->next=NULL;
                k--;
                currentNumOfstu++;
        }
        printf("\n录入完毕,");
        return head;
}
/*显示所有学生信息*/
void display(struct student *p)
{
        if(p==NULL)
                printf("没有学生的信息\n");
        else
        {       
                printf("\n=========================学生的信息内容如下=========================");
                printf("\n学号\t姓名\t性别\t年龄\t课程1\t课程2\t课程3\t总成绩\t系号\n");
                while(p!=NULL)
                {
                        printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n", p->num, p->name,p->sex=='1'?"男":"女",p->age,p->score[0],p->score[1],p->score[2],p->sum,p->deptid);
                        p=p->next;
                }
        }
        printf("\n显示完毕,");
}
/*按学号查询学生信息*/
struct student *displayOnnum(struct student *head)
{
        struct student *p, *q;
        char x[30];
        if(head==NULL)
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值