学生信息管理系统信息管理子系统详细设计报告

学生信息管理系统

设计报告

课程名称:软件工程        

                 专    业:计算机科学与技术

                 姓    名:                

                 学    号:2012051207      

             班    级:     计算机       

科学与技术(2)   

                 指导老师:                 

成    绩:                      


目录

一.总体设计....................................................................................................... 1

1.引言................................................................................................... 1

1.1编写目的.................................................................................... 1

1.3定义............................................................................................ 1

1.4参考资料.................................................................................... 1

2.总体设计........................................................................................... 2

2.1需求规定.................................................................................... 2

2.2运行环境.................................................................................... 3

2.3名词解释.................................................................................... 3

2.4处理流程.................................................................................... 3

2.5结构............................................................................................ 3

2.6尚未解决的问题(需求中的问题)........................................ 4

3.接口设计........................................................................................... 4

3.1用户接口.................................................................................... 4

3.2外部接口........................................................................................... 5

3.3内部接口.................................................................................... 5

4.数据设计.................................................................................... 5

4.1逻辑数据结构设计.................................................................... 5

4.2物理数据结构设计.................................................................... 6

5.性能设计........................................................................................... 8

5.1处理时间.................................................................................... 8

5.2运行效率.................................................................................... 9

5.3可移植性(可重用性)............................................................ 9

6.系统出错处理...................................................................................... 9

6.1出错信息分类............................................................................ 9

6.2出错处理方案............................................................................ 9

6.3系统维护.................................................................................... 9

7.附件................................................................................................. 10

二.详细设计...................................................................................................... 11

1.引言......................................................................................................... 11

1.1编写目的.......................................................................................... 11

1.2背景.................................................................................................. 11

1.3定义................................................................................................. 12

1.4参考资料......................................................................................... 12

2.系统组织结构........................................................................................ 12

3.模块1详细设计.................................................................................... 13

3.1程序描述......................................................................................... 13

3.2功能................................................................................................. 13

3.3性能................................................................................................. 14

3.4接口数据......................................................................................... 14

3.5数据结构......................................................................................... 15

3.6流程图............................................................................................. 16

3.7算法................................................................................................. 16

3.8存储设计......................................................................................... 24

3.9其他................................................................................................. 24

4.风险评估................................................................................................ 25

5.附件........................................................................................................ 26


一.总体设计

1.引言

1.1编写目的

本说明书确定系统的详细功能模块和数据结构,为开发工作提供依据。

学生信息管理信息系统是管理员或教师对学生的信息进行收集,管理,修改,删除,保存,并且涵盖了学生选课上课校园信息查询的系统。管理员有权对信息进行修改,而学生只能进行查看、选课、考试报名等基本的操作没有权限修改信息的内容。当学生需要离校时只需要删除即可。实现了信息的动态存储与管理,方便了学生选课上课考试,提高的管理的效率。系统可以扩展到其他人事信息的管理,比如公司的职工信息等,使软件具有了更好的发展前景和更广阔的用途1.2背景

软件系统的名称: 学生信息管理系统

本项目的任务提出者:陈国志老师

软件系统的用户:学校的学生,教师,管理人员

基于现代化信息系统管理的方便,快捷,以及现在市场上该类产品的功能不全我们提出本项目。在市场已有软件的基础上改进并增加系统功能,完善用户接口,提供更好的人机交互。

1.3定义

学生信息管理信息系统:管理学生信息,考试,及信息查询维护的一种软件。

1.4参考资料

[1] 《C语言成成设计教程》

[2] 《数据结构C语言版》

[3] 《数据结构课程设计》

[4] 《软件工程——原理、方法与应用》

[5] 《学生信息管理系统需求分析报告》

2.总体设计

2.1需求规定

1.资金

自己准备,筹集资金,解决参考资料费用,人工费用,调查费用,交通费用等资费。整个项目的后续工作需要投资若干次,协调投资公司和有意向的企业给项目投资。

