精华内容
下载资源
问答
  • 学生成绩管理系统设计》 二、实训目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路方法。 (2)掌握C++的基本概念基础知识。 (3)通过训练能够读懂较为复杂的C++语言源程序...

    很多朋友私信要一份C语言学生成绩管理系统设计报告,提供一下获取方法吧

    扫描下方公号,发送 成绩系统 三个字,获取实训报告。

    后续也会把之前搜集到的优质管理系统相关资料分享出来,大家一起学习,下面是作者自己的一份实训报告,希望能帮助到大家

    一、课程设计题目

    《学生成绩管理系统设计》

    二、实训目的

    (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。

    (2)掌握C++的基本概念和基础知识。

    (3)通过训练能够读懂较为复杂的C++语言源程序并具备基本C++语言程序设计的能力。

    4)通过实训,培养自己编写、调试、分析程序的能力。

    5)培养自己独立解决问题,查找资料的能力。同学之间相互帮助,相互交流,相互合作的团队精神。

    6) 培养自己良好的学习兴趣,独立的编程风格。

    7) 通过实训检查自己学习上的不足,达到熟练掌握C++语言的基本知识和技能。

    三、课程设计报告内容

    3.1功能要求

    该系统运行在DOS环境下,人机界面为命令行文本界面。完成的任务是对若干人的成绩信息进行管理,且数据保存到文件中。

    实现的主要功能是:

    系统以菜单方式进行工作

    学生信息和成绩输入功能

    学生信息和成绩输出功能

    学生信息和成绩浏览功能

    查询学生信息及成绩功能

    修改学生信息及成绩功能

    学生成绩排序

    以稳健的形式进行保存

    3.2 设计环境

    所使用的语言采用标准C,开发工具可选用在DOS环境下的Turbo C

    3.3 数据结构

    本系统是对学生成绩的信息进行管理,学生成绩信息采用C的结构体数据类型描述,定义如下:

    struct students
    {
       int num;          //学号-整型//
       char name[8];    //姓名-字符型//
       char chinese;    //大学语文-字符型//
       char math;       //大学数学-字符型//
       char computer;   //计算机-字符型//
       char sum;        //总成绩-字符型//
       char ave;        //平均分-字符型//
    }

    3.4实现方法及主要算法分析

    (1)主界面的设计:主界面采用文本菜单的形式,各功能调用通过菜单进行选择。采用循环处理,以便执行完某项处理后,仍可选择其他项处理。在循环内先显示提示信息,然后读取用户输入,使用switch语句对用户的输入进行判断,分别调用相应的模块,当某模块结束后再次回到文本菜单,直到用户选择结束程序菜单,才退出循环,从而退出系统。

    (2) 外部文件的类型:文件采用的二进制的文件,对文件的读写采用顺序文件的方式,并使用fread和fwrite等函数对文件进行操作。

    (3)清屏函数:一般由上一级菜单屏幕进入下一级菜单屏幕或由下一级菜单屏幕返回上一级菜单屏幕都需要清除屏幕原来显示的内容。同时在调用程序的过程中,记录需要清屏的位置,然后修改代码,加入clrscr()函数清屏。

    (4)提示信息:一般的输入与输出需有相应的提示信息,以增加用户的交互性,增加输出的可读性,以帮助用户使用程序。

    3.5模块设计

    根据功能要求,本系统为五大主要模块,具体模块如表所示。

    学生信息成绩管理系统的模块

    3.6处理流程

    (1)学生成绩管理系统主界面模块

    2)成绩输入模块 和(3)成绩排序模块

    (4)删除记录

    (5)修改记录

    (6)查找信息

    四、结论

    学生成绩管理系统的编写,看似杂乱无头绪,实际上却并不如此。它的每一个功能都能分成模块,有句话说的好,大事化小,小事化了。C语言编程也正式如此,把一个大的程序分为若干相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,这样不仅降低了难度还使得思路清晰,很容易编写出要做的程序,从而为设计一些较大的软件打下了良好的基础。

    分析问题:

    学生成绩管理系统的整体功能都包括、增加成员、删除成员、查看成员、修改成员、登陆口令五大板块,而查看有包括学号,姓名,大学语文成绩,大学数学成绩,计算机成绩,总成绩,平均分七个模块。

    1. 设计的数据对象包括整形:学号。字符型:姓名、3门课程成绩、总成绩、平均成绩。
    2. 数据结构线性数据结构,定义人数上限为1000.

    算法的设计:

    1. 自顶向下

      现有全局,在进行整体设计,然后再进行下层的设计,逐步实现精细化。采用这种方法能够做到胸有全局,能全盘考虑,不至于顾此失彼,头重脚轻。

    1. 逐步细化

       一步步地将上层的任务分解成较小的、易于实现的任务,知道可以很简单实现为止。

    编写源程序:

    1. 不求速度,但求质量!一步一个脚印,编写程序时候宁可速度慢些也要尽量保证质量,做到尽量不出错。
    2. 精力集中,全神贯注!写程序时候最忌讳三心二意,这样才能思路清晰保证质量。
    3. 保持一个良好的编程心态,不要被长长的代码吓到

    程序的编译与运行:

    1. 查找错误是一件让人闹心的事,但是要注重技巧,注意平时经验的积累。
    2. 程序编译成功不要满足现状,要积极测试程序的可用性,对功能不理想,存在缺点的地方,积极的改进,完善。

    五、结束语

    在实训过程中,使我良好的锻炼了自己,首先是兴趣方面,通过编写通讯录管理系统使我更加喜欢编程,使我从以前的迷茫状态中解脱出来,使我了解了编程的真正意义。我想这对我以后的人生有着很大的帮助。其次通过编写通讯录管理系统使我对写程序有了一定的思路,不像以前无从下手,使我理解了算法的意义,使我懂得了模块化思想的好处。

    通过一个星期的编写代码,使我对书本上的知识有了更深的理解,甚至有很多不懂的问题在这过程中自然而然的理解了。对期末考试更有了信心。在朱老师的悉心指导下,我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大提高,自身的注意力,耐心,和对编程的兴趣有了很大增长,使我获益匪浅。

    六、参考书目:

    [1]谭浩强,《C语言程序设计》,清华大学出版社

    附完整代码:

    #include<stdio.h>
    #include<string.h>    //比较字符串头文件//
    #include<stdlib.h>   //实时检测总数头文件//
    #define N 1000       //控制最大输入//
    int n=0;             //实时检测的总数n//
    
    /*定义结构体students*/																	       
    struct students
    {
       int num;          //学号-整型//
       char name[8];     //姓名-字符型//
       char chinese;     //大学语文-字符型//
       char math;        //大学数学-字符型//
       char computer;    //计算机-字符型//
       char sum;         //总成绩-字符型//
       char ave;        //平均分-字符型//
    }student[N],student1;     //student[N]是结构体数组student1是结构体的初始化//
    
      /*实时检测总数n*/
    void count()  
     {
    	FILE *fp;         //定义一个文件指针fp//
    	fp=fopen("students.txt","at+");     //以“追加”方式打开students文本文件//
    	if(fp==NULL)                        //判断文件是否为空//
    		printf("Cannot open file!");
        struct students stu1;                 
    	n=0;         //初始化//
    	while(1)
    	{
    	  if(feof(fp))  //检测文件是否结束//
    	  break;
          fread(&stu1,sizeof(struct students),1,fp);   //读取文件//
    	  n++;    //读取文件数//
        }
    	n--;           //关闭文件数//
    	fclose(fp);    //关闭文件//
     }
    
    /*菜单*/
    void main()
    {
    	int i;        //获取用户在菜单中的选择//     
    	while(i!=0)
    	{
    		system("cls");     //清屏//
    	printf("\t\t欢迎进入学生信息管理系统\n");
      printf("\t\t==============================\n");
    		printf("\t\t*请择操作                    *\n");
    		printf("\t\t*1输入学生信息               *\n");
    		printf("\t\t*2输出学生信息               *\n");
    		printf("\t\t*3修改学生信息               *\n");
    		printf("\t\t*4查询学生信息               *\n");
           printf("\t\t*5排序学生信息               *\n");
    		printf("\t\t*6退出                       *\n");
    	printf("\t\t==============================\n");
     scanf("%d",&i);
     system("cls");     //清屏// 
    		count();     //实时检测总数n//
    		switch(i)
    		{
    		 case 1:input();break;    //输入学生信息//	
    		 case 2:output();break; 	//输出学生信息//
    	     case 3:xiugai();output();break;    //修改学生信息//
            case 4:query();break;    //查询学生信息*/
            case 5:paixu();output();break;    //成绩排序//
    	default:
    		   printf("输入有错\n");     //错误纠正//  
    		}
    	}
    	   if(i==0)
    	     tuichu();        //退出系统//
    }
    
    
    /*成绩输入*/
    void input()   
    {
      int i=0;     //学生人数初始化//
      char c;
      FILE *fp;     //定义一个文件指针fp//
    	count();     //实时检测总数n//
    	fp=fopen("students.txt","at+");    //以“追加”方式打开students文本文件//
      do 
      {	
       printf("请输入学生的个人信息:\n");
         printf("\n请输入第%d学生的信息:\n",n+1);
         printf("请输入学生的学号:");
         scanf("%d",&student[i].num);
         printf("请输入学生的姓名:");
        scanf("%s",student[i].name);getchar();
        printf("请输入学生的大学语文成绩");
        scanf("%s",student[i].chinese);
        printf("请输入学生的大学数学成绩:");
        scanf("%d",&student[i].math);
        printf("请输入学生的计算机成绩:");
        scanf("%s",student[i].computer);
         getchar();
         student[i].sum=student[i].chinese+student[i].math+student[i].computer;
    		student[i].ave=student[i].sum/3;
    fwrite(&student[i],sizeof(struct students),1,fp);  //以方式将其写入students文本文件//
    	i++;     
    	n++;      
    	printf("\n\n\t\t\t\t是否继续输入(Y/N):");getchar();     //提示是否继续,从键盘  
                                                               获得一个字符//  
    scanf("%c",&c);  
      }
     while(c=='y'||c=='Y');
     fclose(fp);
    }
    
    /*成绩输出*/        
    void output()  
    {
      int i;
      char c;
      FILE *fp;      //定义一个文件指针fp//
      fp=fopen("students.txt","rt");    //以“读取的” 方式打开students文本文件//
      system("cls");     //清屏//
      getchar();
        
    printf("||------||-----||-----||-----||------||-------||-------||------||");
    	printf("|#学号-----姓名------大学语文------大学数学------计算机------总成绩
    -----平均分---#|\n");
      do{  
    	  for(i=0;i<n;i++)  
    	  { 
           fread(&student[i],sizeof(struct students),1,fp);  
           printf("%d",student[i].num);
            printf(" %d",student[i].name);
    	        printf("%d",student[i].chinese);
              printf(" %d ",student[i].math);
              printf("%d ",student[i].computer);
              printf("%d",student[i].sum);
              printf(" %d ",student[i].ave);
         
    	  }
    printf("|------||-----||------||-----||-----||-----||-----||------ |");
      	  printf("\n\n\t\t\t\t是否继续其它操作(Y/N):");     //提示是否继续//
    	      scanf("%c",&c);
    	  c=getchar();
    	}while(c=='y'||c=='Y');
         fclose(fp);      //关闭文件//
    }
    
    /*成绩修改*/
    void xiugai()  { 
      int i,tp,num1;
      char c; 
      FILE *fp;     //定义一个文件指针fp//
    
    lb:  
      printf("\n按学号修改\n\n");
      printf("请输入要修改的学生学号\n");
      scanf("%d",&num1);
    
     for(i=0;i<n;i++) 
     {
    	if(num1==student[i].num)
    	  { 
    		printf("要修改的学生信息为:\n");
            printf("学号\t姓名\t大学语文成绩\t大学数学成绩\t计算机成绩\t总成绩\t
    平均分\n");          
            printf(" %d ",student[i].num);
            printf(" %d ",student[i].name);
            printf(" %d ",student[i].chinese);
            printf(" %d ",student[i].math);
            printf(" %d ",student[i].computer);
            printf(" %d ",student[i].sum);
            printf(" %d ",student[i].ave);
            do {
    		    printf("请选择要修改项:\n");
                printf("1学号\n2姓名\n3大学语文成绩\n4大学数学成绩\n5总成绩\n6平
    均分\n");
                scanf("%d",&tp);
    	            switch(tp)
    			{
    	         case 1:
    				{	 printf("请输入学号:\n");
    		          scanf("%d",&student[i].num);
    		          goto la;
    				}	
    	  	      case 2:
    				{ printf("请输入姓名:\n");
    		          scanf("%s",student[i].name);
    		          goto la;
    				}	
    	  	      case 3:
    				{ printf("请输入大学语文成绩:\n");
    				  getchar();
    		          scanf("%c",&student[i].chinese);
    		         goto la;
    				}	
    	  	      case 4:
    				{ printf("请输入大学数学成绩:\n");
    		          scanf("%d",&student[i].math);
    		         goto la;		  
    				}	
    	  	      case 5:
    				{printf("请输入计算机成绩:\n");
    		          scanf("%s",student[i].computer);	
    		         goto la;
    				}	
    	  	     case 6:
    				{ printf("请输入总成绩:\n");
    		          scanf("%s",student[i].sum);
    		         goto la;
    				}	
    	  	     case 7:
    				{ printf("请输入平均分:\n");
    		          scanf("%s",student[i].ave);
    		         goto la;
    				}
    			}
    		}while (tp<8);		 
    la:	  printf("是否继续修改(y/n)\n");     //提示是否继续//
    	  getchar();
    	  scanf("%c",&c);
    	  if(c=='y'||c=='Y')  goto lb;
             }
      }
        fp=fopen("students.txt","w+");   //以“读写” 方式打开students文本文件//
    	  for(i=0; i<n;i++)
    	  fwrite(&student[i],sizeof(struct students),1,fp);  //以 方式将其写入students
                                                     文本文件//
     fclose(fp);    //关闭文件//
    }
    
    
    /*成绩查询*/
    void query()
    { int querymode;     //子菜单选择//
      int i,j=0,findnum;
      char findname[20];
      int findok,t=0;     //定义一个判断标志的整型变量findok//
      char findct;        //定义一个用于判断是否继续查找的字符变量findct//
      
       FILE *fp;         //定义一个文件指针fp//
       count();     //实时检测总数n//
       fp=fopen("students.txt","r");       //以“只读” 方式打开students文本文件//
       system("cls");     //清屏//
    
      /*查询菜单*/
      printf("\t\t信息查询");
      printf("\n\t1按姓名查询");
      printf("\n\t2按学号查询");
      printf("\n\t0返回上级菜单");
      printf("\n请输入您的操作:");
      scanf("%d",&querymode);
    
      /*查询操作*/
      switch(querymode)
      {case 1: 
        {     printf("请输入要查询学生的姓名:\n");
                getchar();
                scanf("%s",findname); 
                for(i=0;i<N;i++)
    		{
         fread(&student[i],sizeof(struct students),1,fp); //以方式将其读入students
                                                          文本文件//
       if(strcmp(student[i].name,findname)==0)        //比较字符串//
    			 { 
    			   j++;
    			   printf("\n查寻到的学生为:\n");
    			   if(j==1)
                              、
    printf("|------||-----||------||------||------||-------||------||-----|");    
    //仅在第一次显示//
    	printf("|#学号-----姓名------大学语文------大学数学------计算机------总成绩-
    ----平均分---#|\n");
              
    printf("%4d%d%d%d%d%d%d%d",student[i].num,student[i].name,
    student[i].chinese,student[i].math,student[i].sum,student[i].ave);
    			  }
    
    			}
    			if(j==0)
    			  printf("\n>>>查无此人!");
    
               //提示是否继续// 
                printf ("\n是否继续查找(Y/N)?");       
                getchar();
                getchar();}break;
      
        case 2:{ printf("请输入要查询学生的学号:");
                 scanf("%d",&findnum);
                 for(i=0;i<n;i++)
    			 {
                  fread(&student[i],sizeof(struct students),1,fp);        
    //以结构体students的方式从文件fp中读取,将其读入students文本文件,每次读入一个 
    学生的信息//
                  if(student[i].num==findnum)      //整型数字的比较// 
    			  {findok=1;break;}
    			  else findok=0;
    			 }
                  if(!findok)
    				printf("\n>>>查无此人!");
    			  else
    			  { printf("\n查寻到的学生为:\n") ;
    			    if(j==1)
                          printf("|-------||------||------||-------||-------||-------||-------||------|");   
     //仅在第一次显示//
     printf("|学号-----姓名------大学语文------大学数学------计算机------总成绩-----平均分---|\n");
     printf("%4d%d%d%d%d%d%d%d",student[i].num,student[i].name,
    student[i].chinese,student[i].math,student[i].sum,student[i].ave);
    			  }
    //提示是否继续//
          printf ("\n是否继续查找(Y/N)?");       
            getchar();
    			findct=getchar();     //从键盘输入一个判断字符,并将它赋值给字符变量
                                   findct,用于以下的if语句的判断 //
    			if(findct=='Y' || findct=='y')
    			  query();
    		  }
      }
      fclose(fp);    //关闭文件//
    }
    
    
    /*成绩排序*/
    void paixu()
    {
       int i, j;
         FILE *fp;       //定义一个文件指针fp//
       system("cls");      //清屏//
       count();       //实时检测总数n// 
       for(i=0;i<n-1;i++)
    	    for(j=0;j<n-1-i;j++)    //按学号对学生信息进行排序//
    		{
    		     if(student[j].num>student[j+1].num)   //整型数字的比较//
    			 {
    			     student1=student[j];
    			     student[j]=student[j+1];
    			     student[j+1]=student1;
    			 }
    		}
    	fp=fopen("students.txt","w+");  //以 “读写”方式打开students文本文件//
    	for(i=0;i<n;i++)
    	fwrite(&student[i],sizeof(struct students),1,fp);  //以结构体students的方式从
       文件fp中读取,将其写入students文本文件,每次写入一个学生的信息//
        fclose(fp);      //关闭文件//
    }
    
    /*退出系统*/
    void tuichu() 
    {
    	char c;
    	  system("cls");      //清屏//
        printf("\n\n\t\t谢谢使用\n\n\n");
        printf("\n\n\t\t制作人:李姣 渠莉 宝珠 朱佳 刘妍\n");
    	  getchar();
    	c=getchar();       //取用户输入,回显//    
    }

    需要实训报告的同学,请在下方留言,看到会一个个回复的。

    或者直接扫描下方公号,发送 成绩系统 三个字,获取下载源码

    如果失效了,再请直接私信或留言,欢迎大家一起探讨学习。

    相关文章推荐:

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    展开全文
  • C语言学生成绩信息管理系统课程设计报告

    万次阅读 多人点赞 2016-10-07 22:19:22
    学生成绩管理系统 主要功能: (1)能按学期、按班级完成对学生成绩的录入、 修改,删除 (2)能按班级统计学生的成绩,求学生的总分及 平均分,并能根据学生的平均成绩进行排序 (3)能查询学生...

    C语言课程设计报告

     

    一 .设计目的

      学生成绩管理系统

     主要功能:

     

    (1)能按学期、按班级完成对学生成绩的录入、

     

    修改,删除

     

    (2)能按班级统计学生的成绩,求学生的总分及

     

    平均分,并能根据学生的平均成绩进行排序

     

     

    (3)能查询学生成绩,不及格科目及学生名单

     

     

    (4)能按班级输出学生的成绩单

     

     

     

     

     

    二 .总体设计

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    此流程图是整体上对程序需要哪些函数而设计的,这些都是核心函数,先将这些函数实现以后再通过main()主函数对每一个核心函数进行调用,主函数里面可以用到while循环和switch语句

    三.详细设计

    void Pass_File(); //创建密码文件

    int Name_Password(); //登陆密码验证

    void User_Amadeus();/* 密码修改 */

    /***********************************************/

     

    void in();/*录入学生成绩信息*/

    void show();/*显示学生信息*/

    void order();/*按总分排序*/

    void del();/*删除学生成绩信息*/

    void modify();/*修改学生成绩信息*/

    void menu();/*主菜单*/

    void insert();/*插入学生信息*/

    void total();/*计算总人数*/

    void search();/*查找学生信息*/

    void ShowClassS();      // 显示某班学生信息

    void ShowFailS();       // 显示不及格学生信息

    void main()/*主函数,实现对每个函数的调用,main函数里面,通过对输入序号的值对应的调用函数,这需要用到switch()语句*/

    每个函数都相对是独立的,入口参数就是输入学生的成绩信息

     

     

    四.调试与测试

    五.源程序清单和执行结果
    
    1 . 定义结构体及宏定义
    
    #include<stdio.h>
    
    #include<stdlib.h>
    
    #include<conio.h>
    
    #include<dos.h>
    
    #include<string.h>
    
    #define LEN sizeof(struct student)
    
    #define FORMAT "  %2s   %2s   %s   %s     %4.1lf     %4.1lf     %4.1lf  %4.1lf   %4.2lf  \n"
    
    #define DATA stu[i].Term,stu[i].Class,stu[i].name,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave
    
    char Name[15]; //用户名存储
    
    char Pass[15]; //用户密码存储
    
    #define R 3
    
    struct student/*定义学生成绩结构体*/
    
    {
    
    char Class[15];        //专业班级
    
        char Term[5];          // 学期
    
    char num[15];              /*学号*/
    
    char name[15];         /*姓名*/
    
    double score[3];        //学科成绩
    
    double sum;          /*总分*/
    
    double ave;          /*平均分*/
    
    };
    
    struct student stu[100];/*定义结构体数组*/
    
    
    
    /******用户输入用户名与登陆密码*******/
    
    struct NamePass
    
    {
    
    char name[15];
    
    char pass[15];
    
    };
    
    
    
    2.函数声明
    
    /**********密码登陆模块************************/
    
    void Pass_File(); //创建密码文件
    
    int Name_Password(); //登陆密码验证
    
    void User_Amadeus();/* 密码修改 */
    
    /***********************************************/
    
    
    
    void in();/*录入学生成绩信息*/
    
    void show();/*显示学生信息*/
    
    void order();/*按总分排序*/
    
    void del();/*删除学生成绩信息*/
    
    void modify();/*修改学生成绩信息*/
    
    void menu();/*主菜单*/
    
    void insert();/*插入学生信息*/
    
    void total();/*计算总人数*/
    
    void search();/*查找学生信息*/
    
    void ShowClassS();      // 显示某班学生信息
    
    void ShowFailS();       // 显示不及格学生信息
    
    
    
    3.主函数 main()
    
    利用while循环和swithch()语句进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数,输入0时,结束退出。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!
    
    /*******************************************************************************************************************
    
                                                     程序的开始部分
    
    ********************************************************************************************************************/
    
    void main()/*主函数*/
    
    {
    
    int n;
    
        Pass_File();
    
        Name_Password();
    
    system("pause");
    
    system("cls");
    
    printf("\t\t******************************************************************\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t*      欢迎使用由计算机1505班设计的学生成绩管理系统              *\n");
    
    printf("\t\t*                   祝您使用愉快!!!!                         *\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t*      心灵鸡汤:                                                *\n");
    
    printf("\t\t*                                                                *\n");
    
        printf("\t\t*      相信自己,依靠自己,要尽自己的能力,把每件事情都做得更好,*\n");
    
    printf("\t\t*      让自己活的每一天都有意义。                                *\n");
    
    printf("\t\t*      努力成为你最喜欢的那种人,就算不成功,                    *\n");
    
    printf("\t\t*      至少你会喜欢这样努力的自己。                              *\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t*      指导老师  :毋小省                                        *\n");
    
    printf("\t\t*      课程设计  :C语言                                         *\n");
    
    printf("\t\t*      姓    名  :张诚华、马莹莹                                *\n");
    
    printf("\t\t*      学    校  :河南理工大学                                  *\n");
    
    printf("\t\t*      学    号  :311509010516,311509010507                    *\n");
    
    printf("\t\t*      专业班级  :计算机1505                                    *\n");
    
    printf("\t\t*                                                                *\n");
    
    printf("\t\t******************************************************************\n");
    
        system("pause");//暂停
    
        system("cls");
    
    menu();
    
    scanf("%d",&n);/*输入选择功能的编号*/
    
    while(n)
    
    {
    
    switch(n)
    
    {
    
    case 1:
    
    in();
    
    break;
    
    case 2:
    
    search();
    
    break;
    
    case 3:
    
    del();
    
    break;
    
    case 4:
    
    modify();
    
    break;
    
    case 5:
    
    insert();
    
    break;
    
    case 6:
    
    order();
    
    break;
    
    case 7:
    
    total();
    
    break;
    
    case 8:
    
                User_Amadeus();
    
                break;
    
    case 9:
    
    ShowClassS();
    
                break;
    
    case 10:
    
    show();
    
                break;
    
    case 11:
    
                ShowFailS();
    
                break;
    
    default:break;
    
    }
    
    getch();
    
    menu();/*执行完功能再次显示菜单界面*/
    
    scanf("%d",&n);
    
    }
    
    }
    
    
    
    4.创建密码文件函数
    
    /****************创建密码文件*************/
    
    void Pass_File()
    
    {
    
    FILE *  PassFile;
    
    PassFile = fopen("c:\\CLP\\password.bat", "ab+");
    
    if(NULL == PassFile)
    
    {
    
    printf("创建密码文件失败!\n");
    
    exit(0);
    
    }
    
    fprintf(PassFile ,"amadeus\n");
    
    fwrite("amadeus" , sizeof("amadeus"), 1, PassFile);
    
    
    
    fclose(PassFile);
    
    }
    
    5.登录密码验证函数 
    
    /******************登 陆 密 码 验 证 ***********************/
    
    int Name_Password()
    
    {
    
    struct NamePass PassW1;
    
    
    
    int num = 0;
    
    
    
    FILE * PassFile;
    
    
    
    PassFile = fopen("c:\\CLP\\password.bat", "rb");//以只读的方式打开二进制文件password.bat
    
    if(NULL == PassFile)
    
    {
    
    Pass_File();
    
    }
    
    
    
    fscanf(PassFile, "%s", Name );//设置初始用户名
    
    fscanf(PassFile, "%s", Pass);//设置初始密码
    
    
    
    while(1)
    
    {
    
    system("cls");
    
    printf("\n\n\t\t\t  欢迎使用学生成绩管理系统\n\n");
    
    printf("\t\t\t\t密码和学号一样\n\n\n");
    
    printf("  请输入学号: ");
    
    scanf("%s", &PassW1.name);
    
    printf("\n");
    
    printf("  请输入密码: ");
    
    scanf("%s", &PassW1.pass);
    
    if(0 == strcmp(Name,PassW1.name) && 0 == strcmp(Pass,PassW1.pass))
    
    {
    
    printf("\n\n\n\t\t\t密 码 核 对 正 确 ! \1 \n");
    
    printf("\n\n\n\t\t 欢 迎 您 使 用 学 生 管 理 系 统 ! \2\n");
    
    break;
    
    }
    
    else
    
    {
    
    printf("\n\n\t\t\t对不起,您输入的用户名或密码有误!\n\n");
    
    printf("\n\n\t\t      请  按  任  意  键  重  新  输  入 !\n\n\n\n\n\n\n\n\n");
    
    getch();
    
    num++;
    
    if(3 == num)
    
    {   
    
    system("cls");
    
    printf("\n\n\t\t\t  欢迎使用学生成绩管理系统\n\n\n");
    
    printf("\n\n\n\t\t 对 不 起\n\n\n");
    
    printf("\n\t\t\t  你 已 经 三 次 输 入 错 误\n\n");
    
    printf("\n\t\t\t\t\t\t\t再 见 ! \n\n\n\n\n\n");
    
    getch();
    
    fclose(PassFile);
    
    return 0;
    
    }
    
    }
    
    }
    
    printf("\n\n\n");
    
    
    
    fclose(PassFile);
    
    return 1;
    
    }
    
    6.密码修改函数 
    
    /*******************密码修改****************/
    
    void User_Amadeus()
    
    {
    
    FILE * PassFile;
    
    int a = 1;
    
    char name1[15];
    
    char passw1[15];
    
    char passw2[15];
    
    char passw3[15];
    
    
    
    system("cls");
    
    PassFile = fopen("c:\\CLP\\password.bat", "wb");
    
    if(NULL == PassFile)
    
    {
    
    printf("修改密码文件失败!\n");
    
    exit(0);
    
    }
    
    printf("\t\t\t\t  用 户 修 改 \n");
    
    while(1)
    
    {
    
    printf("请输入原密码:");               
    
    scanf("%s", passw1);
    
    if(0 == strcmp(Pass, passw1))
    
    {
    
    printf("\n请输入新用户名:");
    
    scanf("%s", name1);
    
    while(1)
    
    {
    
    while(1)
    
    {
    
    printf("\n请输入新密码:");
    
    scanf("%s", passw2);
    
    if(0 == strcmp(Pass, passw2))
    
    {
    
    printf("\n新密码不能与旧密码相同!\n");
    
    }
    
    else
    
    break;
    
    }
    
    printf("\n请确认新密码:");
    
    scanf("%s", passw3);
    
    if(0 == strcmp(passw2, passw3))
    
    {
    
    strcpy(Pass , passw2);
    
    printf("\n\n\t\t\t密 码 修 改 成 功 \1 请 重 新 登 陆 !\n\n");
    
    fprintf(PassFile, "%s\r\n", name1);
    
    fprintf(PassFile, "%s\r\n", passw2);
    
    break;
    
    }
    
    else
    
    printf("\n您输入的密码不一致, 请重新输入!\n");
    
    }
    
    break;
    
    }
    
    else
    
    {
    
    if(a != 3)
    
    {
    
    printf("\n密码错误,请重新输入!\n\n");
    
    a++;
    
    }
    
    else
    
    {
    
    printf("你已三次输入密码错误 !\n\n");
    
    printf("再见!\n");
    
    exit(0);
    
    }
    
    }
    
    }
    
    fclose(PassFile);
    
    system("pause");
    
    }
    
    7.按学期、按班级录入学生成绩函数
    
    /*********************录入学生信息********************/
    
    void in()
    
    {
    
    int i,m=0;/*m是记录的条数*/
    
    char ch[2];
    
    FILE *fp;/*定义文件指针*/
    
    if((fp=fopen("data","ab+"))==NULL)/*打开指定文件*/
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))
    
    {
    
    if(fread(&stu[m] ,LEN,1,fp)==1)
    
    m++;/*统计当前记录条数*/
    
    }
    
    fclose(fp);
    
    if(m==0)
    
    printf("No record!\n");
    
    else
    
    {
    
    system("cls");
    
    show();/*调用show函数,显示原有信息*/
    
    }
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    printf("please input(Y/N):");
    
    scanf("%s",ch);
    
    while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/
    
    {
    
    printf("输入学期:");
    
    scanf("%s",stu[m].Term);
    
    printf("输入专业班级:");
    
    scanf("%s",stu[m].Class);
    
    printf("输入学生姓名:");
    
    scanf("%s",stu[m].name);/*输入学生姓名*/
    
    printf("学号:");
    
    scanf("%s",stu[m].num);/*输入学生学号*/
    
    
    
    printf("输入工科数学成绩:");
    
    scanf("%lf",&stu[m].score[0]);/*输入工科数学成绩*/
    
    printf("输入大学英语成绩:");
    
    scanf("%lf",&stu[m].score[1]);/*输入大学英语成绩*/
    
    printf("输入C语言成绩:");
    
    scanf("%lf",&stu[m].score[2]);/*输入C语言成绩*/
    
    stu[m].sum=stu[m].score[0]+stu[m].score[1]+stu[m].score[2];/*计算出总成绩*/
    
    stu[m].ave=stu[m].sum/3.0;/*计算出平均分*/
    
    if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/
    
    {
    
    printf("不能保存!");
    
    getch();
    
    }
    
    else
    
    {
    
    printf("%s 保存成功!\n",stu[m].name);
    
    m++;
    
    }
    
    printf("是否继续?(Y/N):");/*询问是否继续*/
    
    scanf("%s",ch);
    
    }
    
    fclose(fp);
    
    printf("OK!\n");
    
    }
    
    8.显示学生成绩函数
    
    /**************************显示学生成绩*************************/
    
    void show()
    
    {
    
    FILE *fp;
    
    int i,m=0;
    
    fp=fopen("data","ab+");
    
    while(!feof(fp))
    
    {
    
    if(fread(&stu[m] ,LEN,1,fp)==1)
    
    m++;
    
    }  
    
    fclose(fp);
    
    printf(" 学期   专业班级      姓名       学号      工科数学  大学英语  C语言  总分  平均分 \n");
    
    for(i=0;i<m;i++)
    
    {
    
    printf(FORMAT,DATA);/*将信息按指定格式打印*/
    
    }
    
    }
    
    
    
    9.将学生成绩进行排序函数
    
    /*******************自定义排序函数***********************/
    
    void order()
    
    {
    
    FILE *fp;
    
    struct student t;
    
    int i=0,j=0,m=0;
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file!\n");
    
    return;
    
    }
    
    while(!feof(fp))
    
    if(fread(&stu[m] ,LEN,1,fp)==1)
    
    m++;
    
    fclose(fp);
    
    if(m==0)
    
    {
    
    printf("no record!\n");
    
    return;
    
    }
    
    for(i=0;i<m-1;i++)
    
    for(j=i+1;j<m;j++)/*双重循环实现成绩比较并交换*/
    
    if(stu[i].sum<stu[j].sum)
    
    {
    
    t=stu[i];
    
    stu[i]=stu[j];
    
    stu[j]=t;
    
    }
    
                    printf(" 学期   专业班级      姓名       学号      工科数学  大学英语  C语言  总分  平均分 \n");
    
                    for(i=0;i<m;i++)
    
    {
    
           printf(FORMAT,DATA);/*将信息按指定格式打印*/
    
    }
    
    if((fp=fopen("data","a"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
    
    if(fwrite(&stu[i] ,LEN,1,fp)!=1)
    
    {
    
    printf("%s 没有保存成功!\n");
    
    getch();
    
    }
    
    fclose(fp);
    
    printf("保存成功!已将成绩名次存入data中\n");
    
    }
    
    
    
    10.删除学生成绩函数
    
    /********************自定义删除函数********************/
    
    void del()
    
    {
    
    FILE *fp;
    
    int i,j,m=0;
    
    char snum[15];
    
    char ch[2];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    fclose(fp);
    
    if(m==0)
    
    {
    
    printf("没有该学号!\n");
    
    return;
    
    }
    
    printf("请输入学号:");
    
    scanf("%s",snum);
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))
    
    break;
    
     if(i==m)
    
    {
    
    printf("没有找到该学生的成绩");
    
    getchar();
    
    return;
    
    }
    
    printf("找到该学生的成绩,是否删除?(Y/N)");
    
    scanf("%s",ch);
    
    if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
    
    {
    
    for(j=i;j<m;j++)
    
    stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/
    
    m--;/*记录的总个数减1*/
    
    printf("删除成功!\n");
    
    }
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
    
    if(fwrite(&stu[j] ,LEN,1,fp)!=1)
    
    {
    
    printf("保存失败!\n");
    
    getch();
    
    }
    
    fclose(fp);
    
    
    
    }
    
    
    
    11.修改学生成绩函数
    
    /*********************自定义修改函数********************/
    
    void modify()
    
    {
    
    FILE *fp;
    
    int i,j,m=0;
    
    char snum[15];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    fclose(fp);
    
    return;
    
    }
    
    printf("请输入你要修改的成绩的学生的学号!\n");
    
    scanf("%s",snum);
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))/*检索记录中是否有要修改的信息*/
    
    break;
    
    if(i<m)
    
    {
    
    printf("找到该学生的成绩!你可以修改该成绩!\n");
    
    printf("姓名:");
    
    scanf("%s",stu[i].name);/*输入名字*/
    
    scanf("%lf",&stu[m].score[0]);/*输入工科数学成绩*/
    
        printf("输入大学英语成绩:");
    
        scanf("%lf",&stu[m].score[1]);/*输入大学英语成绩*/
    
        printf("输入C语言成绩:");
    
        scanf("%lf",&stu[m].score[2]);/*输入C语言成绩*/
    
    stu[m].sum=stu[m].score[0]+stu[m].score[1]+stu[m].score[2];/*计算出总成绩*/
    
    stu[i].ave=stu[i].sum/3.0;
    
    }
    
    else
    
    {
    
    printf("没有找到该学生的成绩!");
    
    getchar();
    
    return;
    
    }
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
    
    if(fwrite(&stu[j] ,LEN,1,fp)!=1)
    
    {
    
    printf("保存失败!");
    
    getch();
    
    }
    
    fclose(fp);
    
    }
    
    
    
    12.功能主菜单函数
    
    /******************自定义函数实现菜单功能*************************/
    
    void menu()
    
    {
    
    system("cls");
    
    printf("\n\n\n\n\n");
    
    printf("\t\t\t|-------------------学生成绩管理系统------------|\n");
    
    printf("\t\t\t|\t\t *0  退出                       |\n");
    
    printf("\t\t\t|\t\t *1  按学期、班级录入学生成绩   |\n");
    
    printf("\t\t\t|\t\t *2  查找学生成绩               |\n");
    
    printf("\t\t\t|\t\t *3  删除学生成绩               |\n");
    
    printf("\t\t\t|\t\t *4  修改学生成绩               |\n");
    
    printf("\t\t\t|\t\t *5  插入学生成绩               |\n");
    
    printf("\t\t\t|\t\t *6  学生成绩名次               |\n");
    
    printf("\t\t\t|\t\t *7  统计保存的学生人数         |\n");
    
        printf("\t\t\t|\t\t *8  用户密码修改               |\n");
    
    printf("\t\t\t|\t\t *9  按班级输出学生成绩         |\n");
    
    printf("\t\t\t|\t\t *10 显示学生成绩信息           |\n");
    
    printf("\t\t\t|\t\t *11 输出不及格学生成绩         |\n");
    
    printf("\t\t\t|-----------------------------------------------|\n\n");
    
    printf("\t\t\t请选择(0-10):");
    
    }
    
    
    
    13.插入学生成绩函数
    
    
    
    /****************自定义插入函数*****************/
    
    void insert()
    
    {
    
    FILE *fp;
    
    int i,j,k,m=0;
    
    char snum[15];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    fclose(fp);
    
    return;
    
    }
    
    printf("请输入你要插入的位置!(请输入学号)\n");
    
    scanf("%s",snum);/*输入要插入的位置*/
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))
    
    break;
    
    for(j=m-1;j>i;j--)
    
    stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
    
    printf("现在请输入新的信息.\n");
    
    printf("学号:");
    
    scanf("%s",stu[i+1].num);
    
    for(k=0;k<m;k++)
    
    if(stu[k].num==stu[i+1].num&&k!=i+1)
    
    {
    
    printf("the number is existing,press any to continue!");
    
    getch();
    
    fclose(fp);
    
    return;
    
    }
    
    printf("姓名:\n");
    
    scanf("%s",stu[i+1].name);
    
    printf("\n工科数学成绩:");
    
    scanf("%lf",&stu[i+1].score[0]);
    
    printf("\n大学英语成绩:");
    
    scanf("%lf",&stu[i+1].score[1]);
    
    printf("\nC语言成绩:");
    
    scanf("%lf",&stu[i+1].score[2]);
    
    stu[i+1].sum=stu[i+1].score[0]+stu[i+1].score[1]+stu[i+1].score[2];/*计算出总成绩*/
    
    stu[i+1].ave=stu[i+1].sum/3.0;
    
    if((fp=fopen("data","wb"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    for(k=0;k<=m;k++)
    
    if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
    
    {
    
    printf("保存失败!");
    
    getch();
    
    }
    
    fclose(fp);
    
    }
    
    
    
    14.统计学生人数
    
    
    
    /*************统计学生人数************/
    
    void total()
    
    {
    
    FILE *fp;
    
    int m=0;
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {         
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))  
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;/*统计记录个数即学生个数*/
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    fclose(fp);
    
    return;
    
    }
    
    printf("该年级有 %d 个学生!\n",m);/*将统计的个数输出*/
    
    fclose(fp);
    
    }
    
    
    
    15.查找学生成绩函数
    
    
    
    /**********************自定义查找函数*********************/
    
    void search()
    
    {
    
    FILE *fp;
    
    int i,m=0;
    
    char snum[15];
    
    char ch[2];
    
    if((fp=fopen("data","ab+"))==NULL)
    
    {
    
    printf("can not open the file\n");
    
    return;
    
    }
    
    while(!feof(fp))
    
    if(fread(&stu[m],LEN,1,fp)==1)
    
    m++;
    
    fclose(fp);
    
    if(m==0)
    
    {
    
    printf("没有记录!\n");
    
    return;
    
    }
    
    printf("请输入学号:");
    
    scanf("%s",snum);
    
    for(i=0;i<m;i++)
    
    if(strcmp(snum,stu[i].num))/*查找输入的学号是否在记录中*/
    
    {
    
    printf("找到该学生成绩,是否显示?(y/n)");
    
    scanf("%s",ch);
    
    if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
    
    {
    
    printf(" 学期    专业班级    姓名       学号       工科数学  大学英语  C语言  总分  平均分 \n");
    
    printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/
    
    break;
    
    }
    
    else
    
    return;
    
    }   
    
    if(i==m)
    
    printf("没有找到该学生的成绩!\n");/*未找到要查找的信息*/
    
    }
    
    
    
    16.显示某班学生成绩信息函数
    
    
    
    /*****************按班级输出学生成绩****************/
    
    void ShowClassS()
    
    {
    
    int i,j;
    
    char k[15];
    
    printf("请输入班级:\n");
    
    scanf("%s",k);
    
        printf(" 学期    专业班级    姓名       学号       工科数学  大学英语  C语言  总分  平均分 \n");
    
    for(i=0;i<R;i++)
    
    {
    
      if(strcmp(k,stu[i].Class))
    
      {
    
      stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
    
    stu[i].ave=stu[i].sum/3.0;
    
            printf(FORMAT,DATA);//按班级输出学生成绩
    
      }
    
    }
    
    
    
    system("pause");
    
    system("cls");
    
    }
    
    
    
    17.输出不及格学生成绩单
    
    /***********输出不及格学生成绩****************/
    
    void ShowFailS()
    
    {
    
    int i,j;
    
    printf("不及格学生名单及成绩:\n\n");
    
    printf(" 学期    专业班级    姓名       学号       工科数学  大学英语  C语言  总分  平均分 \n");
    
    for(i=0;i<R;i++)
    
    {for(j=0;j<3;j++)
    
      {
    
      if(stu[i].score[j]<60)                              
    
              printf(FORMAT,DATA); /*输出不及格学生名单及成绩*/
    
      break;
    
      }
    
    }
    
    }

     

    展开全文
  • 这不仅工作效率低下,而且使得的管理上也极其反映当时的情况,尤其在查询数据时,会相当的繁琐,偶尔可能会存在表单记录丢失的情况,所以,很有必要推出一款便于学生宿舍管理的一套软件。 本系统主要采用spring开发...

    摘 要
    随着每年高校大学生不断的扩招,人数的增加导致宿舍管理压力巨大。学校宿舍作为高校管理的组成部分,现如今还有部分高校,通过纸质的方式登记学生进出宿舍的情况,这不仅工作效率低下,而且使得的管理上也极其反映当时的情况,尤其在查询数据时,会相当的繁琐,偶尔可能会存在表单记录丢失的情况,所以,很有必要推出一款便于学生宿舍管理的一套软件。
    本系统主要采用spring开发框架制。使用的技术有mysql数据库、mybatis驱动框架以及tomcat服务端部署,用到的集成开发工具主要是IDEA和jdk1.8。
    该学生宿舍管理系统主要有以下几大功能:个人中心、学生管理、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理,在下面的章节中会依次介绍每个功能的作用与实现。
    关键词:学生宿舍管理系统,springboot,mysql

    ABSTRACT
    With the continuous enrollment expansion of college students every year, the increase of the number leads to great pressure on dormitory management. As an integral part of the management of colleges and universities, there are still some colleges and universities that register the situation of students entering and leaving the dormitories through paper, which is not only inefficient, but also makes the management of the dormitories extremely reflect the situation at that time, especially when querying the data, it will be cumbersome, and occasionally there may be the loss of form records, It is necessary to launch a set of software which is convenient for dormitory management.
    The system mainly adopts spring development framework. The technologies used include MySQL database, mybatis driver framework and Tomcat server deployment. The integrated development tools used are mainly idea and JDK1.8.
    The student dormitory management system has the following major functions: personal center, student management, room information management, visiting information management, goods repair management, maintenance process management, announcement information management. In the following chapters, the role and implementation of each function will be introduced in turn.
    Key words: dormitory management system, springboot, MySQL

    目 录

    目录
    摘 要 I
    ABSTRACT II
    第一章 绪论 1
    1.1 课题研究背景和意义 1
    1.2 课题研究现状 1
    1.3 课题主要研究内容 2
    1.4 论文结构 2
    第二章 相关技术介绍 3
    2.1 开发工具 3
    2.1.2 Tomcat 3
    2.1.3 MySQL 3
    2.2 开发技术 3
    2.2.1 JSP 3
    2.2.2 jQuery 3
    2.2.3 SSM 4
    第三章 系统分析 5
    3.1 可行性分析 5
    3.1.1技术性可行性 5
    3.1.2经济性可行性 5
    3.1.3操作性可行性 5
    3.2 系统需求分析 5
    3.2.1 功能需求 6
    3.2.2 非功能需求 6
    第四章 系统总体设计 8
    4.1 系统功能图 8
    4.2 系统流程图 8
    第五章 系统详细设计 10
    5.1 用户模块设计 10
    5.2 数据库设计 11
    5.2.1数据库设计的原则 11
    5.2.2数据库表的设计 11
    第六章 系统实现 14
    6.1 系统功能实现 15
    6.1 功能页面实现 15
    6.1.1登陆模块实现 15
    部分主要代码如下: 15
    6.1.2注册页面模块实现 16
    6.1.3学生页面模块实现 17
    6.1.4房间信息页面模块实现 18

    6.1.5来访信息页面模块实现 19
    6.1.6物品报修信息页面模块实现 20
    6.2日志功能模块 21
    6.3安装部署 22
    第七章 系统测试 23
    7.1系统调试的目的和意义 23
    7.2 系统功能测试 23
    第八章 总结和体会 25
    参考文献 27
    致 谢 28

    第一章 绪论
    1.1 课题研究背景和意义
    随着互联网快速发展,电脑的发展,让我们的生活更加的便利,也在学校的办公管理领域得到了很好发挥,以前记录学生宿舍操作需要通过人工记录的方式,来登记,这样的操作极其不方便,尤其是在查阅某个人员进出时的情况,需要查看过多的人员信息,这对工作造成了极不方便,所以开发一套学生宿舍管理系统,就可以很好的解决这一难题。
    通过使用学生宿舍管理系统不仅可以降低人工成本,而且在管理上也可以得到很好的提升。以前在宿舍记录管理中,最容易出错的环节,就是登陆人员的进出情况,而该系统软件的出现,可让更多的时间花在如何管理信息化,让信息化得到更快捷的服务。本系统结合业务需求,及线下宿舍管理操作流程,量身定制一款学生宿舍管理软件。主要解决快速查找人员宿舍管理等实用性功能,主要是基于Web网页开发的一个宿舍管理系统。
    1.2 课题研究现状
    在和现有的学生宿舍管理系统进行比较后,发现了许多问题:
    系统功能并不全面。很多学校的学生宿舍管理系统的功能模块并不全面,有些系统只有最基本的宿舍共用电器或者物品的上报维修和用户信息管理功能,但是只是这样是远远不够的,来访人员如果要来看望某位学生,系统没有此功能的话,依然需要人力手工记录以及查询被看望学生的基本信息。有些学校的宿舍管理系统没有宿舍的基本信息,有时候就无法及时了解到该宿舍是否入住满员,还是只是住了一部分。还有的宿舍管理,没有对宿舍环境进行一个打分操作,对宿舍的环境分数进行排序来选出最优宿舍,还可以找出分数最低的几个宿舍进行一个需改良宿舍的选择。
    国外只有少数学校可以达到,外国学生进出宿舍刷卡并且同时人脸识别进行人卡相匹配。这是我们暂时无法解决的问题,一个是外国的宿舍设施原本就配有一些电子产品,在后续的更新迭代中就显得容易些,还有一个就是外国的信息发展团体多。宿舍管理系统能够越来越普及的原因还是高校的数量激增,人工记录难以应对大量的学生信息。
    我的课题借鉴了上述宿舍共用电器上报维修和用户信息管理之外,还添加了来访人员登记以及对学生宿舍的环境打分和排序。和我们学校宿舍的手写公告不同,我还增加了一栏专门用于公告提示。
    1.3 课题主要研究内容
    本课题是一个学生宿舍管理系统。具体研究内容如下:
    技术上采用springboot集成快速开发框架,前端使用vue方式,基于es5的语法,开发工具IntelliJ IDEA 2020.1.1 x64,因为该开发工具,内嵌了Tomcat服务运行机制,可不用单独下载Tomcat server服务器。
    功能上用户信息管理功能、房间信息管理功能、来访信息管理功能、物品报修管理功能、维修进程管理功能、公告信息管理功能等。
    学生能够查看自己的个人信息,对宿舍公用电器可以进行一个报修,能查看维修的进程。管理员可以进行公告布置,修改密码,对维修进程的状态进行更改,对来访信息的记录。
    1.4 论文结构
    本文结构如下。
    第一张为绪论,主要包含课题的研究背景,意义,现状和主要研究内容。
    第二章介绍了实现的相关技术和开发工具,包括springboot集成开发框架,IntelliJ IDEA的开发工具,tomcat服务器,mysql数据库等。
    第三章系统的可行性分析和
    第四章对系统的设计过程进行了详细的介绍。包括系统总体设计,系统详细设计和数据库部分的设计。
    第五章对系统用户管理模块、供应商管理模块、采购流程管理模块和数据管理模块的具体实现过程进行了具体阐述。
    第六章给出了对各功能模块的测试,在明确测试目的之后,选择合适的测试方法完成测试并展示测试结果。
    第七章:总结和体会。本章对整个系统实现的过程进行总体概括,分析在系统实现过程中遇到的问题,为以后完善系统提供经验教

    第二章相关技术介绍
    本章主要介绍相应的开发工具和使用的开发技术。
    2.1 开发工具

    2.1.1 IntelliJ IDEA
    IntelliJ IDEA是用于Java语言开发的集成环境,是公认的最好的Java开发工具之一,IDEA相较于其他Java开发工具,具有智能选取、历史记录功能、编码辅助、排版灵活、与文件系统自动同步、代码检查、完全支持JSP等优势。
    2.1.2 Tomcat
    Tomcat服务器是一个免费的、开源的轻量级Web应用服务器,是开发和调试JSP程序的首选,Tomcat运行时占用的系统资源小,建有良好的可扩展性和安全性。
    2.1.3 MySQL
    MySQL是一款安全的、跨平台的、高效的、与主流编程语言紧密结合的数据库系统,MySQL由于其体积小、速度快、总体拥有成本低、开源等特点,广泛适用于中小型网站的开发,在Web应用方面,MySQL是最好的RDBMS(关系数据库管理系统)应用软件之一。
    2.2 开发技术
    2.2.1 JSP
    JSP是基于Java Servlet和整个Java体系的Web服务器端开发技术。它用于在网页上显示动态内容。JSP网页由传统的HTML文件和Java程序片段或JSP标记构成。JS技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。
    2.2.2 jQuery
    jQuery是一个轻量级的、兼容多浏览器的JavaScript库,jQuery使用户能更方便地处理HTML Document、进行Ajax交互,能够极大地简化JavaScript编程。
    2.2.3 SSM
    SSM框架由Spring、SpringMVC、MyBatis组成。常作为数据源简单的Web项目的框架。
    Spring在配置文件中可以使用特定的参数区调用实体类的构造方法来实例化对象,核心思想使IoC(控制反转)。
    SpringMVC是以请求为驱动,围绕Servlet设计,将请求发给控制器,通过模型对象,分派器来展示请求结果视图,它是一个Servlet,顶层是实现的Servlet接口。
    MyBatis是对JDBC的封装,MyBatis通过配置文件关联到实体类的Mapper文件,Mapper文件中配置了每个类对数据库操作的sql语句映射,使得让数据库底层操作变得透明。

    第三章 系统分析
    3.1 可行性分析
    在系统开发的过程中系统的可行性分析是必不可少的,可行性的研究就是评估问题是否能得到解决并且是要以最少的时间和最少的代价来解决。为实现上面的目标还要必须考虑到解决这些问题的方法的优点和缺点,还要考虑到实现了这些系统规模的开发带来的经济效益。这里可以用技术的可行性,操作的可行性,经济的可行性对我们的系统进行可行性的研究。
    3.1.1技术性可行性
    本项目设计的系统主要采用layui前端开发,后端使用java语言以及springboot集成开发性框架,采用mysql数据库,根据自身所学专业,结合网上查阅案列及图书馆资料,开发实现是没有太大问题的。
    3.1.2经济性可行性
    开发一套成熟的软件,都需要经过一段漫长的过程,这里设计到软件的需求分析、制定计划,开发人员、测试环节、调试过程,都需要资金及人力的投入。而这套软件的开发,可以通过网上开源源码及相关资料的学习,在硬件及电脑使用上,都是自己所用,所以在开发成本上可以忽略不计。
    3.1.3操作性可行性
    本系统设计到的功能主要有个人中心、学生管理、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理,这些功能模块的相关知识,都是平常所设计到的常用功能,在操作上都是可以实现的。
    3.2 系统需求分析
    通过了解用户的需求,可以知道操作简单的系统更易受到用户青睐,同时能够准确、完整的对信息进行管理。学生宿舍管理平台在对需求做相应的分析后,得出结论,系统主要分为两个角色:管理员和学生用户。
    管理员模块主要进行数据的更新管理,功能分为个人中心、学生管理、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理;学生模块主要功能有个人中心、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理及评分信息管理。
    3.2.1 功能需求
    本系统是利用现代化的计算机网络技术将传统信息宣传方式整合,按照实践过程设计完成的。同时完善服务,初步设计一个学生宿舍管理系统平台以利于相关的事务操作。为了使系统在各项管理中发挥更大的作用,实现计算机信息化高效的管理,现将开发目标功能需求介绍如下:
    ( 1) 管理员登录模块
    管理员有权进行学生宿舍系统的管理,但所有的注册以及权限的使用,都需经过超级管理员授权,管理员进入主页后可以对相关功能版块进行管理操作:个人中心、学生管理、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理。
    在这里插入图片描述
    ( 2) 学生管理模块
    拥有一定管理权限管理员,可进行学生列表的用户名称、用户密码、性别、学号、电话、相片、所在寝室查看,以及对应的学生增加、删除、修改、查询操作。
    在这里插入图片描述
    ( 3) 房间管理模块
    拥有一定管理权限管理员,可进行房间列表的房间号、房间类型、楼层号、房间设备、校园图片、床位数量、登记时间查看,以及对应的房间增加、删除、修改、查询操作。
    在这里插入图片描述
    ( 4) 来访信息管理模块
    拥有一定管理权限管理员,可进行来访信息列表的数据查看,以及对应的来访信息增加、删除、修改、查询操作。
    在这里插入图片描述
    ( 5) 物品报修管理模块
    拥有一定管理权限管理员,可进行物品报修列表的数据查看,以及对应的物品报修增加、删除、修改、查询操作。在这里插入图片描述
    3.2.2 非功能需求
    该系统不仅要满足功能性需求,还需要满足看不到的非功能性需求,比如系统的兼容性、用户界面整体性、网页访问的流畅性,主要归纳如下几点:1支持兼容性多浏览器访;2界面性网站整体美观、元素搭配协调;3安全性访问控制不受到攻击,防止sql注入。

    第四章 系统总体设计
    4.1 系统功能图
    该项目管理系统主要基于B/S设计模式,系统设计的功能有:学生管理、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理等。其系统结构如图3-1所示:在这里插入图片描述
    4.2 系统流程图
    学生宿舍管理系统工作流程为:当用户输入账号和密码,可登陆到系统的控制台页面,控制台可以对学生管理、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理进行数据库操作,执行完成后,可直接退出系统。以下是总体的流程图设计如图3-2:在这里插入图片描述
    第五章 系统详细设计
    本次系统采用 java 和 mysql 相互结合的架构来进行开发微信系统程序的应用,系统中所有与微信小程序密切相关的事情和操作都时间上通过一个与数据库相关的类文件来进行实现,很大程度上增强了代码的耦合度,当得到数据库的类型等信息发生变化后直接进行修改与其相关的类别和文件就完全可以了,不再因为此而需要每一个页面都进行任何修改。除此之外,本系统还很好地解决了简体中文的困难,也就是在配置文件中添加了编码语言方式的多种形式来得到解决的,本系统另外一个重要的特征就是,该系统对于数据库的所有操作都单独地被写在一个分类里,这样只需要访问这个分类就能够对系统的所有数据库进行操作,不用对每个分类的页面去做一个写数据库的分类操作,很大程度的从而增强系统的整体集成度。
    5.1 用户模块设计
    ( 1) 管理员登录模块
    管理员有权进行学生宿舍系统的管理,但所有的注册以及权限的使用,都需经过超级管理员授权,管理员进入主页后可以对相关功能版块进行管理操作:个人中心、学生管理、房间信息管理、来访信息管理、物品报修管理、维修进程管理、公告信息管理。
    ( 2) 学生管理模块
    拥有一定管理权限管理员,可进行学生列表的查看,以及对应的学生增加、删除、修改、查询操作。
    ( 3) 房间管理模块
    拥有一定管理权限管理员,可进行房间列表的数据查看,以及对应的房间增加、删除、修改、查询操作。
    ( 4) 来访信息管理模块
    拥有一定管理权限管理员,可进行来访信息列表的数据查看,以及对应的来访信息增加、删除、修改、查询操作。
    ( 5) 物品报修管理模块
    拥有一定管理权限管理员,可进行物品报修列表的数据查看,以及对应的物品报修增加、删除、修改、查询操作。
    5.2 数据库设计
    5.2.1数据库设计的原则
    在建表时,表的主键要尽量的少,在表与表之间建立外键关系时,也要尽量的少,尽量减少数据库查询和CRUD操作的复杂度;系统恢复性操作,在设计数据库文件中考虑到表如果出现损坏,在短时间内可以快速的恢复,减少成本的支出。在数据库系统开发过程中,一般都需要满足以下几个特点:字段冗余少,就是在设计表字段时,尽量减少不必要多余的字段出现,在设置表的参数类型时,合理控制参数字段长度;保密性和安全性要强,不要把系统关键字设置在表中,防止sql注入攻击;表与表之间的管理性要合理化,尽量减少三张以上的管理表查询,减少sql查询带来的系统性能的下降。

    5.2.2数据库表的设计
    学生用户表(xuesheng):用户编号、添加时间、学号、密码、学生姓名、性别、手机号码、所属寝室、相片
    。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。
    。。。。。。。。。。。。。。。。。。。。

    程序部分截图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    程序+论文+数据库:下载地址》》》请点击!

    展开全文
  • 学生管理系统设计与实现(c语言版本数据结构)

    千次阅读 多人点赞 2020-07-09 18:54:04
    文章目录学生管理系统设计与实现1、需求分析1.1 实验目的:1.2 实验内容:1.3实验要求:1.4概要设计:2、概要设计2.1所用数据结构的定义及其相关说明(相关结构体或类的定义及其含义)2.2、各子程序调用关系2.3、各...

    学生管理系统的设计与实现

    文章目录

    1、需求分析

    1.1 实验目的:

    1.掌握重要的排序算法――直接插入排序和快速排序;

    2.掌握折半查找算法。

    3.综合运用所学数据结构知识,提高解决实际问题的能力。。

    1.2 实验内容:

    设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成绩)的的顺序表

    可以不考虑重名的情况,系统至少包含以下功能:

    (1) 根据指定学生个数,逐个输入学生信息;

    (2) 逐个显示学生表中所有学生的相关信息;

    (3) 给定一个学生信息,插入到表中指定的位置;

    (4) 删除指定位置的学生记录;

    (5) 统计表中学生个数;

    (6) 利用直接插入排序或者折半插入排序按照姓名进行排序;

    (7) 利用快速排序按照学号进行排序;

    (8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩;

    (9) 根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和成绩。

    1.3实验要求:

    (1)程序要添加适当的注释,程序的书写要采用缩进格式

    (2程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。

    (3)程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。

    (4)根据实验报告模板详细书写实验报告

    1.4概要设计:

    (1)输入的形式和输入值的范围:输入对应的数字会选择不同的结果和不同的成绩;

    (2)输出的形式:以对应的数字输出;

    (3)程序所能达到的功能:所有的功能都实现了;

    (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

    2、概要设计

    2.1所用数据结构的定义及其相关说明(相关结构体或类的定义及其含义)

    #define ERROR 0     //用于返回错误
    #define OK 1        //用于返回正确
    #define SIZE 100    //定义stduent的大小
    typedef int Status;  
    

    在这里插入图片描述

    1void menu()//选择菜单函数 2)Status InitList_Sq(SqList &L,int n)//新建学生数据3)Status Display_Sq(SqList L)//显示学生所有数据4)Status Insert_Sq(SqList &L,int n)//在顺序表L中第i个位置插入新的元素e5)Status Delete_Sq(SqList &L,int n)//在顺序表L中删除第i个元素6)Status GetLen_Sq(SqList &L)    //统计学生总数7void InsertSort(SqList &L)//姓名排序操作函数8void InsertSort(ElemType a[])//此处为直接插入排序。对姓名排序9int Search_Bin(SqList &L,char *s,int low,int high)//此处为折半插入排序。对姓名排序10int Partition(SqList &L,int low,int high)//利用快速排序按照学号进行排序11void QSort(SqList &L,int low,int high)12int Search_Bin(ElemType a[],char *key,int low,int high)//折半查找,递归方法13int Non_Search_Bin(ElemType a[],int key)//14int main()//主函数
    

    2.2、各子程序调用关系

    在这里插入图片描述

    2.3、各程序模块之间的层次(调用)关系

    在这里插入图片描述

    3、详细设计,实现方法、实验结果及结论分析等:

    自定义函数的名称及其功能说明

    3.1 、memu (菜单选项)

    void memu(void)
    {
    	printf("\t\t||************ 欢迎使用学生信息管理系统!****************||\n");
    	printf("\t\t||**name:yuan number:xxxxxx    电信xxxx   *******     ||\n");
    	printf("\t\t||   *********************************                ||\n");
        printf("\t\t||   *           功能菜单          *                   ||\n");
        printf("\t\t||   *********************************                ||\n");
    	printf("\t\t||   1.输入学生信息                                     ||\n");
    	printf("\t\t||   2.逐个显示学生的相关信息                            ||\n");
    	printf("\t\t||   3.插入学生信息到指定位置                            ||\n");
    	printf("\t\t||   4.删除指定位置的学生记录                            ||\n");
        printf("\t\t||   5.统计表中学生人数                                 ||\n");
    	printf("\t\t||   6.利用直接插入排序按姓名进行排序                     ||\n");
    	printf("\t\t||   7.利用折半插入排序按姓名进行排序                     ||\n");
    	printf("\t\t||   8.利用快速排序按学号进行排序                         ||\n");
    	printf("\t\t||   9.根据姓名进行折半查找,成功返回此学生的学号和成绩      ||\n");
    	printf("\t\t||  10.根据学号进行折半查找,成功返回此学生的姓名和成绩      ||\n");
    	printf("\t\t||  11.退出系统\n");
    	printf("\t\t>>>请选择您需要的服务(1--11):");
    }
    

    3.2、 输入学生信息

    Status InitList_Sq(SqList &L,int n)
    {
    	int i;
        L.elem=new Student[SIZE];
    	L.length=1;		       //留下L.elem[0]作为哨兵
        //输入学生信息
    	printf("\t\t请按顺序输入学生学号,姓名,成绩,不同项之间用Tab隔开:\n");
        printf("\t\t学号	姓名    成绩	\n");
        for(i=1;i<=n;i++)  	//输入学生信息
        {
    		L.length++;     //表的长度加一
            printf("\t\t");
            scanf("%s %s %f", L.elem[i].no, L.elem[i].name,&L.elem[i].score);
    		printf("\n");
        }
        printf("\t\t提示:成绩存入完毕!\n\n");
        printf("\t\t\t------请继续--------\n");
    	return OK;
    }
    

    3.3、打印学生信息

    Status Display_Sq(SqList L)
    {	
    	printf("\t\t位置\t学号\t姓名\t成绩\n");
    	for(int j= 1; j<L.length; j++)
        {
            printf("\t\t%d\t%s\t%s\t %.2f\t\t\n\n",j, L.elem[j].no, L.elem[j].name, L.elem[j].score);
    	}
    	return OK;
    }
    

    3.4 插入学生信息到表

    Status Insert_Sq(SqList &L,int n)
    {	
    	if(L.length==SIZE)			//考虑表中空间已满的情况
    	{
    		printf("\t\t操作失败,系统空间已满\n");
    		return ERROR;
    	}
    	if(n<1||n>L.length)
    	{			
    		printf("\t\t操作失败,您要插入的位置不存在!\n");
    		return ERROR;
    	}
    	for(int i=L.length-1;i>=n;i--)
    		L.elem[i+1]=L.elem[i];		//依次将各学生的信息赋给其下一个位置
    	printf("\t\t>>>输入要插入的学生信息:\n");
    	printf("\t\t>>>学号:");
    	scanf("%s",L.elem[n].no);
    	printf("\n");
    	printf("\t\t>>>姓名");
    	scanf("%s",L.elem[n].name);
    	printf("\n");
    	printf("\t\t>>>成绩:");
    	scanf("%f",&L.elem[n].score);
    	printf("\n");
    	L.length++;			//表长增加1
    	printf("\t\t插入学生信息成功!\n");
    	return OK;
    }
    

    3.5、删除学生信息

    Status Delete_Sq(SqList &L,int n)
    {
    	if(n<1||n>L.length){
    		printf("\t\t操作失败,您要删除的位置不存在!\n");
    		return ERROR;
    	}
    	for(int i=n;i<=L.length-1;i++)
    		L.elem[i]=L.elem[i+1];			//依次将各学生的信息赋给其上一个位置
    	L.length--;							//表长减少1
    	printf("\t\t删除学生信息成功!\n");
    	return OK;
    }
    

    3.6 、统计学生总数

    Status GetLen_Sq(SqList &L)
    {
     
    	printf("\t\t-----学生个数=-----\n");
        printf("%d",L.length-1);
    	return OK;
    }
    

    3.7、按姓名直接插入排序

    void InsertSort(SqList &L)
    {
    	int i,j;
        for(i=2;i<L.length;++i)
         if(strcmp(L.elem[i].name,L.elem[i-1].name)==-1)
           {
    		 L.elem[0]=L.elem[i]; // 复制为哨兵
             L.elem[i]=L.elem[i-1];
             for(j=i-2;strcmp(L.elem[0].name,L.elem[j].name)==-1;--j)
    	            L.elem[j+1]=L.elem[j]; // 记录后移 
             L.elem[j+1]=L.elem[0]; //插入到正确位置
           }
     }
    

    3.8 、按姓名折半插入排序

    Status BInsertSort (SqList &L)
    { 
    	int low,high,m;		
    	for(int i=2;i<L.length;++i){  
    		L.elem[0]=L.elem[i];	// 复制为哨兵
    		low=1;
    		high=i-1;
    		while(low<=high){	//利用折半方法找到插入位置	
    			m=(low+high)/2; 
                if(strcmp(L.elem[0].name,L.elem[m].name)<0)
    				high=m-1;
                else
    				low=m+1; 
               }
    		for(int j=i-1;j>=high+1;--j)	//纪录后移
    			L.elem[j+1]=L.elem[j];
    			L.elem[high+1]=L.elem[0];
        }
    	return OK;
    }
    

    3.9、按学号快速排序

    int pivotloc;
    char pivotkey[10];
    int Partition(SqList &L,int low,int high)
    {
    	L.elem[0]=L.elem[low];
    	strcpy(pivotkey,L.elem[low].no);
    	while(low<high)
    	{
    		while(low<high&&strcmp(L.elem[high].no,pivotkey)>=0)
    	   //若有比哨兵小的high,则将其赋给low,否则high前移
    			--high;
    		L.elem[low]=L.elem[high];
    		while(low<high&&strcmp(L.elem[low].no,pivotkey)<=0)	
    		//若有比哨兵大的low,则将其赋给high,否则low后移
    			++low;
    		L.elem[high]=L.elem[low];
    	}
        L.elem[low]=L.elem[0]; 
        return low;
    }
    

    3.10、 递归调用对左子表排序

     void QSort(SqList &L,int low,int high)
    {
    	  if(low<high)
    	  {
    		 pivotloc=Partition(L,low,high);		
             QSort(L,low,pivotloc-1);	//递归调用对左子表排序
             QSort(L,pivotloc+1,high);	//递归调用对右子表排序
           }
    }
    

    3.11、按姓名折半查找(递归)

    int Search_Bin(SqList &L,char *s,int low,int high)
    {
    	int m;
    	if(low<=high)
    	{
    		m=(low+high)/2;
    		if(strcmp(s,L.elem[m].name)==0)
    			return m;
    		else if(strcmp(s,L.elem[m].name)<0)
    			return Search_Bin(L,s,low,m-1);		//对左子表折半查找
    		else
    			return Search_Bin(L,s,m+1,high);	//对右子表折半查找
    	}
    	return -1;
    }
    

    3.12、按学号进行折半查找(非递归)

    int Search_Bin1(SqList &L,char *s)
    {
    	int m,low=1,high=L.length-1;
    	while(low<=high)
    	{
    		m=(low+high)/2;
    		if(strcmp(s,L.elem[m].no)==0)
    			return m;
    		else if(strcmp(s,L.elem[m].no)<0)
    			high=m-1;
    		else
    			low=m+1;
    	}
    	return -1;
    }
    

    3.13、main()

    int main(void)
    {
    	int no;
    	int n;
    	char names[20],nos[10];
    	SqList L;
    	L.length=1;
    	while(1)
    	{
    
    		memu();
    		scanf("%d",&no);
    		printf("\n");
    		switch(no)
    		{
                //输入学生信息
    			case 1:  
    				printf("\t\t>>>请输入学生个数:");
    				scanf("%d",&n);
    				InitList_Sq(L,n);
    				break;
                //逐个显示学生的相关信息
    			case 2:
    				if(L.length==1)
    				{								//判断表是否为空
    					printf("\t\t学生表为空,无可显示的学生信息!\n");
    					break;
    				}
    				printf("\t\t>>>输出学生信息:\n");
    				Display_Sq(L);									//调用函数
    				break;
    			//插入学生信息到指定位置
    			case 3:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无可供插入的位置!\n");
    					break;
    				}
    				printf("\t\t>>>请输入插入位置:");
    				scanf("%d",&n);
    				Insert_Sq(L,n);
    				Display_Sq(L);
    				break;
    		    //删除指定位置的学生记录
    			case 4:
    				if(L.length==1){
    					printf("\t\t学生表为空,无可供删除的学生信息!\n");
    					break;
    				}
    				printf("\t\t>>>请输入删除位置:\n");
    				scanf("%d",&n);
    				Delete_Sq(L,n);
    				Display_Sq(L);
    				break;
    			//统计表中学生人数
    			case 5:
    				if(L.length==1)
    				{
    					printf("\t\t现表中的学生总数为 0 人\n");
    					break;
    				}
    				printf("\t\t现表中的学生总数为:");
    				GetLen_Sq(L);
    				break;
                //利用直接插入排序按姓名进行排序
    			case 6:
    				if(L.length==1)
    				{
    				    printf("\t\t学生表为空,无排序结果!\n");
    					break;
    				}
    				InsertSort(L);
    				printf("\t\t按姓名进行直接插入法排序的结果为:\n");
    				Display_Sq(L);
    				break;
                //利用折半插入排序按姓名进行排序
                case 7:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无排序结果!\n");
    					break;
    				}
    				BInsertSort(L);
    				printf("\t\t按姓名折半插入排序的结果为:\n");
    				Display_Sq(L);
    				break;
    			//利用快速排序按学号进行排序
    			case 8:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无排序结果!\n");
    					break;
    				}
    				QSort(L,1,L.length-1);
    				printf("\t\t按学号进行快速排序的结果为:\n");
    				Display_Sq(L);
    				break;
    			//根据姓名进行折半查找,成功返回此学生的学号和成绩
    			case 9:
    				if(L.length==1)
    				{
    
    					printf("\t\t学生表为空,无可供查找的学生信息!\n");
    					break;
    				}
    				InsertSort(L);	//先进行姓名的直接插入排序
    				printf("\t\t>>>请输入查找学生的姓名:");
    				scanf("%s",names);
    				int n1,low,high;
    				low=1;
    				high=L.length-1;
    				n1=Search_Bin(L,names,low,high);	//调用折半查找
    				if(n1==-1){
    					printf("\t\t未找到该姓名的学生!\n");
    					break;
    				}
    				printf("\t\t学号:%s\n",L.elem[n1].no);
    				printf("\t\t成绩:%f\n",L.elem[n1].score);
    				break;
    			//根据学号进行折半查找,成功返回此学生的姓名和成绩
    			case 10:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无可供查找的学生信息!\n");
    					break;
    				}
    				QSort(L,1,L.length-1);		//先进行学号的快速排序 
    				printf("t\t>>>请输入查找学生的学号:\n");
    				scanf("%s",nos);
    				int n2;
    				n2=Search_Bin1(L,nos);		//调用折半查找
    				if(n2==-1)
    				{
    					printf("\t\t未找到该学号的学生!\n");
    					break;
    				}
    				printf("\t\t姓名:%s\n",L.elem[n2].name);
    				printf("\t\t成绩:%f\n",L.elem[n2].score);
    				break;
    		    //退出系统
    			case 11:
    				return 0}
    	
    		printf("\n");
    	}	
    }
    

    3.14、主要功能算法的时间复杂度

    Cout函数的时间复杂度为:O(n2)

    CreatHuffmanTree函数的时间复杂度为:O(n)

    CreatHuffmanCode函数的时间复杂度为:O(n)

    Code函数的时间复杂度为:O(n)

    4、测试分析

    4.1、解决问题方法以及对设计与实现的回顾讨论和分析:

    在进入某个功能模块时,或者某个功能的某个步骤时,可以允许出现输入错误。因此,要实现进入某个步骤时实现撤销操作。

    4.2、经验和体会

    由于第一次写这么复杂的程序,开始有点无从下手,在选择合适的数据结构的时候不知道怎么去选,只能一个一个的去试,最后从结合了C语言的结构体和程序需要用到的算法中慢慢摸索到了合适的数据结构,写程序时会出现好多小的语法问题或者逻辑问题,一点点逻辑问题就会让人抓狂。但最后还是静下心来梳理情绪,慢慢的找到了问题。开始的时候没有好好理解折半插入排序。便把第0个位置也存了信息。导致哨兵没地方放。然后又全部修改了。也许哨兵不一定要放在第0个位置。但开始遇到的这个问题时,脑子里就只有一个想法,就是全部把信息修改一遍,虽然这看起来不是一个好办法,但易于修改。

    4.3、算法的时空分析

    T(n)=O(n2)

    4.4、测试和功能展示

    4.4.1、学生管理系统的建立

    4.4.2、显示学生信息

    4.4.3、插入学生信息

    在这里插入图片描述

    4.4.4、删除学生信息

    在这里插入图片描述

    4.4.5、统计表中学生人数

    在这里插入图片描述

    4.4.6、利用直接插入排序按姓名进行排序

    4.4.7、利用折半插入排序按姓名进行排序

    4.4.8、利用快速排序按学号进行排序

    4.4.9、根据姓名进行折半查找,成功返回此学生的学号和成绩

    4.4.10、根据学号进行折半查找,成功返回此学生的姓名和成绩

    5、源程序清单(源程序清单是带详细注释的源程序)

    #include <stdio.h>  //头文件
    #include <string.h>
    #define ERROR 0     //用于返回错误
    #define OK 1        //用于返回正确
    #define SIZE 100    //定义stduent的大小
    typedef int Status;   
    //student 的结构体
    typedef struct
    {
        char no[8];   //学号
        char name[20]; //姓名
        float score;     //成绩
    }Student;
    //SqList表的结构体
    typedef struct
    {
        Student *elem;	//定义指向Student的指针
        int length;//当前长度
        int listsize;
    }SqList;
    
    //输入学生信息
    Status InitList_Sq(SqList &L,int n)
    {
    	int i;
        L.elem=new Student[SIZE];
    	L.length=1;		       //留下L.elem[0]作为哨兵
        //输入学生信息
    	printf("\t\t请按顺序输入学生学号,姓名,成绩,不同项之间用Tab隔开:\n");
        printf("\t\t学号	姓名    成绩	\n");
        for(i=1;i<=n;i++)  	//输入学生信息
        {
    		L.length++;     //表的长度加一
            printf("\t\t");
            scanf("%s %s %f", L.elem[i].no, L.elem[i].name,&L.elem[i].score);
    		printf("\n");
        }
        printf("\t\t提示:成绩存入完毕!\n\n");
        printf("\t\t\t------请继续--------\n");
    	return OK;
    }
    //打印学生信息
    Status Display_Sq(SqList L)
    {	
    	printf("\t\t位置\t学号\t姓名\t成绩\n");
    	for(int j= 1; j<L.length; j++)
        {
            printf("\t\t%d\t%s\t%s\t %.2f\t\t\n\n",j, L.elem[j].no, L.elem[j].name, L.elem[j].score);
    	}
    	return OK;
    }
    //插入学生信息到表
    Status Insert_Sq(SqList &L,int n)
    {	
    	if(L.length==SIZE)			//考虑表中空间已满的情况
    	{
    		printf("\t\t操作失败,系统空间已满\n");
    		return ERROR;
    	}
    	if(n<1||n>L.length)
    	{			
    		printf("\t\t操作失败,您要插入的位置不存在!\n");
    		return ERROR;
    	}
    	for(int i=L.length-1;i>=n;i--)
    		L.elem[i+1]=L.elem[i];		//依次将各学生的信息赋给其下一个位置
    	printf("\t\t>>>输入要插入的学生信息:\n");
    	printf("\t\t>>>学号:");
    	scanf("%s",L.elem[n].no);
    	printf("\n");
    	printf("\t\t>>>姓名");
    	scanf("%s",L.elem[n].name);
    	printf("\n");
    	printf("\t\t>>>成绩:");
    	scanf("%f",&L.elem[n].score);
    	printf("\n");
    	L.length++;			//表长增加1
    	printf("\t\t插入学生信息成功!\n");
    	return OK;
    }
    //删除学生信息
    Status Delete_Sq(SqList &L,int n)
    {
    	if(n<1||n>L.length){
    		printf("\t\t操作失败,您要删除的位置不存在!\n");
    		return ERROR;
    	}
    	for(int i=n;i<=L.length-1;i++)
    		L.elem[i]=L.elem[i+1];			//依次将各学生的信息赋给其上一个位置
    	L.length--;							//表长减少1
    	printf("\t\t删除学生信息成功!\n");
    	return OK;
    }
    //统计学生总数
    Status GetLen_Sq(SqList &L)
    {
     
    	printf("\t\t-----学生个数=-----\n");
        printf("%d",L.length-1);
    	return OK;
    }
    //按姓名直接插入排序
    void InsertSort(SqList &L)
    {
    	int i,j;
        for(i=2;i<L.length;++i)
         if(strcmp(L.elem[i].name,L.elem[i-1].name)==-1)
           {
    		 L.elem[0]=L.elem[i]; // 复制为哨兵
             L.elem[i]=L.elem[i-1];
             for(j=i-2;strcmp(L.elem[0].name,L.elem[j].name)==-1;--j)
    	            L.elem[j+1]=L.elem[j]; // 记录后移 
             L.elem[j+1]=L.elem[0]; //插入到正确位置
           }
     }
    
    //按姓名折半插入排序
    //按姓名折半插入排序
    //设这两个字符串为str1,str2,
    
    //若str1==str2,则返回零;
    
    //若str1<str2,则返回负数;
    
    //若str1>str2,则返回正数。
    
    //matlab中函数,strcmp(s1,s2) 判断两个字符串s1和s2是否相同,相同返回true ,不同返回false
    
    //当s1<s2时,返回为负数;
    
    //当s1==s2时,返回值= 0;
    
    //当s1>s2时,返回正数。
    
    //即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
    
    Status BInsertSort (SqList &L)
    { 
    	int low,high,m;		
    	for(int i=2;i<L.length;++i){  
    		L.elem[0]=L.elem[i];	// 复制为哨兵
    		low=1;
    		high=i-1;
    		while(low<=high){	//利用折半方法找到插入位置	
    			m=(low+high)/2; 
                if(strcmp(L.elem[0].name,L.elem[m].name)<0)
    				high=m-1;
                else
    				low=m+1; 
               }
    		for(int j=i-1;j>=high+1;--j)	//纪录后移
    			L.elem[j+1]=L.elem[j];
    			L.elem[high+1]=L.elem[0];
        }
    	return OK;
    }
    //按学号快速排序
    int pivotloc;
    char pivotkey[10];
    int Partition(SqList &L,int low,int high)
    {
    	L.elem[0]=L.elem[low];
    	strcpy(pivotkey,L.elem[low].no);
    	while(low<high)
    	{
    		while(low<high&&strcmp(L.elem[high].no,pivotkey)>=0)
    	   //若有比哨兵小的high,则将其赋给low,否则high前移
    			--high;
    		L.elem[low]=L.elem[high];
    		while(low<high&&strcmp(L.elem[low].no,pivotkey)<=0)	
    		//若有比哨兵大的low,则将其赋给high,否则low后移
    			++low;
    		L.elem[high]=L.elem[low];
    	}
        L.elem[low]=L.elem[0]; 
        return low;
    }
    void QSort(SqList &L,int low,int high)
    {
    	if(low<high)
    	{
    		pivotloc=Partition(L,low,high);		
            QSort(L,low,pivotloc-1);	//递归调用对左子表排序
            QSort(L,pivotloc+1,high);	//递归调用对右子表排序
        }
    }
    //按姓名折半查找(递归)
    int Search_Bin(SqList &L,char *s,int low,int high)
    {
    	int m;
    	if(low<=high)
    	{
    		m=(low+high)/2;
    		if(strcmp(s,L.elem[m].name)==0)
    			return m;
    		else if(strcmp(s,L.elem[m].name)<0)
    			return Search_Bin(L,s,low,m-1);		//对左子表折半查找
    		else
    			return Search_Bin(L,s,m+1,high);	//对右子表折半查找
    	}
    	return -1;
    }
    //按学号进行折半查找(非递归)
    int Search_Bin1(SqList &L,char *s)
    {
    	int m,low=1,high=L.length-1;
    	while(low<=high)
    	{
    		m=(low+high)/2;
    		if(strcmp(s,L.elem[m].no)==0)
    			return m;
    		else if(strcmp(s,L.elem[m].no)<0)
    			high=m-1;
    		else
    			low=m+1;
    	}
    	return -1;
    }
    //菜单选项
    void memu(void)
    {
    	printf("\t\t||************ 欢迎使用学生信息管理系统!****************||\n");
    	printf("\t\t||**name:伍思源 number:182034490136    电信18-1   *******||\n");
    	printf("\t\t||   *********************************                   ||\n");
        printf("\t\t||   *           功能菜单          *                     ||\n");
        printf("\t\t||   *********************************                   ||\n");
    	printf("\t\t||   1.输入学生信息                                      ||\n");
    	printf("\t\t||   2.逐个显示学生的相关信息                            ||\n");
    	printf("\t\t||   3.插入学生信息到指定位置                            ||\n");
    	printf("\t\t||   4.删除指定位置的学生记录                            ||\n");
        printf("\t\t||   5.统计表中学生人数                                  ||\n");
    	printf("\t\t||   6.利用直接插入排序按姓名进行排序                    ||\n");
    	printf("\t\t||   7.利用折半插入排序按姓名进行排序                    ||\n");
    	printf("\t\t||   8.利用快速排序按学号进行排序                        ||\n");
    	printf("\t\t||   9.根据姓名进行折半查找,成功返回此学生的学号和成绩  ||\n");
    	printf("\t\t||  10.根据学号进行折半查找,成功返回此学生的姓名和成绩  ||\n");
    	printf("\t\t||  11.退出系统\n");
    	printf("\t\t>>>请选择您需要的服务(1--11):");
    }
    int main(void)
    {
    	int no;
    	int n;
    	char names[20],nos[10];
    	SqList L;
    	L.length=1;
    	while(1)
    	{
    		memu();
    		scanf("%d",&no);
    		printf("\n");
    		switch(no)
    		{
    
                //输入学生信息
    			case 1:  
    				printf("\t\t>>>请输入学生个数:");
    				scanf("%d",&n);
    				InitList_Sq(L,n);
    				break;
                //逐个显示学生的相关信息
    			case 2:
    				if(L.length==1)
    				{								//判断表是否为空
    					printf("\t\t学生表为空,无可显示的学生信息!\n");
    					break;
    				}
    				printf("\t\t>>>输出学生信息:\n");
    				Display_Sq(L);									//调用函数
    				break;
    			//插入学生信息到指定位置
    			case 3:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无可供插入的位置!\n");
    					break;
    				}
    				printf("\t\t>>>请输入插入位置:");
    				scanf("%d",&n);
    				Insert_Sq(L,n);
    				Display_Sq(L);
    				break;
    		    //删除指定位置的学生记录
    			case 4:
    				if(L.length==1){
    					printf("\t\t学生表为空,无可供删除的学生信息!\n");
    					break;
    				}
    				printf("\t\t>>>请输入删除位置:\n");
    				scanf("%d",&n);
    				Delete_Sq(L,n);
    				Display_Sq(L);
    				break;
    			//统计表中学生人数
    			case 5:
    				if(L.length==1)
    				{
    					printf("\t\t现表中的学生总数为 0 人\n");
    					break;
    				}
    				printf("\t\t现表中的学生总数为:");
    				GetLen_Sq(L);
    				break;
                //利用直接插入排序按姓名进行排序
    			case 6:
    				if(L.length==1)
    				{
    				    printf("\t\t学生表为空,无排序结果!\n");
    					break;
    				}
    				InsertSort(L);
    				printf("\t\t按姓名进行直接插入法排序的结果为:\n");
    				Display_Sq(L);
    				break;
                //利用折半插入排序按姓名进行排序
                case 7:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无排序结果!\n");
    					break;
    				}
    				BInsertSort(L);
    				printf("\t\t按姓名折半插入排序的结果为:\n");
    				Display_Sq(L);
    				break;
    			//利用快速排序按学号进行排序
    			case 8:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无排序结果!\n");
    					break;
    				}
    				QSort(L,1,L.length-1);
    				printf("\t\t按学号进行快速排序的结果为:\n");
    				Display_Sq(L);
    				break;
    			//根据姓名进行折半查找,成功返回此学生的学号和成绩
    			case 9:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无可供查找的学生信息!\n");
    					break;
    				}
    				InsertSort(L);	//先进行姓名的直接插入排序
    				printf("\t\t>>>请输入查找学生的姓名:");
    				scanf("%s",names);
    				int n1,low,high;
    				low=1;
    				high=L.length-1;
    				n1=Search_Bin(L,names,low,high);	//调用折半查找
    				if(n1==-1){
    					printf("\t\t未找到该姓名的学生!\n");
    					break;
    				}
    				printf("\t\t学号:%s\n",L.elem[n1].no);
    				printf("\t\t成绩:%f\n",L.elem[n1].score);
    				break;
    			//根据学号进行折半查找,成功返回此学生的姓名和成绩
    			case 10:
    				if(L.length==1)
    				{
    					printf("\t\t学生表为空,无可供查找的学生信息!\n");
    					break;
    				}
    				QSort(L,1,L.length-1);		//先进行学号的快速排序 
    				printf("t\t>>>请输入查找学生的学号:\n");
    				scanf("%s",nos);
    				int n2;
    				n2=Search_Bin1(L,nos);		//调用折半查找
    				if(n2==-1)
    				{
    					printf("\t\t未找到该学号的学生!\n");
    					break;
    				}
    				printf("\t\t姓名:%s\n",L.elem[n2].name);
    				printf("\t\t成绩:%f\n",L.elem[n2].score);
    				break;
    		    //退出系统
    			case 11:
    				return 0;
    		}
    		printf("\n");
    	}	
    }
    

    6、用户使用手册

    用户执行代码后,主菜单会显示10个功能,分别为:

    1. 根据指定学生个数,逐个输入学生信息;

    (2) 逐个显示学生表中所有学生的相关信息;

    (3) 给定一个学生信息,插入到表中指定的位置;

    (4) 删除指定位置的学生记录;

    (5) 统计表中学生个数;

    (6) 利用直接插入排序或者折半插入排序按照姓名进行排序;

    (7) 利用快速排序按照学号进行排序;

    (8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩;

    (9) 根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和成绩。

    首先,用户根据提示选择功能(1): 输入学生信息。再根据提示分别输入学生的学号、姓名、成绩。

    接着,用户可以根据自己的需求选择功能。若选择功能(2): 显示学生相关信息,则会显示学生相关信息。

    若选择功能(3):插入学生到指定的位置,则根据提示输入插入学生的学号、姓名和成绩。

    若选择功能(4): 删除指定位置的学生记录,则根据提示删除用户需要删除的记录。

    若选择功能(5): 统计表中学生个数,则会显示出学生的个数。

    若选择功能(6):按姓名进行折半插入排序,则根据提示输入学生姓名,则可以显示折半插入后的顺序。

    若选择功能(7):按照学号进行快速排序,则输入学生的学号,则可显示快速排序后的顺序。

    若选择功能(8):根据姓名进行折半查找,要求使用递归算法实现,则根据提示输入学生的姓名,就可以显示出结果。

    若选择功能(9):根据学号进行折半查找,用非递归算法实现,则根据提示输入学生的学号,就可以显示出结果。

    展开全文
  • 学生宿舍管理系统设计与实现(课程论文)

    万次阅读 多人点赞 2018-12-11 09:29:36
    学生宿舍管理系统设计与实现   摘 要:现如今高校大学生越来越多,寝室压力巨大,学生不好管理。学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初...
  • 学生成绩管理系统主要用于各类大学院校在教学这一部分的管理,是针对于教务处对课程、对学生、对学生成绩进行合理地安排以及统筹计划,以便让教务处以最短的工作时间内把学生的成绩核算出来,提高教务处的办事效率。...
  • 学生管理系统设计

    千次阅读 2011-02-13 13:44:00
    设计是本人原创。 相关细节不再详述 ,现与大家分享,希望大家能提出宝贵意见。 相关代码,可从我的资源下载里免费获取。
  • 基于jsp(java)高校学生考勤管理系统设计与实现

    万次阅读 多人点赞 2019-04-18 23:06:56
    获取项目源文件,学习交流联系Q:1415736481,可指导毕设,课设 本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的...本高校学生考勤管理系统用JSP+SQL Server 2000开发,开发过程中运用了页面模块化...
  • 此次课程设计的题目是学生宿舍管理系统 工具: 数据库用的是SQL server;IDE用的是eclipse 一、系统功能基本要求 为了便于对学生宿舍生活的管理,学生资料的管理,快节奏、高效率的工作环境。我本次设计的课题是...
  • 《Java精品毕设》java ssm springboot酒庄内部管理系统(源码+sql+论文)主要功能:用户、角色、权限、菜单、内部邮件群发、给管理员发送邮件、酒类管理、红酒信息管理、通知公告管理
  • 信息管理系统 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对...
  • 数据库学生学籍管理系统

    千次阅读 多人点赞 2020-07-08 21:36:49
    学生信息管理系统》 1. 设计目的 能对有关学生的各类信息的数据进行输入、修改查询,能对学生信息进行按专业、班级进行查询与打印,对进入系统的人员要进行管理员何来宾的限制,并能对密码进行修改。能对数据...
  • sql学生选课管理系统

    千次阅读 多人点赞 2021-01-20 10:46:14
    1.1目的和意义 学生选课系统作为一种现代化的教学技术,被广泛应用于学校的学生选课,是一个学校不可或缺的部分, 学生选课系统使管理选课信息更加简单,学生选课更加方便。学生选课系统的将使选课管理工作规范化、...
  • 软件工程项目学生管理系统

    千次阅读 2020-05-06 09:59:22
    软件工程项目 学生管理系统 专业: 姓名: 年级: 学号 : 目录 1 设计任务与目的 3 1.1 项目计划 3 2 需求分析 3 2....
  • 学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据...
  • 学生住宿管理系统

    千次阅读 2018-11-15 22:52:19
    固定数据类型说明:   需求说明书 ...宿舍管理系统是一个现代化软件,他通过集中式的信息数据库将各种档案管理功能结合起来,达到共享数据,降低成本,提高效率,改进服务等目的。   2.2用户的...
  • 图书管理系统(课程设计

    千次阅读 2019-12-29 19:01:47
    本项目开发的是一个图书管理系统,该项目计划书提供一个系统开发的实施步骤。对项目中的需求分析,总体设计,详细设计等步骤都有详细的说明。实现对图书系统的管理 1.2系统概述 本项目采用B/S工作模式:采用MVC三...
  • C# Windows窗体应用程序设计综合实例(二)--------学生成绩管理系统 今天给大家更新一个综合实例,学生成绩管理系统。从需求分析、窗体应用程序的编写、运行结果来阐述整个过程 需求分析 首先先要进行需求分析,...
  • 建立学生成绩管理系统,利用手机对学生成绩进行管理,进一步提高现代化水平。使学生能够快速、准确地输入、修改查询自己的成绩,更好地了解自己的学业成绩,并方便对教师的管理。让学生更快地查询自己的学业成绩...
  • 网上教学管理系统设计与实现

    万次阅读 多人点赞 2019-04-14 18:54:54
    网上教学管理系统设计与实现 第1章 绪 论 1.1 背景 为了促进计算机专业学生工程实践能力的提升,使老师能够更好的管理学生,帮助学生提高学习成绩掌握更多的专业知识,增强师生之间的交流;解决老师...
  • 要注意每一步的目的意义,最终设计好一个完整的产品管理系统。 5.简单修改的宿舍管理系统: #include"stdio.h" #include"stdlib.h" #include"string.h" #include"conio.h" #define PAGE 3 #...
  • 基于Web的学生成绩管理系统

    千次阅读 2021-03-05 20:07:33
    本次课程设计课题为学生成绩管理系统,该学生成绩管理系统主要包括前台用户界面的开发后台数据库的开发,重点在于后台数据库的开发。要求建立起完整性强、数据一致性数据安全性好的数据库。在前端用户界面的开发...
  • 【C++】学籍管理系统(课程设计文档+源码)

    千次阅读 多人点赞 2015-12-28 13:01:03
    摘要:本次课程设计任务是通过编写一个高校学籍管理系统,学习用Visual C++ 6.0开发简单的管理系统。采用Visual C++ 6.0软件为主要开发工具。 本系统主要完成对高校学生学籍信息的管理,包括学生信息的添加、修改、...
  • 数据库设计学生选课系统

    千次阅读 2013-06-15 22:32:43
    目的和意义  随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,755
精华内容 8,702
关键字:

学生管理系统的设计目的和意义