问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言大学生信息管理系统

发布网友 发布时间:2022-10-15 13:14

我来回答

2个回答

热心网友 时间:2023-10-09 03:19

真有点累人啊,汗~~~~~~
不过,你的要求这些代码都能满足了,
可能会有点小错误,我这儿也无法验证,总之总体的思路是完全正确的。
#include <stdio.h>
#include <string.h> //字符串头文件
#include <windows.h> //Sleep函数的头文件
#include <conio.h> //getch函数的头文件
#define N 50

//定义全局变量

//定义学员结构体
typedef struct Student
{

char name[10];//姓名
int NO;//学号
char sex[10];//性别
char subject[20];//专业
int phone;//电话
char jianli[200];//简历

}STU;

//声明这种学员类型的数组
STU stu[N];
//计数器n
int n=0; //代表数组的实际人数

//登录函数
void login()
{
system("color 2A");//定义背景和前景颜色
//登录模块实现代码
char Yonghu[30];
char Mima[30];

for(int i=0;i<3;i++)
{
// 打印登陆界面
Sleep(500);//定时打印
printf("\n\n\t\t\t\t学员管理系统平台\n");

Sleep(500);

printf("\n\t\t【用户登陆】\n");
Sleep(500);
printf("\n\t\t\t\t用户名:");
gets(Yonghu);
printf("\n\t\t\t\t密码:");

char let=NULL;//定义一个字符变量为空值
int j=0; //代表密码的实际长度

while(j<10 && let!=13)//定义密码长度和当接收的字符不为回车键(回车键的ASCLL码值为13)时
{
let=getch();//获得字符 不显示

if(let!=8)//当接收的字符不为退格键(退格键的ASCLL码值为8)时
{
Mima[j++]=let;//将接收的字符赋给数组Mima并自加一个长度
printf("*");
}
else
{
if(j>0)//当密码长度不为0时
{
//删除字符的操作
putchar(8);
putchar(' ');
putchar(8);
Mima[--j]=NULL;//将空值赋给数组Mima并自减一个长度
}
}
}
Mima[--j]=NULL;
putchar(8);//消除因回车键所打印的*
putchar(' ');
putchar(8);
putchar('\0');//字符串结束标记

//验证密码
if(strcmp(Yonghu,"姓名")==0 && strcmp(Mima,"123456")==0)//用比较函数判断用户输入的用户名和密码是否正确
{
//调用dos命令清空控制台屏幕
system("cls");
printf("\n\n\n\n\n\t\t\t正在登录菜单界面,请稍候...");
for(int i=0;i<=5;i++)
{
Sleep(666);
printf(">>>");
}

for(int i=0;i<=100;i++)
{
system("cls");
//%%为百分号
printf("\n\n\n\n\n\n\n\t\t\t\t正在加载数据中...%d%%",i);
}
system("cls");
printf("\n\n\n\n\n\n\n\t\t\t\t加载数据成功,loding.....\n");
break;//跳出for循环
}
else
{
if(i<2)//用户输入错误不超过2次
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n");
Sleep(1000);
printf("\t【提示】:抱歉,您输入的用户名或密码错误,请重新输入!\n");
}
else//用户3次输入都错误时
{
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n");
Sleep(1000);
printf("\t【提示】:Sorry,您输入的用户名或密码错误次数太多,请休息一会再来!\n");break;
}
}
Sleep(2000);
//调用dos命令清空控制台屏幕
system("cls");
}
}

//菜单函数
void menu()
{
Sleep(2000);
//调用dos命令清空控制台屏幕
system("cls");

//打印功能菜单界面
Sleep(500);
printf("\n\n\t\t\t\t学员管理系统平台\n");

Sleep(500);
printf("\n\t\t************************************************\n");
Sleep(500);
printf("\n\t\t功能菜单:\n\n");
Sleep(1000);

printf("\t\t 1、录入单个学员信息 2、显示所有学员信息\n");

Sleep(1000);

printf("\t\t 3、排序显示学员信息 4、插入单个学员信息\n");

Sleep(1000);

printf("\t\t 5、删除单个学员信息 6、查找单个学员信息\n");

Sleep(1000);

printf("\t\t 7、读取所有学员信息 8、保存所有学员信息\n");

Sleep(1000);

printf("\t\t 9、清空全部学员信息 0、退出学员管理系统\n");

}

