C语言课程设计大作业——学生管理系统(详细含报告和源码)

写在前面:欢迎来到「发奋的小张」的博客。我是小张,一名普通的在校大学生。在学习之余,用博客来记录我学习过程中的点点滴滴,也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获!希望大家多多关照,我们一起成长一起进步。也希望大家多多支持我鸭,喜欢我就给我一个关注吧!

题目:学生管理系统设计
功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。
系统要求实现以下功能:
1、输入功能:录入学生信息(包括学生学号、姓名、性别、出生年月、专业等);
2、显示功能:完成学生记录的显示。
3、查找功能:完成按学号或姓名查找学生的相关记录,并显示。
分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。2、完成信息的录入和显示(即通过编程创建文件,输入学生信息并可将文件内容显示出来)3、完成修改功能,即输入学号,可修改该学生的信息4、进一步要求,在使用修改功能时要求输入密码,密码正确才能修改信息否则不行。
要求:1、用C语言实现程序设计;
2、利用结构体数组、链表等实现学生信息表达、查询等,充分体现数据结构的知识;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序要有注释。
5、程序中所用到的排序查找方法需采用数据结构中所学方法实现,要求方法实用效率高。

一、总体设计

1.程序的总体设计

学生管理系统是具有统计,管理学生各种在校相关信息,方便学校对于学生信息的统一管理的系统。
随着高校的扩招,需要处理的学生信息日趋加大,不仅花费大量的教师资源,处理的效率还十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它解决了学生管理数据信息量大,修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息,成为管理高校中必不可少的管理工具。

管理员对系统的功能需求:
有关学生信息的输入功能
有关学生信息的显示功能
有关学生信息的查找功能
有关学生信息的修改功能
有关学生信息的修改加密功能
有关界面的人机交互友好化功能
有关学生信息的存储和读取功能

2. 数据结构

数据结构如下:

//定义结构体
typedef struct person                               
{
	char num[10];   //学号
	char name[15]; //姓名
	int  sex;      //性别 0为女  1为男
	char birth[10];      //出生年月
	char ji[20];      //专业
}person;

3. 函数原型声明

函数声明:

void menu_filename()
void menu_select()
void add() 
void scan()
void query()
void date()
void amend()
void delet()
void main()

二、功能实现

1.main( )流程图
在这里插入图片描述

2.void amend()流程图
在这里插入图片描述

3.void delet()流程图
在这里插入图片描述

4.void date()流程图
在这里插入图片描述

5.void amend()流程图
在这里插入图片描述

三、测试及调试(测试方案、存在的问题及解决方法)

(1)详细设计中存在的问题和分析
没有判断输入的信息是否正确,可以输入任何形式的数据。
(2)调试和测试中存在的问题和分析
每执行一个操作后一定要执行保存功能,这样才能将信息及时准确无误的把存入文件。
通过简单的输出函数来判断是否执行某一程序块。通过某些清屏及取字符函数调整结果的显示问题。

四、总结

经过这次课程设计,我学到了很多东西:
①巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。
②培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。
③经过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
④能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。
这次高级语言程序设计,学生成绩管理系统,让我对高级语言有了进一步的认识。首先,想要学好这门课程,主要在于实践,要通过不断地上机操作才能更好的学习它。
之后,课程设计期间,在调试出现很多错误,很多警告的过程中我的知识也在得到不断地巩固;当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。于是在课程设计的时候,我花了好几天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。我们觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。也让我学到了很多人生的哲理:懂得怎样去制定计划,怎样去实现这个计划,并掌握了在执行过程中怎样去克服心理上的不良情绪。我们对于高级语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序。
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。

五,源代码

由于篇幅过大,此处只粘贴部分代码想要源代码的小伙伴,可以去这个链接下载!
下载链接: 源码.

代码:

