新手碰到困难了 大家帮帮忙吧 进行选择服务时一输入字母就进入循环呢

czzdcn123 2012-11-13 05:10:02
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#define N 50
typedef struct Student
{

char name[10];//姓名
int NO;//学号
float score[3];//成绩
float avg,sum;


}STU;


STU stu[N];
int n=0;

//登录函数
void login()
{
system("color 5A");//定义背景和前景颜色

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)
{
let=getch();

if(let!=8)
{
Mima[j++]=let;
printf("*");
}
else
{
if(j>0)
{

putchar(8);
putchar(' ');
putchar(8);
Mima[--j]=NULL;
}
}
}
Mima[--j]=NULL;
putchar(8);
putchar(' ');
putchar(8);
putchar('\0');
if(strcmp(Yonghu,"admin")==0 && strcmp(Mima,"admin")==0)
{

system("cls");
printf("\n\n\n\n\n\t\t\t正在登录菜单界面,请稍候...");
for(int i=0;i<=5;i++)
{
Sleep(666);
printf(">>>");
}

for(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;
}
else
{
if(i<0)//用户输入错误不超过1次
{
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(100);
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,t;
float s;
char answer;
do
{
t=0;
s=0;
do
{
printf("学号:");
scanf("%d",&stu[n].NO);


while(stu[n].NO<=0 || stu[n].NO>50)
{
printf("\t【提示】:输入格式有误,请重新输入!\n");
fflush(stdin);
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));

for(i=1;i<4;i++)
{
printf("请输入%d门科目的成绩:",i);
scanf("%f",&stu[n].score[i-1]);
}
while(t<3)
{
s+=stu[n].score[t];
t++;
}
stu[n].sum=s;
stu[n].avg=s/3;


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


void display()
{
int i=0;
printf("********************************************************************************\n");
printf("学号\t姓名\t成绩一\t成绩二\t成绩三\t平均分\t总分\n");
printf("********************************************************************************\n");

do
{
printf("%d\t%s\t\%.1f\t%.1f\t\%.1f\t%.1f\t%.1f\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");
i++;
}while(i<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,t;//定义循环变量
float s;
STU newStu;//定义实行插入功能时输入的类型
char answer;

printf("单个学员信息的循环插入:\n");
do
{
t=0;
s=0;
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));
for(i=1;i<4;i++)
{
printf("请输入%d门科目的成绩:",i);
scanf("%f",&newStu.score[i-1]);
}
while(t<3)
{
s+=newStu.score[t];
t++;
}
newStu.sum=s;
newStu.avg=s/3;

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;


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=0;
char answer;


do
{ printf("请输入您要查找学员的学号:");
scanf("%d",&no);
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%.1f\t%.1f\t%.1f\t%.1f\t%.1f\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();
printf("排序成功:\n");
display();
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);
}
...全文
44 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