/*对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
功能要求:
(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。
(2)本系统显示这样的菜单:
请选择系统功能项:
a 学生基本信息录入
b 学生基本信息显示
c 学生基本信息保存
d 学生基本信息删除
e 学生基本信息修改(要求先输入密码)
f 学生基本信息查询
(1)按学号查询
(2)按姓名查询
(3)按性别查询
(4)按年龄查询
g. 退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生基本信息保存到文件中。
(5)进入系统之前要先输入密码。*/
#include<stdio.h>
#include<windows.h>
#define N 100
#define MiMa 123456
int nub = 0;//人数
int flag = 0;//密码免登录 ——//第一次输入进入这个模块就要输入密码,再次进入就不需要了;
void Luru();
void XianShi();
void BaoCun();
void ShanChu();
void XiuGai();
void ChaXun();
struct student {
long long BianHao; //long long 是长整型 用来装学号202100406161的 否则不够长 对应%lld;
char name[10];
char sex[5];
int age;
char other[20];
}stu[N];
void Luru()
{
system("cls");
int n, i, t;
int flag = 0,temp_nub=nub;
long long temp;
printf("*** 请输入要添加的学生人数: ***\n");
scanf("%d", &n);
for (i = 0;i < n;i++) {
printf("*** 请输入要添加学生的学号: ***\n");
scanf("%lld", &temp);
for (t = 0;t < nub;t++) {
if (temp == stu[t].BianHao) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("*** 错误!已存在该同学的信息,请重试! ***\n");
flag=0;
continue;
}
else
{
stu[temp_nub+i].BianHao=temp;
printf("请输入学生姓名:\n");
scanf("%s", stu[temp_nub+i].name);
printf("请输入学生性别:\n");
scanf("%s", stu[temp_nub+i].sex);
printf("请输入学生年龄:\n");
scanf("%d", &stu[temp_nub+i].age);
printf("请输入学生备注内容:\n");
scanf("%s", stu[temp_nub+i].other);
printf("*** 成功录入该同学的信息! ***\n");
nub++;
Sleep(2000);
system("cls");
}
}
}
void XianShi()
{
system("cls");
int i;
int a;
for (i = 0;i < nub;i++) {
printf("**#%d\n**姓名:%s\n 性别:%s\n 年龄:%d\n 学号:%09lld\n 备注:%s\n\n",i+1, stu[i].name, stu[i].sex, stu[i].age, stu[i].BianHao, stu[i].other);
}
system("pause");
system("cls");
}
void BaoCun()
{
system("cls");
FILE* fp;
int i;
if ((fp = fopen("studen.txt", "w+b")) == NULL)
{
printf("打开文件失败!\n");
exit(0);
}
for (i = 0; i < nub; i++)
{
if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
printf("保存失败!\n");
}
printf("保存成功!\n");
fclose(fp);
system("pause");
}
void ShanChu()
{
system("cls");
int i, t,n;
int a, flag = 0;
long long temp;
printf("请输入要删除信息同学的学号:\n");
scanf("%lld", &temp);
for (i = 0;i < nub;i++) {
if (temp == stu[i].BianHao) {
flag = 1;
printf("确认是否要删除该消息?\n(1.确定 2.取消并返回)\n");
scanf("%d", &a);
if (a == 1) {
for (t = i;t < nub;t++) {
stu[t] = stu[t + 1];
}
nub--;
printf("已完成删除!是否继续删除?\n(1.确定 2.返回)\n");
scanf("%d",&a);
if (a == 1) {
printf("正在跳转......\n");
Sleep(2000);
system("cls");
void ShanChu();
break;
}
else if (a == 2) {
printf("正在跳转......\n");
Sleep(2000);
system("cls");
return;
}
}
else if (a == 2) {
return;
}
}
}
if (flag == 0) {
printf("未查找到该同学的信息!请确认后重试!\n");
printf("是否继续?\n1.是 2.否\n");
scanf("%d",&n);
if(n==1){
Sleep(2000);
system("cls");
ShanChu();
return;
}else{
Sleep(2000);
system("cls");
return;
}
}
}
void XiuGai()
{
system("cls");
int i, t;
int n;
long long temp;
char names[10], other_1[10];
int age_1;
if(flag == 0){
printf("检测到位权限操作,请输入密码:\n");
scanf("%d", &n);
}
if (n == MiMa || flag != 0) { //flag!=0 就是不需要密码正确就可以进入的意思;
flag = 1;
printf("您好!尊敬的√管理。\n");
printf("请输入要操作的学生编号:\n");
scanf("%lld", &temp);
for (i = 0;i < nub;i++) {
if (temp == stu[i].BianHao) {
printf("已查询到结果!\n");
printf("**姓名:%s\n 性别:%s\n 年龄:%d\n 学号:%09lld\n 备注:%s\n", stu[i].name, stu[i].sex, stu[i].age, stu[i].BianHao, stu[i].other);
printf("请输入要修改的部分:\n");
printf("1.姓名\n2.年龄\n3.备注\n");
scanf("%d", &n);
switch (n) {
case 1: {
printf("请输入要修改的名字!\n");
scanf("%s", names);
strcpy(stu[i].name, names);
printf("已完成!是否继续?(1.继续 2.返回)\n");
scanf("%d", &n);
if (n == 1) {
printf("正在跳转页面......\n");
Sleep(2000);
system("cls");
XiuGai();
return;
}
else {
system("cls");
flag = 0;
return;
}
break;
}
case 2: {
printf("请输入要修改的年龄!\n");
scanf("%d", &age_1);
stu[i].age = age_1;
printf("已完成!是否继续?\n(1.继续 2.返回)\n");
scanf("%d", &n);
if (n == 1) {
printf("正在跳转页面......\n");
Sleep(2000);
system("cls");
XiuGai();
return;
}
else {
flag = 0;
system("cls");
return;
}
break;
}
case 3: {
printf("请输入要修改的备注!\n");
scanf("%s", other_1);
strcpy(stu[i].other, other_1);
printf("已完成!是否继续?\n(1.继续 2.返回)\n");
scanf("%d", &n);
if (n == 1) {
printf("正在跳转页面......\n");
Sleep(2000);
system("cls");
XiuGai();
return;
}
else {
printf("正在跳转页面......\n");
Sleep(2000);
system("cls");
flag = 0;
return;
}
break;
}
}
}
}
}
else {
printf("密码错误!请重试!\n");
XiuGai();
return;
}
}
void ChaXun()
{
system("cls");
int i, age, n,flag=0;
long long temp;
char sex[10], name[10];
printf("请选择要查询的方式:\n");
printf("1.学号查询\n2.性别查询\n3.姓名查询\n4.年龄查询\n");
scanf("%d", &n);
switch (n) {
case 1: {
printf("请输入要查询学生的学号:\n");
scanf("%lld", &temp);
for (i = 0;i < nub;i++) {
if (temp == stu[i].BianHao) {
printf("**姓名:%s\n 性别:%s\n 年龄:%d\n 学号:%09lld\n 备注:%s\n", stu[i].name, stu[i].sex, stu[i].age, stu[i].BianHao, stu[i].other);
flag=1;
}
}
if(flag==0){
printf("对不起,为查询到相关信息!请重试......\n");
flag=0;
}
flag=0;
break;
}
case 2: {
printf("请输入要查询学生的性别:\n");
scanf("%s", sex);
for (i = 0;i < nub;i++) {
if ((strcmp(sex, stu[i].sex)) == 0) {
printf("**姓名:%s\n 性别:%s\n 年龄:%d\n 学号:%09lld\n 备注:%s\n", stu[i].name, stu[i].sex, stu[i].age, stu[i].BianHao, stu[i].other);
flag=1;
}
}
if(flag==0){
printf("对不起,为查询到相关信息!请重试......\n");
flag=0;
}
flag=0;
break;
}
case 3: {
printf("请输入要查询学生的姓名:\n");
scanf("%s", name);
for (i = 0;i < nub;i++) {
if ((strcmp(name, stu[i].name)) == 0) {
printf("**姓名:%s\n 性别:%s\n 年龄:%d\n 学号:%09lld\n 备注:%s\n", stu[i].name, stu[i].sex, stu[i].age, stu[i].BianHao, stu[i].other);
flag=1;
}
}
if(flag==0){
printf("对不起,为查询到相关信息!请重试......\n");
flag=0;
}
flag=0;
break;
}
case 4: {
printf("请输入要查询学生的年龄:\n");
scanf("%d", &age);
for (i = 0;i < nub;i++) {
if (age == stu[i].age) {
printf("**姓名:%s\n 性别:%s\n 年龄:%d\n 学号:%09lld\n 备注:%s\n", stu[i].name, stu[i].sex, stu[i].age, stu[i].BianHao, stu[i].other);
flag=1;
}
}
if(flag==0){
printf("对不起,为查询到相关信息!请重试......\n");
}
flag=0;
break;
}
default:{
printf("请重试!请输入规定的数字!\n");
ChaXun();
break;
}
}
printf("是否继续查询?\n ( 1.是 2.返回菜单 )\n");
scanf("%d", &n);
system("cls");
if (n == 1) {
ChaXun();
return;
}
else {
return;
}
}
int main()
{
FILE* fp;
int i;
if ((fp = fopen("studen.txt", "a+b")) == NULL)
{
printf("打开文件失败!\n");
exit(0);
}
for (i = 0; fread(&stu[i], sizeof(struct student), 1, fp) != 0; i++)
{
nub++;
}
int n;
printf("检测到位权限操作,请输入密码:\n");
scanf("%d", &n);
if (n == MiMa) {
system("cls");
while (1) {
int flag = 0;
printf("** 欢迎使用学生管理系统! **\n");
printf("\n");
printf("****************************\n");
printf("\n");
printf("**** 1.学生基本信息录入 ****\n");
printf("\n");
printf("**** 2.学生基本信息显示 ****\n");
printf("\n");
printf("**** 3.学生基本信息保存 ****\n");
printf("\n");
printf("**** 4.学生基本信息删除 ****\n");
printf("\n");
printf("**** 5.学生基本信息修改 ****\n");
printf("\n");
printf("**** 6.学生基本信息查询 ****\n");
printf("\n");
printf("******** 7.退出系统 ********\n");
printf("\n");
printf("****************************\n");
printf("\n");
printf("* 目前记录在档的有%d位学生 *\n",nub);
scanf("%d", &n);
switch (n)
{
case 1: {
Luru();
break;
}
case 2: {
XianShi();
break;
}
case 3: {
BaoCun();
break;
}
case 4: {
ShanChu();
break;
}
case 5: {
XiuGai();
break;
}
case 6: {
ChaXun();
break;
}
case 7: {
flag = 1;
break;
}
default: {
printf("请输入1~7的有效数字!\n");
break;
}
}
if (flag == 1) {
printf("谢谢使用!正在退出系统......\n");
break;
}
}
}
else {
printf("密码错误!请重试!\n");
Sleep(2000);
main();
}
}
学生管理系统
最新推荐文章于 2022-11-23 21:48:54 发布