/*
? C语言课程设计任务书及指导书5
题目:学生管理系统设计
功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。
系统要求实现以下功能:
1、输入功能:录入学生信息(包括学生学号、姓名、性别、出生年月、专业等);
2、显示功能:完成学生记录的显示。
3、查找功能:完成按学号或姓名查找学生的相关记录,并显示。
分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。2、完成信息的录入和显示(即通过编程创建文件,输入学生信息并可将文件内容显示出来)3、完成修改功能,即输入学号,可修改该学生的信息4、进一步要求,在使用修改功能时要求输入密码,密码正确才能修改信息否则不行。
要求:1、用C语言实现程序设计;
2、利用结构体数组、链表等实现学生信息表达、查询等,充分体现数据结构的知识;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序要有注释。
5、程序中所用到的排序查找方法需采用数据结构中所学方法实现,要求方法实用效率高。
?
课程设计实验报告要求:
1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分 。
2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、
小结等。
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct person                               //定义结构体
{
	char num[10];   //学号
	char name[15]; //姓名
	int  sex;      //性别 0为女  1为男
	char birth[10];//出生年月
	char ji[20];  //专业
}person;
person per[100];  //定义100
char filename[20];                                      //定义全局变量
void menu_filename()
{
	  system("cls");
	  printf("请输入你要操作的文件名:");
	  scanf("\t%s",filename);
}
int menu_select()                              //菜单选择系统函数
{
	 char c;
	  do{
		system("cls");
		printf("\t\t    ******************************\n");
		printf("\t\t    *     学生管理系统           *\n");
        printf("\t\t    ******************************\n");
		printf("\t\t   ┌─────────────—┐\n");
		printf("\t\t   │ 1. 添加记录    2. 显示记录 │\n");
		printf("\t\t   │                            │\n");
		printf("\t\t   │ 3. 信息查询    4. 数据计算 │\n");
		printf("\t\t   │                            │\n");
		printf("\t\t   │ 5. 修改记录    6. 删除记录 │\n");
		printf("\t\t   │                            │\n");
		printf("\t\t   │ 0. 退出程序                │\n");
		printf("\t\t   └─────────────—┘\n");
		printf("\t\t请您选择(0-6):");
		c=getchar();
	 }while(c<'0'||c>'6');
		return (c-'0');                                      //字符减去’0‘得到的是数字整型//
}
 
	//*********************************************************************//
	//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
 
void add()                                      //添加函数
  {
	FILE *fp;
	int i=0,n=0;
	char ch='y';                           //首先定义ch='y'
	system("cls");                                //清屏函数  系统中调用
	while(ch =='y'|| ch =='Y')                    //其实只有当输入N或n时才跳出循环
    {
	    printf("             ----学生纪录添加----\n");
	    printf("学号:\n");
	    scanf("\t%s",per[i].num);
	    printf("姓名:\n");
	    scanf("\t%s",per[i].name);
	    printf("性别:\n");
	    scanf("\t%d",&per[i].sex);
	    printf("出生年月(例如2000年2月==》200002):\n");
	    scanf("\t%s",&per[i].birth);
	    printf("专业:\n");
	    scanf("\t%s",&per[i].ji);
        printf("是否继续添加?(y/n)");
	    ch = getchar();
	    i++;
	    n=n+1;
	    system( "cls ");
   }system("pause");                                     //等待命令
 
   if((fp=fopen(filename,"a"))==NULL)                    //以2进制形式进行文件尾追加//
	  {
		 printf("cannot open the files\n");
		 system("pause");
         return;                                         //如果文件出现错误 就返回
	   }
		for(i=0;i<n;i++)
		if(fwrite(&per[i],sizeof(person),1,fp)!=1)      //以2进制形式写入文件中//一次写入一个数组//
	    printf("file write error\n");
	    fclose(fp);                                       //关闭文件
	    system("pasue");
  }
     //*********************************************************************//
	//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
  void scan()                        //显示记录  进行全面信息浏览
   {
	void amend();                         //声明修改函数//
	char sign='y';
	FILE *fp;
    int i=0,n;
    system("cls");
      if((fp=fopen(filename,"r"))==NULL)             //以2进制方式读取文件信息//
	  {
		 printf("cannot open the files\n");
		 system("pause");
         return;
	   }
    while(!feof(fp))                              //一直读取知道文件尾结束
	{
		fread(&per[i],sizeof(person),1,fp);  //以2进制方式将文件信息读到数组内存中//一次读取一个//
		 i++;
     }
    fclose(fp);
	 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
     printf("        学号            姓名           性别    出生    专业\n");
	 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
    for(n=0;n<i-1;n++)                             //循环全部输出
     printf("\t%s \t%s \t\t%d \t%s \t%s\n",per[n].num,per[n].name,per[n].sex,per[n].birth,per[n].ji);
	 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
	 system("pause");
	 system("cls");
	 printf("是否需要修改?(y/n)");
	 scanf("\t%c",&sign);
	if(sign!='n'&&sign!='N')                    //选择是否在浏览后进行修改//
	 amend();
	 system("pause");
 
  }
 
     //*********************************************************************//
	 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
                                    //数据查询//
  void query()                     //学生信息的不同方式查询
   {
	FILE *fp;
	int i=0,n=0;
	int m;
	system("cls");
	printf("\t\n请选择查询方式:\n");
    printf("\t┌──────┐\n");
    printf("\t│1------姓名 │\n");
    printf("\t│2------学号 │\n");
    printf("\t│3------返回 │\n");
    printf("\t└──────┘\n");
	printf("请输入你要查询的方式\n");
	scanf("%d",&m);
	while(m!=1&&m!=2&&m!=3)
		{
			printf("输入错误请重新查询\n");
	        scanf("%d",&m);
	    }
      if((fp=fopen(filename,"r"))==NULL)                 //以2进制方式读取文件信息//
	  {
		 printf("cannot open the files\n");
		 system("pause");
         return;
	   }
 
    while(!feof(fp))
	{
		fread(&per[i],sizeof(person),1,fp);                      //以2进制方式将文件信息读到数组内存中//一次读取一个//
	    i++;n=n+1;
     }
 
	if(m==1)                                            //姓名查询
	   {
		char s[20];
		int i=0;
		printf("\t请输入想查询的姓名:");
		scanf("\t%s",s);
		while(strcmp(per[i].name,s)!=0&&i<n) i++;            //比较per[i].name与所输入姓名是否相同//
		if(i==n)
		{
			printf("\t通讯录中没有此人!\n");
			system("pause");
			return;
		}
		  printf("\t学号: %s\n",per[i].num);
		  printf("\t姓名: %s\n",per[i].name);
		  printf("\t性别: %d\n",per[i].sex);
		  printf("\t出生: %s\n",per[i].birth);
		  printf("\t计算机: %s\n",per[i].ji);
	     }
	if(m==2)                                                            //学号查询
		{
		  char s[15];
		  int i=0;
		  printf("请输入想查询的学号:");
		  scanf("\t%s",s);
		 while(strcmp(per[i].num,s)!=0&&i<n)i++;                       //比较per[i].name与所输入学号是否相同//
			if(i==n)
			{
				printf("\t通讯录中没有此人!\n");
				system("pause");
			    return;
			}
			printf("\t学号: %s\n",per[i].num);
		    printf("\t姓名: %s\n",per[i].name);
		    printf("\t性别: %d\n",per[i].sex);
		    printf("\t出生: %s\n",per[i].birth);
		    printf("\t计算机: %s\n",per[i].ji);
		  }
		  fclose(fp);
		  system("pause");
  }
