学生宿舍管理系统课程设计报告

淮阴工学院

Project1课程设计报告

选题名称:         学生管理系统           

系(院):         学院     

    :         软件工程(NIIT      

    :         软件1092            

    :    马涛     :  1091305215 

指导教     殷路,张亚红,张勇军,冯万利                

学年学期:      20## ~ 20## 学年 第  1  学期    

           2010    12   26


设计任务书


摘要:

学生管理系统包括了学生成绩管理系统,学生信息管理系统,学生宿舍管理系统。该系统现实了学校当中学生的各项信息,使相关人员操作起来更加简单。虽然显示的信息不多,但是足够我们使用。学生管理系统的代码包含了输入、显示、排序、增加、修改、删除等功能。学生管理是高校内每一个系部或院部都必须切实面对的工作,传统的人工方式管理学生信息存在着许多缺点,效率低、保密性差且较为繁琐。另外,随着学生数量的增加,工作量也大大增加,这也增加学生处管理者的工作量和劳动强度,也给学生信息的查找、更新和维护都带来了很多困难。学生管理可以迅速检索、方便查找、可靠性高、存储量大、保密性好、寿命长、成本低等,能够极大地提高学生管理的效率。建立一个学生管理系统,使学生管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生的情况。

关键词:学生管理;迅速;方便

目录

1需求分析.................................................................................................................... 1

2概要设计.................................................................................................................... 2

2.1 程序的功能模块图............................................................................................ 2

2.2 程序的流程图.................................................................................................... 3

2.3 基本思路........................................................................................................... 4

3详细设计与实现........................................................................................................ 4

3.1结构体的描述..................................................................................................... 4

3.2学生信息的输入................................................................................................. 5

3.3学生信息的显示................................................................................................. 7

3.4学生信息的排序................................................................................................. 8

3.5学生信息的插入............................................................................................... 10

3.6学生信息的删除................................................................................................ 11

3.7学生信息的查找............................................................................................... 13

3.8学生信息的修改............................................................................................... 14

3.9主函数.............................................................................................................. 16

4调试与操作说明...................................................................................................... 18

4.1选择界面........................................................................................................... 18

4.2学生信息的输入............................................................................................... 18

4.3学生信息的显示............................................................................................... 19

4.4学生信息的排序............................................................................................... 19

4.5学生信息的插入............................................................................................... 20

4.6学生信息的删除............................................................................................... 21

4.7学生信息的查找............................................................................................... 21

4.8学生信息的修改............................................................................................... 22

总结............................................................................................................................. 23

致谢............................................................................................................................. 24

参考文献..................................................................................................................... 25



1 需求分析

目前市面上流行的管理系统不少。但是,对于学校的学生管理系统来说,需要大型的系统,而且是一个操作方便,功能实用,能满足学校学生数据的管理及需求的系统。我的目标就是开发一个功能实用、操作方便,简单明了的学生管理系统。

此图书馆管理系统,包括:学生档案管理系统、学生成绩管理系统、学生宿舍管理系统。对每个学生信息包含了年级、班级、姓名、家庭住址、各科成绩等等。我对学生的信息建立了一个数组。

系统主要功能如下:

选择界面:管理者通过不同的选择查看学生的各种信息;

学生信息的输入:将学生的信息输入,包含了学生的学号、姓名、成绩、家庭住址等;

学生信息的显示:输入学生的学号显示学生的各种信息;

学生的排序:按照学生的平均分进行排序;

学生信息的插入:新进一个学生,将他的各种信息输入到数据库中;

学生信息的删除:输入学生的学号,删除一个学生的所以信息;

学生信息的修改:输入学生的学号,修改一个学生的信息。

面对每天纷繁复杂的学生管理工作,本管理系统很好的解决了工作人员的烦恼。相比传统的人工管理,此管理系统具有:功能全面、操作简单、检索迅速、查找方便、可靠性高、存储量大、成本低等绝对的优势。

通过本管理系统,可以大大的节约工作时间,减少工作量,提高了工作效率,能帮助工作人员更加方便、高效的管理学生。

本管理系统的设计环境:Visual  C++ 6.0 ; Windows XP SP3


2 概要设计

     2.1 程序功能模块图

图2-1功能模块图


2.2程序流程图

 



2.3基本思路

首先在Visual C++6.0里建立student结构体,包含了学生的各种信息,然后建立三个子模块,分别为学生档案管理,学生成绩管理和学生宿舍管理。最后建立一个主控程序,以便调用以上三个子模块

3详细设计与实现

3.1结构体的描述

该模块是定义的是结构体,显示的是学生的各种信息。还有一个菜单函数,显示一个学生管理系统的选择界面。

typedef struct

{

    char grade[20];//年级

    char class_0[20];//班级

    int sno1;//学号

    int sno2;//宿舍号

    char name[20];//名字 

    float elec;//电子技术成绩

    float C_Program;//C++成绩

    float Sports;//体育成绩

    float policy;//马克思成绩

    float sum;//总分

    float avg;//平均分

    int telephone;//电话号码

    char homeaddress[100];//家庭地址

}student;

student stud[100];//结构体数组变量

int menu()//菜单函数

{

    char mt;

    do

    {

       system("cls");//qing ping

cout<<""<<"**********************************"<<endl;

cout<<""<<"***********学生管理系统***********"<<endl;

cout<<""<<"*     按1:输入学生信息          *"<<endl;

cout<<""<<"*     按2:显示学生信息          *"<<endl;

cout<<""<<"*     按3:平均分降序排列        *"<<endl;

cout<<""<<"*     按4:查找学生信息          *"<<endl;

cout<<""<<"*     按5:增加学生信息          *"<<endl;

cout<<""<<"*     按6:修改学生信息          *"<<endl;

cout<<""<<"*     按7:删除学生信息          *"<<endl;

cout<<""<<"*     按0:退出系统              *"<<endl;

cout<<""<<"*     请你选择操作(0--7)         *"<<endl;

cout<<""<<"*     制作者:软件2班:马涛       *"<<endl;

cout<<""<<"***********************************"<<endl;

       mt=getchar();

    } while(mt<'0'||mt>'8');

    return (mt-'0');// return (mt-'0')为int 类型的数据//return mt; //返回的数据为char类型

}

3.2学生信息的输入

   int Input(student stud[],int n)

{

    int i=0;

    char sign;

    while(sign!='n'&& sign!='N')

    {

       cout<<"请输入学生的年级:";

       cin>>stud[n+i].grade;

       cout<<"请输入学生的班级:";

       cin>>stud[n+i].class_0;

       cout<<"请输入学生的学号:";

       cin>>stud[n+i].sno1;

       cout<<"请输入学生的宿舍号:";

       cin>>stud[n+i].sno2;

       cout<<"请输入学生的姓名:";

       cin>>stud[n+i].name;

       cout<<"请输入学生的【电子技术】成绩:";

       cin>>stud[n+i].elec;

       cout<<"请输入学生的【C plus Program】的成绩:";

       cin>>stud[n+i]. C_Program;

       cout<<"请输入学生的【体育】的成绩:";

       cin>>stud[n+i].Sports;

       cout<<"请输入学生的【马克思主义】的成绩:";

       cin>>stud[n+i].policy;

        stud[n+i].sum=stud[n+i].elec+stud[n+i].C_Program+stud[n+i].Sports+stud[n+i].policy; //计算式

       stud[n+i].avg=stud[n+i].sum/4;

       cout<<"该学生的总分为:"<<stud[n+i].sum<<endl;

       cout<<"该学生平均分为:"<<stud[n+i].avg<<endl;

       cout<<"请输入学生的电话号码:";

       cin>>stud[n+i].telephone;

       cout<<"请输入学生的家庭地址:";

       cin>>stud[n+i].homeaddress;

       cout<<"=====>提示:继续写入成绩?(输入N/n结束)";

       cin>>sign;

       i++;

    }

    return (n+i);

}

3.3学生信息的显示

void Display(student stud[],int n)

{

    int i;

    if(!stud)

       cout<<"The recorder is null";

    else

    {

       cout<<"grade"<<setw(6)

           <<"class"<<setw(5)

           <<"sno1"<<setw(5)

           <<"sno2"<<setw(5)

           <<"name"<<setw(5)

           <<"elec"<<setw(5)

           <<"C++"<<setw(8)

           <<"sport"<<setw(8)

           <<"policy"<<setw(5)

           <<"sum"<<setw(7)<<"avg"<<endl;

       cout<<endl;

        for(i=1;i<n+1;i++)//for(int i=0;i<n;i++)  类似的定义 ,不过原来的定义是容易理解从1-n

        {   stud[i-1].sum=stud[i-1].elec+stud[i-1].C_Program+stud[i-1].Sports+stud[i-1].policy;

              stud[i-1].avg=stud[i-1].sum/4;

              cout<<setw(2)<<stud[i-1].grade

                  <<setw(7)<<stud[i-1].class_0

                  <<setw(5)<<stud[i-1].sno1

                  <<setw(5)<<stud[i-1].sno2

                  <<setw(5)<<stud[i-1].name

                  <<setw(5)<<stud[i-1].elec

                  <<setw(6)<<stud[i-1].C_Program

                  <<setw(8)<<stud[i-1].Sports

                  <<setw(6)<<stud[i-1].policy

                  <<setw(7)<<stud[i-1].sum

                  <<setw(7)<<stud[i-1].avg<<endl;

               cout<<"************************************************************"<<endl;

        }

        cout<<"\t\t\t"<<endl;

    }

    system("pause");

}

3.4学生信息根据平均分排序

    void Sort(student stud[],int n)

{

    int i,j,k;

    float s;

    char t[20];

    char t1[20];

    char t2[20];

    char t3[100];

    for(i=0;i<n-1;i++)

       for(j=0;j<n-1-i;j++)

           if(stud[j].avg <stud[j+1].avg)

           {

              student t;

              t=stud[j+1];

              stud[j+1]=stud[j];

              stud[j]=t;

           }

cout<<"****************************************************************************"<<endl; /*格式头*/

            cout<<"年级:"<<stud[i-1].grade<<endl;

            cout<<"班级:"<<stud[i-1].class_0<<endl;

            cout<<"学号:"<<stud[i-1].sno1<<endl;

            cout<<"宿舍号:"<<stud[i-1].sno2<<endl;

            cout<<"姓名:"<<stud[i-1].name<<endl;

            cout<<"电子:"<<stud[i-1].elec<<endl;

            cout<<"C++:"<<stud[i-1].C_Program<<endl;

            cout<<"体育:"<<stud[i-1].Sports<<endl;

            cout<<"马克思:"<<stud[i-1].policy<<endl;

            cout<<"总分:"<<stud[i-1].sum<<endl;

            cout<<"平均分:"<<stud[i-1].avg<<endl;

            cout<<"电话号码:"<<stud[i-1].telephone<<endl;

            cout<<"家庭地址:"<<stud[i-1].homeaddress<<endl;

             cout<<"****************************************************************************"<<endl;

            for(i=1;i<n+1;i++)

            {            stud[i-1].sum=stud[i-1].elec+stud[i-1].C_Program +stud[i-1].Sports+stud[i-1].policy;

                   stud[i-1].avg=stud[i-1].sum/4;

                   cout<<stud[i-1].grade

                      <<stud[i-1].class_0

                      <<stud[i-1].sno1

                      <<stud[i-1].sno2

                      <<stud[i-1].name

                      <<stud[i-1].elec

                      <<stud[i-1].C_Program

                      <<stud[i-1].Sports  

                      <<stud[i-1].policy

                      <<stud[i-1].sum

                      <<stud[i-1].avg

                      <<stud[i-1].telephone<<endl;

            }

}

3.5学生信息的插入

int Insert(student stud[],int n )

{

     cout<<"请输入学生的年级:";

     cin>>stud[n].grade;

     cout<<"请输入学生的班别:";

     cin>>stud[n].class_0;

     cout<<"请输入学生的学号:";

     cin>>stud[n].sno1;

     cout<<"请输入学生的宿舍号:";

     cin>>stud[n].sno2;

     cout<<"请输入学生的姓名:";

     cin>>stud[n].name;

     cout<<"请输入该学生【电子技术】的成绩:";

     cin>>stud[n].elec;

     cout<<"请输入该学生【C++程序设计】的成绩:";

     cin>>stud[n].C_Program;

     cout<<"请输入该学生【大学体育】的成绩:";

     cin>>stud[n].Sports;

     cout<<"请输入该学生【马克思主义】的成绩:";

     cin>>stud[n].policy;

     stud[n].sum=stud[n].elec+stud[n].C_Program +stud[n].Sports+stud[n].policy;

     stud[n].avg=stud[n].sum/4;

     cout<<"请输入学生的电话号码:";

     cin>>stud[n].telephone;  

     cout<<"请输入学生的家庭地址:";

     cin>>stud[n].homeaddress;

     n++;

     Sort(stud,n);

     cout<<"=====>提示:输入成功!"<<endl; 

     return(n);

}

3.6学生信息的删除

int Delete(student stud[],int n)

{

     int s;

     int i=0,j;

     cout<<"输入需要删除学生的学号:"<<endl; 

     cin>>s;

     while((stud[i].sno1-s)!=0&&i<n)

        i++;

     if(i==n)

     {

         cout<<"=====>提示:对不起,无法找到该学号……"<<endl;

         return (n);

     }

     for(j=i;j<n-1;j++)

     {

         strcpy(stud[j].grade,stud[j+1].grade);

         strcpy(stud[j].class_0,stud[j+1].class_0);

         stud[j].sno1=stud[j+1].sno1;

         stud[j].sno2=stud[j+1].sno2;

         strcpy(stud[j].name,stud[j+1].name);

         stud[j].elec=stud[j+1].elec;

         stud[j].C_Program=stud[j+1].C_Program;

         stud[j].Sports=stud[j+1].Sports;

         stud[j].policy=stud[j+1].policy;

         stud[j].telephone=stud[j+1].telephone;

         strcpy(stud[j].homeaddress,stud[j+1].homeaddress);

     }

     cout<<"=====>提示:已成功删除!"<<endl; 

     return(n-1);

}

3.7学生信息的查找

void Search(student stud[],int n) /*查找并显示一个记录*/

{

     int s;

     int i=0;

     cout<<"输入需要查找学生的学号:"<<endl;

     cin>>s;

     while((stud[i].sno1-s)!=0&&i<n)

        i++; /*查找判断*/

     if(i==n)

     {

         cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; /*输入失败信息*/

         return;

     }

     cout<<"*******************************"<<endl;

     cout<<"年级:"<<stud[i].grade<<endl;

     cout<<"班级:"<<stud[i].class_0<<endl; /*输出该学生信息*/

     cout<<"学号:"<<stud[i].sno1<<endl;

     cout<<"宿舍号:"<<stud[i].sno2<<endl;

     cout<<"姓名:"<<stud[i].name<<endl;

     cout<<"电子技术:"<<stud[i].elec<<endl;

     cout<<"C++程序设计:"<<stud[i].C_Program<<endl;

     cout<<"大学体育:"<<stud[i].Sports<<endl;

     cout<<"马克思主义:"<<stud[i].policy<<endl;

     cout<<"总分:"<<stud[i].sum<<endl;

     cout<<"平均分:"<<stud[i].avg<<endl;

     cout<<"电话号码:"<<stud[i].telephone<<endl;

     cout<<"家庭地址:"<<stud[i].homeaddress<<endl;

}

3.8学生信息的修改

void Modify(student stud[],int n)

{

     int s;

     int i=0;

     cout<<"输入需要修改成绩学生的学号:"<<endl;

     cin>>s;

     while((stud[i].sno1-s)!=0 && i<n)

        i++; /*查找判断*/

     if(i==n)

     {

         cout<<"=====>提示:对不起,无该学生的成绩……"<<endl; /*输入失败信息*/

         return;

     }

     else

     {

        cout<<"*******************************该学生的信息*************************************"<<endl; /*格式头*/

        cout<<"年级:"<<stud[i].grade<<endl;

        cout<<"班级:"<<stud[i].class_0<<endl;

        cout<<"学号:"<<stud[i].sno1<<endl;

        cout<<"宿舍号:"<<stud[i].sno2<<endl;

        cout<<"姓名:"<<stud[i].name<<endl;

        cout<<"电子:"<<stud[i].elec<<endl;

        cout<<"C++:"<<stud[i].C_Program<<endl;

        cout<<"体育:"<<stud[i].Sports<<endl;

        cout<<"马克思:"<<stud[i].policy<<endl;

        cout<<"总分:"<<stud[i].sum<<endl;

        cout<<"平均分:"<<stud[i].avg<<endl;

        cout<<"电话号码:"<<stud[i].telephone<<endl;

        cout<<"家庭地址:"<<stud[i].homeaddress<<endl;

        cout<<"********************************************************************************"<<endl;

stud[i].sum=stud[i].elec+stud[i].C_Program+stud[i].Sports+stud[i].policy;

        stud[i].avg=stud[i].sum/4;

        cout<<"请输入学生的年级:"<<endl; 

        cin>>stud[i].grade;

        cout<<"请输入学生的班级:"<<endl; 

        cin>>stud[i].class_0;

        cout<<"请输入学生的学号:"<<endl;

        cin>>stud[i].sno1;

        cout<<"请输入学生的宿舍号:"<<endl;

        cin>>stud[i].sno2;

        cout<<"请输入学生的姓名:"<<endl;

        cin>>stud[i].name;

        cout<<"请输入该学生【电子技术】的成绩:"<<endl;

        cin>>stud[i].elec;

        cout<<"请输入该学生【C++程序设计】的成绩:"<<endl;

        cin>>stud[i].C_Program;

        cout<<"请输入该学生【大学体育】的成绩:"<<endl;

        cin>>stud[i].Sports;

        cout<<"请输入该学生【马克思主义】的成绩:"<<endl;

        cin>>stud[i].policy;        stud[i].sum=stud[i].elec+stud[i].C_Program+stud[i].Sports+stud[i].policy;

        stud[i].avg=stud[i].sum/4;

        cout<<"该学生的总分为:"<<stud[i].sum<<"平均分为:"<<stud[i].avg<<endl;

        cout<<"请输入该学生的电话号码:"<<endl;

        cin>>stud[i].telephone;

        cout<<"请输入该学生的家庭地址:"<<endl;

        cin>>stud[i].homeaddress;

     }

3.9主函数

 void main() /*主函数*/

{

     int n=0;

     for(;;)

     {

         switch(menu()) /*选择判断*/

         {

             case  1:

                cout<<endl<<"====>> 输入成绩 <<===="<<endl; /*输入若干条记录*/

                n=Input(stud,n);

                break;

             case  2:

                 cout<<endl<<"====>> 显示所有记录 <<===="<<endl; /*显示所有记录*/

                 Display(stud,n);

                 break;

             case  3:

                 cout<<endl<<"====>> 按平均分降序排列 <<===="<<endl;

                 Sort(stud,n); /*按学号排序*/

                 cout<<"排序成功!"<<endl;

                 cout<<"\t\t\t";

                 system("pause");

                 break;

              case 4:

                 cout<<endl<<"====>> 查找并显示一组成绩 <<===="<<endl;

                  Search(stud,n); /*插入一条记录*/

                 cout<<"\t\t\t";

                 system("pause");

                 break;

             case 5:

                 cout<<endl<<"====>> 插入一组成绩 <<===="<<endl;

                 n=Insert(stud,n); /*按姓名查找,删除一条记录*/

                 cout<<"\t\t\t";

                 system("pause");

                 break;

             case 6:

                 cout<<endl<<"====>> 修改一组成绩 <<===="<<endl;

                 Modify(stud,n); /*查找并显示一个记录*/

                 cout<<"\t\t\t";

                 system("pause");

                 break;

             case 7:

                 cout<<endl<<"====>> 删除一组成绩 <<===="<<endl;

                 n=Delete(stud,n); /*查找并显示一个记录*/

                 cout<<"\t\t\t";

                 system("pause");

                 break;

             case 0:

                 cout<<endl<<"====>> 谢谢您的使用! <<===="<<endl; /*结束程序*/

                 cout<<"\t\t\t";

                 system("pause");

                 exit(1);

         }

     }

}

4调试与操作说明

4.1选择界面

图4-1 选择界面

4.2学生信息输入

图4-2 学生信息的输入

4.3学生信息显示

图4-3 学生信息的显示

4.4学生信息排序

图4-4 学生信息的排序

4.5学生信息插入

图4-5 学生信息的插入

4.6学生信息删除

图4-6 学生信息的删除

4.7学生信息查找

图4-7 学生信息的查找

4.8学生信息修改

图4-8 学生信息的修改


总结

在本次的数据结构课程设计中我设计的是一个学生管理系统,它包涵了学生档案管理系统,学生成绩管理系统,学生宿舍管理系统。在我个人看来,学生管理系统大多数是在学校中用的比较。而且对于学校的学生管理系统,我觉得应该是一个比较大的系统,它包括了学生的很多信息。并且该系统要操作方便,功能实用,能满足管理者对数据有条不紊的管理及需求。此次课程设计的目标就是在于开发一个功能实用、操作方便的学生管理系统。

经过几天的构思与设计,在指导老师的精心指导和帮助下,一个学生管理系统的雏形已经设计完毕。其使用功能基本符合学校在实际工作中对学生管理的需要,具有一定的实用性。但是由于时间比较仓促,加上自身软件设计经验的不足。因此,在分析问题、解决问题时显得不够严密、完善,还需要在以后的学习中不断地改进和完善

通过这次的课程设计,我更加巩固了上课是所学的知识,也学到了在书本上没有涉及到的知识。在代码的编辑和实现中同样遇到了问题;例如代码无法执行,代码不够简单优化等。但我没有放弃,通过查找资料,请教别人,最终让代码实现出来。

这样的课程设计是一个很好的实践的机会,从中我学到了很多的软件设计经验,也体会到了从事软件开发方面工作需要比其他行业更高的严谨认真的态度和作风,不能有任何松懈马虎的作为,对任何一个危及到工作的问题都不能放过。希望以后还能有这样的机会,增加经验,那定会受益匪浅。


致谢

经过这次数据结构课程设计我收获了很多,指导老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我学到了好多书本上学不到的知识。无论在理论上还是在实践中,都给与我们很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。在撰写论文阶段,老师审阅我们的论文,提出了许多宝贵意见,没有他的指导,我们就不能较好的完成课题设计的任务。感谢淮阴工学院、计算机工程系提供的实践机会,实验室人员提供的实验环境。还有就是要感谢同学给与的帮助,参考文献的原作者。


参考文献

[1]   苏仕华.数据结构课程设计.北京:机械工业出版社,2005

[2]   王红梅,胡明,王涛.数据结构(C++版)学习辅导与实验指导.北京:                    清华大学出版社,2005

[3]   谢楚屏,陈慧南.数据结构.北京:人民邮电出版社,1994

[4] 殷人昆.数据结构(用面向对象方法与C++语言描述).清华大学出版社,2007

[5]吴乃陵 况迎辉.C++程序设计.高等教育出版社,2006


指导教师评语

相关推荐