一个简单学生信息管理系统的编程

   这周刚刚学完了线性表,现在就动手实践我很久就想做的事了(怎么感觉到自己懒懒的呢 额, 好像似的,因为这个系统也不算难嘛  重点在于对结构体的操作)  嗯,话不多说,现在就把代码贴出来!




/********************************************************************
文件名:stu_info_mana.cpp
描述:  这个程序用于统计学生的学号,姓名,年龄,性别,专业,班级,
       绩点,证书信息,并实现对其的浏览,查找,排序,增加,删除等
       基本功能
作者: Anka9080
版本: 1.0
完成日期: 2014/3/22
********************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1000
/* 结构体Datatype用来存放每个学生的各种信息 */
typedef struct
{
    int num;
    char name[10];
    int age;
    char sex[3];
    char course[15];
    char cla[5];
    float point;
    char cert[20];
} Datatype;
/* 结构体List可看作一张存放许多学生信息的表,后面主要对这张表进行操作 */
typedef struct
{
    Datatype data[MAXSIZE];
    int len;                             /* 记录学生人数 */
}List;
/*录入学生信息*/
void input_stu(List *L)
{
    int i;
    printf("请输入学生人数:");
    scanf("%d",&L->len);
    printf("请依次输入\n\n");
    printf("学号      姓名   年龄 性别  专业  班级  绩点  证书\n");
    for(i=0;i<L->len;i++)
    {
        scanf("%d%s%d%s%s%s%f%s",&L->data[i].num,L->data[i].name,
            &L->data[i].age,L->data[i].sex,L->data[i].course,
            L->data[i].cla,&L->data[i].point,L->data[i].cert);
    }
}
/* 打印学生信息 */
void print_stu(List *L,int i)
{
    printf("%8d%8s%10d%10s%8s%8s%8.2f    %s\n",L->data[i].num,L->data[i].name,
        L->data[i].age,L->data[i].sex,L->data[i].course,
        L->data[i].cla,L->data[i].point,L->data[i].cert);
}
/* 报错显示 */
void err_stu(void)
{
    printf("\n操作不合法,请重新操作!\n\n");
}
/* 浏览学生信息 */
void display_stu(List *L)
{
    int i;
    printf("学号      姓名      年龄  性别  专业  班级  绩点  证书\n");
    for(i=0;i<L->len;i++)
    {
        print_stu(L,i);
    }
}
/* 查找学生信息 */
void search_stu(List *L)
{
    int sech,num;
    char name[20];
    printf("按学号查找请输入1,按姓名查找请输入2:");
    scanf("%d",&sech);
    if(sech==1)
    {
        printf("\n请输入学号:");
        scanf("%d",&num);
        for(int i=0;i<L->len;i++)
        {
            if(num==L->data[i].num)
            {
                print_stu(L,i);
            }
        }
    }
    if(sech==2)
    {
        printf("\n请输入姓名:");
        scanf("%s",name);
        for(int j=0;j<L->len;j++)
        {
            if(strcmp(name,L->data[j].name)==0)
            {
                print_stu(L,j);
            }
        }
    }
    if(sech!=1&&sech!=2)
    {
        err_stu();
    }
}
/* 排序 */
void sort_stu(List *L)
{
    int ran;
    printf("按学号绩点请输入1,按学号删除请输入2:");
    scanf("%d",&ran);
    if(ran==1)
    {
        printf("按绩点从高到低排序如下:\n\n");
        Datatype temp;
        for(int i=0;i<L->len-1;i++)                           /* 冒泡法对元素point进行排序 */
        {
            for(int j=0;j<(L->len-1)-i;j++)
            {
                if(L->data[j].point < L->data[j+1].point)
                {
                    temp=L->data[j];
                    L->data[j]=L->data[j+1];
                    L->data[j+1]=temp;
                }
            }
        }
    display_stu(L);                                           /* 调用浏览函数对整张表打印输出 */
    }
    if(ran==2)
    {
        printf("按学号从低到高排序如下:\n\n");
        Datatype temp;
        for(int i=0;i<L->len-1;i++)                           /* 冒泡法对元素point进行排序 */
        {
            for(int j=0;j<(L->len-1)-i;j++)
            {
                if(L->data[j].num > L->data[j+1].num)
                {
                    temp=L->data[j];
                    L->data[j]=L->data[j+1];
                    L->data[j+1]=temp;
                }
            }
        }
    display_stu(L);                                           /* 调用浏览函数对整张表打印输出 */
    }
    if(ran!=1&&ran!=2)
    {
        err_stu();
    }
}
/* 插入学生信息 */
void add_stu(List *L)
{
    Datatype temp;
    int temp_num,t=-1;
    printf("请输入该学生各项信息:\n");
    printf("学号      姓名   年龄 性别  专业  班级  绩点  证书\n");
    scanf("%d%s%d%s%s%s%f%s",&temp.num,temp.name,
        &temp.age,temp.sex,temp.course,
        temp.cla,&temp.point,temp.cert);
    printf("若插入A同学前面,请输入A同学的学号:");
    scanf("%d",&temp_num);
    for(int i=0;i<L->len;i++)
    {
        if(temp_num==L->data[i].num)
        {
            t=i;
        }
    }
    if(t==-1)
    {
        err_stu();
    }
    for(int j=L->len-1;j>=t;j--)
    {
        L->data[j+1]=L->data[j];
    }
    L->data[t]=temp;
    L->len++;
}
/* 删除学生信息 */
void del_stu(List *L)
{
    int del,num,t=-1;
    char name[20];
    printf("按学号删除请输入1,按姓名删除请输入2:");
    scanf("%d",&del);
    if(del==1)
    {
        printf("请输入学号:");
        scanf("%d",&num);
        for(int i=0;i<L->len;i++)
        {
            if(num==L->data[i].num)
            {
                t=i;
            }
        }
    }
    if(del==2)
    {
        printf("请输入姓名:");
        scanf("%s",name);
        for(int j=0;j<L->len;j++)
        {
            if(strcmp(name,L->data[j].name)==0);
            {
                t=j;
            }
        }
    }
    if(del!=1&&del!=2)
    {
        err_stu();
    }
    if(t==-1)
    {
        err_stu();
    }
    for(int k=t;k<L->len-1;k++)
    {
        L->data[k]=L->data[k+1];
    }
    L->len--;
}
/* 菜单 */
 void menu_stu()
 {
     printf("***************************************************\n");
     printf("*               大学生信息管理系统                *\n");
     printf("*1------------------------------------录入学生信息*\n");
     printf("*2------------------------------------浏览学生信息*\n");
     printf("*3------------------------------------查找学生信息*\n");
     printf("*4--------------------------------------------排序*\n");
     printf("*5------------------------------------插入学生信息*\n");
     printf("*6------------------------------------删除学生信息*\n");
     printf("*0------------------------------------退出管理系统*\n");
     printf("***************************************************\n");
 }