博主后记:

希望看到此篇博文的小伙伴,如果发现有什么不对的地方,欢迎在下方留言指正!博主一定虚心接受并改正!大家一起共同进步。如果对你有所帮助,可以给博主一个赞👍。

  • 438
    点赞
  • 2833
    收藏
    觉得还不错? 一键收藏
  • 76
    评论
C语言课程设计——学生成绩管理系统(源代码 详细注释).zip》是一个包有源代码和详细注释的学生成绩管理系统的压缩文件。 学生成绩管理系统是一种用于管理学生的考试成绩和相关信息的软件工具。该系统基于C语言开发,通过使用源代码和详细注释来了解其内部工作原理和实现细节。 源代码是指程序员使用C语言编写的计算机程序的文本文件。它包一系列的指令和算法来实现特定的功能。通过查看源代码,我们可以了解程序是如何实现学生成绩管理的,例如如何读取和存储学生信息、计算和存储考试成绩等。同时,源代码中也包了程序的各种功能和特性的具体实现细节。 详细注释是在源代码中加入的对代码的解释和说明,用于帮助程序员和读者理解代码的逻辑和功能。注释通常以特定的标记符或特殊的注释语法来标识,并且会提供对代码行为、变量、函数和算法的解释。通过详细注释,我们可以更好地理解程序的运行逻辑和实现方式,同时也帮助我们更加容易地进行修改和维护。 压缩文件(.zip)是一种常见的文件格式,可以将多个文件或文件夹压缩成一个单独的文件。通过将源代码和详细注释压缩成一个文件,可以方便地进行存储、传输和共享。 因此,对于《C语言课程设计——学生成绩管理系统(源代码 详细注释).zip》,我们可以通过解压缩该文件并查看源代码和详细注释来了解其中的实现细节和代码逻辑。这对于学习C语言编程以及了解学生成绩管理系统的设计和实现都是非常有帮助的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 76
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值