精华内容
下载资源
问答
  • 学生成绩管理系统设计》 二、实训目的 (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语言图书管理系统设计报告

    万次阅读 多人点赞 2017-06-20 17:37:54
    源代码:https://blog.csdn.net/k_young1997/article/details/73480766 XXXX大学 ...C语言课程设计报告 ...题 目 图书管理系统设计 专业班级 XXXX级计算机科学与技术本科X班 组 别 计科第...

     

    源代码:https://blog.csdn.net/k_young1997/article/details/73480766

     

     

     

    XXXX大学

     

    C语言课程设计报告

     

     

     

     

     

    题    目            图书管理系统设计         

    专业班级     XXXX级计算机科学与技术本科X班

    组    别            计科第29组               

    学生姓名          XXX、XXX、XXX           

    (系)           信息工程系               

    指导教师(职称)       XXX(教授)          

    完成时间            xxxx年x月xx日          

     

    XXX大学

    课程设计任务书

     

    题目                图书管理系统设计                  

    班级              xxxx级计算机科学与技术本科x班     

    学号         xxxxxxxxxxxx         姓名      xxx      

    学号         xxxxxxxxxxxx         姓名      xxx      

    学号         xxxxxxxxxxxx         姓名      xxx      

    一、主要内容:

    本课程设计结合本学期所学C语言知识,数组、函数、结构体、指针、链表、文件读取操作等等,准备设计开发一个简单的图书管理系统。设计开发这个系统需要用到链表、文件读取操作、结构体、函数、指针、等C语言知识。本课程设计将会实现对图书信息的账号登录、注册账号、密码修改、密码查找、查找、输出、排序、备份、恢复、图书借阅和归还功能。本着简单、易用的设计原则,本课程设计在尽量优化界面在保证输入输出美观的同时又不失友好的交互界面。

    本次设计主要学习内容包括:

    (一)进一步学习并熟练掌握C语言语法和编程思想。

    (二)学习C语言提供的库函数,熟悉CodeBlocks的开发工具。

    (三)学习C语言函数、链表、结构体、文件读取、指针等知识。

    (四)学习软件的设计与开发过程中所需要思想和细节。

    二、基本要求:

    (一)质量要求

    (1)图书管理系统的基本功能模块的设计应包括:账号登录和修改、图书信息的浏览和保存、图书的借阅和归还。

    (2)对图书管理系统设计并进行调试、修复、完善、测试。测试图书信息的输入输出是否正确、测试文件的读取与存储是否正常、测试账号切换后是否各项功能是否正常运行、测试评估界面是否合理,友好。

    (3)定期主动向指导教师汇报任务进度,认真填写相关报告文档。

    (4)按时完成各阶段工作,不突击,不抄袭。

    (二)进度要求

    (2)明确课程设计任务,搜集资料:xxxx年x月xx日—x月xx日。

    (3)完成程序的设计与实现,撰写课程设计论文初稿:xxxx年x月xx日—x月xx日。

    (4)与指导教师沟通,完成课程设计论文定稿:xxxx年x月xx日—xxxx年x月xx日。

    (5)进入课程设计论文审阅阶段,准备答辩:xxxx年x月xx日—x月xx日。

     

    三、主要参考资料:

    [1] 甘勇,李晔,卢冰.中国铁道出版.《C语言程序设计(第二版) 》 

    [2] 河南工业大学同学的图书管理系统的功能的借鉴。

    [3] 啊哈磊.人民邮电出版社.《啊哈!算法》

    [4] 程杰,清华大学出版社.《大话数据结构》

     

     

     完 成 期 限:     xxxx年x月xx日 

    指导教师签名:                 

     

    年   月   日

     

     

    目   录

    1概述.1

    1.1 设计思想. 1

    1.2 设计原则. 1

    1.3 课程设计报告内容及分工情况. 1

    1.3.1 课程设计报告内容. 1

    1.3.2 课程设计分工情况. 2

    2总体设计.3

    2.1 功能模块图. 3

    2.2 主函数 main()3

    2.3 程序流程图. 4

    3详细设计.5

    3.1函数.5

    3.2函数流程图.7

    4运行结果与调试.13

    4.1 运行结果. 13

    4.2 软件调试. 15

    结束语.17

    参考资料.18

    附录.19

     

    1概述

     

    1.1设计思想

    (1)该系统的设计分成几个相对独立的模块,这些模块都进行集中式管理。

    (2)分层的模块化程序设计思想,整个系统采用模块化结构设计作为应用程序,有较强的可操作性和扩展性。

    (3)合理的数据设计,在应用系统设计中,相对独立的模块间以数据相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性 。     

    1.2设计原则

    为了使本系统功能齐全完备,操作简便,最大限度的提高用户的使用的体验,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:

    (1)合法性原则:规范录入各种图书信息和各种数据,对用户的账号信息进行规范保存。

    (2)实用性原则:根据用户对图书信息浏览和借阅的基本需求设计各种功能,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。

    (3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。

    (4)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。

     

    1.3 课程设计报告内容及分工情况

    1.3.1课程设计报告内容

    (1)系统功能模块结构图和程序流程图

    (2)数据结构设计及用法说明

    (3)程序结构(画功能模块图或流程图)

    (4)各模块的功能

    (5).实验结果(包括输入数据和输出结果)

    (6)设计体会

    (7)参考文献

     

    1.3.2 课程设计分工情况

    本组共有3人,具体分工情况如下:

    (1)学号:xxxxxxxxxxx,姓名:xxx,具体负责xxxxxx。

    (2)学号:xxxxxxxxxxx,姓名:xxx,具体负责xxxxxx。

    (3)学号:xxxxxxxxxxx,姓名:xxx,具体负责xxxxxx。

     

     

    2总体设计

    2.1功能模块图

           本图书管理系统分为三个功能模块,分别是账号管理功能、图书信息管理功能、图书借还管理功能。账号管理功能可以进行账号登录、注册账号、找回密码、修改密码:图书信息管理功能可以对图书信息进行查找、排序、修改、恢复、和备份功能:图书借还管理功能可以查询用户的借书记录、借书、还书功能。功能模块图如图2-1所示。

     

     

    图2-1图书管理系统模块图

    2.2主函数 main()                                        

    函数的功能:用于联系各个功能函数模块,以及退出程序时的退出画面提示。

    函数的入口:整个程序是从主函数开始的。

    函数的出口:当从main()的ove函数开始中进入,即显示出欢迎使用界面;跳出while循环,然后退出main()函数,即:退出整个程序。

    函数调用关系:该函数不被其它函数调用。

     

    2.3程序流程图

           本图书管理系统在启动后会先进入登录界面进行登录或各种账号操作,然后进入图书信息管理、图书借还管理等实用性功能的操作。程序流程图如图2-2所示。


    图2-2图书管理系统流程图

    3       详细设计

    3.1      函数

    (1)功能函数ling()

    函数的功能:登录账号

    函数的入口:从main()中进入。

    函数调用关系:被主函数调用。

    函数的出口:当账号登录成功返回1然后结束该函数,或输入密码错误超过三次结束结束整个程序。

    (2)功能函数FindByNum()

    函数的功能:按书号对图书进行查找并输出。

    函数的入口:程序从Find()的switch()开关结构中进入,即sclele的值为1时,开始进入该函数,进入函数后,在存储图书信息的stu结构数组中进行查找,找到后进行输出,若没找到则输出“未找到该数”。

    函数调用关系:被Find()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:当输出结果信息用printf()标准输出到屏幕上,然后结束该函数,而执行Find()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (3)功能函数SortByScore()

    函数的功能:对所有图书信息按书名的首字母进行排序,并保存到文件“缓存区”中。

    函数的入口:从Sort()的switch()开关结构中进入,即sexh的值为1的时侯,进入该函数,开始对图书信息按书名的首字母进行排序,然后将排序结果保存到文件“缓存区”中。

    函数调用关系:被Sort()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:把“排序完成”用printf()标准输出到屏幕上,然后结束该函数,而执行Sort()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (4)功能函数output()

    函数的功能:输出所有图书信息

    函数的入口:从Find()的switch()开关结构中进入,即sclele的值为4时,进入该函数。并调用PrintRecord()函数对每一条图书信息进行输出。

    函数调用关系:被Find()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:将所有图书信息都输入到屏幕上后,执行Find()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (5)功能函数Huifu ()

    函数的功能:将所有图书的信息恢复至备份时的状态

    函数的入口:从Menu()的switch()开关结构中进入,即select的值为4时,进入该函数。用freopen("图书信息库.txt","r",stdin)将里边的所有图书信息都存入内存,然后再调用save()将所有图书信息都存入到“缓存区”中。

    函数调用关系:被Menu()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:将所有图书信息都存入到“缓存区”中后,执行Menu()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (6)功能函数BorrowBook()

    函数的功能:借阅图书

    函数的入口:从Borrow()的switch()开关结构中进入,即shl的值为2时,进入该函数。之后对用户的信誉值进行判断,若低于60将无法借书。然后调用FindByName()函数对所借图书进行搜索,若存在则输入借书时间,否则借书失败。

    函数调用关系:被Borrow()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口: 将借书结果输入到屏幕上后,执行Borrow ()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (7)功能函数SendBook ()

    函数的功能:归还图书     

    函数的入口:从Borrow ()的switch()开关结构中进入,即shl的值为3时,进入该函数。之后先判断该用户是否有借书记录,并调用FindByName()函数找到还的图书并对其数量进行修改,最后判断是否按期归还图书和图书有无破损。

    函数调用关系:被Borrow ()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口: 还书完成后后,执行Borrow()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    3.2      函数流程图

    (1)账号登录流程如图3-1所示。


    图3-1 账号登录流程图

    (2)按书号查找图书流程如图3-2所示。


     图3-2按书号查找流程图

    (3)按书名首字母排序流程图如图3-3所示 。


    图3-3按书名首字母排序流程图

    (4)输出所有图书信息流程如图3-4所示。


    图3-4输出所有图书信息流程图

    (5)恢复备份功能流程如图3-5所示。


    图3-5恢复备份流程图

    (6)借阅图书流程如图3-6所示。

     

           图3-6借阅图书流程图

    (7)归还图书流程如图3-7所示。


            图3-7归还图书流程图

     

     

     4、运行结果与调试

    4.1运行结果

    (1)在程序开始是进入登录界面进行登录界面或选择切换账号时输出登录界面。该界面可以进行登录操作、注册新账号、找回账号密码、修改密码和退出系统。

    账号登录界面如图4-1所示。

        
         

    图4-1 账号登陆界面

    (2)该界面为主界面,在登录完成后或者从下一级界面返回后输出该界面。该主界面可以选择图书信息管理功能、图书借还功能、查看系统功能介绍、开发人员信息和退出系统的操作。主界面如图4-2所示。

      
       

    图4-2 主界面

    (3)该界面为图书管理功能的主界面,可以选择执行查找、排序、修改、恢复图书信息、备份图书信息的操作、返回上一级菜单的功能。图书信息管理功能界面如图4-3所示。

     
         

    图4-3图书信息管理功能界面

    (4)该界面可以实现图书信息查找功能,可以按书号查找、按书名查找、按作者查找、查看全部图书信息、返回上一级菜单的功能。查找功能界面如图4-4所示。

                

          图4-4 查找功能界面

    (5)该界面可以进行排序的操作。可以进行按书名首字母排序、按图书单价升序排序、按图书单价降序排序,还可以返回上一级菜单。排序功能是在内存中进行,所以不进行输出。排序功能界面如图4-5所示。

                 

        图4-5排序功能界面

    (6)该界面可以实现添加图书、删除图书、删除全部图书信息、返回上一级菜单的功能。修改功能界面如图4-6所示。

              

    图4-6修改功能界面

    (7)该界面可以实现对用户借书记录查询、图书借阅、图书归还、返回上一级菜单的功能。图书借还管理功能界面如图4-7所示。

                

    图4-7图书借还管理功能界面

    4软件调试

    (1)每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过老会长的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:每次在执行完讲数据保存到文件的函数后都会输出紊乱。经过多次调试和修改后,发现把是因为freopen(”CON”,stdout)运行不稳定导致,在更换了保存数据的方法后结决了此问题。

    (2)在增加了切换账号功能后,在创建新账号后保存到文件的用户借还书记录总是出错但内存中没错,经过调试发现是因为在新增账号时用于存储新账号借还书记录的指针名与一个变量名相同造成每次都判断错误。最后更换了变量名,并使该指针每次使用前都指向NULL。

    (3)在借书时不能判断是因为图书数量不足导致不能借阅还是因为没用该图书导致的不能借阅,最后给每种情况标记变量都设置了一不同的值来区分两种不同的情况。

    (4)最开始在每次关闭程序后在下次使用前需要手动恢复文件中的数据,不能连续的使用数据,最后加了一个文件来保存各类数据的数量以使数据能够连续自主的调用,不需要再人工修改。

     

     

    结束语

     

    本系统包含51个函数,实现了图书管理系统所需的基本功能。系统功能大致分为三个模块,分别是登录模块、图书信息管理模块和图书借还模块。启动程序后首先执行的是登录功能。在此功能中可以实现账号登录、注册账号、找回账号密码、修改账号密码功能。登录时,若输入密码错误次数达到三次系统将自动关闭。在注册账号时若注册的账号已存在则不能再进行注册。修改密码时增加了验证码功能。在图书信息管理模块中可以进行图书的查找、排序、添加、删除、备份图书信息、恢复图书信息和切换账号功能。在图书借还功能模块可以进行图书的借阅、归还、借书记录查询功能。本系统在信息存储时采用了两种方式。在存储图书信息和账号信息时用的是结构数组,在存储用户借书记录时用的是链表。通过此次图书管理系统的设计熟练了结构数组、链表、文件的操作,同时对编写小型的系统有了一定的了解,对于细节方面考虑的比以前有很大提升。

     

    xxx:在该设计中主要完成了所有代码的实现,并最终调试实现了该图书管理系统的全部功能并完成了大部分的设计报告。在设计的过程中熟练了对文件的各种操作,链表和结构数组的使用,清屏函数和暂停函数的使用,对做一个项目的过程有了一个大概的认识,知道了大致的规划。在设计过程中发现一些文件的操作和清屏函数会有冲突,通过改变对文件的操作解决了此问题;

    xxx:除了xxx设计的这个图书管理系统,我自己也尝试着设计了一个图书管理系统的功能,因此也发现了很多问题,比如说:在用add()函数添加新增图书信息时,我就忘了字符型数据本身会吃掉回车的这一特点,忘了在%c前面加上空格,导致程序在循环的过程中一直无法正常显示结果。但是,通过仔细耐心的检查与对错误的分析,又在课本的相关章节进行了查阅,最终发现了这一问题。同时,我更加熟悉了结构体的使用,对函数的调用方式更加清楚。还有就是初步了解了函数指针的概念,能够使用基础的函数指针。同时,这也是我第一次尝试画各种各样的流程图,虽然画的不好,但这确实是我的第一次尝试,也觉得充满了乐趣。

    xxx:在本系统的设计中我参加设计了少量函数语句以及制作流程图等任务,在这次的设计前我原本对函数和结构体等了解并不太清楚,通过这次的设计我清楚了这些语句的运用,并且我学会了文件的操作,在文件的修改等地方出现了问题,后来通过查阅资料和讨论解决了这个问题。

    参考资料

     

    [1] 《C语言程序设计(第二版)》,甘勇等编著,中国铁道出版社,2015年9月

     

    [2] 《C语言程序设计》,苏小红等主编,高等教育出版社,2011年

    [3] 《C和指针》,徐波译,人民邮电出版社,2008年

    [4] 《C Primer Plus第6版 中文版》,姜佑 译,人民邮电出版社,2016年

    [5] 《大话数据结构》,程杰,清华大学出版社,2011年6月

    [6] 《啊哈!算法》,啊哈磊,人民邮电出版社

     

     

    附录

     

    源代码

     

     

     

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

    千次阅读 2020-06-13 11:22:27
    《面向对象课程设计》报告学生信息管理系统设计一、问题描述二、需求分析和概要设计三、功能模块描述和设计思路四、具体实现过程五、收获与展望 一、问题描述 学生信息管理系统设计 学生信息包括:学号,姓名,年龄...

    一、问题描述

    学生信息管理系统设计
    学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能:
    系统以菜单方式工作
    1、学生信息录入功能(学生信息用文件保存)输入
    2、学生信息浏览功能—输出
    3、查询、排序功能—算法
    按学号查询
    按姓名查询
    4、学生信息的删除与修改

    二、需求分析和概要设计

    题目要求之做一个学生信息管理系统,并且一菜单的形式完成,

    CAboutDlg是“关于”界面的设计;
    CAddDlg是学生信息录入功能界面的设计,并且实现学生消息添加;
    CChangeDlg是学生信息的修改功能界面的设计;
    CDisplayView和CSelectDlg在主窗口上个的两个静态拆分窗口;
    CInfoDlg是学生信息浏览功能界面的实现设计;
    CInfoFile是存放学生信息的类,里面有学生属性,还有一些调用函数;
    CLoginDlg登录窗口界面的设计;
    CMainFrame是主窗口的设计;
    CSearchDlg是学生信息查询界面的设计;
    CSortDlg是学生信息排序界面的设计;
    CstuinfoApp是应用程序类;
    CUserDlg是个人信息界面的设计。

    三、功能模块描述和设计思路

    首先就是学生信息的录入,要求将信息用文件保存,在这里我设计了一个类CInfoFile,构建了一个结构体msg里面有8个成员变量分别是id,name,age,sex,birthday,place,phone,mail,分别表示学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,除了id(自加,且唯一),age是int类型,其他都是string类型,同时CInfoFile里面还有成员函数ReadDocline、WirteDocline分别向程序里面读数据和写入数据,还有负责添一条数据的成员函数Addline()可以添加一条信息,同时我将学生的信息有list容器存放。这个添加信息的界面我设计了一个CCAddDlg类,继承CFormView类,里面不需要填加学号,只需要输入其他七个变量即可,通过编辑框来接收用户输入的信息。

    其次是学生的浏览,我设计了一个CInfoDlg类,它是有CFormView类继承而来的,通过重写OnInitialUpdate();函数来实现界面的初始化,我是用一个List Control控件来显示信息的,当然就要引用CInfoFile的头文件,将文本信息读入,然后在展示出来,大体思路就是这样。

    然后我是先做查询的,因为这有做了查询才能删除和修改,查询我也是按照学号查询和姓名查询,在这里我设计了一个CSearchDlg类,它是有CFormView类继承而来的,也要应用CInfoFile类完成对文件的读写,同时在这个选择方式上,我用了一个下拉框,Combo Box控件来实现选择,查询出来的信息在右边的实例编辑框中展示出来,然后对编辑框进行一些属性的调整,例如可下滑(当文本长度过长时可下滑)、可换行、只读,然后学号和姓名都设置可输入编辑框,只有当对应查询方式有效时才能进行查询,无效会有消息框弹出提示,若有效会进行查询将对应结果输出,无输出结果会有对应的提示框弹出,用MessageBox实现。还有一点需要注意的是按照名字查询的时候可能会出现同名的要将其输出。

    然后我做了删除和修改,这是用按照学号查询的方法来查询的,分别设计了CDelDlg类和CChangeDlg类,都是有CFormView类继承而来的,CDelDlg类的设计类似查询,也是左边输入搜索,右边输出数据,还有一点就是,点击删除按钮后会弹出二次确认,只有当选择确认时才会删除信息,防止误删。

    CChangDlg类的界面类似添加信息界面,但是多了一个学号的选项,这个学号的选项我是用Combo Box做的,原理类似查询的查讯方式选择框,这样就不会弹出未查询到该学号的报错了。在选择学号的时候,会有对应学号信息的提示,以便于对照信息增加可读性。

    最后我写的是排序,这里我新建了一个CSortDlg类,我是用一个List Control控件来完成这个功能的,我写了一个列表表头触发事件OnLvnColumnclickList1()函数、同时写了一个静态函数MyCompareProc()函数用来定义排序的方式,比如某列按照int类型排序,而有的按照CString类型排序。

    然后,我还自己写了一个登陆窗口,用CLoginDlg来实现的,它的父类是CDialogEx,在应用程序类CstuinfoApp的InitInstance()里面的APP创建之前创建登陆对话框只有登陆成功才能进入到主界面,在登录界面还有记录密码的功能,配有提示如密码错误,用户名不存在。还有就是登录到主窗口是会显示个人信息界面,这个我使用CUserDlg来实现的,里面包括修改密码的功能,确定密码。主窗口的设计CMainFrame类的设计,它是CFrameWnd的子类,在这里我还设计了一个右键菜单和快捷键的设计,还有就是关键的两个列CSelectView类和CDisplayView类,CSelectView继承于CTreeView,CDispalyView继承于CFormView,CSelectView类中初始化树视图,获取数的控件,添加树节点,透视对应的结点添加控制事件,OnTvnSelchanged(),来获得自定义消息,在主窗口界面挂载信息。

    四、具体实现过程

    1. 新建项目
      1.1. 根据向导创建项目
      首先,新建MFC项目(stuinfo),基于单文档,MFC标准项目。
      1.2. 添加预处理
      由于微软在VS2013中不建议再使用C/C++的传统库函数scanf,strcpy,sprintf等。
      VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C/C++函数。要想继续使用此函数,需要添加 _CRT_SECURE_NO_WARNINGS这个预定义。
      在项目->属性->C/C+±>预处 ->预处理器定中添加 _CRT_SECURE_NO_WARNINGS,防止报错。
      1.3. 设置主窗口属性
      在CMainFrame的 OnCreate()中添加如下代码:
      在这里插入图片描述
      IDI_ICON_WIN 是自己导入图标。
      在这里插入图片描述
      可以在这里修改左侧标题
    2. 文件处理
      2.1. 文件内容处理和设计文件处理类
      Login.ini中登录用户的信息

    学生信息在stock.txt中

    添加CInfoFile.cpp和CInfoFile.h
    设计结构体格式

    设计类

    1. 登录窗口的设计
      添加控件

    添加类CLoginDlg :public CDialogEx

    重写OnInitDialog函数,判断登录情况进行初始化,通过rem.txt里面的内容来判断是否记住密码,如果是就初始化记住密码

    还有就是登录按钮的实现

    同时这里还有注意两个bug,1是直接点击输入框然后回车会进入主界面,2是直接点x会进入主界面。这里通过重写函数解决。

    这是取消按钮的代码:

    1. 静态拆分窗口
      自定义两个类:CSelectView和CDispalyView(它的基类必须是CFormView类)。
      CSelectView继承于CTreeView,CDispalyView继承于CFormView。
      1)CMainFrame类中,声明CSplitterWnd类型的对象:

    2. 树视图功能的添加
      加载图标,

    在CSelectView类中声明相应变量,

    然后重写CSelectView的OnInitUpdate函数

    在功能节点相应信息的处理:

    1)在CMainFrame 框架类中,添加自定义消息宏

    2)在CMainFrame框架类中添加自定义消息处理函数:
    //自定义消息处理函数

    afx_msg LRESULT OnMyChange(WPARAM wParam, LPARAM lParam);
    3)对应的.cpp定义其函数
    LRESULT CMainFrame::OnMyChange(WPARAM wParam, LPARAM lParam)
    {
    }
    

    4)在CMainFrame框架类BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加自定义消息入口,与自定义消息处理函数绑定。

    5)发送自定义信号:
    在CSelectView的OnTvnSelchanged函数中,发送自定义信号:

    在CMainFrame框架类OnMyChange函数中处理相应消息:

    运行结果:

    因为此时并没有挂载个人信息界面,所有不会有右边界面的内容,应该是未定义的初始化内容。
    6. 个人信息管理界面窗口的实现
    6.1. 界面设计

    设计界面,添加控件,并给控件添加变量

    重写函数

    1. 学生信息浏览窗口的实现
      7.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    7.2. 功能的实现

    1. 学生信息添加窗口的实现
      8.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    8.2. 功能实现

    1. 学生信息查询界面
      9.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    9.2. 功能实现

    1. 学生信息删除界面
      10.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    10.2. 功能实现

    1. 学生信息修改界面
      11.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    11.2. 功能实现

    1. 学生信息排序界面
      12.1. 界面设计
      设计界面,添加控件,并给控件添加变量

    12.2. 功能实现

    1. 菜单栏的制作
      13.1. 菜单栏界面的设计

    2)右键菜单栏项,添加事件处理程序,选择COMMAND 消息类型,添加至CMainFrame框架类中
    添加函数
    在这里插入图片描述
    13.2. 右键菜单
    在这里插入图片描述

    五、收获与展望

    还有些图片不想放了,上传到资料了
    一会放链接
    最后的成品展示在

    链接: 视频录制的不好不介意.

    展开全文
  • MySQL学生成绩管理系统设计实验报告

    千次阅读 多人点赞 2020-12-01 21:46:15
    主要介绍学生成绩管理系统项目开发的背景、目的、对象以及研究内容。 1.1项目背景 每个学校都需要在期末进行考试成绩的统计分析工作,而这些工作都必须在考试结束后一个星期的时间内完成。大量的成绩数据的统计工作...

    一、概述

    主要介绍学生成绩管理系统项目开发的背景、目的、对象以及研究内容。

    1.1项目背景

    每个学校都需要在期末进行考试成绩的统计分析工作,而这些工作都必须在考试结束后一个星期的时间内完成。大量的成绩数据的统计工作如果只靠人工完成,费时费力,还容易出错。随机计算机技术的快速发展,计算机在日常管理应用中迅速普及,利用计算机进行学生成绩管理势在必行。因此需要开发出一个满足学校进行成绩的录入、查询、修改等需求的功能完善,安全可靠,迅速便捷的成绩管理系统。
    

    1.2编写目的

    开发出一个操作简便、界面友好、灵活实用、安全可靠的学生成绩管理系统。该系统的开发以任课教师和学生服务为对象,能够提高学校对学生成绩的统计分析效率,减轻教务管理人员对学生成绩管理和统计的负担,能提高学校对学生成绩的规范化管理。
    该成绩系统能够及时对学生成绩进行收集整理,使学校相关部门及时获取可靠的学生成绩信息,便于管理。方便各任课教师记录,统计所带班级学生成绩,提高工作效率,减轻负担,提高教学质量。实现快速方便地处理大量成绩数据信息,完成成绩的录入、修改、删除、查询等处理要求。方便学生查询自己各科目成绩。

    1.3软件定义

    学生成绩管理系统是记录了学生成绩的系统,可以实现查询、更新、插入、删除等功能。根据不同用户设置不同的权限,来确保学生成绩信息的安全行和完整性。

    1.4开发环境

    windows10操作系统,mysql5.6.17数据库服务器,Eclipse4.12.0,Navicat。

    二、可行性分析

    由于本系统管理的对象单一,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。

    2.1经济可行性分析

    随着科学技术的不断发展与创新,计算机作用的日益突显,计算机软件成为人们解决问题的一个有效手段,当然,它的作用也越来越重要。在当今信息时代,国民经济和国防建设、社会发展、人民生活都离不开软件,软件也无处不在。软件产业也是一个新兴产业,尽管起步晚,但是发展迅速,已经成为增长最快的产业,是具有高投入/高产出、无污染、低能耗的绿色产业。学生成绩管理系统是一个基于教务处数据库的一个管理系统,对已经使用的类似的系统进行调查分析、类比,本课题具有的特点:开发工作量小,可以有两个人合作开发或一个人独立开发,开发周期短,有熟练的开发人员一个月就可以完成系统的开发与测试。

    2.2技术可行性分析

    从技术方面来说,Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。可以利用所学的Java知识进行编程,再与数据库连接,通过SQL语句即可轻松查询和更新后台数据库中的数据。

    三、需求分析

    3.1功能要求

    根据用户需求,系统需向用户提供以下功能:
    1、系统登录功能:根据教师、学生两种身份设计不同用户的操作权限和登录方式。
    2、班级管理功能:班级的添加、修改、删除功能。
    3、成绩管理功能:录入、修改、删除、查询、统计学生成绩,能一次性录入某班全部学生成绩。
    4、信息管理功能:添加、修改、删除、查询学生基本信息,能一次性导入某班全部学生信息。
    5、成绩查询功能:每个学生可以查询自己所有课程的成绩。教师可以查询所带班级的成绩,可以对成绩进行排序和统计。
    在这里插入图片描述
    图3-1-1 学生成绩管理系统功能结构图

    3.2性能要求

    1、易操作性:所开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。
    2、可维护性:系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要。
    3、可靠性:系统在运行中要不发生或极少发生故障,在偶然事故及操作失误时,系统应具有较强的出理能力,而不应造成信息的丢失或破坏。
    4、安全性:保证系统的物理安全、数据存储和获取的安全与保密,做好使用人员的授权管理。
    5、实用性:系统的设计应最大限度发挥计算机的高速处理、海量存储能力。
    6、开放性:系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接,不会因外部系统的不同面要做在量的修改工作。

    四、数据库设计

    4.1 数据库需求分析

    数据库对系统操作和处理的数据具有综合管理的作用,在具有信息管理的系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的执行效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。
    数据库需求分析就是分析用户的需求,根据用户的需求,分析确定该系统会操作处理那些数据,对确定好的数据根据它们之间的关联关系进行结构设计。需求分析结果直接反映客户的要求,需求分析结果是否准确将直接影响到后面各个阶段的设计结果是否合理和正确。因此做好数据库的需求分析是非常重要的环节。
    数据库需求分析的任务就是通过详细调查现实中要处理的对象,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
    针对该系统的要求,对该系统的数据库需求做了详细的分析。基于学生成绩管理系统的数据库功能主要体现在多用户登录信息、学生基本信息、教师基本信息、学生成绩信息的管理上。

    4.2用户对系统的要求

    4.2.1信息要求

    老师能查询所有成绩相关信息,包括某一学生的学号、成绩等详细信息,学生能查到关于自己具体的信息,包括每门课的成绩,学院,专业,班级等

    4.2.2处理要求

    1、需查询学生相关信息时能进行查询;
    2、学生成绩信息发生变更时,能进行修改、插入、删除等;
    3、学生的信息发生变更时,能进行更新、删除。

    4.2.3安全性与完整性要求

    安全性要求:
    1、系统应设置访问用户的标识以鉴别是否为合法用户,并设置密码,保证用户身份不被盗用;
    2、对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;
    3、对不同用户设置不同的权限,区分不同用户,如学生、成绩管理员。

    4.3数据需求描述

    数据流图:

    在这里插入图片描述

    图4-3-1 顶层数据流图

    数据字典:
    ①学生Student(学号Sno、姓名Sname、性别Sex、专业号Mno、班号Cnum)
    属性名 字段类型 长度 主键或外键 说明
    SNO INT 5 主键 学号
    SNAME CHAR 20 姓名
    SEX CHAR 2 性别
    MNO INT 5 外键 专业号
    CNUM INT 5 外键 班号

    ②教师Teacher(职工号Tno、姓名Tname、职称Title)
    属性名 字段类型 长度 主键或外键 说明
    TNO INT 5 主键 职工号
    TNAME CHAR 20 姓名
    TITLE CHAR 5 职称

    ③课程Course(课程号Cno、课程名Cname、学分Credit)
    属性名 字段类型 长度 主键或外键 说明
    CNO INT 5 主键 课程号
    CNAME CHAR 30 课程名
    CREDIT CHAR 2 学分

    ④班级Class(班号Cnum、人数Num)
    属性名 字段类型 长度 主键或外键 说明
    CNUM INT 5 主键 班号
    NUM INT 5 人数

    ⑤系Depart(系号Dno、系名Dname)
    属性名 字段类型 长度 主键或外键 说明
    DNO INT 5 主键 系号
    DNAME CHAR 30 系名

    ⑥专业Major(专业号Mno、专业名Mname、系号Dno)
    属性名 字段类型 长度 主键或外键 说明
    MNO INT 5 主键 专业号
    MNAME CHAR 20 专业名
    DNO INT 5 外键 系号
    ⑦选课CV(学号Sno、课程号Cno、成绩Result)
    属性名 字段类型 长度 主键或外键 说明
    SNO INT 5 学号
    CNO INT 5 课程号
    RESULT CHAR 5 成绩

    ⑧学生—教师ST(学号Sno、职工号Tno、课程号Cno)
    属性名 字段类型 长度 主键或外键 说明
    SNO INT 5 学号
    TNO INT 5 职工号
    CNO INT 5 课程号

    4.4逻辑结构设计

    一个系有若干个专业,一个专业有若干个班级,一个学生可以选修多门课程。
    

    关系模式表:
    ①学生Student(学号Sno、姓名Sname、性别Sex、专业号Mno、班号Classno)
    学号->姓名,学号->性别,学号->专业号,班号->专业号;
    ②教师Teacher(职工号Tno、姓名Tname、职称Title)
    职工号->姓名,职工号->职称;
    ③课程Course(课程号Cno、课程名Cname、学分Credit)
    课程号->课程名,课程号->学分;
    ④班级Class(班号Cnum、人数Num)
    班号->人数;
    ⑤系Depart(系号Dno、系名Dname)
    系号->系名;
    ⑥专业Major(专业号Mno、专业名Mname、系号Dno)
    专业号->专业名,专业号->系号;
    ⑦选课CV(学号Sno、课程号Cno、成绩Result)
    学号、课程号->成绩;
    ⑧学生—教师ST(学号Sno、职工号Tno、课程号Cno)
    学号、职工号->课程号

    其中①为第三范式,②③④⑤⑥⑦⑧均为BCNF范式

    4.5 物理设计

    4.5.1索引设计:

    CREATE TABLE Student1 (
    Sname CHAR(20),
    Sno INT(5),
    Sex CHAR(2),
    Mno INT(5),
    Classno INT(5),
    PRIMARY KEY (Sno),
    Index Student1(Sno)
    );
    CREATE TABLE Teacher1 (
    Tno INT(5),
    Tname CHAR(20),
    Title CHAR(5),
    Index Teacher1(Tno)
    );
    CREATE TABLE Course1 (
    Cname CHAR(20),
    Cno INT(5),
    Credit CHAR(2),
    Index Course1(Cno)
    );
    CREATE TABLE Class1 (
    Cnum INT(5),
    Num INT(5),
    Index Class1(Cnum)
    );
    CREATE TABLE Depart1 (
    Dname CHAR(20),
    Dno INT(5),
    Index Depart1(Dno)
    );
    CREATE TABLE Major1 (
    Mname CHAR(20),
    Mno INT(5),
    Dno INT(5),
    Index Major1(Mno)
    );
    CREATE TABLE CV1 (
    Sno INT(5),
    Cno INT(5),
    Result CHAR(5),
    Index CV1(Sno,Cno)
    );
    CREATE TABLE ST1 (
    Sno INT(5),
    Tno INT(5),
    Cno INT(5),
    Index ST1(Sno,Tno)
    );

    4.5.2触发器设计:

    1、删除课程表中的课程号,相应删除选课表和学生-教师表中的课程号:
    DELIMITER %%
    Create trigger deletorder
    after delete on Course
    for each row
    begin
    delete from CV where Cno=old.Cno;
    delete from ST where Cno=old.Cno;
    end %%
    DELIMITER %%

    4.6数据库实施

    4.6.1用户模式设计

    视图设计:
    1、成绩查询
    Create view Rselect
    As
    Select cnum,CV.sno,sname,cno,result
    From Student,CV
    Where Student.sno=CV.sno;
    2、学生所学课程及学分统计
    Create view Total
    As
    Select Sno,CV.Cno,Cname,Credit
    From Course,CV
    Where Course.Cno=CV.Cno;
    3、学生总成绩、平均成绩
    Create view sum
    As
    Select CV.Sno 学号,sname 姓名,sum(result) 总成绩,avg(result) 平均成绩
    From Student,CV
    Where Student.Sno=CV.Sno;

    存储过程设计:
    1、修改成绩
    DELIMITER CREATEPROCEDUREXiugai(INSno1INT(5),INCno1INT(5),INResult1CHAR(5))BEGINupdateCVsetResult=Result1whereSno=Sno1andCno=Cno1;END CREATE PROCEDURE Xiugai (IN Sno1 INT(5), IN Cno1 INT(5),IN Result1 CHAR(5)) BEGIN update CV set Result=Result1 where Sno=Sno1 and Cno=Cno1; END
    DELIMITER ;
    2、查询总学分
    DELIMITER CREATEPROCEDUREXuefen(INSno1INT(5),INSnameCHAR(20))BEGINSelectSno,Sname,Sum(Credit)asFromstudent,CVWhereStudent.sno=CV.snoGroupbySno;END CREATE PROCEDURE Xuefen (IN Sno1 INT(5),IN Sname CHAR(20)) BEGIN Select Sno,Sname,Sum(Credit) as 总学分 From student,CV Where Student.sno=CV.sno Group by Sno; END
    DELIMITER ;

    4.6.2安全性设计

    新建表
    create table user(username varchar(10),passw1 varchar(40),passw2 varchar(40));
    insert into user values (‘user1’,MD5(‘110’),SHA1(‘110’));
    insert into user values (‘user2’,MD5(‘120’),SHA1(‘120’));
    insert into user values (‘user3’,MD5(‘112’),SHA1(‘112’));

    Create user ‘cu1’@‘localhost’ identified by ‘110’;
    Create user ‘cu2’@‘localhost’ identified by ‘120’;
    Create user ‘cu3’@‘localhost’ identified by ‘112’;

    cus1@ localhost授权,即管理员的权限
    Grant all on Stu.Student to ‘cu1’@‘localhost’ with grant option;
    Grant all on Stu.Teacher to ‘cu1’@‘localhost’ with grant option;
    Grant all on Stu.Course to ‘cu1’@‘localhost’ with grant option;
    Grant all on Stu.Depart to ‘cu1’@‘localhost’ with grant option;
    Grant all on Stu.Major to ‘cu1’@‘localhost’ with grant option;
    Grant all on Stu.CV to ‘cu1’@‘localhost’ with grant option;
    Grant all on Stu.ST to ‘cu1’@‘localhost’ with grant option;

    cus2@ localhost授权,即学生的权限
    Grant select on Stu.CV to ‘cu2’@‘localhost’ with grant option;

    cus3@ localhost授权,即教师的权限
    Grant select,update on Stu.CV to ‘cu3’@‘localhost’ with grant option;

    4.6.3事务设计

    1、修改某一门课程的学分:
    Delimiter //
    Create Procedure BB(IN Cno1 INT(5),IN Cname1 CHAR(20),IN Credit1 CHAR(2))
    Begin
    declare t_err int default 0;
    declare CONTINUE HANDLER FOR SQLEXCEPTION SET t_err = 1;

    Start Transaction;
    Select Cno修改前的课程号 from Course where Cno=Cno1;
    Select Cname修改前的课程名 from Course where Cname=Cname1;
    Select Credit修改前的学分 from Course where Cno=Cno1;
    do sleep(20);/暂停20秒/
    Update Course set Credit = Credit1 where Cno=Cno1;
    Select Credit 修改后的学分 from Course where Cno=Cno1;
    if t_err =1 then
    Rollback; /* 有sql 错误 回滚 /
    else
    commit; /
    无 sql 错误 提交 */
    end if;
    end //

    Delimiter ;

    2、修改成绩:
    Delimiter //
    Create Procedure BC(IN Sno1 INT(5),IN Cno1 INT(5),IN Result1 CHAR(5))
    Begin
    declare t_err int default 0;
    declare CONTINUE HANDLER FOR SQLEXCEPTION SET t_err = 1;

    Start Transaction;
    Select sum(Result)修改成绩前的总分 from CV where Sno=Sno1;
    Select avg(Result)修改成绩前的平均分 from CV where Sno=Sno1;
    Select Result查询需要修改的课程号的成绩 from CV where Sno=Sno1 and Cno=Cno1;
    do sleep(20);/暂停20秒/
    Update CV set Result = Result1 where Sno=Sno1 and Cno=Cno1;
    Select Result查询修改后的课程号的成绩 from CV where Sno=Sno1 and Cno=Cno1;
    Select sum(Result)修改成绩后的总分 from CV where Sno=Sno1;
    Select avg(Result)修改成绩后的平均分 from CV where Sno=Sno1;

       if t_err =1 then
          Rollback; /* 有sql 错误 回滚 */
       else
          commit; /* 无 sql 错误 提交 */
       end if;
    

    end //

    Delimiter ;

    五、软件设计

    5.1登陆界面

    在这里插入图片描述

    图5-1-1 登陆界面
    在这里插入图片描述

    图5-1-2 登陆成功界面

    5.2学生成绩查询界面

    在这里插入图片描述

    图5-2-1 学生成绩查询界面图

    5.3教师界面

    在这里插入图片描述

    图5-3-1 教师界面图
    在这里插入图片描述

    图5-3-2 新增学生信息界面图
    在这里插入图片描述

    图5-3-3 更新学生信息界面图
    在这里插入图片描述

    图5-3-4 删除学生信息界面图

    六、项目设计总结

    通过学生成绩管理系统项目设计,加深了对数据库设计的理解,对于设计一个数据库项目的流程有了一定的概念。在这次项目设计中,回顾了以前很多的知识点,但是也发现了很多问题,最终解决了,所以也收获了很多。
    此次项目的设计让我们对Mysql数据库的了解更加深入,了解到了更多的知识点,也对Navicat软件有了一定的了解。在整个设计过程中,通过把各个管理信息连接起来的分析,锻炼了我们对事情的分析能力,通过怎么解决过程中遇到的问题,提高了我们查找文献的能力,对网络资源利用的能力与同学交流的能力。 项目最终开发出来的程序实现的功能比较简单,但也基本达到了项目设计的要求,可以看出设计程序的组员是花了不少心思的。
    最重要的是,这次数据库项目的设计,为我们以后程序开发的道路打下了扎实的基础。

    需要源代码的小伙伴点击以下链接下载
    https://download.csdn.net/download/weixin_43372169/19481547?spm=1001.2014.3001.5503

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

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

    万次阅读 多人点赞 2019-07-05 13:16:30
    关于学生管理系统的界面设计:代码如下: 数据库设计 DROP TABLE IF EXISTS `stu`; CREATE TABLE `stu` ( `stuId` int(11) NOT NULL AUTO_INCREMENT, `stuName` varchar(30) DEFAULT NULL, `stuSex` varchar(30) ...
  • C语言学生成绩管理系统设计报告和全部源码)

    千次阅读 多人点赞 2020-11-29 16:49:31
    学生成绩管理系统设计与实现 1) 系统功能模块 学生成绩管理系统主要功能是。。。。 模块结构如“图1-1系统功能结构图”所示。 图1-1 系统功能结构图 我是事先定义了: typedef struct Node { in
  • C语言开发简单的学生成绩管理系统(附源码)

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

    万次阅读 多人点赞 2017-12-02 21:02:52
    目录 一.课程设计说明 1 1.1项目概述 1 1.2设计任务和要求 1 1.3开发环境说明 1 二....2.1项目介绍 2 2.2数据需求分析 2 三.概念结构设计 3 ...3.2数据库设计 5 ...4.1学生信息管理系统 12 4.2学生信息查询 12
  • 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。 系统要求实现以下功能: 1、输入功能:录入学生信息(包括学生学号、姓名、性别、出生...
  • 学生成绩管理系统数据库设计--MySQL

    万次阅读 多人点赞 2020-06-18 13:02:04
    MySQL/SQL Server 数据库设计学生成绩管理系统设计大纲 1. 项目背景及需求分析 1.1 项目背景 1.2 需求分析 1.2.1 信息需求 1.2.2 功能需求 1.2.3 安全性与完整性需求 2. 概念结构设计 2.1 抽象出系统实体 2.2 ...
  • printf("接下来请依次输入%d个学生信息\n",phead->class_num); printf("请输入学生以下信息:\n"); for(int i=1;i<=phead->class_num;i++){ pnew=(node)malloc(sizeof(struct Node)); printf("\t班内序号:"); ...
  • c语言课程设计学生信息管理系统

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

    万次阅读 多人点赞 2018-07-10 19:47:16
    学期末课程设计的作业,利用链表和文件的操作。...*******程序名称:学生成绩管理系统 *******作 者: *******开发环境:Dev-C++5.11 *******创建日期:2018.06.28 *******完成日期:2018.07.02 ***************...
  • MFC课程设计 --学生成绩管理系统

    万次阅读 多人点赞 2018-07-26 21:12:55
    MFC课程设计 ,C++课程设计 --学生成绩管理系统 ps:因为课设完成的过程大家都不太一样,以下的代码仅供学习一下在MFC下各个控件的用法,有问题欢迎留言讨论。     实验目的 使用MFC类库编制应用程序:按钮...
  • Javaweb学生管理系统期末设计

    万次阅读 多人点赞 2019-06-14 21:18:11
    学生管理-描述文档 有需要参考的可以进入,项目下载地址。 一:功能描述 该项目实现了以下功能:  页面包括展示信息和管理信息两部分,并且实现了图片验证登录  通过连接数据库并执行SQL语句实现对数据库的增、...
  • 学生成绩管理系统源代码(jsp+mysql)+课程设计报告

    千次下载 热门讨论 2010-07-24 14:53:27
    系统采用jsp+mysql技术完成,可以作为课程设计参考(内含课程设计报告),也可作为学习jsp的范例
  • C语言实现学生成绩管理系统设计

    万次阅读 多人点赞 2017-07-22 11:19:30
    本系统有**增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对...该管理系统设计功能模块图: 下面是源代码:#include "stdio.h" #include "string"/*定义学生结构体*/ struct Student
  • 课程设计:c++实现学生成绩管理系统

    万次阅读 多人点赞 2020-11-28 10:59:08
    学生成绩管理系统课程设计,作为计算机科学专业学生的一门必修课,印象非常深刻,上机,编码,写报告,答辩,最后很多人勉强完成了功课,但是却很少能学到东西,算是一种遗憾吧,即使我们毕业了,仍然会想回去再做一...
  • 用java设计简单的学生管理系统

    万次阅读 多人点赞 2019-09-24 19:39:21
    学生成绩管理系统 要求: 完善Student类,Student类包含学号、姓名、年级、专业、三门功课的成绩(英语、高数、计算机)的成员变量,完善成绩录入方法、设计按学号查找方法、按姓名查找方法、按单科成绩排序的方法。...
  • 目录 一、 引言(Introduction) 3 ...三、 计算机系统支持及开发环境 7 1. 开发技术: 7 2. 开发硬件 7 3. 服务器环境 7 4. 软件 7 四、 需求分析 8 1. 该系统的用例图 8 2. 结构图 13 .
  • Swing-学生管理系统之主页设计

    千次阅读 多人点赞 2018-06-02 20:14:43
    最近java课有一个大作业,是让写出来一个学生管理系统。做了一个图,大致就是下面的功能吧。 对Swing并不是很熟悉,一点点的来写,好多函数呀,都不能很好的运用。一点点查阅API,还有强大的互联网,总算是对...
  • java学生成绩管理系统界面设计

    万次阅读 多人点赞 2018-06-29 10:35:40
    关于学生成绩管理系统的界面设计:代码如下 1import&nbsp;javax.swing.*; 2import&nbsp;java.awt.*; 3import&nbsp;java.awt.event.*; 4import&nbsp;com.example.SqlHelper; 5class&nbsp;...
  • C语言学生成绩管理系统源代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...
  • javaweb学生管理系统的课程设计

    万次阅读 多人点赞 2016-07-22 08:47:33
    本人计划编写一个简单的学生管理系统,主要从两个身份来说——老师和学生,对于老师来说,带验证码的登录注册,对学生进行增删改查,以分页的形式展示学生的所有信息;对于学生来说,带验证码的登录注册,以及查询...
  • C语言课程设计 — 学生成绩管理系统设计

    千次阅读 多人点赞 2020-01-16 13:49:07
    设计学生成绩管理系统,有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计学生成绩管理系统 1.2本系统涉及的知识点 结构体数组、结构体指针、数组、循环、函数、分支、指针 ...
  • 学生成绩管理系统-C语言(附源码和课程设计报告) 这是我初学C语言时的课程设计作业,源码贴出来希望对有需要的小伙伴有所帮助 系统功能层次图 头文件源代码 #include<stdio.h> #include<stdlib.h> #...
  • 学生计算机机房管理系统设计

    千次阅读 2019-06-21 18:27:04
    学生计算机机房管理系统设计 功能:该计算机房共有100台计算机,分为20排,每排5台。管理系统应包含每台计算机一周内的使用全部信息,包括计算机序号、配置、位置、状态、使用情况的历史记录(包括使用者姓名、学号...
  • 学生管理系统(页面设计

    万次阅读 2018-12-22 15:36:14
    页面整体布局,left,main,top三层布局架构。 ; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE ... ...学生管理系统
  • 文章目录项目目标项目截图展示项目Java源程序项目数据库文件信息项目结构图设计系统功能结构图:软件架构设计 项目目标     这篇文章是Java语言得课程设计大作业记录。     项目由Java和Mysql实现。    ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 137,075
精华内容 54,830
关键字:

学生管理系统设计报告