//录入函数
void input()
{
int i;
char answer;

do
{
//录入学号
do
{
printf("学号:");
scanf("%d",&stu[n].NO);

// 判断输入格式是否有错
while(stu[n].NO<=0 || stu[n].NO>50)
{
printf("\t【提示】:输入格式有误,请重新输入!\n");
fflush(stdin); //判断输入其它字符(如:a,b,aa,skd...)时报错
printf("学号:");
scanf("%d",&stu[n].NO);
}

//循环遍历输入的学号是否重复
for(i=0;i<n;i++)
{
if(stu[i].NO==stu[n].NO)
{
printf("\t【提示】:学号重复,请重新输入!\n");
break;
}
}
}while(i<n);

//录入姓名
do
{
printf("姓名:");
scanf("%s",stu[n].name);

//判断输入时姓名是否为空
while(strlen(stu[n].name)==0)
{
printf("\t【提示】:姓名不能为空,请重新输入!\n");
printf("姓名:");
scanf("%s",stu[n].name);
}

// 判断输入时姓名是否含有数字
for(i=0;i<strlen(stu[n].name);i++)
{
if(stu[n].name[i]>='0'&&stu[n].name[i]<='9')
{
printf("提示:姓名不能含有数字,请重新输入!\n");
break;
}
}
}while(i<strlen(stu[n].name));

//录入性别
do
{
printf("性别");
scanf("%s",stu[n].sex);
}while(i<strlen(stu[n].sex));

//录入专业
do
{
printf("专业");
scanf("%s",stu[n].subject);
}while(i<strlen(stu[n].subject));

//录入联系电话
do
{
printf("电话号码");
scanf("%s",&stu[n].phone);
}while(i<strlen(stu[n].phone));

//录入简历
do
{
printf("简历\n");
scanf("%s",stu[n].jianli);
}while(i<strlen(stu[n].jianli);

n++;//实际的人数自加一次

//判断输入成绩的实际人数是否超出已定内存空间
if(n<N)
{
printf("是否继续录入?(y/n):");
fflush(stdin);//清空缓存
scanf("%c",&answer);
}
else
{
printf("实际人数超出已定存储空间的内存,程序终止!\n");
break;
}
}while(answer=='Y' || answer=='y');
}

//显示函数
void display()
{
//打印表头
printf("********************************************************************************\n");
printf("学号\t姓名\t性别\t专业\n");
printf("********************************************************************************\n");

//循环打印学员信息
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].sex,stu[i].subject);
printf("********************************************************************************\n");
}
printf("\n联系电话\n");
for(int i=0;i<n;i++)
{
printf("%d\n",stu[i].phone);
printf("********************************************************************************\n");
}
printf("\n学历\n");
for(int i=0;i<n;i++)
{
printf("%s",stu[i].jianli);
printf("********************************************************************************\n");
}
}

//排序函数
void sort()
{
STU temp;//定义临时变量
int i,j;

//冒泡排序
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(stu[j].avg<stu[j+1].avg)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}

//插入函数
void insert()
{
int i,j;//定义循环变量
STU newStu;//定义实行插入功能时输入的类型
char answer;

printf("单个学员信息的循环插入:\n");
do
{
do
{
printf("学号:");
scanf("%d",&newStu.NO);

// 判断输入格式是否有错
while(newStu.NO<=0 || newStu.NO>50)
{
printf("\t【提示】:输入格式有误,请重新输入!\n");
fflush(stdin); //判断输入其它字符(如:a,b,aa,skd...)时报错
printf("学号:");
scanf("%d",&newStu.NO);
}

//循环遍历输入的学号是否重复
for(i=0;i<n;i++)
{
if(stu[i].NO==newStu.NO)
{
printf("\t【提示】:学号重复,请重新输入!\n");
break;
}
}
}while(i<n);

do
{
printf("姓名:");
scanf("%s",&newStu.name);

//判断输入时姓名是否为空
while(strlen(newStu.name)==0)
{
printf("\t【提示】:姓名不能为空,请重新输入!\n");
printf("姓名:");
scanf("%s",newStu.name);
}

// 判断输入时姓名是否含有数字
for(i=0;i<strlen(newStu.name);i++)
{
if(newStu.name[i]>='0' && newStu.name[i]<='9')
{
printf("提示:姓名不能含有数字,请重新正确输入!\n");
break;
}
}
}while(i<strlen(newStu.name));

n++;//实际的人数自加一次

sort();//调用排序函数

//循环遍历找位置
for(i=0;i<n;i++)
{
if(newStu.avg>stu[i].avg)
{
j=i;
break;
}
}

//移位
for(i=n;i>j;i--)
{
stu[i]=stu[i-1];
}

stu[j]=newStu;//将newStu插入到j的位置

//判断插入的实际人数是否超出已定内存空间
if(n<N)
{
printf("是否继续插入?(y/n):");
fflush(stdin);//清空缓存
scanf("%c",&answer);
}
else
{
printf("实际人数超出已定存储空间的内存,程序终止!\n");
break;
}
}while(answer=='Y' || answer=='y');
}