2.时间

总时间大约6周,第一二周调查分析写出总结,研究写出需求分析报告;第三周进行概要设计,写出文档,画出基本设计图,然后进行详细分析设计;第四五周开始写代码,用C语言实现详细设计的功能,进行测试;最后一周提交项目成果给用户。

3.技术

C语言程序设计的基本要求技术,以及数据结构和数据库的小部分技术,实现程序对数据库的访问。

4.功能

软件基本上要实现的功能:

(1) 用户的选择

此模块设置普通用户和管理人员接口,供不同权限的操作人员选择登陆。

(2) 用户的登录

(3) 信息的录入选择和确定

该模块录入学生的初始数据,如:学好,姓名等信息。并确认信息,最终录入系统数据库。

(4) 学生选课考试

该模块为学生提供学校学修课程,供需要的学生选课。

(5) 校园信息查询

本模块内录有学校教室信息,机房信息,公共课上课信息,为学生提供一个方便的信息查询平台。

(6)信息的保存的删除管理

本模块提供学生信息的修改和删除。

在以上功能实现的基础上可以完善软件,并在有条件和其他需要的情况下可以进行功能的扩展,以实现更广泛的应用,比如提供企业人事信息管理。

2.2运行环境

1.Windows系列操作系统

2.3名词解释

学生信息管理系统:是基于WEB的一个软件系统,提供学生信息的录入,保存,修改以及学生上课信息查询,报名考试等功能的软件。

2.4处理流程

1.管理员登陆

2.信息录入确定

3学生登陆

4.信息查询

2.5结构

层次结构如图:

2.6尚未解决的问题(需求中的问题)

1.管理员管理小模块尚未实现

2.数据库没有连接

3.校园信息查询系统尚未实现

3.接口设计

3.1用户接口

1. “学生宿舍管理系统”通过用户界面提供登陆接口。

2. “学生宿舍管理系统”通过用户界面向“学校管理系统”提交学生管理相关信息。

3. “学生宿舍管理系统”通过用户界面向“学校收费系统”提交学生报名考试信息,收费系统通过接受的信息来确定学生缴费金额。

1.实现用户和系统的数据通信。

2.实现系统和数据库的数据通信。

3.优化实现连网操作。

学生信息管理系统应提供简单、层次关系明了、清晰的操作界面,使用户一目了然。尽可能的为用户的录入、查询等功能操作提供方便。提供键盘输入操作以方便用户操作。

3.2外部接口

1.数据库

Microsoft SQL sever 20##

Microsoft office access 2003

3.3内部接口

系统应包括以下界面:

1. 用户登陆界面

2. 系统管理模块
3. 修改基本信息模块

4. 报名考试模块
5. 校园信息查询模块

4.数据设计

4.1逻辑数据结构设计

数据结构如下:

typedef struct{

      char num[5];

      char name[9];

      char sex[3];

      char phone[20];

      char add[60];

}datatype;

typedef struct node{

      datatype data;

      struct node *next;

}listnode,*linklist;

listnode *p;

linklist head;

函数设计:

void put();

void quanxian();

void displaych(char ch,int n);//字符输

void denglu();                                              

linklist creatlist(void);

void insertnode(linklist head,listnode *p);

listnode *listfind(linklist head);

void delnode(linklist head);

void display(linklist head);

void changenode(linklist head);

void save(linklist head);

linklist load();

4.2物理数据结构设计

1.系统ER图

2.DFD图

5.性能设计

1. 程序可以完全响应用户要求,正常的数据操作。

2. 某些数据出错,不能正常处理。

3. 系统出错,退出系统。

5.1处理时间

能够很好地实现人机交互,简单的操作要求,良好的操作环境,最快的反应用户请求。

5.2运行效率

及时响应用户需求的操作,响应时间尽量为最小。在网页上运行时为即时响应,即时处理用户要求。

5.3可移植性(可重用性)

