【C语言期末实训】学生学籍管理系统
目录: 一,设计要求 ,总体要求: ,具体功能: 二,设计框架 三,程序代码 ,声明函数和头文件 ,声明结构体 ,声明全局变量 ,主体启动函数 ,主菜单函数 ,创建学生档案函数 ,编辑学生档案函数 ,查询学生档案函数 ,输出籍贯与专业函数 ,查询学籍变化函数 ,删除学生信息函数 四,测试代码 ,运行界面 ,创建学生档案 ,修改学生档案信息 ,查询学生档案信息 ,查询学生籍贯和专业信息 ,查询学生学籍变化 ,删除学生信息 五,设计的总结和感想
给读者的话:由于期末作业简单,而且没有要求用到文件的知识,毕竟都还没怎么上过结构体,所以这个系统的代码也略显简单,希望以后回过头来再看这些代码,有更好的见解和领悟。如果你也是为了完成实训或者交作业而看到这篇文章,请不要直接抄袭,注释我写得非常清楚,希望能够真正地帮助到你。
设计要求:
1,总体要求
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
2,具体功能:
1,系统以菜单方式工作。
2,登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;
3,删除已知学号的学生信息;
4,查找已知学号的学生信息;
5,按学号,专业输出学生籍贯表。
6,查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
程序代码:
1, 声明函数和头文件
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define N 100 void menu(); void Student_Create(); void Student_Edit(); void Student_find(); void Student_native(); void Student_changes(); void Student_pop();
2, 声明结构体
struct Studen_book
{
int num;
char name[];
char sex;
int age;
char native[]; //籍贯
char depart[]; //系别
char majoy[]; //专业
char clas[]; //班级
char native_changes[]; //学籍
}stu[N];
3, 声明全局变量
static int i=;
4, 主体启动函数
int main() //启动程序
{
menu();
return ;
}
5, 主菜单函数
void menu() //主菜单
{
char sel='a';
while(sel!='')
{
system("cls");//清屏函数
printf("|-----------------------------------------------|\n");
printf("| 学 生 学 籍 管 理 系 统 主 菜 单 |\n");
printf("|-----------------------------------------------|\n");
printf("| 1------创建学生档案信息 【欢】 |\n");
printf("| 2------修改学生档案信息 【迎】 |\n");
printf("| 3------删除学生档案信息 【使】 |\n");
printf("| 4------查询学生档案信息 【用】 |\n");
printf("| 5------查询学生籍贯信息 【本】 |\n");
printf("| 6------查询学生学籍变化 【程】 |\n");
printf("| 0------退出学籍管理系统 【序】 |\n");
printf("|-----------------------------------------------|\n");
printf("请输入选项编号(0-6):");
sel = getch(); //无需回车
switch(sel)
{
case '':
Student_Create();
break;
case '':
Student_Edit();
break;
case '':
Student_pop();
break;
case '':
Student_find();
break;
case '':
Student_native();
break;
case '':
Student_changes();
break;
case '':
break;
}
if(sel=='')
printf("\n Thanks for your used!");
} }
6, 创建学生档案函数
void Student_Create() //创建学生档案
{
char choose;
Add:
system("cls");
printf("请输入学生学号:\n");
scanf("%d",&stu[i].num);
printf("请输入学生姓名:\n");
scanf("%s",&stu[i].name);
getchar();
printf("请输入学生性别(M或F):\n");
scanf("%c",&stu[i].sex);
printf("请输入学生年龄:\n");
scanf("%d",&stu[i].age);
printf("请输入学生籍贯:\n");
scanf("%s",&stu[i].native);
printf("请输入学生系别:\n");
scanf("%s",&stu[i].depart);
printf("请输入学生专业:\n");
scanf("%s",&stu[i].majoy);
printf("请输入学生班级:\n");
scanf("%s",&stu[i].clas);
printf("请输入学生学籍变化:\n");
scanf("%s",&stu[i].native_changes);
i++; //输完一项++,方便下一项输入 ,同时计输入的学生总数
getchar(); //回车继续
printf("是否继续添加('Y'or'N')?");
choose=getchar();
if(choose=='Y'||choose=='y')
goto Add;
}
7, 编辑学生档案函数
void Student_Edit() //根据学号查找学生信息并编辑
{
int t,number,n;
char x;
printf("\n输入学号:");
scanf("%d",&number);
for(t=;t<i;t++)
{
if(stu[t].num==number)
n=t;
}
printf("\n学生的信息如下:\n");
printf("1—学号:%d\n",stu[n].num);
printf("2—姓名:%s\n",stu[n].name);
printf("3—性别:%c\n",stu[n].sex);
printf("4—年龄:%d\n",stu[n].age);
printf("5—籍贯:%s\n",stu[n].native);
printf("6—系别:%s\n",stu[n].depart);
printf("7—专业:%s\n",stu[n].majoy);
printf("8—班级:%s\n",stu[n].clas);
printf("9—学籍变化:%s\n",stu[n].native_changes);
printf("0—退出编辑\n");
printf("请输入要编辑的选项(0-9):");
x=getch();
switch(x)
{
case '':
scanf("%d",&stu[n].num);
break;
case '':
scanf("%s",&stu[n].name);
break;
case '':
scanf("%c",&stu[n].sex);
break;
case '':
scanf("%d",&stu[n].age);
break;
case '':
scanf("%s",&stu[n].native);
break;
case '':
scanf("%s",&stu[n].depart);
break;
case '':
scanf("%s",&stu[n].majoy);
break;
case '':
scanf("%s",&stu[n].clas);
break;
case '':
scanf("%s",&stu[n].native_changes);
break;
case '':
return; }
}
8, 查询学生档案函数
void Student_find() //根据学号查找学生信息
{
char choose;
int t,n,number;
Find:
int s=;
printf("\n请输入要查询的学号:");
scanf("%d",&number);
for(t=;t<i;t++)
if(stu[t].num==number)
{n=t;
printf("\n【%d号】学生的信息如下:\n",number);
printf("1—学号:%d\n",stu[n].num);
printf("2—姓名:%s\n",stu[n].name);
printf("3—性别:%c\n",stu[n].sex);
printf("4—年龄:%d\n",stu[n].age);
printf("5—籍贯:%s\n",stu[n].native);
printf("6—系别:%s\n",stu[n].depart);
printf("7—专业:%s\n",stu[n].majoy);
printf("8—班级:%s\n",stu[n].clas);
printf("9—学籍变化:%s\n",stu[n].native_changes);
s=;
}
if(s==)
printf("无此学生信息");
getchar();
printf("是否继续(Y/N)?:");
choose=getchar();
getchar();
if(choose=='y'||choose=='Y')
goto Find;
9, 输出籍贯与专业函数
void Student_native() //按学号,专业输出学生籍贯表
{
char choose;
int number=;
int t;
Native:
int s=;
printf("\n输入查询的学号:");
scanf("%d",&number);
for(t=;t<i;t++)
if(stu[t].num==number)
{
printf("【%d号】学生的信息如下:\n",number);
printf("学号:%d\n",stu[t].num);
printf("籍贯:%s\n",stu[t].native);
printf("专业:%s\n",stu[t].majoy);
s=;
}
if(s==)
printf("暂无该学生信息");
getchar();
printf("是否继续(Y/N)?:");
choose=getchar();
getchar();
if(choose=='y'||choose=='Y')
goto Native;
}
10,查询学籍变化函数
void Student_changes() //查询学生的学籍变化
{
int t;
for(t=;t<i;t++)
{
printf("\n%s的学籍情况如下:\n",stu[t].name);
printf("%s",stu[t].native_changes);
}
getchar();
}
11,删除学生信息函数
void Student_pop() //删除学生信息
{
int k=,number,t;
char choose;
Del:
system("cls"); /*清屏*/
printf("\n请输入要删除的学号:");
scanf("%d",&number);
getchar();
for(t=;t<i;t++)
{
if(number==stu[t].num)
{ k=;break;}
}
if(k==)
{
for(k=t;k<i-;k++)
{
stu[k]=stu[k+];
}
i--; //删除一项 总数对应减少
printf("已删除\n\n");
}
else
{
printf("找不到要删除的记录!\n");
printf("按回车键返回:");
getchar();
}
printf("是否继续(Y/N)?:");
choose=getchar(); getchar();
if(choose=='y'||choose=='Y')
goto Del;
}
主菜单界面:
【C语言期末实训】学生学籍管理系统的更多相关文章
- 【C】C语言大作业——学生学籍管理系统
文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...
- [C语言练习]学生学籍管理系统
/** * @copyright 2012 Chunhui Wang * * wangchunhui@wangchunhui.cn * * 学生学籍管理系统(12.06) */ #include &l ...
- springmvc springJDBC 简单实训银行账户管理系统
springmvc springJDBC 简单实训银行账户管理系统 1.简单介绍一下,在校时每周结束都会有一次学习总结,简称“实训”,这次实训内容是spring,因为是最近热门框架,我就先从基础方面开 ...
- “石家庄铁道大学软件工程系学生学籍管理系统2019版”java小程序制作分享
首先附上完整代码: import java.util.Scanner; public class SocreInformation { public SocreInformation(){}; pub ...
- Java 石家庄铁道大学软件工程系 学生学籍管理系统 2019 版
本系统的作用是简单实现一些学生成绩管理操作:录入,修改,绩点计算,以及系统退出等. 首先建一个主函数实现界面的实现,然后建一个数据类用来定义存放数据.之后建立一个工具类,用来实现所有要进行的操作.首先 ...
- Qt实现学生学籍管理系统(文件存储)
记录 19:53 2019-07-30 在小学期学c++做完课设后萌生了把写完的课设放在博客上的想法,于是,我第一篇博客诞生了. 22:32:19 2019-07-30 下棋 16:04:56 201 ...
- C语言小练习之学生信息管理系统
C语言小练习之学生信息管理系统 main.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- C++实现控制台学生学籍管理系统
操作流程 创建文件 创建管理类 管理类负责的内容如下: 提供与用户的沟通菜单界面 实现对职工增删改查的操作 数组数据与文件的读写交互 菜单功能实现 在StudentManager.h中定义Show ...
- 基于数组或链表的学生信息管理系统(小学期C语言程序实训)
1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...
随机推荐
- http-反向代理学习
主要是学习了反向代理. 结合公司的方向代理使用,然后与同事进行交流,知识还是需要通过交流才能印象深刻,以后多多交流.
- Linux系统基本网络配置之ifconfig命令
Linux系统基本网络配置之ifconfig命令 一.Linux系统的网络配置基本包括:网络IP的配置.网关路由的配置.主机DNS的配置.主机名的配置等,本篇注重介绍网络IP的配置. 二.Linux系 ...
- 图书馆排序(Library Sort)
思路简介,大概意思是说,排列图书时,如果在每本书之间留一定的空隙,那么在进行插入时就有可能会少移动一些书,说白了就是在插入排序的基础上,给书与书之间留一定的空隙,这个空隙越大,需要移动的书就越少,这是 ...
- Asp.net Web Api 2 FORM Authentication Demo
最近看了一点 web api 2方面的书,对认证都是简单介绍了下,所以我在这里做个简单Demo,本文主要是FORM Authentication,顺带把基本认证也讲了. Demo 一.FORM Aut ...
- 【BZOJ1879】【SDOI2009】Bill的挑战 [状压DP]
Bill的挑战 Time Limit: 4 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description Input 第一行:一个整数T, ...
- 【POJ】1830 开关问题(高斯消元)
http://poj.org/problem?id=1830 高斯消元无解的条件:当存在非法的左式=0而右式不等于0的情况,即为非法.这个可以在消元后,对没有使用过的方程验证是否右式不等于0(此时因为 ...
- 如何设计一个优雅健壮的Android WebView?(下)
转:如何设计一个优雅健壮的Android WebView?(下) 前言 在上文<如何设计一个优雅健壮的Android WebView?(上)>中,笔者分析了国内WebView的现状,以及在 ...
- bzoj 2733 平衡树启发式合并
首先对于一个连通块中,询问我们可以直接用平衡树来求出排名,那么我们可以用并查集来维护各个块中的连通情况,对于合并两个平衡树,我们可以暴力的将size小的平衡树中的所有节点删掉,然后加入大的平衡树中,因 ...
- [bzoj1070] 修车
这周学习了费用流,就写了几题.其中有一题就是bzoj上的修车,看起来很丧,交了6次都是除了样例全wa(事实证明样例说明不了什么,还会误导你……). 题目大意:有m个技术人员n辆车,一个技术人员只能同时 ...
- 第三周main参数传递-1 课堂测试
课堂测试 main参数传递-1 测试 参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成"求命令行传入整数参数的 ...