//删除函数
void remove()
{
int i,j,no;
char answer;

do
{
printf("请输入要删除学员的学号:");
scanf("%d",&no);

//循环遍历找位置
for(i=0;i<n;i++)
{
if(no==stu[i].NO)
{
j=i;
break;
}
}

//移位
if(i<n)
{
for(i=j;i<n-1;i++)
{
stu[i]=stu[i+1];
}

n--;//实际人数自减一个

printf("\n\n系统在第%d个位置找到了学号为%d的学员!\n",j+1,no);
}
else
{
printf("没有找到您要删除的学员学号,请重新选择功能!\n");
}

//判断是否已经没有可以删除的人数
if(n>0)
{
printf("是否继续删除?(y/n):");
fflush(stdin);//清空缓存
scanf("%c",&answer);
}
else
{
printf("已经没有可以删除的人数了,程序终止!\n");
break;
}
}while(answer=='Y' || answer=='y');
}

//查找函数
void search()
{
int i,no;
char answer;
printf("请输入您要查找学员的学号:");
scanf("%d",&no);

do
{
//循环遍历找位置
for(i=0;i<n;i++)
{
if(stu[i].NO==no)
{
break;
}
}
if(i<n)
{
printf("\n\n系统在第%d个位置找到了学号为%d的学员!\n",i+1,no);
printf("该学员的信息如下:\n");
printf("********************************************************************************\n");
printf("学号\t姓名\t成绩一\t成绩二\t成绩三\t平均分\t总分\n");
printf("********************************************************************************\n");
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg,stu[i].sum);
printf("********************************************************************************\n");
}
else
{
printf("\n提示:对不起,没有找到学号为%d的学员\n",no);
}

//判断是否继续查询
printf("是否继续查询?(y/n):");
fflush(stdin);//清空缓存
scanf("%c",&answer);
}while(answer=='Y' || answer=='y');
}

//读取函数
int read()
{
FILE *fp;//定义文件指针变量
fp=fopen("e:\\xueyuanguanlixitong.txt","rt");
int n=fread(stu,sizeof(STU),N,fp);
return n;

}

//保存函数
void save()
{
FILE *fp;//定义文件指针变量
fp=fopen("e:\\xueyuanguanlixitong.txt","wb");
fwrite(stu,sizeof(STU),n,fp);
fclose(fp);
printf("已保存在:e:\\xueyuanguanlixitong.txt\n");
printf("\n\n\n\n\n\t\t\t\t保存成功!O(∩_∩)O~\n");
}

//主函数
void main()
{
login();//调用登录函数
int choice,i;//定义用户选择变量

do
{
//显示菜单
menu();
printf("\n\t请选择:");
scanf("%d",&choice); //接受用户选择

switch(choice)
{
case 1:
system("cls"); //清屏
printf("\n单个学员信息的循环录入\n");
input();
display();
system("pause");
break;

case 2:
system("cls");
display();
system("pause"); //暂停一下程序
break;

case 3:
system("cls");

if(n==0)
{
printf("\t\t学员个数为0,无法排序,请先录入!\n");
system("pause");
break;
}
else
{
sort(); ;//调用排序函数
system("pause");
break;
}

case 4:
system("cls");
insert(); //调用插入函数
system("pause");
break;

case 5:
system("cls");
remove(); //调用删除函数
system("pause");
break;
case 6:
system("cls");
search(); //调用查找函数
system("pause");
break;

case 7:
system("cls");
n=read(); //调用读取函数
printf("读取成功!\n");
system("pause");
break;

case 8:
system("cls");
save(); //调用保存函数
system("pause");
break;

case 9:
system("cls");
n=0; //清空学员个数
printf("清空完成!\n");
system("pause");
break;

case 0: //退出程序
system("cls");

for(i=5;i>=0;i--)
{
Sleep(1000);
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\t\t请稍等,还有%d秒推出程序!\n\n\n",i);
}
system("cls");
printf("\n\n\n\n\n\n你已经成功退出程序\n\t\t谢谢使用,欢迎再次登录!\n");
exit(0);
break;

default:
system("cls");
printf("\n\n\n\n\n\t\t请选择0-9之间的数!\n");
system("pause");
}
}while(1);
}

