1、课程设计目的

C语言程序设计课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C语言程序设计这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。

2、课程设计任务与要求:

本次课程设计利用《C语言程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。

要求:

1、对系统进行功能需求分析

2、设计合理的数据结构和系统框架

3、编程简练,程序功能齐全,能正确运行

4、说明书、流程图要清楚

5、课题完成后必须按要求提交课程设计报告

任务:

班级档案管理系统:对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。

实现功能:

(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。

(2)本系统显示这样的菜单:

请选择系统功能项:

  1. 学生基本信息录入

  1. 学生基本信息显示

  1. 学生基本信息保存

  1. 学生基本信息删除

  1. 学生基本信息修改(要求先输入密码)

  1. 学生基本信息查询:a)按学号查询;b)按姓名查询;c)按性别查询;d)按年龄查询

  1. 退出系统

(3)执行一个具体的功能之后,程序将重新显示菜单。

(4)将学生基本信息保存到文件中。

(5)进入系统之前要先输入密码。

系统分析

需求分析

对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作管理。

本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。

班级档案管理系统有8个功能,把这8个功能做成8个子函数,最后在main函数里进行对这8个子函数实现,来实现整个系统的操作。

设计思路

结构体数组:

struct student /*定义结构体数组*/

{

char name [10];

int num[10];

char sex;

int age;

char note[100]; /*备注*/

};

8个子函数和各函数的主要功能

主菜单显示函数:显示主菜单

密码验证函数:进入系统需要验证的密码,修改学生信息时也需要验证密码

录入函数:随时输入学生信息

显示函数:显示所有学生信息

删除函数:删除某学生的信息

修改函数:修改学生基本信息

查找函数:方便查找某个学生的信息

保存函数:保存好学生信息,以免丢失

详细设计

程序的模块组成:

bool Check(char code[10])//密码验证,读取d:\\1.txt

void Get(struct student *arr , int n)//学生基本信息录入

void Display(struct student *arr , int n)//学生基本信息显示

void Save(struct student *arr,int n)//学生基本信息保存,保存在c:\\student.txt

void Modify(struct student *arr , int n)//学生基本信息修改

{

修改学号

修改姓名

修改性别

修改年龄

}

void Delete(struct student *arr , int n)//学生基本信息删除

void Search(struct student *arr , int n)//学生基本信息查询

{

学号查询

姓名查询

性别查询

年龄查询

}

问题1:输入密码验证

起初构想的时候打算用if函数的,事先用数组存好密码,用if函数来匹配,如果匹配则进入系统,不然进不去提示密码错误,但是那个方法貌似效率不高。

解决办法:于是通过资料搜索采用bool Check(char code[10])函数,此函数通过fopen读取事先存储在d盘里的1.text文本,再加上strcmp字符串比较函数和键盘输入的密码匹配,如果匹配则进入系统,不然则显示密码错误。

问题2:删除模块

用void Delet(struct student *arr , int n)函数实现,如何使已经录入的学生数据删除。

解决办法:通过查阅书籍用到了strcmp字符串比较函数,如果两个学号匹配,则用strcpy字符串复制函数,用空字符串复制到原有信息,删除功能就实现了。

4.课程设计成果

程序源代码

//头文件

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

//全局声明

#define N 3

int i;

struct student

{

char name[10];

int num;

char sex;

int age;

char note[100];//备注

};

//子函数

void print()//打印主菜单界面

{

printf("_________________________________________________________________________\n");

printf("| 欢迎进入学生档案管理系统 |\n");

printf("| 主菜单 |\n");

printf("|_______________________________________________________________________|\n");

printf("|______________1:学生基本信息录入 | 2:学生基本信息显示__________________|\n");

printf("|______________3:学生基本信息保存 | 4:学生基本信息删除__________________|\n");

printf("|______________5:学生基本信息修改 | 6:学生基本信息查询__________________|\n");

printf("|______________7:退出学生信息系统 | ____________________________________|\n");

printf("|_________________________________|_____________________________________|\n");

printf("\n");

}

bool Check(char code[10]) //密码验证

