#include "stuinfo_array.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
static info_t g_stuinfos[MAX_STUDENT_NUM];
static int g_count = 0;
int printMenu()
{
int chioce;
printf("\n\n*******************************\n");
printf("*\t1、显示所有学生信息\n");
printf("*\t2、添加学生信息\n");
printf("*\t3、删除学生信息\n");
printf("*\t4、更新学生信息\n");
printf("*\t5、查找学生信息\n");
printf("*\t6、清空所有学生信息\n");
printf("*\t7、退出学生信息系统\n");
printf("*******************************\n");
printf("请输入你的选择:");
scanf("%d", &chioce);
if (chioce < PrtAllInfo || chioce > Quit)
{
printf("请输入正确的选项\n");
printMenu();
}
doChoose(chioce);
}
void doChoose(int n)
{
switch(n)
{
case PrtAllInfo: printAllInfo(); break;
case AddStuInfo: addInfo(); break;
case DelStuInfo: delInfo(); break;
case UpdStuInfo: updInfo(); break;
case FindStuInfo: findInfo(); break;
case ClearStuInfo: clearInfo(); break;
case Quit: exit(0); break;
default: break;
}
}
void printAllInfo()
{
for (int i=0; i<g_count; i++)
{
printf("%d\t%s\t%s\t%d\t%d\t%s\n",
g_stuinfos[i].no,
g_stuinfos[i].name,
g_stuinfos[i].sex,
g_stuinfos[i].age,
g_stuinfos[i].phone,
g_stuinfos[i].addr );
}
printf("共展示 %d 名学生的个人信息\n", g_count);
}
void addInfo()
{
info_t info;
memset(&info, 0, sizeof(info_t));
INPUT:
printf("请输入学号:");
scanf("%d", &info.no);
for (int i=0; i<g_count; i++)
{
if (g_stuinfos[i].no == info.no)
{
printf("该学号已存在,请重新输入!\n");
goto INPUT;
}
}
printf("请输入学生姓名:");
scanf("%s", info.name);
printf("请输入学生性别:");
scanf("%s", info.sex);
printf("请输入学生年龄:");
scanf("%d", &info.age);
printf("请输入学生联系方式:");
scanf("%d", &info.phone);
printf("请输入学生家庭地址:");
scanf("\n%[^\n]", info.addr);
memcpy((void*)&g_stuinfos[g_count], (void*)&info, sizeof(info_t));
g_count += 1;
printf("学生信息添加完成:\n");
printf("%d\t%s\t%s\t%d\t%d\t%s\n",
g_stuinfos[g_count-1].no,
g_stuinfos[g_count-1].name,
g_stuinfos[g_count-1].sex,
g_stuinfos[g_count-1].age,
g_stuinfos[g_count-1].phone,
g_stuinfos[g_count-1].addr );
}
void delInfo()
{
int chioce, no, index=-1;
printf("1、根据学号删除学生信息\n");
printf("2、根据姓名删除学生信息\n");
printf("请选择删除方式:");
scanf("%d", &chioce);
if (chioce != 1 && chioce != 2)
{
printf("输入有误,请重新输入\n");
delInfo();
}
// 按学号删除学生信息
if (chioce == 1)
{
printf("请输入要删除的学号:");
scanf("%d", &no);
printf("查询结果如下:\n");
for (int i=0; i<g_count; i++)
{
if (no == g_stuinfos[i].no)
{
index = i;
printf("%d\t%s\t%s\t%d\t%d\t%s\n",
g_stuinfos[index].no,
g_stuinfos[index].name,
g_stuinfos[index].sex,
g_stuinfos[index].age,
g_stuinfos[index].phone,
g_stuinfos[index].addr );
break;
}
}
if (index == -1)
{
printf("未查找到学号 %d\n", no);
return;
}
printf("确定删除?(yes or no):");
char s[5] = {0};
scanf("%s", s);
if (!strcmp(s, "yes"))
{
memcpy((void*)&g_stuinfos[index], (void*)&g_stuinfos[index+1], sizeof(info_t)*(g_count-index+1));
g_count -= 1;
printf("已删除\n");
}
return;
}
// 按姓名删除学生信息
char iName[64] = {0};
char sNo[128] = {0};
int qIndexs[MAX_STUDENT_NUM/10] = {0};
printf("请输入学生姓名:");
scanf("%s", iName);
printf("查询结果如下:\n");
for (int i=0, no=1; i<g_count; i++)
{
if (strcmp(iName, g_stuinfos[i].name) != 0)
continue;
index = i;
qIndexs[no] = index;
printf("%d、\t%d\t%s\t%s\t%d\t%d\t%s\n",
no++,
g_stuinfos[index].no,
g_stuinfos[index].name,
g_stuinfos[index].sex,
g_stuinfos[index].age,
g_stuinfos[index].phone,
g_stuinfos[index].addr );
}
if (index == -1)
{
printf("未查找到姓名 %s\n", iName);
return;
}
printf("请输入要删除信息的序号(使用空格分隔):");
scanf("\n%[^\n]", sNo);
for (int i=0,sum=0,del=0; i<=strlen(sNo); i++)
{
if ((isspace(sNo[i]) || !sNo[i]) && sum > 0)
{
index = qIndexs[sum] - del;
if (strcmp(g_stuinfos[index].name, iName) == 0)
{
printf("删除\t%d\t%s\t%s\t%d\t%d\t%s\n",
g_stuinfos[index].no,
g_stuinfos[index].name,
g_stuinfos[index].sex,
g_stuinfos[index].age,
g_stuinfos[index].phone,
g_stuinfos[index].addr );
memcpy((void*)&g_stuinfos[index], (void*)&g_stuinfos[index+1], sizeof(info_t)*(g_count-index+1));
g_count -= 1;
del += 1;
}
sum = 0;
continue;
}
if (isdigit(sNo[i]))
sum = sum*10 + sNo[i] - '0';
}
}
void updInfo()
{
int chioce, no, index=-1;
printf("1、根据学号更新学生信息\n");
printf("2、根据姓名更新学生信息\n");
printf("请选择更新方式:");
scanf("%d", &chioce);
if (chioce != 1 && chioce != 2)
{
printf("输入有误,请重新输入\n");
updInfo();
}
// 按学号更新学生信息
if (chioce == 1)
{
printf("请输入要更新的学号:");
scanf("%d", &no);
printf("查询结果如下:\n");
for (int i=0; i<g_count; i++)
{
if (no == g_stuinfos[i].no)
{
index = i;
printf("%d\t%s\t%s\t%d\t%d\t%s\n",
g_stuinfos[index].no,
g_stuinfos[index].name,
g_stuinfos[index].sex,
g_stuinfos[index].age,
g_stuinfos[index].phone,
g_stuinfos[index].addr );
break;
}
}
if (index == -1)
{
printf("未查找到学号 %d\n", no);
return;
}
printf("确定更新?(yes or no):");
char s[16] = {0};
scanf("%s", s);
if (!strcmp(s, "yes"))
{
info_t info;
memset(&info, 0, sizeof(info_t));
info.no = g_stuinfos[index].no;
printf("请输入学生姓名:");
scanf("%s", info.name);
printf("请输入学生性别:");
scanf("%s", info.sex);
printf("请输入学生年龄:");
scanf("%d", &info.age);
printf("请输入学生联系方式:");
scanf("%d", &info.phone);
printf("请输入学生家庭地址:");
scanf("\n%[^\n]", info.addr);
printf("新信息如下:\n");
printf("%d\t%s\t%s\t%d\t%d\t%s\n",
info.no, info.name, info.sex, info.age, info.phone, info.addr );
printf("确定更新?(yes or no):");
memset(s, 0, sizeof(s));
scanf("%s", s);
if (!strcmp(s, "yes"))
{
memcpy((void*)&g_stuinfos[index], (void*)&info, sizeof(info_t));
printf("更新完成\n");
}
}
return;
}
// 按姓名更新学生信息
char iName[64] = {0};
int iNo, qIndexs[MAX_STUDENT_NUM/10] = {0};
printf("请输入学生姓名:");
scanf("%s", iName);
printf("查询结果如下:\n");
for (int i=0, no=1; i<g_count; i++)
{
if (strcmp(iName, g_stuinfos[i].name) != 0)
continue;
index = i;
qIndexs[no] = index;
printf("%d、\t%d\t%s\t%s\t%d\t%d\t%s\n",
no++,
g_stuinfos[index].no,
g_stuinfos[index].name,
g_stuinfos[index].sex,
g_stuinfos[index].age,
g_stuinfos[index].phone,
g_stuinfos[index].addr );
}
if (index == -1)
{
printf("未查找到姓名 %s\n", iName);
return;
}
printf("请输入要更新信息的序号:");
scanf("%d", &iNo);
printf("选择信息如下:\n");
index = qIndexs[iNo];
printf("%d\t%s\t%s\t%d\t%d\t%s\n",
g_stuinfos[index].no,
g_stuinfos[index].name,
g_stuinfos[index].sex,
g_stuinfos[index].age,
g_stuinfos[index].phone,
没有合适的资源?快使用搜索试试~ 我知道了~
(免费 可直接下载)学生信息管理系统-C语言基础版本
共6个文件
h:2个
c:2个
stuinfo:1个
需积分: 0 0 下载量 42 浏览量
2024-03-28
12:53:01
上传
评论
收藏 11KB RAR 举报
温馨提示
C语言基础联系项目,学生信息管理系统,练习内容:Makefile、结构体、排序算法、C语言API、程序编写逻辑和基础框架。 后续还会依次发布:链表版本、文件读写版本、数据库版本
资源推荐
资源详情
资源评论
收起资源包目录
StudentInfo.rar (6个子文件)
StudentInfo
Makefile 357B
stuinfo_array.h 496B
stuinfo 22KB
stuinfo_link.c 0B
stuinfo_array.c 11KB
stuinfo_link.h 0B
共 6 条
- 1
资源评论
@Tianwx
- 粉丝: 1463
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功