学生管理系统 订阅
学生信息管理系统是针对学校学生处的大量工作处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用手机和计算机对学生各种信息进行日常管理,如查询、修改、增加、删除等,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管理系统的应用是进一步推进学生学籍管理规范化、电子化、控制辍学和提高义务教育水平的重要举措。 展开全文
学生信息管理系统是针对学校学生处的大量工作处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用手机和计算机对学生各种信息进行日常管理,如查询、修改、增加、删除等,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管理系统的应用是进一步推进学生学籍管理规范化、电子化、控制辍学和提高义务教育水平的重要举措。
信息
针    对
学校学生处的大量工作处理
安全管理
支持精准定位
开    发
管理软件
奖学金管理
:支持学生成绩绩点、任职分值
中文名
学生管理系统
外文名
Student management system
学生管理系统产生背景
学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依*人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。
收起全文
精华内容
参与话题
问答
  • c语言实现的简单学生管理系统

    万次阅读 多人点赞 2017-05-31 20:37:19
    简单学生管理系统–c语言花了一个月的时间,学习了链表,文件,多文件编程,然后就开始写学生管理系统,比较简单的那种,实现了增,添,改,查,多种排序,输入的时候的限定,成绩分析的功能。遇到的问题很多,也...

    简单学生管理系统–c语言

    花了一个月的时间,学习了链表,文件,多文件编程,然后就开始写学生管理系统,比较简单的那种,实现了增,添,改,查,多种排序,输入的时候的限定,成绩分析的功能。遇到的问题很多,也尝试解决了,下面写点写学生管理系统的要注意的地方,希望对别人有帮助。

    1.一定要先写好主函数的框架,然后再往上面加东西,这样说有点笼统,我把我的主函数在下面,可以借鉴下哈。我的主函数是一个while(1)的无限循环,里面一个switch选择,利用一个菜单函数,让其返回值当成switch选择的值,然后进入不同的功能主函数,其他功能主函数和主函数的套路一样。

    int main(int argc, char *argv[]) {
            login();    //这是个的介绍自己的函数
             Sleep(1000);
                //睡眠函数
            while(1)
            {
                switch(menu())
        //主菜单选择函数
                {
                    case 1:
                        system("CLS");
       //清屏函数
                        printf("\t\t________学生成绩添加_______");
                        head=luru();
                        cr(head);
                        int choice;
                        scanf("%d",&choice);
                        if(choice==0)
                            break;
                    case 2:
                        system("CLS");
                        //printf("\t\t_________学生成绩排序和删除___\d");
                        paxu();
                        int end;
                        scanf("%d",&end);
                        if(end==0)
                            break;
                    case 3:
                        system("CLS");
                        printf("\t\t__________成绩的修改__________");
                        xg();
                        int a;
                        scanf("%d",&a);
                        if(a==0)
                            break;
                    case 4:
                        system("CLS");
                        printf("\t\t___________学生信息分析_______");
                        fx();
                        int b; 
                        scanf("%d",&b);
                        if(b==0)
                            break;
                    case 5:
                        system("CLS");
                        printf("\t\t___________谢谢使用哈_______\n");
                        Sleep(1000);
                        exit(-1);   
                        break; 
                }
                system("PAUSE");
            }
        return 0;
    }

    login()函数
    主页面

    2.输入模块一定要注意输入的格式,我采用的尾插法,每次处理好一个节点后就让用户判定是否继续输入,在格式控制方面,我当用户输入一次,就判定它是否符号规范,如果不规范,就重新输入。最后存入文件中。

    学生成绩输入
    输入时候的规范

    3.一定要把函数写的利用率高一点,这样就可以减少代码的重复书写,这个全凭自己的写代码的风格了,我自己在这点也没有做太好,反省中,以前刚开始学c的时候有人说c语言的主体是函数,不太懂,等写完这个,感觉说的真的很对,c语言的函数写好后,在该用的时候直接引用,很方便。

    排序的图片
    按英语成绩排序
    删除学生
    学生成绩分析
    添加学生信息
    学生成绩修改

    完整代码

    主函数

    main.c

    #include <stdio.h>
    #include <stdlib.h>
    #include "student.h"
     #include <string.h>
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char *argv[]) {
            login();
            //struct student *head;
            Sleep(1000);
            while(1)
            {
                switch(menu())
                {
                    case 1:
                        system("CLS");
                        printf("\t\t________学生成绩添加_______");
                        head=luru();
                        cr(head);
                        int choice;
                        scanf("%d",&choice);
                        if(choice==0)
                            break;
                    case 2:
                        system("CLS");
                        //printf("\t\t_________学生成绩排序和删除___\d");
                        paxu();
                        int end;
                        scanf("%d",&end);
                        if(end==0)
                            break;
                    case 3:
                        system("CLS");
                        printf("\t\t__________成绩的修改__________");
                        xg();
                        int a;
                        scanf("%d",&a);
                        if(a==0)
                            break;
                    case 4:
                        system("CLS");
                        printf("\t\t___________学生信息分析_______");
                        fx();
                        int b; 
                        scanf("%d",&b);
                        if(b==0)
                            break;
                    case 5:
                        system("CLS");
                        printf("\t\t___________谢谢使用哈_______\n");
                        Sleep(1000);
                        exit(-1);   
                        break; 
                }
                system("PAUSE");
            }
        return 0;
    }

    函数声明

    student.h

    #include <stdio.h>
    struct student *temp;
    struct student *head;
    struct student{
        int num;
        char name[6];
        int yw;
        int sx;
        int yy;
        struct student*next;
    };
    int menu();
    void login();
    struct student* luru();
    void cr(struct student *h);
    struct student*cc();
    int menu1();
    void paxu();
    void px1();
    void px2();
    void px3();
    void px4();
    void sanch();
    void tj();
    void xg();
    void fx();
    

    函数定义

    student.c

    #include <stdio.h>
    #include "student.h"
    #include <stdlib.h>
    #include <string.h>
    int menu()
    {
            char n; 
            do{
            system("cls");
            printf("\t\t\t|-------------------------------------------------|\n");
            printf("\t\t\t|      *****学生管理系统*****                     |\n");
            printf("\t\t\t|-------------------------------------------------|\n");
            printf("\t\t\t|          1.学生成绩录入                         |\n");
            printf("\t\t\t|          2.学生成绩排序和删除                   |\n");
            printf("\t\t\t|          3.成绩的修改                           |\n");  
            printf("\t\t\t|          4.学生成绩分析                         |\n");
            printf("\t\t\t|          5.退出程序                             |\n"); 
            printf("\t\t\t---------------------------------------------------\n");
            printf("请选择1-5:");
            n=getch(); 
            }while(n<'0'||n>'5');
            return(n-48);
    }
    
    void login()
    {
        printf("\n\n\n\t\t\t  学生信息管理系统\n\n");
        printf("\t\t\t     版本号:0.2\n\n");
        printf("\n\n\n\n\t\t\t    2017年5月10日\n\n");
        printf("\n\n\t\t\t      sakurakid\n");
    } 
    struct student *luru()
    {
    
        struct student*rhead ,*r,*t,*stu;
        rhead=(struct student*)malloc(sizeof(struct student));
        t=rhead;
        rhead->next=NULL;
        char xx;
        int flag=1;
        printf("\t\t_____________________________\n");
        printf("\t\t|        学生管理系统       |\n");
        printf("\t\t_____________________________\n");
        printf("\t\t|                           |\n");
        printf("\t\t|        输入1添加          |\n");
        printf("\t\t|        输入0退出          |\n");
        printf("\t\t|___________________________|\n"); 
        while(xx!='1'&&xx!='0')
        {
            xx=getch();
        }
        if(xx=='1')
        {
            system("CLS");
            do{
                system("CLS");
                stu=(struct student*)malloc(sizeof(struct student));
                printf("\t\t_____________________________\n");
                printf("\t\t|        学生管理系统       |\n");
                printf("\t\t|___________________________|\n");
                printf("\t\t|                           |\n");
                printf("\t\t|        输入1添加          |\n");
                printf("\t\t|        输入0退出          |\n");
                printf("\t\t|___________________________|\n"); 
                printf("\t\t学号: ");scanf("%d",&stu->num);
                if(stu->num > 99999999||stu->num < 10000000)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t_请输入8位非负数__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入学号: ");scanf("%d",&stu->num);
                }
                printf("\t\t姓名: ");scanf("%s",stu->name);
                if(stu->name[0] > 0)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t______姓名请输入汉字__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入姓名: ");scanf("%s",stu->name);
                }
                printf("\t\t语文: ");scanf("%d",&stu->yw);
                printf("\t\t数学: ");scanf("%d",&stu->sx);
                printf("\t\t英语: ");scanf("%d",&stu->yy);
                if(stu->sx<0||stu->sx>100||stu->yw<0||stu->yw>100||stu->yy<0||stu->yy>100)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t_成绩请输入0-100之间__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入成绩\n");
                    printf("\t\t语文: ");scanf("%d",&stu->yw);
                    printf("\t\t数学: ");scanf("%d",&stu->sx);
                    printf("\t\t英语: ");scanf("%d",&stu->yy);
                }
                t->next=stu;
                t=stu;
               xx = getch();
               printf("继续输入请按1,退出请按0:"); 
               while(xx!='1'&&xx!='0')
              {
                 xx=getch();
              }
            }while(xx=='1');
            t->next=NULL;
       }
       return (rhead);
    }
    
    void cr(struct student *h)
    {
        struct student *stu;
        FILE*fp;
        if((fp=fopen("学生信息.txt","wt"))==NULL)
        {
            printf("文件出错233,按任意键退出!");
            getch();
            exit(1); 
        }
        for(stu=h->next;stu!=NULL;stu=stu->next)
        {
            fprintf(fp,"%d %s %d %d %d\n",stu->num,stu->name,stu->yw,stu->sx,stu->yy);
        }
        fclose(fp);
    }
    
    struct student*cc()
    {
        struct student*ahead,*r,*stu;
        FILE*f1;
        f1=fopen("学生信息.txt","rt");
        ahead=(struct student*)malloc(sizeof(struct student));
        ahead->next=NULL;
        r=ahead;
        while(!feof(f1))
        {
            stu=(struct student*)malloc(sizeof(struct student));
            fscanf(f1,"%d %s %d %d %d\n",&stu->num,stu->name,&stu->yw,&stu->sx,&stu->yy);   
            r->next=stu;
            r=stu;
        }
        r->next=NULL;
        fclose(f1);
        return ahead;    
    }
    
    int menu1()
    {
        system("CLS");
        char n;
        do{
        system("CLS");
        printf("\t\t__________________________________________________\n");
        printf("\t\t|                                                |\n");
        printf("\t\t|   1.顺序排序   2.按英语排序   3.按语文排序     |\n");
        printf("\t\t|   4.按数学排序 5.删除学生     6.添加学生       |\n");
        printf("\t\t|                                                |\n");
        printf("\t\t|______________按0退出___________________________|\n");
        printf("\t\t请选择0-6:");
        n=getch(); 
        }while(n<'0'||n>'6');
        return (n-48);      
    } 
    
    void paxu()
    {
        system("CLS");
        char n;
       do{
            switch(menu1())
           {
            case 1:
                px1();
                break;
            case 2:
                system("CLS");
                px2();
                break;
            case 3:
                system("CLS");
                px3();
                break;
            case 4:
                system("CLS");
                px4();
                break;
            case 5:
                system("CLS");
                sanch();
                break;
            case 6:
                system("CLS");
                tj();
                break;
           }
           printf("继续输入请按1,退出请按0:");
           n=getch();
           while(n!='1'&&n!='0')
              {
                 n=getch();
              }
       }while(n=='1');
       if(n=='0')
           return;
    }
    
    void px1()
    {
        struct student *t,*h; 
        h=cc();
        printf("\n");
        printf("\t\t%10s%10s%10s%10s%10s\n","学号","姓名","语文","数学","英语","平均分","总分");
        printf("\t\t--------------------------------------------------------------\n");
        for(t=h->next;t!=NULL;t=t->next)
        {
            printf("\t\t%10d%10s%10d%10d%10d%\n",t->num,t->name,t->yw,t->sx,t->yy);
        } 
    }
    void px2()
    {
        struct student *p,*q,*head,*t; 
        head=cc();
        int tnum;
        char tname[6];
        int tyw;
        int tsx;
        int tyy;
        for(p = head->next;p->next!=NULL;p=p->next){
            for(q=p->next;q!=NULL;q=q->next){
                if(p->yy < q->yy)
                {
                    tnum=p->num;
                    p->num=q->num;
                    q->num=tnum;
    
                    strcpy(tname,p->name);
                    strcpy(p->name,q->name);
                    strcpy(q->name,tname);
    
                    tyw=p->yw;
                    p->yw=q->yw;
                    q->yw=tyw;
    
                    tsx=p->sx;
                    p->sx=q->sx;
                    q->sx=tsx;
    
                    tyy=p->yy;
                    p->yy=q->yy;
                    q->yy=tyy;
    
    
                }
            } 
        }
        printf("\t\t                    英语排序                                   \n");
        printf("\t\t%10s%10s%10s%10s%10s\n","学号","姓名","语文","数学","英语","平均分","总分");
        printf("\t\t--------------------------------------------------------------\n");
        for(t=head->next;t!=NULL;t=t->next)
        {
            printf("\t\t%10d%10s%10d%10d%10d%\n",t->num,t->name,t->yw,t->sx,t->yy);
        } 
    }
    void px3()
    {
        struct student *p,*q,*head,*t; 
        head=cc();
        int tnum;
        char tname[6];
        int tyw;
        int tsx;
        int tyy;
        for(p = head->next;p->next!=NULL;p=p->next){
            for(q=p->next;q!=NULL;q=q->next){
                if(p->yw < q->yw)
                {
                    tnum=p->num;
                    p->num=q->num;
                    q->num=tnum;
    
                    strcpy(tname,p->name);
                    strcpy(p->name,q->name);
                    strcpy(q->name,tname);
    
                    tyw=p->yw;
                    p->yw=q->yw;
                    q->yw=tyw;
    
                    tsx=p->sx;
                    p->sx=q->sx;
                    q->sx=tsx;
    
                    tyy=p->yy;
                    p->yy=q->yy;
                    q->yy=tyy;      
                }
            } 
        }
        printf("\t\t                    语文排序                                   \n");
        printf("\t\t%10s%10s%10s%10s%10s\n","学号","姓名","语文","数学","英语","平均分","总分");
        printf("\t\t--------------------------------------------------------------\n");
        for(t=head->next;t!=NULL;t=t->next)
        {
            printf("\t\t%10d%10s%10d%10d%10d%\n",t->num,t->name,t->yw,t->sx,t->yy);
        } 
    }
    void px4()
    {
        struct student *p,*q,*head,*t; 
        head=cc();
        int tnum;
        char tname[6];
        int tyw;
        int tsx;
        int tyy;
        for(p = head->next;p->next!=NULL;p=p->next){
            for(q=p->next;q!=NULL;q=q->next){
                if(p->sx < q->sx)
                {
                    tnum=p->num;
                    p->num=q->num;
                    q->num=tnum;
    
                    strcpy(tname,p->name);
                    strcpy(p->name,q->name);
                    strcpy(q->name,tname);
    
                    tyw=p->yw;
                    p->yw=q->yw;
                    q->yw=tyw;
    
                    tsx=p->sx;
                    p->sx=q->sx;
                    q->sx=tsx;
    
                    tyy=p->yy;
                    p->yy=q->yy;
                    q->yy=tyy;
                }
            } 
        }
        printf("\t\t                    数学排序                                   \n");
        printf("\t\t%10s%10s%10s%10s%10s\n","学号","姓名","语文","数学","英语","平均分","总分");
        printf("\t\t--------------------------------------------------------------\n");
        for(t=head->next;t!=NULL;t=t->next)
        {
            printf("\t\t%10d%10s%10d%10d%10d%\n",t->num,t->name,t->yw,t->sx,t->yy);
        } 
    }
    void  sanch()
    {
        px1();
        struct student *p,*q,*phead,*t,*m; 
        phead=cc();
        int n;
        int flag=0;
        printf("\t\t____________________________________________________\n");
        printf("\t\t|______________删除学生信息_________________________|\n");
        printf("\t\t|___________________________________________________|\n");
        printf("\t\t请输入要删除的学生学号:");
        scanf("%d",&n);
        p=phead;
        for(m=phead;m!=NULL;m=m->next)
        {
            if(m->num==n)
            {
                printf("\t\t已经查到改学生的信息\n");
                flag=0;
                break;
            }
            else
                flag=1;  
        }
        if(flag==1)
            printf("\t\t抱歉,没有查到该学生的信息\n");
        if(flag==0)
        {
            if(phead->num==n)
           {
              phead=phead->next;
           }
           else
          {
            while(p->num!=n && p->next!=NULL)
            {
                t=p;
                p=p->next;
            }
            if(p->num==n)
            {
                t->next=p->next;
            }
          }
          printf("\t\t该学生信息已删除\n");
        }
        cr(phead);
    }
    void tj()
    {
        struct student *phead,*stu; 
        phead=cc();
        printf("\t\t____________________________________________________\n");
        printf("\t\t|______________添加学生信息_________________________|\n");
        printf("\t\t|___________________________________________________|\n");
        stu=(struct student*)malloc(sizeof(struct student));
        printf("\t\t学号: ");scanf("%d",&stu->num);
                if(stu->num > 99999999||stu->num < 10000000)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t_请输入8位非负数__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入学号: ");scanf("%d",&stu->num);
                }
                printf("\t\t姓名: ");scanf("%s",stu->name);
                if(stu->name[0] > 0)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t______姓名请输入汉字__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入姓名: ");scanf("%s",stu->name);
                }
                printf("\t\t语文: ");scanf("%d",&stu->yw);
                printf("\t\t数学: ");scanf("%d",&stu->sx);
                printf("\t\t英语: ");scanf("%d",&stu->yy);
                if(stu->sx<0||stu->sx>100||stu->yw<0||stu->yw>100||stu->yy<0||stu->yy>100)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t_成绩请输入0-100之间__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入成绩\n");
                    printf("\t\t语文: ");scanf("%d",&stu->yw);
                    printf("\t\t数学: ");scanf("%d",&stu->sx);
                    printf("\t\t英语: ");scanf("%d",&stu->yy);
                } 
            stu->next=phead->next;
            phead->next=stu;
            printf("\t\t学生信息已存入\n");
            cr(phead);
    }
    void xg()
    {
        system("CLS");
        char n;
        do{
        system("CLS");
        px1();
        struct student *p,*q,*phead,*t,*m; 
        int flag=0;
        int timp; 
        phead=cc();
        printf("\t\t____________________________________________________\n");
        printf("\t\t|______________修改学生信息_________________________|\n");
        printf("\t\t|___________________________________________________|\n");
        printf("\t\t请输入要修改的学生学号:");
        scanf("%d",&timp);
        p=phead;
        for(m=phead;m!=NULL;m=m->next)
        {
            if(m->num==timp)
            {
                printf("\t\t已经查到改学生的信息\n");
                flag=0;
                break;
            }
            else
                flag=1;  
        }
        if(flag==1)
            printf("\t\t抱歉,没有查到该学生的信息\n");
        if(flag==0)
        {
            printf("\t\t该学生的原信息如下\n");
        printf("\t\t学号:%d\n",m->num);
        printf("\t\t姓名:%s\n",m->name);
        printf("\t\t语文:%d\n",m->yw);
        printf("\t\t数学:%d\n",m->sx);
        printf("\t\t英语:%d\n\n",m->yy);
        printf("\t\t请重新输入该学生的信息\n");
        printf("\t\t学号: ");scanf("%d",&m->num);
                if(m->num > 99999999||m->num < 10000000)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t_请输入8位非负数__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入学号: ");scanf("%d",&m->num);
                }
                printf("\t\t姓名: ");scanf("%s",m->name);
                if(m->name[0] > 0)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t______姓名请输入汉字__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入姓名: ");scanf("%s",m->name);
                }
                printf("\t\t语文: ");scanf("%d",&m->yw);
                printf("\t\t数学: ");scanf("%d",&m->sx);
                printf("\t\t英语: ");scanf("%d",&m->yy);
                if(m->sx<0||m->sx>100||m->yw<0||m->yw>100||m->yy<0||m->yy>100)
                {
                    printf("\t\t______________________\n");
                    printf("\t\t_成绩请输入0-100之间__\n");
                    printf("\t\t______________________\n");
                    printf("\t\t重新输入成绩\n");
                    printf("\t\t语文: ");scanf("%d",&m->yw);
                    printf("\t\t数学: ");scanf("%d",&m->sx);
                    printf("\t\t英语: ");scanf("%d",&m->yy);
                } 
                printf("\t\t该学生信息已修改\n");
                cr(phead);
        }
        printf("继续修改请按1,退出请按0:");
        n=getch();
        while(n!='1'&&n!='0')
        {
            n=getch();
        }   
        }while(n=='1');
       if(n=='0')
           return;
    } 
    void fx()
    {
        struct student *p,*q,*phead,*t,*m; 
        int flag=0;
        int jyw=0;
        int jsx=0;
        int jyy=0;
        int timp;
        int n=0; 
        phead=cc();
        p=phead;
        for(t=p->next;t!=NULL;t=t->next)
        {
            n++;
            if(t->sx>=60)
                jsx++;
            if(t->yw>=60)
                jyw++;
            if(t->yy>=60)
                jyy++;
        } 
        printf("\t\t____________________________________________________\n");
        printf("\t\t|______________学生成绩分析_________________________|\n");
        printf("\t\t|___________________________________________________|\n");
        printf("\t\t一共录入了%d个学生成绩\n",n);
        printf("\t\t语文及格人数为%d\n",jyw);
        printf("\t\t数学及格人数为%d\n",jsx);
        printf("\t\t英语及格人数为%d\n",jyy); 
        printf("\t\t分析完毕\n");
        printf("退出请按0:");  
    }
    

    总结

    以上就是我要说的了哈,忙了一个月,学的东西也都用上了,只要链表,文件会的话,写个简单的学生管理系统很简单的,希望对大家有帮助,自己也要学新东西了,如果有问题的话,欢迎支持大家指出,其实还有很多功能自己没写,比如多端登陆,图形界面等等,跟别人的差距蛮大的。

    展开全文
  • java学生信息管理系统(附源码)

    万次阅读 多人点赞 2016-07-14 16:36:30
    一: 介绍 1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作 另外一种是SQL语句。 ... 3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明...

    一:   介绍

          

      1:实现登录界面

        2:实现主界面

               有两种操作 一种是按钮操作  另外一种是SQL语句。

        3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*myeclipse和eclipse,            jcreator什么的都是IDE,使用都一样,基本没什么区别,只不过myeclipse更商业化不开源,也就意味着收费,里面集成的插件比较多而已。

               *****************************************************************************************************

               用到的软件及环境SQLserver2008,eclipse,sqljdbc4.jar(数据库驱动包)

               *****************************************************************************************************

               另外一个Mysql 5.7.15.  Myeclipse2015,mysql-connector-java-5.1.34.jar

                 **********************************************************************************************************************

     

               java的JDK环境 (自行安装配置)

                切记:

                另外要新建数据库wtf 和新建学生表student(也可以用你自己创建的数据库及表,不过你得在源代码中进行修改):

                还要导入sqljdbc4.jar

            

        4:实现增删改查  (另有退出和刷新)

    二:    使用

      1:首先导入rjgc包

     

    然后点开browse  找到rjgc  

    最后点击finish

    得到    下图

    加载出来以后可能有的java文件前面有错,因为还没有导入sqljdbc4.jar

    (*******************************************************************************************************************************                    注意,方式一导入jdbc的图是之前我做的时候比较麻烦的一种方式,但是也能达到效果,在后期的我更新的链接资源中,如果导入任意版本源码包的话,都会自动加载lib包以及下面不同版本对应的jdbc连接驱动。这时候你只需要在那个lib文件夹下的.jar 文件上右键点击-->build path--->add to build path,导入jdbc结束。

    方式二导入:贴一张图

    上面这张图是方式二导入的,

    **************************************************************************************************************************)

     

    接下来继续,方式一导入  看下图:

     

     

     

    这时候应该就差不多可以运行了,不过还得把SQLserver2008的(MSSQLSERVER)服务开启了。

    上图

    再回到eclipse界面 打开rjgc

    最后双击LoginIn.java打开代码文本

    运行  就可以出现登录界面  

    在LoginIn.java代码文本里面找到登录用户 和密码后就可以登录了 

    比如admin 123  和wangtangfu 123456      (注意不要多加空格)

    其实用户权限都一样  如果你想加用户权限  可以写两个不同的Qframe.java。要做到主窗口里面的功能不同   ,可以屏蔽一些按钮

    比如修改  增加  等功能。然后在不同用户登陆的时候调用不同的Qframe.java,这样应该可以实现权限问题。。。

     

    2:

    还有程序里面应运了一些图片,它们的位置路径位置可能不一样 ,自行参照代码理解修改(很容易的哟);

     

    三:程序运行截图

       登陆窗口

     主窗口

    SQL语句执行  比如select * from student  

    刷新按钮:

    增加按钮:

                                                                                                                                                         添加成功之后刷新即可:

    删除按钮:

    修改按钮:

    查询按钮

     

     

    至此  

          学生管理系统就完成了   

               其中的登陆界面是 我借鉴别人的  

                   文中难免有不足之处,恳请批评指正

                                                                                                                                       2016-7-14

    再此上传不了附件 所以我给链接去在云盘下载 


    首次上传

    (2017_6_12更新)链接: https://pan.baidu.com/s/1aSeKJ8gXxWSElHaTU6_PdA 密码: yqpv

     


    添加myeclipse+mysql 版本:

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k


     


    修改student.sql执行报错 (执行时可以打开偷偷看一眼)

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接:https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

     

    展开全文
  • 学生管理系统

    万次阅读 多人点赞 2016-12-27 16:07:40
    学生管理系统总结  经过为期一个多星期的时间,总算是大体上完成了项目学生管理系统,下面就把整个项目的各个功能的具体实现总结一下与大家分享,顺便让自己加深一下印象。 首先让我们对整个项目的层次结构进行一个...

        学生管理系统总结 

    经过为期一个多星期的时间,总算是大体上完成了项目学生管理系统,下面就把整个项目的各个功能的具体实现总结一下与大家分享,顺便让自己加深一下印象。

    首先让我们对整个项目的层次结构进行一个划分


    首先把整个项目分为以上几个层,dao层,实体层,service层,servlet层和util工具类五大块。

    一,dao层

    dao层主要是用来对实体类进行操作,封装一些类和方法来让前台调用,

    二,实体层

    主要用来存放你的实体类

    三,service层

    引用对应的dao数据库操作,在这里可以编写自己需要的代码,比如一些逻辑的实现。

    四,servlet层

    引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。

    五,util工具类

    主要存放一些我们自己封装的工具,方便我们使用

    整个项目的层次结构大概就是这样,下面来分析一下每个功能点实现需要的知识和技术。

    1.登陆界面


    首先这次学生管理系统前端框架我们用到的是bootstrap框架

    一,登陆界面的实现

    首先我们想一下如何实现登陆?需要哪些知识?

    首先我们需要数据库,javabean,servlet路由,jsp页面。首先我们得写一个servlet,通过servlet请求来获取到前端页面input框里的值来和我们数据库里存储的信息进行比较,如果相等则允许登陆并跳转到主页面,否则登陆失败停留在登陆界面。然后我们有时候为了省事就会选择记住密码,记住密码功能的实现其实也很简单,首先我们判断复选按钮是否是被选中状态,如何是被选中状态,我们就把帐号和密码存入Cookie,然后返回,否则的话,就把Cookie赋值为空在返回,这样就可以简单实现登陆功能。

    接下来我们需要实现注册,注册其实就是我们数据库里没有这个信息然后我们把这个新信息存入数据库,那么这就很好想了,首先我们写一个servlet来获取到注册表单里的input框里的信息,然后和数据库里的信息进行比对,如果存在,则给一个友好提示该帐号存在或者其他,实现这个功能,我们可以通过ajax异步请求来判断注册信息是否存在然后在jsp里给一个标签显示,这样用户就能知道什么原因了。如果数据库里没有注册的信息,则把信息存入数据库,并且返回登陆界面给一个提示注册成功,这样注册的功能就实现了。

    然后,有了帐号和密码,我们肯定也会有忘记的时候,这时候我们就需要一个忘记密码的功能,忘记密码的话,我们可以通过向邮箱

    发送验证码来重置密码。

    这时候我们需要引入两个jar包


    这是java封装好的,我们只需要拿来用就好了,这时候我们需要获取输入的邮箱是否存在,如果存在调用封装好的email类向邮箱发送验证码,然后获取输入的验证码和邮箱里输入的验证码是否相等,如果相等则把重置的新密码发送给邮箱,否则用ajax同步请球给用户一个弹框提示邮箱不存在或者邮箱错误,验证码错误等信息


    这样整个一个登陆界面就实现了。

    二,实现对表格数据的增删查改

    这是登陆进来的主界面


    首先我们需要实现左边菜单栏

    左边是一个三级菜单的实现,并且要设置权限,因为当是学生,老师,管理员登陆的时候,能查看的内容和进行的操作是不一样的,

    这时候我们需要在jsp里引入jstl里的c:if和c:forserch来进行权限的判断,下图是实现的代码


    					<!-- 管理员,教师,班主任可以看到的菜单 -->
    						<c:if test="${loginSysUser.roleid==0||loginSysUser.roleid==1||loginSysUser.roleid==2}">
    								<li>
    									<a href="#" class="dropdown-toggle">
    										<i class="icon-fire"></i>
    		
    										<span class="menu-text">教学管理</span>
    		
    										<b class="arrow icon-angle-down"></b>
    									</a>
    		
    									<ul class="submenu">
    										<li>
    											<a href="#" class="dropdown-toggle">
    												<i class="icon-double-angle-right"></i>
    												学生管理
    												<b class="arrow icon-angle-down"></b>
    											</a>
    											<ul class="submenu">
    												<!-- 显示班主任所管理的班级 -->
    													<c:if test="${loginSysUser.roleid==1}">
    														<c:forEach items="${classesList }" var="classes">
    															<c:if test="${loginSysUser.userid==classes.headmasterid}">
    																<li>
    																	<a href="${pageContext.request.contextPath }/getclassidservlet?name=studentList&classid=${classes.id}">
    																	<i class="fa fa-child" aria-hidden="true"></i>
    																	<span class="menu-text"><c:out value="${classes.name }"></c:out></span>
    																	</a>
    																</li>
    															</c:if>
    														</c:forEach>
    													</c:if>
    												<!-- 显示教师所管理的班级 -->
    													<c:if test="${loginSysUser.roleid==2 }">
    														<c:forEach items="${classesList }" var="classes">
    															<c:if test="${loginSysUser.userid==classes.lecturerid}">
    																<li>
    																	<a href="${pageContext.request.contextPath }/getstuidservlet?name=studentList&classid=${classes.id}">
    																	<i class="fa fa-child" aria-hidden="true"></i>
    																	<span class="menu-text"><c:out value="${classes.name }"></c:out></span>
    																	</a>
    																</li>
    															</c:if>
    														</c:forEach>
    													</c:if>
    												<!-- 显示管理员所管理的班级 -->
    													<c:if test="${loginSysUser.roleid==0}">
    														<c:forEach items="${classesList }" var="classes">
    																<li>
    																	<a href="${pageContext.request.contextPath }/getstuidservlet?name=studentList&classid=${classes.id}">
    																	<i class="fa fa-child" aria-hidden="true"></i>
    																	<span class="menu-text"><c:out value="${classes.name}"></c:out></span>
    																	</a>
    																</li>
    														</c:forEach>
    													</c:if>
    											</ul>
    										</li>
    										
    										<li>
    											<a href="#" class="dropdown-toggle">
    												<i class="icon-double-angle-right"></i>
    												积分管理
    												<b class="arrow icon-angle-down"></b>
    											</a>
    											<ul class="submenu">
    												<!-- 显示班主任所管理的班级 -->
    													<c:if test="${loginSysUser.roleid==1}">
    														<c:forEach items="${classesList }" var="classes">
    															<c:if test="${loginSysUser.userid==classes.headmasterid}">
    																<li>
    																	<a href="${pageContext.request.contextPath }/getclassidservlet?name=score&classid=${classes.id}">
    																	<i class="fa fa-child" aria-hidden="true"></i>
    																	<span class="menu-text"><c:out value="${classes.name }"></c:out></span>
    																	</a>
    																</li>
    															</c:if>
    														</c:forEach>
    													</c:if>
    												<!-- 显示教师所管理的班级 -->
    													<c:if test="${loginSysUser.roleid==2 }">
    														<c:forEach items="${classesList }" var="classes">
    															<c:if test="${loginSysUser.userid==classes.lecturerid}">
    																<li>
    																	<a href="${pageContext.request.contextPath }/getclassidservlet?name=score&classid=${classes.id}">
    																	<i class="fa fa-child" aria-hidden="true"></i>
    																	<span class="menu-text"><c:out value="${classes.name }"></c:out></span>
    																	</a>
    																</li>
    															</c:if>
    														</c:forEach>
    													</c:if>
    												<!-- 显示管理员所管理的班级 -->
    													<c:if test="${loginSysUser.roleid==0}">
    														<c:forEach items="${classesList }" var="classes">
    																<li>
    																	<a href="${pageContext.request.contextPath }/getclassidservlet?name=score&classid=${classes.id}">
    																	<i class="fa fa-child" aria-hidden="true"></i>
    																	<span class="menu-text"><c:out value="${classes.name}"></c:out></span>
    																	</a>
    																</li>
    														</c:forEach>
    													</c:if>
    											</ul>
    										</li>
    										
    										<li>
    										<a href="${pageContext.request.contextPath }/controller?name=scorerules">
    											<i class="icon-double-angle-right"></i>
    											积分规则管理
    										</a>
    										</li>
    										
    										<li>
    											<a href="controller?name=team" class="dropdown-toggle">
    												<i class="icon-double-angle-right"></i>
    												小组管理
    											</a>
    											
    										</li>
    									</ul>
    								</li>
    						</c:if>
    						
    						
    						<!-- 只有管理员才可以显示的菜单 -->
    						<c:if test="${loginSysUser.roleid==0 }">
    							<li>
    								<a href="#" class="dropdown-toggle">
    									<i class="icon-desktop"></i>
    									<span class="menu-text">系统管理 </span>
    	
    									<b class="arrow icon-angle-down"></b>
    								</a>
    	
    								<ul class="submenu">
    									<li>
    											<a href="${pageContext.request.contextPath }/controller?name=classes">
    												<i class="icon-double-angle-right"></i>
    												班级管理
    											</a>
    									</li>
    									<li>
    										<a href="${pageContext.request.contextPath }/controller?name=userManager">
    											<i class="icon-double-angle-right"></i>
    											用户管理
    										</a>
    									</li>
    									<li>
    										<a href="${pageContext.request.contextPath }/controller?name=teacher">
    											<i class="icon-double-angle-right"></i>
    											教师管理
    										</a>
    									</li>
    									
    									<li>
    										<a href="#" class="dropdown-toggle">
    											<i class="icon-double-angle-right"></i>
    												字典管理
    											<b class="arrow icon-angle-down"></b>
    										</a>
    	
    										<ul class="submenu">
    											<li>
    												<a href="${pageContext.request.contextPath }/controller?name=dataType">
    													<i class="icon-leaf"></i>
    													字典类型
    												</a>
    											</li>
    	
    											<li>
    												<a href="${pageContext.request.contextPath }/controller?name=dataItem" class="dropdown-toggle">
    													<i class="icon-pencil"></i>
    													字典条目
    												</a>
    											</li>
    										</ul>
    									</li>
    								</ul>
    							</li>
    						</c:if>
    
    					</ul><!-- /.nav-list -->

    然后我们需要通过表格显示我们的数据库里的信息,这时候我们可以用老师封装好的jqgird,首先我们需要写对应的servlet来获取表格的行和列和页数还有对应数据库里的信息,然后通过ajax请求和js动态加载表格把数据显示出来,然后我们需要对数据进行增删查改,首先我们需要获得对应jsp页面里的input标签里的值然后通过servlet和dbutil获取数据库里的值进行比对,如果没有,则通过sql语句写入数据库。增删查改的实现方法基本一致。这样就实现了对数据库表格的增删查改和显示了。




    三,个人信息的显示和修改密码功能



    要实现这个功能其实和表格的查的操作差不多,首先我们在登陆的时候需要判断用户的身份来显示不同的用户信息,这时候我们需要也一个servlet进行判断

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    			Student stu = new Student();
    			SysUser sys = (SysUser) request.getSession().getAttribute("loginSysUser");
    			Integer roleid = sys.getRoleid();
    			Integer userId = sys.getUserid();
    			//roleid角色id:1:班主任、2:讲师、3、学生
    			List<Map<String, Object>> map =new ArrayList<Map<String, Object>>();
    			SysUser sysUser = new SysUser();
    			sysUser.setId(sys.getId());
    			sysUser.find();
    			request.setAttribute("imgUrl", sysUser.getImgurl());
    			if(roleid==0){
    				map = sys.db.query("select * from sys_user where id=?",userId);
    				request.getSession().setAttribute("showPerson", map);
    				request.getRequestDispatcher("sysuser.jsp").forward(request, response);
    			}else if(roleid == 1||roleid == 2){
    				map = stu.db.query("select * from t_teacher where id=?",userId);
    				request.getSession().setAttribute("showPerson", map);
    				request.getRequestDispatcher("teacher.jsp").forward(request, response);
    			}else if (roleid == 3) {
    				map = stu.db.query("select * from t_student where id=?",userId);
    				request.getSession().setAttribute("showPerson", map);
    				request.getRequestDispatcher("person.jsp").forward(request, response);
    			}
    	}

    然后通过sql查询把查询到的结果存在一个map集合里然后存到session域里,用来让我们在jsp里调用

    通过重定向跳转到不同的jsp页面。

    在jsp页面通过${sessionScorp.属性名}显示对应的信息。

    然后是修改密码

    首先我们写一个servlet来判断原密码是否正确和新密码的两次输入是否相同

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    			SysUser sys = (SysUser) request.getSession().getAttribute("loginSysUser");
    			String password=sys.getPassword();//获取的登录密码
    			System.out.println(password);
    			String password0 = request.getParameter("oldPassword");//旧密码
    			String password1 = request.getParameter("password1");//新密码
    			String password2 = request.getParameter("password2");//确认密码
    			password0=MD5Util.MD5(password0);
    			Map<String, Object> map =new HashMap<String, Object>();
    			if(password0.equalsIgnoreCase(password)){
    				if(StringUtil.isNotEmpty(password1)&&password1.equalsIgnoreCase(password2)){
    					map.put("state", 3);
    					response.getWriter().print(JSON.toJSON(map));
    				}else{
    					map.put("state", 1);
    					response.getWriter().print(JSON.toJSON(map));
    				}
    			}else{
    				map.put("state", 0);
    				response.getWriter().print(JSON.toJSON(map));
    			}
    		
    	}

    判断结束后以json的形式返回,通过ajax同步请求和表单提交来判断是否正确和给出提示。

    四,头像上传



    package club.itstu.web.servlet;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileItemFactory;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    
    import club.itstu.util.DBUtil;
    
    import com.alibaba.fastjson.JSON;
    
    public class UploadUtilServlet extends HttpServlet {
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		String imgName = "";
    		try {
    			
    			FileItemFactory factory = new DiskFileItemFactory();
    			ServletFileUpload upload = new ServletFileUpload(factory);
    			if(upload.isMultipartContent(request)){
    				List<FileItem> list = upload.parseRequest(request);
    				for(FileItem item:list){
    					//判断是普通文本框,还是文件框
    					if(item.isFormField()){
    						//普通的
    						String fileName = item.getFieldName();//输入框name的名
    						String str = item.getString();//文本框值
    						if("id".equals(fileName)){
    							System.out.println(str);
    						}
    					}else{
    						//文件表单
    						String contentType = item.getContentType();//上传的文件类型
    						String fileName = item.getFieldName();
    						InputStream in = item.getInputStream();
    						String name = item.getName();//上传的文件名
    						imgName = name;
    						//获取上传文件保存的绝对路径
    						String uploadUrl = getServletContext().getRealPath("/upload");
    						File file = new File(uploadUrl,name);
    						item.write(file);
    						item.delete();
    						in.close();
    					}
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		List<Map<String,Object>> resList = new ArrayList<Map<String,Object>>();
    		Map<String,Object> map = new HashMap<String,Object>();
    		map.put("status", "OK");
    		String urlPath = request.getContextPath();
    		map.put("url", urlPath+"/upload/"+imgName);
    		DBUtil.getInstance().update("update sys_user set imgurl=? where id=?", urlPath+"/upload/"+imgName,request.getParameter("id"));
    		map.put("message", "头像上传成功");
    		resList.add(map);
    		response.getWriter().print(JSON.toJSON(resList));
    	}
    
    
    }
    

    需要导入的jar包


    首先获取工厂类对象FileItemFactory,然后获取ServletFileUpload,判断是普通文本框还是文本表单,获取上传文件保存的绝对路径,然后字节流写上去。

    五 excel表格导入导出

    六 日报功能

    五六两个功能我还没有完全明白怎么实现,后期写完了,在补上代码和实现思路。这就是我自己对整个项目流程的实现的理解,写完这个项目之后,自己从头在总结一翻,你会发现自己真的收获了很多,以前看不懂的代码,现在在看会豁然开朗。我觉得老师说的很对,总结真的很重要,之前我没总结,只靠回想的话,我真的能记住的很少很少,我觉得这个项目过段时间在总结一次的话,就可以真正理解整个项目的实现流程,自己下次做在类似的项目就会得心应手,不会不知道怎麽下手了,几个小时的总结写完了,觉得自己写的很充实,理解的也更清楚了,以后也要经常做这样的总结,我相信自己慢慢的就会成长起来的。加油把,继续努力。


    附上源码下载地址:

    链接:http://pan.baidu.com/s/1kVqUA6V 密码:cqgs

    展开全文
  • 学生管理系统(java实现)

    千次阅读 多人点赞 2020-06-08 19:22:59
    学生管理系统 实现如下功能: 添加学生:通过键盘录入学生信息,添加到集合中 删除学生:通过键盘录入需要删除学生的学号,将该学生对象从集合中删除 修改学生:通过键盘录入需要修改学的学号,将该学生对象的其他...

    一个小练习,并没有很高大上的那种界面,只是一个纯输出的界面显示,在下小白
    在这里插入图片描述


    1.需求

    • 添加学生:通过键盘录入学生信息,添加到集合中
    • 删除学生:通过键盘录入需要删除学生的学号,将该学生对象从集合中删除
    • 修改学生:通过键盘录入需要修改学的学号,将该学生对象的其他信息进行修改
    • 查看学生:将集合中的学生对象信息进行展示
    • 退出系统:结束程序

    2.代码实现



    2.0 创建学生类

    • 在输入了需要创建的成员变量之后,可以按下Alt+enter 快捷键实现自动构造方法
    package King04_StudentsManager;
    /*
    学生类
        Alt+Insert  根据自己的需要进行选择构造方法,自动生成
    */
    
    public class Student {
    //  4个成员变量
    //    学号
        private String sid;
    //    姓名
        private String name;
    //    年龄
        private String age;
    //    地址
        private String address;
    
    //    无参构造方法
        public Student() {
        }
    
        public Student(String sid, String name, String age, String address) {
            this.sid = sid;
            this.name = name;
            this.age = age;
            this.address = address;
        }
    
        public String getSid() {
            return sid;
        }
    
        public void setSid(String sid) {
            this.sid = sid;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    
    


    2.1添加学生信息

    //    定义一个方法,用于添加学生信息
        public static void addStudents(ArrayList<Student> array) {
    //    键盘录入学生对象需要数据,显示提示信息,提示要属输入何种信息
            Scanner sc = new Scanner(System.in);
    
    //        为了让sid在while循环外面可以被访问到,我们就把它定义在循环之外
            String sid;
    
    //    为了让程序回到这里,使用循环实现
            while (true) {
                System.out.println("请输入学生学号: ");
                sid = sc.nextLine();
    
                boolean flag = isUsed(array, sid);
                if (flag) {
                    System.out.println("此学号已经存在,请重新输入: ");
                }else {
                    break;
                }
            }
    
            System.out.println("请输入学生姓名: ");
            String name = sc.nextLine();
            System.out.println("请输入学生年龄: ");
            String age = sc.nextLine();
            System.out.println("请输入学生居住地: ");
            String address = sc.nextLine();
    
    //    创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
            Student s = new Student();
            s.setSid(sid);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
    
    //    将学生对象添加到集合中
            array.add(s);
    //    给出添加成功提示
            System.out.println("添加学生成功");
        }
    
    


    2.2 解决添加学生信息学号重复问题

    public static boolean isUsed(ArrayList<Student> array, String sid) {
    //        如果要添加的学号与集合中的某一个学生学号相同,返回true,如果都不相同,返回false
            boolean flag = false;
    
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                if (s.getSid().equals(sid)) {
                    flag = true;
                    break;
                }
            }
            return flag;
        }
    
    


    2.3 查看所有学生信息

    public static void findAllStudent(ArrayList<Student> array) {
    //        判断集合中是否有数据,如果没有显示提示信息
            if (array.size() == 0) {
                System.out.println("无信息,请先添加信息后查询");
    //            为了不让程序往下执行,给出return;
                return;
            }
    
    //        显示表头信息,\t其实就是tab键的位置
            System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
    
    //        将集合中数据取出按照对应格式显示所有学生信息,年龄补充显示“岁”
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                System.out.println(s.getSid() + "\t" + s.getName() + "\t\t" + s.getAge() + "岁\t" + s.getAddress());
            }
        }
    
    


    2.4 删除学生信息

    public static void deleteStudent(ArrayList<Student> array) {
    //键盘录入需要删除的学生学号,显示提示信息
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你要删除的学生的学号: ");
            String sid = sc.nextLine();
    
    //        遍历集合对应学生对象从集合中删除;
    //        在删除/修改学生操作前,对学号进行判断是否存在
    //        如果不存在,显示提示信息
    //        如存在,执行删除/修改操作
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                if (s.getSid().equals(sid)) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("该学生不存在,请重新输入: ");
            } else {
                array.remove(index);
                System.out.println("删除学生成功");
            }
        }
    
    
    


    2.5 修改学生信息

    public static void updateStudent(ArrayList<Student> array) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入需要修改的学生的学号: ");
            String sid = sc.nextLine();
    //键盘录入要修改的学生信息
            System.out.print("请输入学的新姓名: ");
            String name = sc.nextLine();
            System.out.print("请输入学的新年龄: ");
            String age = sc.nextLine();
            System.out.print("请输入学的新居住地: ");
            String address = sc.nextLine();
    
    //        创建学生对象
            Student s = new Student();
            s.setSid(sid);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
    
    //        遍历集合修改对应的学生信息
            for (int i = 0; i < array.size(); i++) {
                Student student = array.get(i);
                if (student.getSid().equals(sid)) {
                    array.set(i, s);
                    break;
                }
            }
            System.out.println("修改学生信息成功");
        }
    
    


    3.最终代码

    在这里插入图片描述

    package King04_StudentsManager;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class StudentManager {
    
        public static void main(String[] args) {
    //        创建集合对象,用于存储学生数据
            ArrayList<Student> array = new ArrayList<>();
    
            /*思路:
                1.用输出语句完成主界面的编写
                2.用Scanner实现键盘录入数据
                3.用Switch语句完成选择操作
                4.用循环语句完成操作的选择
                5.用循环完成再次回到主界面*/
    
    //用循环完成再次回到主界面
            while (true) {
    //输出语句完成主界面的编写
                System.out.println("--------欢迎来到学生管理系统-------");
                System.out.println("1-添加学生");
                System.out.println("2-删除学生");
                System.out.println("3-修改学生");
                System.out.println("4-查看所有学生");
                System.out.println("5-退出");
                System.out.println("请输入你的选择: ");
    
    //        用Scanner实现键盘录入数据
                Scanner sc = new Scanner(System.in);
                String line = sc.nextLine();
    
    //        用Switch语句完成选择操作
                switch (line) {
                    case "1":
    //                    System.out.println("添加学生");
                        addStudents(array);
                        break;
                    case "2":
    //                    System.out.println("删除学生");
                        deleteStudent(array);
                        break;
                    case "3":
    //                    System.out.println("修改学生");
                        updateStudent(array);
                        break;
                    case "4":
    //                    System.out.println("查看所有学生");
                        findAllStudent(array);
                        break;
                    case "5":
                        System.out.println("谢谢使用");
    //                    break;
                        System.exit(0);  // JVM退出
                }
            }
    
        }
    
        //    定义一个方法,用于添加学生信息
        public static void addStudents(ArrayList<Student> array) {
    //    键盘录入学生对象需要数据,显示提示信息,提示要属输入何种信息
            Scanner sc = new Scanner(System.in);
    
    //        为了让sid在while循环外面可以被访问到,我们就把它定义在循环之外
            String sid;
    
    //    为了让程序回到这里,使用循环实现
            while (true) {
                System.out.println("请输入学生学号: ");
                sid = sc.nextLine();
    
                boolean flag = isUsed(array, sid);
                if (flag) {
                    System.out.println("此学号已经存在,请重新输入: ");
                }else {
                    break;
                }
            }
    
            System.out.println("请输入学生姓名: ");
            String name = sc.nextLine();
            System.out.println("请输入学生年龄: ");
            String age = sc.nextLine();
            System.out.println("请输入学生居住地: ");
            String address = sc.nextLine();
    
    //    创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
            Student s = new Student();
            s.setSid(sid);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
    
    //    将学生对象添加到集合中
            array.add(s);
    //    给出添加成功提示
            System.out.println("添加学生成功");
        }
    
        //        定义一个方法,解决添加学生学号重复问题
        public static boolean isUsed(ArrayList<Student> array, String sid) {
    //        如果要添加的学号与集合中的某一个学生学号相同,返回true,如果都不相同,返回false
            boolean flag = false;
    
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                if (s.getSid().equals(sid)) {
                    flag = true;
                    break;
                }
            }
            return flag;
        }
    
        //    定义一个方法,用于查看所有学生信息
        public static void findAllStudent(ArrayList<Student> array) {
    //        判断集合中是否有数据,如果没有显示提示信息
            if (array.size() == 0) {
                System.out.println("无信息,请先添加信息后查询");
    //            为了不让程序往下执行,给出return;
                return;
            }
    
    //        显示表头信息,\t其实就是tab键的位置
            System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
    
    //        将集合中数据取出按照对应格式显示所有学生信息,年龄补充显示“岁”
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                System.out.println(s.getSid() + "\t" + s.getName() + "\t\t" + s.getAge() + "岁\t" + s.getAddress());
            }
        }
    
        //    定义一个方法,用于删除学生信息
        public static void deleteStudent(ArrayList<Student> array) {
    //键盘录入需要删除的学生学号,显示提示信息
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你要删除的学生的学号: ");
            String sid = sc.nextLine();
    
    //        遍历集合对应学生对象从集合中删除;
    //        在删除/修改学生操作前,对学号进行判断是否存在
    //        如果不存在,显示提示信息
    //        如存在,执行删除/修改操作
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                if (s.getSid().equals(sid)) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                System.out.println("该学生不存在,请重新输入: ");
            } else {
                array.remove(index);
                System.out.println("删除学生成功");
            }
        }
    
        //    定义一个方法,用于修改学生信息
        public static void updateStudent(ArrayList<Student> array) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入需要修改的学生的学号: ");
            String sid = sc.nextLine();
    //键盘录入要修改的学生信息
            System.out.print("请输入学的新姓名: ");
            String name = sc.nextLine();
            System.out.print("请输入学的新年龄: ");
            String age = sc.nextLine();
            System.out.print("请输入学的新居住地: ");
            String address = sc.nextLine();
    
    //        创建学生对象
            Student s = new Student();
            s.setSid(sid);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
    
    //        遍历集合修改对应的学生信息
            for (int i = 0; i < array.size(); i++) {
                Student student = array.get(i);
                if (student.getSid().equals(sid)) {
                    array.set(i, s);
                    break;
                }
            }
            System.out.println("修改学生信息成功");
        }
    
    }
    
    


    4.输出结果

    添加学生信息
    查看所有学生



    5.小结

    • 初学java,这个对我来说算是一个较为综合的小案例了,让我初步了解了那些应用级别的软件写起来应该是很复杂的,我写一个这样的都是还费事费力;
    • 对于创建类还是不太清楚,以后需要加强学习;
    • 添加学生检测学号是否已经存在,导致重复问题,解决删除学生时学号不存在问题。让我学习到了一个程序需要多次试验调试,并且测试时的输入一定要多范围,不然很容易存在bug。
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • 学生信息管理系统

    千次阅读 2020-06-02 16:46:58
    【问题描述】 大学里有各种类型的学生,校方需要对这些学生的信息进行计算机管理。所开发的软件应包括各类 学生的添加、修改、删除和查找等功能。...实现该管理系统。 (2) 设计一个 Person(人员)类,考虑到通用性
  • 学生管理系统.rar

    2020-06-29 08:56:06
    由多个结构体串联而成 老师给我们学习参考使用的 有需要的小伙伴可以拿去参考修改 我也上传到CSDN资源里了 , 链接在最后, 不是我自己做的东西我也不想要大家的积分, 免费分享给大家,希望对大家有帮助。
  • 学生管理系统(MySQL版)1.1

    千次阅读 2019-06-28 19:36:33
    (2)状态数据访问接口实现类StatusDaoImpl 在net.hw.student.test包里创建测试类TestStatusDaoImpl: 代码如下: 运行testFindByIdea()如下: ...(3)学生数据访问接口实现类StudentDaoImpl ...
  • 学生管理系统.zip

    2019-11-14 09:44:57
    纯C语言写的一个基于黑窗口的学生管理系统,程序简单,注释清晰,可供新手小白参考学习,希望可以为各位学习C语言的新手们提供实战训练,谢谢采纳!!
  • 学生管理系统(Mysq数据库版)

    万次阅读 多人点赞 2018-04-07 13:59:37
    本系统是一个简单的学生管理系统,和以前做的一个学生管理系统从功能山来讲,其实是一样的。不同的是,以前的学生管理系统底层的存储部分采用的是文件系统,即使用文件来存储学生记录。对学生记录的增删查改操作也是...
  • 简单的学生管理系统

    万次阅读 2017-12-16 20:50:42
    系统入口以及主要处理package com.zzxtit.java09.stusys2;import java.util.Scanner;public class Main { /** * * 1、抽象数据对象 stu * 2、将学生信息存储到数组当中, 数组属于固定长度; * 3、如果删除数组...
  • C语言学生管理系统代码(完整)

    万次阅读 多人点赞 2016-06-30 16:53:15
    <span style="font-size:18px;">#include <stdio.h> #include <stdlib.h> #define FILENAME "student.dat" typedef enum{MAN, WOMAN} SEX; typedef struct tagStudent ... //学生...
  • 学生管理系统C语言

    2018-12-21 23:19:20
    简单的学生管理系统内存版,利用c语言编写 可以进行简单的增删改查
  • C语言链表知识编出了简单的学生管理系统,可实现创建、查询、删除、排序、保存、读取等功能
  • C语言开发简单的学生成绩管理系统(附源码)

    万次阅读 多人点赞 2019-04-15 21:08:22
    学生成绩管理系统 开发语言:C语言 开发工具:Visual Studio 2019 开发时间:2019.4.14 开发者:summer @一、系统使用展示 @二、系统功能 @三、菜单 @四、录入学生信息 @五、打印学生信息 @六、保存学生信息 @七、...
  • c语言实现《学生管理系统

    千次阅读 多人点赞 2019-06-27 15:40:20
    系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生的各种信息进行日常管理,如查询、修改、增加、删除等。 功能介绍:    ...
  • 学生管理系统C语言综合链表实现) 题目:定义单向链表类型StuLink,链表结点包含xh、xm、cj、dj、mc、nxet六个数据项,分别代表学生的学号、姓名、成绩、等级、名次和指向下一个结点的指针,其中:学号、姓名、...
  • 自己实现的C语言学生管理系统,带文本数据库,写了对文本文件的操作。 创建学生数据库(文件) 向数据库中录入内容 显示指定文件(数据库)中的内容 按照总分进行排序 向数据库中增加一条学生记录 删除一...
  • C语言链表实现学生管理系统

    千次阅读 多人点赞 2019-06-19 21:38:02
    C语言链表实现学生管理系统 #include "stdio.h" #include "stdlib.h" #include "string.h" struct Student { unsigned long ID; char Name[21]; float Score; }; struct Node { struct ...
  • C语言学生管理系统增删改查

    万次阅读 多人点赞 2018-09-17 20:02:02
    本身意义可能不大,但是有很多学生再刚开始学习的时候,往往布置的大作业就是利用C语言实现简单的控制台管理系统,往往要求使用的结构是 在内存中用链表存储数据 从txt中读取信息,并可以删除写入 完成信息的展示...
  • c语言学生管理系统

    2019-10-06 15:29:01
    不论是在校计算机专业的学生还是刚步入IT行业从事C工作的毕业生,对于C语言的基础考核,学生管理系统则作为不二的选择。该项目不论从难易程度还是知识考核点都易于被接受。
  • C语言单链表简单学生管理系统

    千次阅读 2019-08-27 22:19:30
    使用C语言编写的单链表式简单的学生管理系统
  • 利用c语言实现了一个学生管理系统,能够完成学生数据管理系统的常用功能
  • 一个用dev-c++写的c语言学生管理系统
  • 学生管理系统 C语言 通过运行( 增删改查)学生管理系统 C语言 通过运行( 增删改查)学生管理系统 C语言 通过运行( 增删改查)
  • c语言课程设计,学生信息管理系统

    万次阅读 多人点赞 2019-03-06 21:20:50
    学生信息管理系统 题目: 新生入学,需要管理学生信息,要求如下: 能够通过键盘进行输入学生的信息,比如:学生姓名,学号,性别,班级,专业,入学成绩; 能够通过键盘输入要录入的学生的个数; 能够...
  • C语言学生成绩管理系统源代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...
  • 使用c语言建立一个学生管理系统(使用结构体)

    万次阅读 多人点赞 2019-04-03 22:47:44
    一.题目分析(学生信息管理系统) 做一个学生信息管理系统,首先定义一个...在menu()方法中,用一个循环来一直输出这个学生管理系统的界面,直到输入8才结束 二.关键算法构造 N-S盒图: 流程图: 在这里插入图片描...
  • 学生信息管理系统——C语言

    万次阅读 多人点赞 2019-04-06 18:07:13
    1)查询学生信息 2)添加学生信息 3)修改学生信息 4)删除学生信息 5)刷新学生信息 6)保存学生信息 7)输出当前学生信息 2.题目要求: 1)使用结构体建立学生信息体制 2)实现七大基本功能 3)采用文件存储学生...
  • C语言基于单链表的学生管理系统C语言项目,C语言文件操作。
  • C语言实现学生信息管理系统

    万次阅读 多人点赞 2019-04-08 14:40:48
    使用C语言学生管理系统进行优化

空空如也

1 2 3 4 5 ... 20
收藏数 176,103
精华内容 70,441
关键字:

学生管理系统