学生管理系统源码

来源:互联网 发布:linux 域名解析 编辑:程序博客网 时间:2024/06/06 02:26

                     学生管理系统源代码


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(struct teacher)
struct admin
{
    char name[20];
    char pw[20];
}admin1,admin2;

struct teacher
{
    int id;
    int age;
    struct teacher *next;
}; 


//
管理员注册函数
int zhuce()
{   
    FILE *fp;
    printf("\t\t
请注册管理员\n");
    printf("
请输入您的注册账户:\n");
    scanf("%s",admin1.name);
    printf("
请输入您的注册密码: \n");
        system("stty-echo");
    scanf("%s",admin1.pw);
        system("sttyecho");
    if((fp=fopen("fileguanli.txt","wb"))==NULL)
    {
        printf("da kai cuowu");
    }
    if(fwrite(&admin1,sizeof(structadmin),1,fp ) !=1 )
        printf("xie ru cuowu\n");
    fclose(fp);
    return 0;
}


//
管理员读取登录函数
int duqu()
{   int i;
    FILE *fp;
    char name2[20];
    char pw2[20];
    int ret1=0;
    int ret2=0;
    int result=0;
    if((fp=fopen("fileguanli.txt","rb"))==NULL)
    {  
        printf("
请先注册管理员!\n");
    }
    if(fread(&admin2,sizeof(structadmin),1,fp)!=1)
    {
        printf("du qu cuo wu\n");
    }
    for(i=0;i<3;i++)
    {
        printf("
请输入管理员名称:");
        scanf("%s",name2);
        printf("
请输入管理员密码:");
        system("stty-echo");
        scanf("%s",pw2);
        system("stty  echo");
        ret1 =strcmp(name2,admin2.name);
        ret2 =strcmp(pw2,admin2.pw);

        if((ret1==0) &&(ret2==0))
        {
            result = 1;
            printf("
登录成功\n");
            zhujiemian();
            break;
        }
        else
        {
            result = 0;
            printf("
帐号或密码错误,请重新输入\n");
        }
    }
    if(i==3)
    {
        printf("
输入次数超过3次,程序退出\n");
        exit(0);
    }

    fclose(fp);
    return 0;
}

//
管理员操作函数
int admin_operate()
{          void search(struct teacher*head);
    struct teacher *creat(int n);
            struct teacher *xiugai(structteacher *head);
    void cunpan( struct teacher*head);
    struct teacher*duquteacher(void);
    void xianshi(void);
    void duquxianshi();
     struct teacher *head;
     struct teacher *delete(struct teacher*head,int id);
            void print(structteacher  *head);
    int select = 0;
    int n;
    while(1)
    {
        printf("\t\t1:
添加老师信息\t\t2:删除老师信息\n\t\t3:修改老师信息\t\t
        4:
查询老师信息\n\t\t5:显示文件信息\t\t6:保存教师信息\n\t\t7:显示当前信息\t\t8:管理员退出\n");

        printf("
请选择操作选项:");
        scanf("%d",&select);
        switch(select)
        {
            case 1:
                printf("
请输入添加教师信息的数量:\n");
                scanf("%d",&n);
                struct teacher*head;
                head=creat(n);
                break;
            case 2:
                printf("
删除教师信息\n");
                struct teacher
                {
                    int id;
                    int age;
                    struct teacher*next;
                };
                int id;
                printf("
请输入要删除的教师id\n");
                scanf("%d",&id);
                head=delete(head,id);

                break;
            case 3:
                        head=xiugai(head);
                printf("
修改教师信息\n");
                break;
            case 4:
                search(head);
                printf("
查找教师信息\n");
                break;
            case 5:
                printf("
显示教师信息\n");
                duquxianshi();
                break;
            case 6:
                cunpan(head);

                printf("
保存成功\n");
                break;
            case 7:
                 print(head);

                break;
            case 8:
                 printf("
返回主菜单\n");
               return 8;
                default:
                  break;

                printf("modifystudent\n");
                break;
            case 9:
                printf("searchstudent\n");
                break;
            case 10:
                break;
        }//switch
    }//while
}

//
主界面函数
int zhujiemian()
{
    int select = 0;
    int login_retval = 0;
    int operate_retval = 0;


    system("clear");
    while(1)
    {  printf("\n");

        printf("\n");

        printf("\n");
        printf("\t\t***********
欢迎使用学生管理系统***********\n");
        printf("\t\t||\t\t1:
管理员操作\t\t||\n\t\t||\t\t
        2:
教师操作\t\t||\n\t\t||\t\t3:学生操作\t\t||\n\t\t||\t\t4:退出\t\t\t||\n");
        printf("\t\t******************************************\n");
        //      system("clear");
        printf("\t\t
请选择操作选项:");
        scanf("%d",&select);
        switch(select)
        {
            case 1:
                operate_retval =admin_operate();
                break;
            case 2:
                printf("teacher\n");
                break;
            case 3:
                printf("student\n");
                break;
            case 4:
                printf("
系统已经成功退出,谢谢使用!\n");
                exit(0);
                break;
            default:
                break;     
        }//switch
    }//while



    return 0;
}

//
创建教师链表

struct teacher *creat(int n)
{
    int i;
    struct teacher *head,*p1,*p2;
    head=NULL;
    head=p2=(struct teacher * )malloc(LEN);
    printf("
请输入编号,年龄(按回车键结束输入)\n");
    scanf("%d,%d",&p2->id,&p2->age);
    for(i=2;i<=n;i++)
    {
        p1=(struct teacher * )malloc(LEN);
        printf("
请输入编号,年龄(按回车结束输入)\n");
        scanf("%d,%d",&p1->id,&p1->age);

        p2->next=p1;
        p2=p1;
    }
    p2->next=NULL;
    return(head);
}

//
存盘函数
void cunpan( struct teacher *head)
{
    FILE *fp;
    struct teacher *p;
    if((fp=fopen("fileteacher","wb"))==NULL)
    {
        printf("bu neng  da kai wen jian \n");
    }
    p=head;
    while(p!=NULL)
    {
        if(fwrite(p,LEN,1,fp)!=1)
        {
            printf("xie ru chu  cu\n ");
            return;
        }
        p=p->next;
    }
    fclose(fp);
}
//
打印链表

void print(struct teacher *head)
{
    struct teacher *p;
    p=head;
        printf("\t\t\t\t
编号    年龄\n");
    while(p!=NULL)
    {
        printf("\t\t\t\t%d       %d\n",p->id,p->age);
        p=p->next;
    }

}
//
查找函数
void search(struct teacher *head)
{
    int id=0;
    struct teacher *p=NULL;
    struct teacher *q=NULL;
    q=p=head;
    printf("\t\t\t
请输入需要查询的教师ID:");
    scanf("%d",&id);
    while(p!=NULL)
    {
        if(p->id==id)
        {
            printf("\t\t\t
编号     年龄\n");
            printf("\t\t\t%d        %d\n",p->id,p->age);
            break;
        }
        else
        {
            p=p->next;
        }
    }
    if(p==NULL)
    {
        printf("\t\t\t\t\t\t\t\t
ID不存在!\n");
    }
}

//
修改函数
struct teacher *xiugai(struct teacher *head)
{
    int select=0;
    int age;
    struct teacher *p=NULL;
    int id=0;
    char judge=NULL;
    int flag=0;
    p=head;
    if(head==NULL)
    {
        printf("\t
教师链表为空\n");
        return head;
    }
    p=head;
    while(1)
    {
        printf("\t
请输入修改的教师ID:");
        scanf("%d",&id);
        while(p!=NULL)
        {
            if(p->id==id)
            {
                break;
            }

            p=p->next;
        }
        if(p==NULL)
        {
            printf("\t
没有这个老师");
        }
        else
        {
            while(1)
            {
                printf("\t
编号\t\t年龄\n");
                printf("\t\t%d\t%d\n",p->id,p->age);
                printf("\t1:
编号 2:年龄 3:退出\n");
                printf("\t
请选择修改的内容");
                scanf("%d",&select);
                switch(select)
                {
                    case 1:
                        printf("\t
请输入新的编号:");
                        scanf("%d",&p->id);
                        break;
                    case 2:
                        printf("\t
请输入新的年龄:");
                        scanf("%d",&p->age);
                        break;
                    case 3:
                        flag=1;
                        break;
                    default:
                        break;
                }
                if(flag)
                {
                    break;
                }
                printf("\t
继续修改(y),退出(n):");
                while(getchar()!='\n');
                scanf("%c",&judge);
                if(judge == 'n')
                {
                    break;
                }
                else
                {
                    continue;
                }

            }//while
        }
        printf("\t
是否继续修改新的教师信息(y),退出(n):");
        while(getchar()!='\n');
        scanf("%c",&judge);
        if(judge == 'n')
        {
            break;
        }
        else
        {
            continue;
        }

    }//while

    return head;
}


//
读取文件里的 教师信息 并且显示
void duquxianshi()
{
    struct teacher *head;

    struct teacher *s;
    struct teacher *p;
    s=NULL;
    p=NULL;
    FILE *fp;
    if ((fp = fopen ("fileteacher","r+")) == NULL)
    {
        printf ("\t\t\t\t
打开教师文件失败!\n");
    }
    printf("\t\t\t\t
正在读取文件...\n");
    s=malloc (LEN);
    fread (s, LEN, 1, fp);
    if (s == NULL)
    {
        printf ("\t\t\t\t
教师文件为空!\n");
        head = NULL;
    }
    head = p = s;
    s=s->next;
    printf("
编号    年龄\n");
    printf("%d      %d\n",head->id,head->age);
    while (!feof (fp))
    {

        s = malloc (LEN);
        if (fread (s,LEN, 1, fp) !=1)
        {
            free (s);
            break;
        }

        printf("%d       %d\n",s->id,s->age);
        p->next = s;

        p->next = malloc (LEN);
        p = s;
    }
    p->next = NULL;
    fclose (fp);
    printf("\t\t\t\t
已读取教师文件!\n");
}
//
删除教师信息
struct teacher *delete(struct teacher *head,int id)
{ int n;
    struct teacher *p1,*p2;
    if(head==NULL)
    {
        printf("list isnull\n");
        return head;
    }
    p1=head;
    while(id!=p1->id&&p1->next!=NULL)
    {
        p2=p1;
        p1=p1->next;
    }
    if(id==p1->id)
    {
        if(p1==head)
        {head==p1->next; }
        else
            p2->next=p1->next;
        printf("
请输入要删除的编号:%d\n",id);
        n=n-1;
    }
    else printf("%d zhao budao\n",id);
    printf("
删除成功\n");
    return (head);
}

//
主函数
int  main()
{
    int a;
    int b;
    int select;
    system("clear");
    printf("\n\n\n\n\n\n\n\n\n");
    while(1)   
    {  printf("\t\t*********************************************\n");
        printf("\t\t1.
注册管理员  2.管理员登录   3.退出程序 \n");
        printf("\t\t*********************************************\n");
        printf("\t\t
请选择操作选项:");
        scanf("%d",&select);
        switch(select)
        {
            case 1:zhuce();
                   printf("
注册成功!\n");
                   break;
            case  2:duqu();
                    break;
            case 3:
            default :
                    break;
        }
    }
    return 0;
}


 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 迷你世界太卡了怎么办 把线稿画在背景里了怎么办 蜗牛在家里跑了怎么办 小孩总是跟大人犟嘴怎么办 鹅当宠物养拉屎怎么办 金毛肚子胀很大怎么办 被小白兔咬了怎么办 仓鼠养在家里有味怎么办 被宠物仓鼠咬了怎么办 2个月小狗拉稀怎么办 家有很多小飞虫怎么办 孩子不和父母微信交流怎么办 我孩子和我顶嘴怎么办 我属龙孩子属狗怎么办 宝宝呛奶怎么办伴呼噜 离婚了欠的债务怎么办 小鸟生长发育过程壳破了怎么办 经常嗓子发炎抵抗力低下怎么办 生完孩子出虚汗怎么办 3岁宝宝抵抗力差怎么办 5岁宝宝免疫力低怎么办 狗狗后腿o型怎么办 狗狗前腿内八字怎么办 小猫腿摔瘸了怎么办会好吗 小狗的腿断了怎么办 狗后腿摔瘸了怎么办 狗狗脖子挠破了怎么办 狗狗脖子挠破化脓怎么办 狗狗大腿骨折了怎么办啊 狗狗洗澡后拉稀怎么办 狗狗好像生病了怎么办 奶狗前腿断了怎么办 狗摔了一下瘸了怎么办 小狗腿突然瘸了怎么办 狗腿突然瘸了怎么办 狗腿受伤了肿了怎么办 狗狗缺钙腿变形怎么办 小狗腿摔骨折了怎么办 狗狗脚掌被压了怎么办 狗狗的脚骨折了怎么办 给猫灌药水呛到怎么办