开发时保证可以移植在windows系列各种操作系统上使用,移植性强。

6.系统出错处理

6.1出错信息分类

1. 数据出错

数据不符合要求,系统不能接受。

2. 数据处理出错

处理出错,如:数据溢出,范围,精度不够等。

3. 软件出错

软件代码出错,系统中毒。

6.2出错处理方案

1. 正常运行状态。

2. 数据出错,从新输入数据,更改数据。

3. 处理出错,在对数据要求不高时可以用数据,否则要修改系统代码数据范围。

4.软件代码出错,系统强制退出,报错,保存当前数据。

6.3系统维护

1.普通检查

检查系统是否正常运行,系统检查数据是否出错。

2.系统漏洞修补

对于开发过程没有解决和发现的问题进行处理,对于使用过程的问题进行优化,修补完善。

2.系统功能扩展

对使用过程产生的新要求进行分析,进行系统功能扩展,增大系统功能和可以使用的用户群体。

7.附件

1.流程图

 

2.信息管理模块层次图

二.详细设计

1.引言

1.1编写目的

本说明书确定系统的详细功能模块和数据结构,为开发工作提供依据,为系统的开发做出详细的规划,为开发者提供理论的结构模型和设计算法。

学生信息管理信息系统是管理员或教师对学生的信息进行收集,管理,修改,删除,保存,并且涵盖了学生选课上课校园信息查询的系统。管理员有权对信息进行修改,而学生只能进行查看、选课、考试报名等基本的操作没有权限修改信息的内容。当学生需要离校时只需要删除即可。实现了信息的动态存储与管理,方便了学生选课上课考试,提高的管理的效率。系统可以扩展到其他人事信息的管理,比如公司的职工信息等,使软件具有了更好的发展前景和更广阔的用途。

1.2背景

基于目前市场上学生信息管理类软件的缺乏,使得学生信息的管理不太方便,又由于整个市场上对该类管理软件的需求,我们在广泛分析了各类信息的基础上提出本设计。本设计的功能基本有:信息的录入,信息的查询,报名考试,信息修改删除等,基本上对学生等人力资源的管理实现的自动化处理。提高的处理速度和效率。

1.3定义

学生信息管理系统:是基于WEB的一个软件系统,提供学生信息的录入,保存,修改以及学生上课信息查询,报名考试等功能的软件。

1.4参考资料

[1] 《C语言成成设计教程》

[2] 《数据结构C语言版》

[3] 《数据结构课程设计》

[4] 《软件工程——原理、方法与应用》

[5] 《学生信息管理系统需求分析报告》

[6] 《JAVA程序设计教程》

[7] 《WEB开发案例分析》

[8] 《网页开发手记》

2.系统组织结构

组织结构图如下:

图1

3.模块1详细设计

3.1程序描述

程序基于C语言编写,使用数组,链表等的数据结构,对数据进行处理。数据库为管理人员提供学生信息的存储。

学生信息管理信息系统是管理员或教师对学生的信息进行收集,管理,修改,删除,保存,并且涵盖了学生选课上课校园信息查询的系统。管理员有权对信息进行修改,而学生只能进行查看、选课、考试报名等基本的操作没有权限修改信息的内容。当学生需要离校时只需要删除即可。实现了信息的动态存储与管理,方便了学生选课上课考试,提高的管理的效率。系统可以扩展到其他人事信息的管理,比如公司的职工信息等,使软件具有了更好的发展前景和更广阔的用途.

3.2功能

基本功能有:

(1) 用户的选择

此模块设置普通用户和管理人员接口,供不同权限的操作人员选择登陆。

(2) 用户的登录

(3) 信息的录入选择和确定

该模块录入学生的初始数据,如:学好,姓名等信息。并确认信息,最终录入系统数据库。

(4) 学生选课考试

该模块为学生提供学校学修课程,供需要的学生选课。

(5) 校园信息查询

