CLoginDialog ld
if(ID_OK!=ld.Domodal()) return
用类向导添加“确定”按钮的单击事件,然后在LoginDialog.cpp中
LoginDialog.hLoginDialog.hvoid CLoginDialog::OnOK()
{
UpdateData(0)
if(m_szLoginName=="用户名"嫌帆&&m_szPassword=="密码")
{
MessageBox("验证通简并过","登陆提示",MB_OK)
}
else
{
MessageBox("验证未芹咐雹通过","登陆提示",MB_OK)
//AfxGetMainWnd()->PostMessage (WM_QUIT)
//EndDialog(IDCANCEL)
}
CDialog::OnOK()
}
login1.作用
login的作用是登录系统,它的使用权限是所有用户。
2.格式
login [name][-p ][-h 主机名称]
3.主要参数
-p:通知login保持现在的环境参数。
-h:用来向远程登录的之间传输用户名。
如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:
logout
logout命令和exit命令一样,都是注销用户.
reboot
1.作用
reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。
2.格式
reboot [-n] [-w] [-d] [-f] [-i]
3.主要参数
-n: 在重开机前不做将记忆体资料写回硬盘的动作。
-w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。
-d: 不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。
-i: 在重开机之前先把所有与网络相关的装置停止。
shutdown命令
1 作用
可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还告迅昌允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。精确时间的格式是hh:mm,表示小时和分钟;时间段由“+”和分钟数表示。系统执行该命令后,会自动进行数据同步的工作。
2格式
shutdown [选项] [时间] [警告信息]:
- k 并不真正关机,而只是发出警告信息给所有用户。
- r 关机后立即重新启动。
- h 关机后不重新启动。
- f 快速昌神关机,重启动时跳过fsck。
- n 快速关机,不经过init程序。
- c 取消一个已经运行的shutdown。
reboot
功能说明:重新开机。
语法:dreboot [-dfinw]
补充说明:执行reboot指令可让系统停止运作,并重新开机。
参数:
-d 重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有"-n"参数的效果。
-f 强制重新开机,不调用shutdown指令的功能。
-i 在重开机之前,先关闭所有网络界面。
-n 重开机之前不检查是否有未结束的程序。
-w 仅做测试,并不真的将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文袜扒件
halt
功能说明:关闭系统。
语法:halt [-dfinpw]
补充说明:halt会先检测系统的runlevel。若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。
参数:
-d 不要在wtmp中记录。
-f 不论目前的runlevel为何,不调用shutdown即强制关闭系统。
-i 在halt之前,关闭全部的网络界面。
-n halt前,不用先执行sync。
-p halt之后,执行poweroff。
-w 仅在wtmp中记录,而不实际结束系统。
poweroff
关机,在多用户方式下(Runlevel 3)不建议使用
#include <stdio.h>#include <string.h>
#include <stdlib.h>
int login(char p[16])//登录,密码判断,
{
int w
char login[16]
printf("请输入密码\n")
gets(login)//输入字符串作为密码
w=strcmp(p,login)//判断两字符串是否相同,若相同则返回0
return w//返回密码判断的值
}
void display()//菜单
{
printf("*——————————————————————————————————————*\n")
printf("|请选择您所需的 *** 作: |\n")
printf("|——————————————————————————————————————|\n")
printf("|1.输入成绩 2.顺序输出成绩 3.查找最高分 4.查找最低分|\n")
printf("|5.查找特定成绩 6.降序排序成绩 7.求总成绩和平均成绩 |\n")
printf("|8.查找低于特定分数的成绩 9.分段成绩人指虚圆数及位置 10.增加成绩 |\n")
printf("|11.更改成绩12.删除单个成绩 13.删除全部成绩 14.修改密码 |\n")
printf("|0.退出 |\n")
printf("*——————————————————————————————————————*\n")
}
int input(double score[200])//输入数据
{
int p,q,i=1
printf("请输入学生人数\n")
scanf("%d"唯塌,&p)
for(q=0q<pq++)
{
printf("请输入第%d个人成绩\n",i)
scanf("%lf",&score[q])
i++
}
printf("输入完毕\n")
return p//返回总人数
}
void output(double score[200],int x)//顺序输出学生成绩
{
int i=0
if(x!=0)
while(i!=x)
{
printf("第%d个人的成绩为%lf\n",i+1,score[i])
i++
}
else
printf("数据为空,请先输入数据\n")//容错,当数组中没有数据时提示用户先输入数据
}
void max(double score[200],int x)//查询最大成绩
{
int m,n
double max
if(x!=0)
{
max=score[0]n=1
for(m=1m<xm++)//循环判断最大成绩与其所在位置,所在位置为下标加1
{
if(max<score[m])
{
max=score[m]
n=m+1
}
}
printf("最高成绩为%lf,是第%d个\n",max,n)
}
else printf("数据为空誉正,请先输入数据\n")//容错
}
void min(double score[200],int x)//查询最低成绩
{
int m,n
double min
if(x!=0)
{
min=score[0]n=1
for(m=1m<xm++)//循环判断最低成绩与其所在位置,所在位置为下标加1
{
if(min>score[m])
{
min=score[m]
n=m+1
}
}
printf("最低成绩为%lf,是第%d个\n",min,n)
}
else printf("数据为空,请先输入数据\n")//容错
}
void spe(double score[200],double m,int n)//查询特定成绩
{
int i,x=0
int location[200]
for(i=0i<ni++)//循环
if(score[i]==m)//判断是否为所查询的成绩
{
location[x]=i+1
x++
}
if(x!=0)
{
printf("您所查询的成绩为%lf,在以下位置出现\n",m)//输出所查询的成绩
for(i=0i<xi++)
printf("%d ",location[i])//输出所查询成绩的所在位置,此位置为下标加1
printf("\n")
}
else
printf("此成绩不存在\n")//容错,当所查询的成绩不存在是输出
}
void down(double score[200],int x)//降序排列
{
int m,n
double temp
if(x!=0)
{
for(m=0m<xm++)//选择排序,控制第一个数
for(n=m+1n<xn++)//选择排序,控制第二个数
if(score[m]<score[n])//判断,当后面的数比前面的小时两数交换位置
{
temp=score[m]
score[m]=score[n]
score[n]=temp
}
printf("降序排列为\n")
n=1
for(m=0m<xm++)//输出控制,每行只输出4个数
{
printf("%lf ",score[m])
n++
if(n==5)//输出控制,用于判断回车符的输出
{
n=1
printf("\n")
}
}
}
else printf("数据为空,请先输入数据\n")//容错
}
double ave(double score[200],int x)//输出总分与平均分
{
double sum=0,ave0
int i
if(x!=0)
{
for(i=0i<xi++)//累加求和,求出总分
sum=sum+score[i]
ave0=sum/x//求出平均分
printf("总成绩为%lf\n",sum)
return ave0
}
else
{
printf("数据为空,请先输入数据\n")//容错
return 0
}
}
void fil(double score[200],double w,int x)//输出小于特定分数的成绩所在位置,位置为下标加1
{
int i,m
int location[200]
for(i=0i<xi++)
if(score[i]<w)
{
location[m]=i+1
m++
}
if(m!=0)
{
printf("所查询的成绩在以下位置出现\n")
for(i=0i<mi++)
printf("%d ",location[i])
}
else
printf("此成绩不存在\n")
}
void sec(double score[200],int x)//成绩分段并输出各段人数与位置,位置为下标加1
{
int s,i=0,m=0,n=0,s80[200],s60[200],s0[200],f=1
if(x!=0)
{
for(s=0s<xs++)//循环判断各成绩所在段
{
if(score[s]>=80)
{
s80[i]=s+1
i++
}
else
if(score[s]>=60)
{
s60[m]=s+1
m++
}
if(score[s]<60)
{
s0[n]=s+1
n++
}
}
printf("80分至100分的人数为%d,在以下位置出现\n",i)//输出各段的人数
for(s=0s<is++)
{
printf("%d ",s80[s])
if(f==10)
{
printf("\n")
f=1
}
}
printf("\n60分至80分的人数为%d,在以下位置出现\n",m)
f=1
for(s=0s<ms++)
{
printf("%d ",s60[s])
if(f==10)
{
printf("\n")
f=1
}
}
printf("\n60分以下的人数为%d,在以下位置出现\n",n)
f=1
for(s=0s<ns++)
{
printf("%d ",s0[s])
if(f==10)
{
printf("\n")
f=1
}
}
}
else
printf("数据为空,请先输入数据\n")//容错
}
int add(double score[200],int x,double y,int z)
{
int i
for(i=zi>=xi--)
score[i]=score[i-1]
score[x-1]=y
printf("增加成功\n")
return 1
}
void rejigger(double score[200],int x,double y)
{
score[x-1]=y
printf("更改成功\n")
}
void del(double score[200],int x,int y)
{
int i
for(i=xi<yi++)
score[i-1]=score[i]
score[y]=0
}
int format(double score[200])
{
int i
char validate
printf("是否确认删除所有数据Y/N\n")
scanf("%c",&validate)
scanf("%c",&validate)
if(validate=='Y'||validate=='y')
{
for(i=0i<200i++)
score[i]=0
printf("删除成功\n")
return 1
}
else
{
printf("取消删除\n")
return 0
}
}
void main()
{
char password[16]="123456"//定义默认密码
double score[200],m,n,w,z
int choose,x=3,i,f,b=0,change=1,y
char *p,validate
double *a
int flag = 0
p = password
a=score
f=3i=0
while(f)//密码错误次数控制,当错误时重新输入,若连续错误3次则直接退出程序
{
i=login(password)
if(i)
{
x--
if(x>0)
printf("密码错误,请重新输入,您还有%d次机会\n",x)
else
{
printf("密码错误,程序自动退出\n")
exit(1)
}
f--//次数控制
continue
}
else//当密码输入正确时进入下一步
{
flag = 1
break
}
}
while(flag)//主循环,控制菜单的循环输出与程序的循环使用
{
display()//输出菜单
scanf("%d",&choose)//功能选择
switch(choose)//功能判断
{
case 1:b=input(score)break//输入成绩
case 2://顺序输出成绩
output(score,b)
break
case 3:max(score,b)break//输出最大值
case 4:min(score,b)break//输出最小值
case 5://查询特定成绩
if(b!=0)
{
printf("请输入要查询的成绩\n")
scanf("%lf",&m)
spe(score,m,b)
}
else
printf("数据为空,请先输入数据\n")
break
case 6:down(score,b)break//降序排列
case 7:n=ave(score,b)printf("平均成绩为%lf\n",n)break//输出总成绩与平均成绩
case 8://查询低于特定分数的成绩
if(b!=0)
{
printf("请输入分数\n")
scanf("%lf",&w)
fil(score,w,b)
}
else
printf("数据为空,请先输入数据\n")
break
case 9:sec(score,b)break//成绩分段
case 10:
if(b!=0)
{
printf("请输入要增加的成绩和所在位置\n")
scanf("%lf%d",&z,&y)
add(score,y,z,b)
b=b+1
}
else
printf("数据为空,请先输入数据\n")
break
case 11:
if(b!=0)
{
printf("请输入要修改的位置和修改后的成绩\n")
scanf("%d%lf",&y,&z)
rejigger(score,y,z)
}
else
printf("数据为空,请先输入数据\n")
break
case 12:
if(b!=0)
{
printf("请输入要删除的位置\n")
scanf("%d",&y)
del(score,y,b)
b=b-1
}
else
printf("数据为空,请先输入数字\n")
break
case 13:
y=format(score)
if(y==1) b=0
break
case 0:
printf("程序退出后所有数据将消失,确定退出程序?Y/N\n")
scanf("%c",&validate)
scanf("%c",&validate)
if(validate=='Y'||validate=='y') flag=0//退出
}
}
printf("谢谢使用\n")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)