int main()
{
    List *L;
    int choice;
    L=(List *)malloc(sizeof(List));
    L->len=0;
    printf("            欢迎使用大学生信息查询系统       \n");
    do
    {
        menu_stu();
        printf("\n请输入你的选择:");
        scanf("%d",&choice);
        switch(choice)
        {
        case 1:printf("\n你选择了录入学生信息\n\n");
            input_stu(L);   break;
        case 2:printf("\n你选择了浏览学生信息:\n\n");
            display_stu(L); break;
        case 3:printf("\n你选择了查找学生信息\n\n");
            search_stu(L);  break;
        case 4:printf("\n你选择了对学生进行排序:\n\n");
            sort_stu(L);    break;
        case 5:printf("\n你选择了插入学生信息\n\n");
            add_stu(L);     break;
        case 6:printf("\n你选择了删除学生信息\n\n");
            del_stu(L);     break;
        default: err_stu();
        }
    }
    while(choice!=0);
    free(L);
    printf("感谢你的使用,祝你生活愉快!o(^�^)o ~~\n");
    return 0;
}

下面截张 程序 起始画面:

wKioL1MtepnjHBA5AAEl667zxR0455.jpg

          总共273行  第一次写到这个长度  作为渣渣的我要继续加油哈!

你可能感兴趣的:(C语言,信息管理系统)