C语言课程设计-机房上机管理系统

  • 需求分析:

机房上机管理系统大致需要以下几项功能

  1. 输入功能:输入若干名学生的学号,班级姓名,开始上机时间和结束上机时间。
  2. 修改功能:修改学生上机的个人档案(如增添)
  3. 查询功能:按条件,班级,学号,姓名查询,学生上机信息,并能显示查询学生的相应全部档案
  4. 显示功能:显示全部机器的使用信息
  • 概要设计:

设计系统使得以上功能全部涵盖

  • 详细设计:

 程序源码

#include<stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
struct time
{int hour;
int minute ;
int second ; } ;
typedef struct
{char num[20] ;
char banji; 
int flag;
char name[20];
struct time kaishi, jiesu;
}Student;
Student stu[50] ;
struct computer
{int f;
Student stut; 
} com[30];

int k;
int main_menu ()
{char c;
do
{system("cls");
printf("\t  ——机房上机管理系统——  \n");
printf("\t  |      1.输入学生信息      |  \n");
printf("\t  |      2.上机时间          |  \n");
printf("\t  |      3.下机时间          |  \n");
printf("\t  |      4.电脑使用情况显示  \n");
printf("\t  |      0.退出系统          |  \n");
printf("\t       ———————         \n");
printf("\t请选择菜单序号(0-5): ");
c=getchar();
}while(c<'0'||c>'5');
return(c-'0' ) ;}
int input(Student stu[], int n)
{int i=0;
char sign='0';
while(sign!='n'&&sign!='N')
{getchar() ;
printf("\n\t\t 学号:");
gets(stu[n+i].num);
printf("\t \t班级:");
scanf("%s" ,&stu[n+i].banji);
getchar () ;
printf("\t \t 姓名:");
gets(stu[n+i].name);
printf("\t\t 继续输入?是请按Y,否请按N:");
scanf("%c" ,&sign);
stu[n+i].flag=0;
i++;
}
return(n+i) ;
}
void shangji (Student stu[],int n)
{char num_t[20], name_t [20];
int i,s ;
do
{printf("\n\t\t使用姓名输入 1\n\t\t使用学号输入 2\n\t\t请输入序号:");
scanf("%d" ,&s);
} while(s!=1&& s !=2) ;
getchar( ) ;
if(s==1)
{printf("\t\t 请输入姓名:");
gets(name_t);
for(i=0;i<n;i++)
if(strcmp(stu[i].name,name_t)==0)
break ; }
else
{printf("\t \t 请输入学号:");
gets(num_t);
for(i=0;i<n;i++)
{if(strcmp(stu[i].num,num_t)==0)
break;
 }
}
if(i==n)
{printf("\t \t无该生记录!请输入该生信息后再上机! \n");
return;}
else if(stu[i].flag==1)
{printf("\t\t该生正在上机! \n");
return; }
else
{for (k=0;k<30 ;k++)
{if(com[k].f==0)
{com[k].f=1;
printf("\t\t请输入上机时间(当前时间):");
scanf("%d:%d:%d",&stu[i].kaishi.hour,&stu[i].kaishi.minute,&stu[i]. kaishi.second) ;
stu[i].flag=1 ; 
com[k].stut=stu[i];
break;
}
}
if(k==30)
printf("\t\t机器全部使用中,请稍后再上机! \n");
}
}
void xiaji(Student stu[],int n)
{char num_t[20], name_t[20] ;
int i, s ;
do
{printf("\n\t\t使用姓名输入 1\n\t\t使用学号输入2\n\t\t请输入序号:");
scanf("%d",&s);
}while(s!=1&&s !=2);
getchar () ;
if(s==1)
{printf("\t\t请输入姓名:");
gets (name_t);
for(i=0;i<n;i++)
{if(strcmp(stu[i].name, name_t)==0)
break;
}
}
else
{printf("\t\t请输入学号:");
gets(num_t);
for(i=0;i<n;i++)
{if(strcmp(stu[i].num, num_t)==0)
break ;
}
}
if(i==n)
{printf("\t\t没有这个学生! \n");
return;
}
else if(stu[i].flag==0)
{printf("\t\t 该生未上机或已下机! \n");
return;
}
else
{printf("\t\t 请输入下机时间(当前时间):");
scanf("%d:%d:%d",&stu[i].jiesu.hour,&stu[i].jiesu.minute,&stu[i].jiesu. second);
stu[i].flag=0;
for (k=0 ;k<3;k++)
{if(strcmp (com[k].stut.num, stu[i].num)==0)
{com[k].f=0;
break;
}
}
}
}
void chaxun(Student stu[], int n)
{char num_t[20], name_t[20];
int i, s ;
do
{printf("\n\t\t 使用姓名输入 1\n\t\t 使用学号输入2\n\t\t请输入序号:");
scanf("%d",&s);
}while(s!=1&&s !=2);
getchar () ;
if(s==1)
{printf("\t\t 请输入姓名:");
gets (name_t) ;
for(i=0;i<n;i++)
{if(strcmp(stu[i ].name, name_t)==0)
break;}
}
else
{printf("\t\t 请输入学号:");
gets (num_t);
for(i=0;i<n;i++)
{if(strcmp(stu[i].num, num_t)==0)
break;
}
}
if(i==n)
{printf("\t\t记录无此学生! \n");
return;
}
else if(stu[i].flag==1)
{printf("\t\t该生正在上机 ,上机起始时间为:%d;%d:%d\n",stu[i].kaishi.hour, stu[i].kaishi.minute,stu[i].kaishi.second) ;
}else
printf("\t\t该生未上机或下机! \n") ;
}
void qingkuang()
{ printf("\t机器号 是否使用 使用者 学号 班级 上机时间\n");
printf(" \t--------------------------------------------------------\n") ;
for(k=0 ;k<30 ;k++)
{if(com[k].f==0)
printf("\t%02d 否--------:--:--\n",k+1);
else
printf("\t%02d 是  %-10s %-10s %2s %02d : %02d:%02d\n",k+1, com[k].stut.name,com[k].stut.num,com[k].stut.banji,com[k].stut.kaishi.hour, com[k].stut.kaishi.second);
}
printf("\t");
system("pause");
}
int main()
{int n=0 ;
for(k=0 ;k<30 ; k++)
com[k].f=0 ;
for(;;)
{switch(main_menu())
{case 1:
system("cls") ;
printf ("********************输入学生信息********************\n") ;
n=input(stu, n);
break;
case 2:
system("cls") ;
printf("*******************学生上机********************\n") ;
shangji (stu, n);
printf("\t \t");
system("pause");
break;
case 3:
system("cls");
printf("***********************学生下机*************************\n") ;
xiaji(stu, n);
printf("\t \t");
break ;
case 4:
system ("cls") ;
printf("********************电脑使用情况显示********************\n");
qingkuang ();
break;
case 0:
system("cls");
printf("********************感谢使用机房收费管理系统,欢迎下次使用********************!");
printf("\t \t");
system("pause");
exit(0);
}
}
return 0;}





  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X-MTing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值