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

C语言课程设计大作业——学生管理系统(详细含报告和源码)写在前面 欢迎来到 发奋的小张 的博客 我是小张 一名普通的在校大学生 在学习之余 用博客来记录我学习过程中的点点滴滴 也希望我的博客能够更给同样热爱学习热爱技术的你们带来收获 希望大家多多关照 我们一起成长一起进步 也希望大家多多支持我鸭 喜欢我就给我一个关注吧 题目 学生管理系统设计功能 学生管理系统设计 每个学生信息作为一条记录 包括姓名 学号 性别 出生年月 专业 班级 家庭地址 宿舍号码等 系统要求实现以下功能 1 输入功能 录入学生信息 包括学生学号 姓名 性别 出生年月 专业等

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

题目:学生管理系统设计
功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。
系统要求实现以下功能:
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()流程图
在这里插入图片描述

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

四、总结

五,源代码

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

代码:

/* ? C语言课程设计任务书及指导书5 题目:学生管理系统设计 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。 系统要求实现以下功能: 1、输入功能:录入学生信息(包括学生学号、姓名、性别、出生年月、专业等); 2、显示功能:完成学生记录的显示。 3、查找功能:完成按学号或姓名查找学生的相关记录,并显示。 分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。2、完成信息的录入和显示(即通过编程创建文件,输入学生信息并可将文件内容显示出来)3、完成修改功能,即输入学号,可修改该学生的信息4、进一步要求,在使用修改功能时要求输入密码,密码正确才能修改信息否则不行。 要求:1、用C语言实现程序设计; 2、利用结构体数组、链表等实现学生信息表达、查询等,充分体现数据结构的知识; 3、系统的各个功能模块要求用函数的形式实现; 4、界面友好(良好的人机交互),程序要有注释。 5、程序中所用到的排序查找方法需采用数据结构中所学方法实现,要求方法实用效率高。 ? 课程设计实验报告要求: 1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分 。 2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、 小结等。 */ #include 
     #include 
     #include 
     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月==》):\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"); } 
博主后记:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205891.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午4:56
下一篇 2026年3月19日 下午4:57


相关推荐

  • php 中json_encode,json_decode问题总结

    php 中json_encode,json_decode问题总结php 中json_encode,json_decode问题总结

    2022年4月24日
    51
  • 研究学习之java使用selenium教程[通俗易懂]

    研究学习之java使用selenium教程[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

    2022年6月28日
    40
  • BeanUtils.copyProperties 详解

    BeanUtils.copyProperties 详解简介BeanUtils提供对Java反射和自省API的包装,其主要目的是利用反射机制对JavaBean的属性进行处理我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度用法BeanUtils是这个包里比较常用的一个工具类,这里只介绍它的copyProperties()方法,该方法定义如下:publicstaticvoidcopyProperties(Object

    2022年10月4日
    5
  • CA机构是如何保护自己私钥的?

    CA机构是如何保护自己私钥的?作者 Gh0u1L5 链接 https www zhihu com question answer 来源 知乎著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 科普 CA 是什么 私钥又是什么 在这里先给不了解公钥加密体系的读者做一个简短的科普吧 所谓的 CA 通俗来说就是担保人 互联网上所有身份的担保人 比如说 Google 需要向用

    2026年3月18日
    2
  • 微信浏览器到底是什么内核?

    微信浏览器到底是什么内核?

    2021年10月23日
    595
  • linux 7z压缩、解压命令「建议收藏」

    linux 7z压缩、解压命令「建议收藏」原文地址:https://blog.csdn.net/jk110333/article/details/7829879支持7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB压缩文件格式安装:sudoapt-getinstall p7zip-full# 7zayajiu.7zyajiu.jpgyajiu.png…

    2022年5月13日
    234

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号