{

FILE *fp;

char ch;

char a[11]=" ";

if((fp=fopen("d:\\1.txt","r"))==NULL)//读取密码

{

printf("打开文件失败!\n");

exit(0);

}

ch=fgetc(fp);

i=0;

while(ch!=EOF&&i<10)

{

a[i]=ch;

ch=fgetc(fp);

i++;

}

a[11]='\0';

if(!strcmp(code,a))

{

return true;

}

else

{

printf("密码错误\n");

return false;

}

fclose(fp);

}

void Get(struct student *arr,int n)//学生基本信息录入

{

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

{

printf("输入学生的基本信息:姓名 学号 性别(m/w) 年龄 备注\n");

scanf("%s %d %c %d %s",arr[i].name,&arr[i].num,&arr[i].sex,&arr[i].age,arr[i].note);

}

}

void Display(struct student *arr,int n)//学生基本信息显示

{

printf(" 学生的基本信息:姓名 学号 性别(m/w) 年龄 备注\n");

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

{

printf("%22s%15d%15c%15d%15s\n", arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note);

}

}

void Save(struct student *arr,int n)//学生信息保存

{

FILE *fp;

fp=fopen("D:\\Cprogram\\student.txt","w+");

if(fp==NULL)

{

printf("文件不存在!\n");

exit(0);

}

fwrite(arr,sizeof(struct student),n,fp);

fclose(fp);

printf("保存成功!\n");

}

void Delete(struct student *arr,int n)//学生基本信息删除

{

int number;

bool flag=false;

printf("请输入要删除学生的学号:\n");

scanf("%d",&number);

char a[10]="";

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

{

if(number==arr[i].num)

{

strcpy(arr[i].name,"");

arr[i].num=0;

strcpy(arr[i].note,"");

arr[i].sex=' ';

arr[i].age=0;

Save(arr,n);

printf("信息删除成功!\n");

flag=true;

}

}

if(!flag)

{

printf("该学生不存在!:\n");

}

}

void Modify(struct student *arr,int n)//学生基本信息修改