本模块内录有学校教室信息,机房信息,公共课上课信息,为学生提供一个方便的信息查询平台。

(6)信息的保存的删除管理

本模块提供学生信息的修改和删除。

在以上功能实现的基础上可以完善软件,并在有条件和其他需要的情况下可以进行功能的扩展,以实现更广泛的应用,比如提供企业人事信息管理。

3.3性能

1.软件能够很好地实现人机交互,简单的操作要求,良好的操作环境。

2.计划设计有较好的性能:

3.快速及时的用户反映。

4.信息处理的正确保证。

5.用户操作的简介方便性。

6.软件整体功能使用在合理范围内良好。

3.4接口数据

1. “学生宿舍管理系统”通过用户界面提供登陆接口。

2. “学生宿舍管理系统”通过用户界面向“学校管理系统”提交学生管理相关信息。

3. “学生宿舍管理系统”通过用户界面向“学校收费系统”提交学生报名考试信息,收费系统通过接受的信息来确定学生缴费金额。

1.实现用户和系统的数据通信。

2.实现系统和数据库的数据通信。

3.优化实现连网操作。

学生信息管理系统应提供简单、层次关系明了、清晰的操作界面,使用户一目了然。尽可能的为用户的录入、查询等功能操作提供方便。提供键盘输入操作以方便用户操作。

系统应包括以下界面:

1. 用户登陆界面

2. 系统管理模块
3. 修改基本信息模块

4. 报名考试模块
5. 校园信息查询模块

3.5数据结构

数据结构如下:

typedef struct{

      char num[5];

      char name[9];

      char sex[3];

      char phone[20];

      char add[60];

}datatype;

typedef struct node{

      datatype data;

      struct node *next;

}listnode,*linklist;

listnode *p;

linklist head;

函数设计:

void put();

void quanxian();

void displaych(char ch,int n);//字符输

void denglu();                                              

linklist creatlist(void);

void insertnode(linklist head,listnode *p);

listnode *listfind(linklist head);

void delnode(linklist head);

void display(linklist head);

void changenode(linklist head);

void save(linklist head);

linklist load();

3.6流程图

                       图2.流程图

3.7算法

根据需求分析报告的要求,我们为系统创建相应的数据结构体,应用函数从而实现要求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。设计的小模块层次结构如图:

图3.层次结构图

1.数据结构

typedef struct{

      char num[5];

      char name[9];

      char sex[3];

      char phone[20];

      char add[60];

}datatype;

typedef struct node{

      datatype data;

      struct node *next;

}listnode,*linklist;

listnode *p;

linklist head;

2.函数设计:

///函数1

linklist creatlist(void)

{

 system("cls");

linklist head=(listnode *)malloc(sizeof(listnode));

listnode *p,*rear;

char flag='y';

rear=head;

while(flag=='y'||flag=='Y')

{p=(listnode *)malloc(sizeof(listnode));

printf("\n\n\n\n");

displaych(' ',10);

printf("请输入学号,姓名,性别,电话和地址\n");

scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.add);

rear->next=p;

rear=p;

printf("继续输入吗?(y/n):");

getchar();

scanf("%c",&flag);

}

rear->next=NULL;

return head;

getchar();

system("cls");

}

//函数2

void insertnode(linklist head,listnode *p)

{   system("cls");

      listnode *p1,*p2;

      p1=head;

      p2=p1->next;

      while(p2!=NULL&&strcmp(p2->data.num,p->data.num)<0)

      {

      p1=p2;

      p2=p2->next;

      }

      p1->next=p;

             p->next=p2;

             getchar();

system("cls");

}

//函数3

listnode *listfind(linklist head)