热心网友 时间:2023-10-09 03:20


头文件少俩
#include<stdio.h>
#include<stdlib.h>

修改一下for循环体,成绩不报错了
for(i=0;i<2;i++)
{
scanf("%d %s %d %d %d",&cj[i].no,&cj[i].name,&cj[i].xk1,&cj[i].xk2,&cj[i].xk3);
printf("%d %s %d %d %d",cj[i].no,cj[i].name,cj[i].xk1,cj[i].xk2,cj[i].xk3);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
情侣文案英文高级浪漫87句 Love to the people don't wave.什么意思 gladtomeetyou怎么 gladtomeetyou.怎么回答 2016生肖猴运程 武汉买房88平方满50万落户政策 非武汉市户口在武汉市购买70平方总价50万的商品房,可以转户口吗... 我想在武汉买一套50万左右的新房子,谁能告诉我现在武昌,关山,江夏,有... 支付宝怎么开通步数授权? 总价50万能在武汉买一套两室一天的二手房吗? 哪家保险公司有交通意外险,打算给自己买一份交通意外险,可不知在哪里买 人民保险公司的意外险短卡可以指定收益人吗 保险一年两百短卡意外死亡的最高报多少 短卡保险有年龄限制吗? 中国人寿险六十岁买意外险,150元 中国人寿一百元短卡都管什么 数学三年级第一组比第二组多24个第二组比第三组多19个问第一组比第三组多多少? 甲乙丙和是100,甲比乙多4,乙比丙多6,丙是多少三年级数学 办理他人名下汽车抵押贷款都需要注意哪些事情 奥普qtp1226a和QTP1626A哪个好? 欧式吊灯和中式吊灯哪种好看 淘宝已退款到注销银行卡但也没返到支付宝里怎么办 额,我淘宝上买了个东西,退了款,但是退到了我已经注销了的银行卡,怎么办? 我淘宝上买的退货钱,退到我注销的银行卡上了,我到哪里去要钱 本人负债六万,会影响老公主贷公积金贷款吗? 微信账号和密码都忘记了,只知道怎么找回? 我只记得,如何找回密码 记得,但密码忘记了,登录不上该怎么办呢? 微信账号和密码都忘记了,只知道怎么找回。 我知道,但是我不记得密码。这样的情况下怎么办? 实验内容:c语言编写通讯录管理系统 通讯录中的联系人包含以下信息项:姓名、联系电话、电子邮箱。 不等式需要变号有哪几种情况 数学不等式运算 高二不等式基本性质 不等式的基本性质,高中生只需要记住还是要知道怎么来的 高三数学,不等式 VB 中如何自编写定义翻译?比如text1输入你好 点击自定义按钮 text2 翻译出你也好?谢谢 有道词典自定义翻译&nbsp;或是怎么制作ifo或ydic格式的文件导入有道词典 一九四七年四月十九日的傅作义去世了吗 傅作义的两个女儿都是谁? 《凡仙》txt下载在线阅读全文,求百度网盘云资源 凡仙by芋头小说可以在线看的 《凡仙本纪》txt下载在线阅读全文,求百度网盘云资源 《凡仙游戏》txt下载在线阅读全文,求百度网盘云资源 《凡仙飘渺传》txt下载在线阅读全文,求百度网盘云资源 《凡仙战界》txt下载在线阅读全文,求百度网盘云资源 《问道凡仙》txt下载在线阅读全文,求百度网盘云资源 《坠凡仙》txt下载在线阅读全文,求百度网盘云资源 酷家乐怎么画吊顶 PDM信息管理系统的功能?