{

bool flag=false;

int number;

int id;

char temp[10];

char code[10];

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

scanf("%s",code);

if(Check(code))

{

printf("密码正确!\n");

printf("请输入学号:");

scanf("%d",&id);

printf(" _______________________ \n");

printf("|_______1:修改姓名______|\n");

printf("|_______2:修改学号______|\n");

printf("|_______3:修改性别______|\n");

printf("|_______4:修改年龄______|\n");

printf("|_______5:修改备注______|\n");

printf("|_______6:退出 ______|\n");

printf("|_______________________|\n");

printf("请输入你要修改信息的对应序号:");

scanf("%d",&number);

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

{

if(id==arr[i].num)

{

printf("基本信息\n");

printf(" 姓名 学号 性别 年龄 备注\n");

printf("%10s%10d%10c%10d%10s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note);

switch(number)

{

case 1:

{

printf("请输入新名字:");

scanf("%s",arr[i].name);

} break;

case 2:

{

printf("请输入新学号:");

scanf("%d",&arr[i].num);

} break;

case 3:

{

printf("请输入新性别:");

scanf("%c",&arr[i].sex);

} break;

case 4:

{

printf("请输入新年龄:");

scanf("%d",&arr[i].age);

} break;

case 5:

{

printf("请输入新备注:");

scanf("%s",arr[i].note);

}

case 6: print(); break;

default: break;

}

Save(arr,n);

flag=true;

}

}

if(!flag)

printf("该学生不存在!\n");

}

}

void Search(struct student *arr,int n)//学生基本信息查询

{

int temp,i;

bool flag=false;

printf(" _________________________\n");

printf("|_______1:按学号查询______|\n");

printf("|_______2:按姓名查询______|\n");

printf("|_______3:按性别查询______|\n");

printf("|_______4:按年龄查询______|\n");

printf("|_______5:退出 ________|\n");

printf("|_________________________|\n");

scanf("%d",&temp);

switch(temp)

{

case 1:

{

int number;

printf("请输入学号:\n");

scanf("%d",&number);

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

{

if(number==arr[i].num)

{

printf("基本信息\n");

printf("姓名 学号 性别 年龄 备注\n");

printf("%s%15d%10c%10d%17s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note);

flag=true;

}

}

if(!flag)

{

printf("该学生不存在!\n");

}

} break;

case 2:

{

char nam[10];

printf("请输入名字:\n");

scanf("%s",nam);

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

{

if(!strcmp(nam,arr[i].name))

{

printf("基本信息\n");

printf("姓名 学号 性别 年龄 备注\n");

printf("%10s%10d%10c%10d%10s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note);

flag=true;

}

}

if(!flag)

{

printf("该学生不存在!\n");

}

} break;

case 3:

{

char ch;

printf("请输入性别:\n");

ch=getch();

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

{

if(ch==arr[i].sex)

{

printf("基本信息\n");

printf("姓名 学号 性别 年龄 备注\n");

printf("%10s%10d%10c%10d%10s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note);

flag=true;

}

}

if(!flag)

{

printf("该学生不存在。\n");

}

} break;

case 4:

{

char ag;

printf("请输入年龄:\n");

scanf("%d",&ag);

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

{

if(ag==arr[i].age)

{

printf("基本信息\n");

printf("姓名 学号 性别 年龄 备注\n");

printf("%10s%10d%10c%10d%10s\n",arr[i].name,arr[i].num,arr[i].sex,arr[i].age,arr[i].note);

flag=true;

}

}

if(!flag)

{

printf("该学生不存在。\n");

}

} break;

case 5: print(); break;

default: break;

}

}

int main()

{

struct student arr[N];

char code[10];

bool flag=false;

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

scanf("%s",code);

flag=Check(code);

if(flag)

{

int select;

print();

printf("请输入1:");

scanf("%d",&select);

while(0<select&&select<7)

{

switch(select)

{

case 1:

Get(arr,N);

print();

break;

case 2:

Display(arr,N);

print();

break;

case 3:

Save(arr,N);

print();

break;

case 4:

Delete(arr,N);

print();

break;

case 5:

Modify(arr,N);

print();

break;

case 6:

Search(arr,N);

print();

break;

case 7:return 0;

default:

break;

}

printf("请选择序号:");

scanf("%d",&select);

}

}

}

5.课程设计心得

这是我打过的最长,发费时间最长的一段代码,刚开始看见这个时,感觉无从下手,觉得十分难,但是又要在10来天的时间完成,于是我和同学寻找了很多资源,看了一些程序,慢慢的做了起来,看着网上那巨多的代码,仔细分析下,发现自己都能看懂,完成了这个程序报告后,我明白了:很多复杂的程序可以由一个个小小的子函数拼凑起来。将很大很复杂的程序一步步细分,困难的问题也变得简单了。只要肯坚持,愿意去做,就能成功。

虽然这次很大程度上依靠了模板,但是我相信下次自己也能打出这么长的代码。

班级档案管理系统_学生信息管理3相关推荐

  1. 班级档案管理系统_学生信息管理

    源代码传送门: (1条消息) 课程设计,班级档案管理系统-学生信息管理,源代码-C++文档类资源-CSDN文库 课程设计报告 1.课程设计目的 C语言课程设计是计算机科学与技术专业重要的实践性教学环节 ...

  2. jsp mysql电子档案管理系统_学生档案管理系统的设计与实现(JSP,MySQL)(含录像)

    学生档案管理系统的设计与实现(,MySQL)(含录像)(开题报告,毕业论文12100字,程序代码,MySQL数据库,答辩PPT) 本文主要工作内容是梳理学生档案管理系统工作的流程,吸收.借鉴先进的指导 ...

  3. 《数据结构课程实践》_01_学生成绩档案管理系统_实现

    01_学生成绩档案管理系统_实现 一.实验题目 二.编程语言以及开发环境 三.源代码 1.学生类 2.自定义数据库类 3.数据操作类 4.总服务类 5. main类 四.运行结果 五.实验小结 一.实 ...

  4. 《数据结构课程实践》_01_学生成绩档案管理系统_准备工作

    01_学生成绩档案管理系统_准备工作 一.实验题目与要求 二.编程语言以及开发环境 三.实验思路 1. 思考初始化数据处理 2. 学生对象处理 3. 操作处理 4. 方法描述 四.预习小结 一.实验题 ...

  5. c语言程序设计 学生档案管理系统,C语言程序设计--班级档案管理系统.doc

    PAGE PAGE 2 C语言程序设计 课程名称 : C语言课程设计 设计题目: 班级档案管理系统 学生姓名: 学 号: 专业班级: 指导老师: 数学与信息技术学院 2011 年 11 月1日 说 明 ...

  6. c语言程序设计班档案管理系统报告,C语言程序设计班级档案管理系统报告文档.doc...

    C语言程序设计班级档案管理系统报告文档 课 程 设 计 报 告 课程名称 <C语言程序设计> 课题名称 班级档案管理系统 专 业 计算机科学与技术专业 班 级 计算机1103班 学 号 姓 ...

  7. c语言程序设计班档案管理系统报告,C语言班级档案管理系统

    <C语言班级档案管理系统>由会员分享,可在线阅读,更多相关<C语言班级档案管理系统(28页珍藏版)>请在人人文库网上搜索. 1.c语言程序设计"课程设计报告班级档案管 ...

  8. c语言课程班级档案管理系统,C语言班级档案管理系统

    <C语言班级档案管理系统>由会员分享,可在线阅读,更多相关<C语言班级档案管理系统(23页珍藏版)>请在人人文库网上搜索. 1.精品文档课程设计任务书课程名称 C语言课程设计 ...

  9. 班级档案管理系统c课程设计语言,课程设计班级档案管理系统方案.doc

    . . . <高级语言程序设计> 课 程 设 计 报 告 书 题 目: 班级档案管理系统 专 业: 计算机科学与技术 学 号: 学生姓名: 指导教师: 完成日期: 目录 TOC \o &q ...

最新文章

  1. 【Qt】通过QtCreator源码学习Qt(七):插件管理类简介
  2. Map与List数据操作
  3. 伪官宣:Envoy 中文指南新鲜出炉
  4. DLPack构建跨框架深度学习编译器-实现张量之间的相互转换【pytorch】
  5. 成功解决Future Warning: The sklearn.neighbors.dist_metrics module is deprecated in version 0.22 and wil
  6. eclipse的jsp第一行代码报错_机器学习之AdaBoost算法及纯python代码手工实现
  7. 具有jOOQ和Java 8的CompletableFuture的异步SQL执行
  8. ppt格式刷快捷键_为什么别人PPT做的比你快?因为你没掌握这些!
  9. android 漩涡动画,使用P5.js构造漩涡动画特效
  10. h264解码延迟优化_JEET Air Plus:延迟优化技术,让你游戏不掉线
  11. 阿里云何云飞:如何利用云原生技术在AIoT领域成功落地 | 云栖大会
  12. 汇编中的inc和dec
  13. 运动控制系统常用传感器介绍
  14. 三维电子沙盘数字沙盘无人机倾斜摄影三维建模教程第45课
  15. codevs 切糕 网络流
  16. 静脉炎的症状是什么?
  17. SpringMVC 学谈 (第五章)
  18. [codeforces 1312A] Two Regular Polygons 整除
  19. 杨超越杯编程大赛上热搜:不懂技术真不敢追星
  20. 迅锐CMS模板常用调用总结

热门文章

  1. “我在星巴克坐了3个月”:那些假装上班的被裁中年人驻
  2. 服务器后台运行jupyter相关指令
  3. 转WinForm-SuspendLayout、ResumeLayout、PerformLayou
  4. 大数据时代需要有“神器”
  5. DatabaseMetaData类
  6. 净空法师:年轻时候好,是你前生所修的
  7. 递归算法实例:十进制转换N进制(vb.net代码)
  8. 【人工智能简史】第一章 引言 —— 人工智能的概念与定义、发展背景及相关领域、意义与价值
  9. Go语言创建文件夹,并设置权限0777
  10. 网吧服务器安装php吗,网吧无盘服务器安装备忘录-2017