{listnode *p;

char num[20];

char name[20];

int xz;

printf("\n\n\n");

displaych(' ',10);displaych('=',60);

displaych(' ',45);

printf("1.按编号查询\n");

displaych(' ',35);

printf("2.按姓名查询\n");

displaych(' ',10);

displaych('=',60);

printf("  \t\t请选择    ");

p=head->next;

scanf("%d",&xz);

system("cls");

if(xz==1){

      printf("\n\n\n\t\t\t请输入要查找者的编号");

      scanf("%s",num);

      while(p&&strcmp(p->data.num,num)<0)

             p=p->next;

      if(p==NULL||strcmp(p->data.num,num)>0)

             p=NULL;}

else

if(xz==2){

      printf("\n\n\n\t\t\t请输入要查找者的姓名");

      scanf("%s",name);

      while(p&&strcmp(p->data.name,name)!=0)

             p=p->next;

}return p;

getchar();

system("cls");

}

    //函数4

void changenode(linklist head)

{

      system("cls");

      listnode *p;

p=listfind(head);

if(p!=NULL){

      printf("编号  姓名  性别  电话  地址\n");

      printf("------------------------------------------------------\n");

      printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.add);

      printf("------------------------------------------------------\n");

      printf("\n\n输入该学生正确的联系电话 通讯地址:\n\n中间用空格分开\n");

      scanf("%s%s",p->data.phone,p->data.add);

}

else

printf("\n\n     没查到要查询的学生信息\n");

}

//函数5

void delnode(linklist head)

{    system("cls");

      listnode *p,*q;

p=listfind(head);

if(p==NULL){

      printf("\n\n   没有查到要删除的学生信息\n");

      return;

}

q=head;

while(q!=NULL&&q->next!=p)

q=q->next;

q->next=p->next;

free(p);

printf("\n\n    学生信息已被删除\n");

getchar();

system("cls");

}

   //函数6

void display(linklist head)

{    system("cls");

/*if(head=NULL){

 printf("抱歉,没有记录!");

 getchar();

 exit(0);

}*/

      listnode *p;

p=head->next;

printf("\n");

displaych(50,'-');

printf("-----------------------------------------------------------\n");

while(p!=NULL)

{printf("\n\n学号           姓名         性别          电话         地址");

      printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.add);

      getchar();

printf("-----------------------------------------------------------\n");

p=p->next;

}getchar();

}   

//函数7

void save(linklist head)   //保存记录

 {

  system("cls");

  listnode *ps;

  FILE *fp;

  char filename[20];

  ps=head;

  puts("请输入路径与文件名,如 d:\\文件夹\\文件名...");

  printf("\n");

  scanf("%s",filename);

  if((fp=fopen(filename,"wb"))==NULL)

    {  puts("cannot open file*\n");

       exit(1); 

  }

  while(ps)

  {fwrite(ps,sizeof(listnode),1,fp);

   ps=ps->next;

  }

  fclose(fp);

  getchar();

system("cls");

}

//函数8

linklist load()           //读取记录

 {

 listnode *p1,*p2;int n;

  FILE *fp;

  char filename[20];

  n=0;

  puts("请输入路径与文件名,如 d:\\文件夹\\文件名...");

  printf("\n");

  scanf("%s",filename);

  if((fp=fopen(filename,"rb"))==NULL)

    {  puts("cannot open file*\n");

       exit(1);    }

   printf("正在读取记录......\n");

    p1=p2=(listnode *)malloc(sizeof(listnode));

   head=NULL;

   while(!feof(fp))

    {if(1!=fread(p1,sizeof(listnode),1,fp))

      break;

        ++n;      

     if(n==1)

        head=p1;

     else

       p2->next=p1;

     p2=p1;

     p1=(listnode *)malloc(sizeof(listnode));

      }

    p2->next=NULL;

  return head;

  }

//函数9

void displaych(char ch,int n)//输出字符

       int i;

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

              printf("%c",ch);

}

//函数10

void denglu()//添加密码

