|
|
#include"stdio.h"
|
|
|
#include"stdlib.h"
|
|
|
#include"string.h"
|
|
|
#include"windows.h"
|
|
|
#define number 100 //最大学生人数
|
|
|
#define id_len 20 //学号长度
|
|
|
#define name_len 30 //姓名长度
|
|
|
#define price 1.00 //每分钟单价
|
|
|
int count;
|
|
|
struct datacase
|
|
|
{
|
|
|
char id[id_len];
|
|
|
char name[30+1];
|
|
|
int time;
|
|
|
}stu[number];
|
|
|
int fun(char ch[id_len>name_len?id_len:name_len],int a);
|
|
|
int add();
|
|
|
int rep();
|
|
|
void calculation(int kc);
|
|
|
int fun(char ch[id_len>name_len?id_len:name_len],int a)
|
|
|
//查找所需要的记录存储在第几个结构体中 a=1按学号查找;a=2按姓名查找
|
|
|
{
|
|
|
int k=-1;
|
|
|
int i;
|
|
|
for(i=0;i<count;i++)
|
|
|
{
|
|
|
if(1==a)
|
|
|
{
|
|
|
if(0==strcmp(stu[i].id,ch))
|
|
|
{
|
|
|
k=i;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if(2==a)
|
|
|
{
|
|
|
if(0==strcmp(stu[i].name,ch))
|
|
|
{
|
|
|
k=i;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return k;
|
|
|
}
|
|
|
|
|
|
int add()
|
|
|
{
|
|
|
int f=0;//添加的学号已存在,f将被赋值为1
|
|
|
char select[4];
|
|
|
while(true)
|
|
|
{
|
|
|
if(count>number)
|
|
|
{
|
|
|
printf("系统已达存储上限,不可再添加\n");
|
|
|
system("pause");
|
|
|
return 0;
|
|
|
}
|
|
|
printf("请输入想要增加的学生信息:\n");
|
|
|
printf("学号:");
|
|
|
scanf("%s",stu[count].id);
|
|
|
for(int i=0;i<count;i++)
|
|
|
{
|
|
|
if(0==strcmp(stu[i].id,stu[count].id))
|
|
|
{
|
|
|
printf("该学号已存在!\n对应的学生信息为:姓名:%s 上机时间:%d\n",stu[i].name,stu[i].time);
|
|
|
system("pause");
|
|
|
system("cls");
|
|
|
f=1;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if(f==1)
|
|
|
{
|
|
|
f=0;
|
|
|
continue;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
printf("姓名:");
|
|
|
scanf("%s",stu[count].name);
|
|
|
calculation(count);
|
|
|
count++;
|
|
|
}
|
|
|
printf("是否继续添加学生信息?继续请回答yes\n");//除yes外所有字符都会导致退出
|
|
|
scanf("%s",select);
|
|
|
if(0!=strcmp(select,"yes"))
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
else
|
|
|
system("cls");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
int rep()
|
|
|
{
|
|
|
int selec;
|
|
|
char select[4];
|
|
|
char id_r[id_len];
|
|
|
char name_r[name_len];
|
|
|
int k,x;
|
|
|
while(true)
|
|
|
{
|
|
|
printf(" 选择您希望进行的操作\n");
|
|
|
printf(" 1、修改学生学号。\n");
|
|
|
printf(" 2、修改学生姓名。\n");
|
|
|
printf(" 3、修改学生上机时长\n");
|
|
|
printf(" 4、退出修改\n");
|
|
|
scanf("%d",&selec);
|
|
|
system("cls");
|
|
|
switch(selec)
|
|
|
{
|
|
|
case 1://修改学号
|
|
|
printf("请输入需要修改的学生学号:");
|
|
|
scanf("%s",id_r);
|
|
|
k=fun(id_r,1);
|
|
|
if(k!=-1)
|
|
|
{
|
|
|
printf("您希望将他的学号修改为:");
|
|
|
scanf("%s",id_r);
|
|
|
if(fun(id_r,1)==-1)
|
|
|
{
|
|
|
printf("确认要将%s同学的学号修改为%s吗?\n输入no可撤销操作\n",stu[k].name,id_r);
|
|
|
scanf("%s",select);
|
|
|
if(strcmp(select,"no"))
|
|
|
{
|
|
|
system("cls");
|
|
|
strcpy(stu[k].id,id_r);
|
|
|
printf("修改成功!");
|
|
|
|
|
|
}
|
|
|
else
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
printf("该学号已存在!");
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
system("cls");
|
|
|
printf("未找到该条记录!请检查输入的学号是否正确%s\n",id_r);
|
|
|
continue;
|
|
|
}
|
|
|
break;
|
|
|
case 2://修改姓名
|
|
|
printf("请输入需要修改的学生姓名:");
|
|
|
scanf("%s",name_r);
|
|
|
k=fun(name_r,2);
|
|
|
if(k!=-1)
|
|
|
{
|
|
|
printf("您希望将他的姓名修改为:");
|
|
|
scanf("%s",name_r);
|
|
|
printf("确认要将%s同学的姓名修改为%s吗?\n输入no可撤销操作",stu[k].name,name_r);
|
|
|
scanf("%s",select);
|
|
|
if(strcmp(select,"no"))
|
|
|
{
|
|
|
strcpy(stu[k].name,name_r);
|
|
|
printf("修改成功!\n");
|
|
|
system("pause");
|
|
|
}
|
|
|
else
|
|
|
continue;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
system("cls");
|
|
|
printf("未找到该条记录!请检查输入的姓名是否正确%s\n",name_r);
|
|
|
continue;
|
|
|
}
|
|
|
break;
|
|
|
case 3:
|
|
|
printf("您希望以什么方式查看这名学生的记录?\n1、学号\n2、姓名\n");
|
|
|
scanf("%d",&x);
|
|
|
if(x==1)
|
|
|
{
|
|
|
printf("请输入该名学生的学号:");
|
|
|
scanf("%s",id_r);
|
|
|
k=fun(id_r,x);
|
|
|
if(k==-1)
|
|
|
{
|
|
|
system("cls");
|
|
|
printf("未找到该条学生信息\n");
|
|
|
continue;
|
|
|
}
|
|
|
else
|
|
|
calculation(k);
|
|
|
}
|
|
|
if(x==2)
|
|
|
{
|
|
|
printf("请输入该名学生的姓名:");
|
|
|
scanf("%s",name_r);
|
|
|
k=fun(name_r,x);
|
|
|
if(k==-1)
|
|
|
{
|
|
|
printf("未找到该条学生信息");
|
|
|
system("pause");
|
|
|
system("cls");
|
|
|
continue;
|
|
|
}
|
|
|
else
|
|
|
calculation(k);
|
|
|
}
|
|
|
break;
|
|
|
case 4: return 0;
|
|
|
default:return -1;
|
|
|
}
|
|
|
system("cls");
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
void calculation(int kc)//计算上机时间
|
|
|
{
|
|
|
int ti[4];
|
|
|
printf("请按时:分的格式输入\n");
|
|
|
printf("请输入该生上机时间:");
|
|
|
scanf("%d:%d",&ti[0],&ti[1]);
|
|
|
printf("请输入该生的下机时间");
|
|
|
scanf("%d:%d",&ti[2],&ti[3]);
|
|
|
if(ti[0]>=0&&ti[1]>=0&&ti[2]>=0&&ti[3]>=0&&ti[0]<24&&ti[1]<60&&ti[2]<24&&ti[3]<60)//输入合法性检查
|
|
|
{
|
|
|
stu[kc].time=(ti[2]-ti[0])*60+ti[3]-ti[1];
|
|
|
system("cls");
|
|
|
printf("本次上机时间为:%d分钟\n",stu[kc].time);
|
|
|
system("pause");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
printf("非法输入!请检查后重试\n");
|
|
|
printf("老子不干了!");
|
|
|
system("pause");
|
|
|
calculation(kc);
|
|
|
}
|
|
|
}
|