本文主要介绍了C语言实现的学生管理系统,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能给你带来帮助。br。
目录
infor.htest.cinfor.c摘要
学生管理系统的实现是以文件的形式写的。H.
是头文件,源文件infor.c实现了源文件test.c中的封装功能建议
读者通过文件在更大的系统上工作,可以提高代码的运行效率。
(学生管理系统改进自哔哩哔哩彭舸C语言通讯录视频)
infor.h
//头文件实现引用函数头文件,定义常量,在源文件中声明封装的函数。
# define _ CRT _ SECURE _ NO _ WARNINGS 1
# includestdio.h
#includestring.h
#includestdlib.h
#包含windows.h
#define MAX_NAME 20 //都是用define定义的,以便以后修改。
#定义MAX_SEX 10
#定义MAX_TELE 15
#定义MAX_ADDR 30
#定义begin 3//动态内存容量的初始开发
#定义每次灌装后添加2//容量增加量
//#定义最大1000
typef struct student//定义学生信息结构变量。
{
char NAME[MAX _ NAME];
char SEX[MAX _ SEX];
int age
char TELE[MAX _ TELE];
char addr[MAX _ ADDR];
}学生;
//typedef结构学生//结构套筒结构
//{
//学生数据[MAX];//存储添加的个人信息
//int SZ;//记录当前系统中有效信息的数量
//}学生;
TypeStruct学生//结构嵌套结构
{
学生*数据;//指向动态应用空间,用于存储个人信息
int sz//记录当前系统中有效信息的数量
int容量;//记录当前通讯录的最大容量
}学生;
void Initstudent(学生* PC);//初始化结构
void ADDstudent(学生* PC);//添加学生信息
void PRINTstudent(学生* PC);//浏览学生信息
void SEARCHstudent(学生* PC);//查找学生信息
void MODIFYstudent(学生* PC);//修改学生信息
void DELETEstudent(学生* PC);//删除学生信息
void DESETORYstudent(学生* PC);//销毁学生信息
test.c
//测试主文件。这个文件是学生管理系统的核心。
# define _ CRT _ SECURE _ NO _ WARNINGS 1
#include'infor.h' //注意,在编写子文件时,需要在源文件中引用头文件。
无效菜单()
{
系统('颜色fc ');
printf(' \ n ');
printf(' \ n ');
printf(' \ n ');
Printf ('* * * * * * * * *郑州轻工业学院学生信息管理系统* * * * * * * * * * \ n ');
Printf ('* -
Printf ('* -
Printf ('* -
printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ');
printf(' \ n ');
printf(' \ n ');
printf(' \ n ');
}
枚举选项
{//通过枚举常量,主函数中的switch语句可以更清晰地实现不同的功能。
退出,
添加,
打印,
搜索,
修改,
删除
};
int main()
{
int input=0;
学生stu
init student(stu);//结构数组的初始化
做
{
menu();
Printf('请选择:\ n ');
scanf('%d ',输入);
Switch(input)//封装多个函数实现多个功能
{//函数的声明在头文件中,实现在infor.c中实现
案例出口:
DESETORYstudent(stu);
Printf('退出系统\ n ');
打破;
案例添加:
ADDstudent(stu);
打破;
案例打印:
PRINTstudent(斯图);
打破;
案例搜索:
SEARCHstudent(斯图);
打破;
案例修改:
修改学生(stu);
打破;
案例删除:
删除学生(stu);
打破;
默认值:
Printf('选择错误,重新选择\ n ');
打破;
}
} while(输入);
返回0;
}
infor.c
//这个文件是test.c中封装函数的实现
# define _ CRT _ SECURE _ NO _ WARNINGS 1
#包含“信息”
//静态
//void Initstudent(student* pc)
//{
//PC-SZ=0;
//memset(pc-data,0,sizeof(PC-data));//memset()内存设置初始化整个结构数组。
//}
//动态
void Initstudent(student* pc)
{
//指针数据维护calloc初始化打开的动态内存空间打开空间
pc-data=(学生*)calloc(begin,sizeof(学生));
PC-SZ=0;//sz为有效信息个数
个人电脑-容量=begin//定义目前容量为初始容量
}
void ADDstudent(student* pc)
{
if (pc-sz==pc-capacity) //容量满了完成增容
{
Student * ptr=(Student *)realloc(PC-data,(PC-capacity add)* sizeof(Student));
如果(ptr!=空)
{
PC-data=ptr;
PC-capacity=add;
printf('~~~增容成功~ ~ ~ \ n ');
}
其他
{
perror(' ADDstudent ');//失败报错
printf('增加联系人失败\ n’);
返回;
}
}
//增加一个人的信息
printf('请输入姓名:\ n’);
scanf('%s ',pc-data[pc-sz].姓名);
printf('请输入性别:\ n’);
scanf('%s ',pc-data[pc-sz].性);
printf('请输入年龄:\ n’);
scanf('%d ',(pc-data[pc-sz]).年龄));
printf('请输入电话:\ n’);
scanf('%s ',pc-data[pc-sz].tele);
printf('请输入地址:\ n’);
scanf('%s ',pc-data[pc-sz].addr);
PC-SZ;
printf('增加成功\ n’);
}
无效DESETORYstudent(学生* pc) //销毁个人信息
{
免费(PC-data);//释放内存
PC-data=NULL;//回归为0
个人电脑-容量=0;
PC-SZ=0;
}
//void ADDstudent(student* pc)
//{
//if (pc-sz==MAX)
//{
//printf('通讯录已满,无法添加\ n’);
//返回;
//}
////增加一个人的信息
//printf('请输入姓名:\ n’);
//scanf('%s ',pc-data[pc-sz].姓名);
//printf('请输入性别:\ n’);
//scanf('%s ',pc-data[pc-sz].性);
//printf('请输入年龄:\ n’);
//scanf('%d ',(pc-data[pc-sz]).年龄));
//printf('请输入电话:\ n’);
//scanf('%s ',pc-data[pc-sz].tele);
//printf('请输入地址:\ n’);
//scanf('%s ',pc-data[pc-sz].addr);
//PC-SZ;
//printf('增加成功\ n’);
//}
作废PRINTstudent(学生*电脑)
{
int I=0;
printf(' %-10s %-10s %-10s %-15s %-30s \ n ','姓名', '性别', '年龄', '电话', '地址');
for(I=0;我PC-SZ;我)
{
printf(%-10s %-10s %-10d %-15s %-30s \ n),
pc-data[i].姓名,
pc-data[i].性,
pc-data[i].年龄,
pc-data[i].电话,
pc-data[i].地址
);
}
}
static int Findbyname(student* pc,char name[])//通过名字来查找学生体育场静态局部变量该函数只在本文件中应用保护该函数
{
int I=0;
for(I=0;我PC-SZ;我)
{
if (strcmp(pc-data[i].name,name)==0) //利用strcmp函数的返回值判断是否找到了该人
{
返回我;//找到了就返回学生信息的角标
}
}
return-1;//没找到
}
无效搜索学生(学生*电脑)
{
char NAME[MAX _ NAME]={ 0 };
printf('请输入要查找学生姓名:\ n’);
scanf('%s ',名称);
int end=Findbyname(pc,name);
if (end==-1)
{
printf('你所要查找的人不存在');
}
其他
{
printf(' %-10s %-10s %-10s %-15s %-30s \ n ','姓名', '性别', '年龄', '电话', '地址');
printf(' %-10s %-10s %-10d %-15s %-30s \ n ',//Findbuname函数如果找到对应学生,返回对应下标,输出对应下标学生信息
pc-data[end].姓名,
pc-data[end].性,
pc-data[end].年龄,
pc-data[end].电话,
pc-data[end].地址
);
}
}
无效修改学生(学生*电脑)
{
char NAME[MAX _ NAME]={ 0 };
printf('请输入要修改学生信息的学生姓名:\ n’);
scanf('%s ',名称);
int end=Findbyname(pc,name);
if (end==-1)
{
printf('你所要修改学生信息的人不存在');
}
其他
{
printf('请输入性别:\ n’);
scanf('%s ',pc-data[end].性);
printf('请输入年龄:\ n’);
scanf('%d ',(pc-data[end]).年龄));
printf('请输入电话:\ n’);
scanf('%s ',pc-data[end].tele);
printf('请输入地址:\ n’);
scanf('%s ',pc-data[end].addr);
printf('修改成功\ n’);
}
}
void删除学生(学生*个人电脑)
{
char NAME[MAX _ NAME]={ 0 };
printf('请输入要删除学生信息的学生姓名:\ n’);
scanf('%s ',名称);
int end=Findbyname(pc,name);
if (end==-1)
{
printf('你所要删除学生信息的人不存在');
}
int I=0;
for(I=end;I PC-SZ-1;我)
{
PC-data[I]=PC-data[I 1];
}
PC-SZ-;
printf('删除成功');
}
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。