{

    char g[10]="123";       //用户名

    int c,c1,f,t=3;              

    char mima[10]="123";    //密码

    char g1[10];            //输入的账户

    char d[10];             //输入的密码

    do{

        system("cls");

        printf("\n\n\n\n\t\t\t\t  管理员登陆\n\n");

             displaych('-',80);

        printf("\n\n\n\n\t\t\t\t输入管理员账户:");

        gets(g1);

        printf("\n\n");

        printf("\t\t\t\t请输入密码:");

        gets(d);

        c1=strcmp(g,g1);        //比较是否正确

        c=strcmp(mima,d);

        if((c1==0)&&(c==0)){

            f=1;        //标记输入正确

            printf("\n\n");

            printf("\t\t\t\t登陆成功!\n");

          }

        else{

              t--;

            printf("\n\n");

            printf("\t\t\t\t\t账号或密码错误!\n");

                    printf("\t\t\t\t\t请重新输入!\n");

            printf("\n\n\t\t\t\t\t共有3次机会,还有%d次机会!",t);

          }

        getch();

    }while(t>0&&f!=1);

    if(t<=0){

        printf("\n\n\n\t\t\t\t\t抱歉!强制退出!");

        exit(0);}       //强制退出

}

//函数11

void quanxian()

{  int n;

printf("\n\n\n\n\n");

      displaych(' ',25);

     printf("1. 普通用户\n\n\n");

       displaych(' ',25);

       printf("2. 管理员登陆\n\n");

       displaych(' ',25);

       printf("0. 退出\n\n");

       displaych(' ',25);

        printf("请选择权限\n");

     scanf("%d",&n);

        switch(n)

        {

        case 1:

               {

{//          嵌套case语句

      system("cls");

  int j;

  do{

        printf("\n\n\n\n\n");

   displaych(' ',25);

   printf("通讯录管理系统 普通用户\n");

   displaych(' ',25);

    printf("1. 通讯者信息读取\n");

      displaych(' ',25);

    printf("2 .通讯者信息的输出\n");

      displaych(' ',25);

             printf("0. 退出\n");

      printf("请选择!\n");

      getchar();

      // system("cls");

  scanf("%d",&j);   //case语句嵌套怎么没有作用

        switch(j)

              {

              case 1:{ load();

                    system("cls");

                         break;

                              }

                    case 2:{

                                 display(head);

                                 system("cls");

                           break;

                              }

                    case 0:{

                               system("cls");

                        default:

                       continue;

                                   }

              }

             }while(j);

}

              //put();

              //getchar();

                     system("cls");

                     break;

               }

        case 2:{ denglu();

           system("cls");

                break;

                     }

        case 0:exit(0);

        default:printf("输入错误,请重新输入!");

      }

}

3.8存储设计

1.文件的设计

设计文件结构,保存数据,可以将系统数据以文件形式保存并输出,可以备份数据,为数据提供安全保障

2.数据库设计

利用Microsoft SQL sever 20## 或Microsoft office access 20## 进行数据库的设计管理。

(1).需求分析

(2).概念结构设计

(3).逻辑结构设计

(4).数据库物理设计

(5).数据库实施与维护

3.9其他

由上述设计可以完成系统基本功能。但在整个过程中还有很多不能预期的问题出现,我们只能尽量把问题控制在我们设计的范围内,从而减少开发困难和投资风险。在软件实现的过程中,做好系统发布准备工作,让系统在投入市场后能及时获得市场。

4.风险评估

不管是什么系统还是软件,总是有一定的风险存在,这可能是不能预期的市场风险,也可能是分析设计不够全面将来不能及时获得用户。本系统也是如此存在相当的风险。

1.分析设计由于个人思维和对市场的认识有一定的范围,使得我们可能没有发现一些问题,比如功能还是不能满足用户需求等。

2.市场不能预期的风险。如:可能与我们同时又人在开发相同类型的系统,如果我们的速度和功能上相对其他不太完美,我们就完全可能使我们的系统得不到应用。

3.可能还有其他不能全完意料到的风险。

5.附件

预期效果界面类比图:

图1

图2

图3

图4

图5

图6

相关推荐