您的位置:首页 > 编程语言 > C语言/C++

SCL-90心理测试系统(基于c语言)

2018-01-20 10:31 260 查看
此为部分

#include "stdafx.h"
#include<windows.h>
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include<ctype.h>
#include<time.h>
#include"testw.h"

int flag=0;/*全局变量以实现全过程中识别不同的登陆身份*/
char Num[100];     //文件名信息,一旦测试者登录就记录,在秘钥匹配中记录
char nUm[30];

/******************管理员区分 待开发***********************************************************************************************************************************************/
/*typedef struct laoshi{
char account[20];
char passwd[20];
} *laoshiz,laoshi;
*/

//565存放试题库数据
struct shiti
{
int num;
char timu[100];
char da[50];
char db[50];
char dc[50];
char dd[50];
char zd[4];
}st[200];

/*******************************************/
int load()/*加载数目*/
{
FILE *fp;
int i;
if((fp=fopen("E:\\心理健康机构\\试题库\\试卷一.txt","rb"))==NULL)
{
printf("\n打开文件出错\n");
}
for(i=0;!feof(fp);i++)
fread(&st,sizeof(struct shiti),1,fp);
fclose(fp);
return(i-1);
}

/***************************************************************************************************************************************************************/
void putsall()/*显示所有记录*/
{
int load();
FILE *fp;
int n,i;
n=load();
fp=fopen("E:\\心理健康机构\\试题库\\试卷一.txt","rb");
for(i=0;i<n;i++)
{   fread(&st[i],sizeof(struct shiti),1,fp);
printf("题目【%d】:%s\n【A】:%s\n【B】:%s\n【C】:%s\n【D】:%s\n【正确答案】%s\n",st[i].num,st[i].timu,st[i].da,st[i].db,st[i].dc,st[i].dd,st[i].zd);

}
fclose(fp);

}

/****************显示一条记录*************************************************************************************************************************************/
void xianshijilu(int i)
{
printf("题目【%d】:%s\n【A】:%s\n【B】:%s\n【C】:%s\n【D】:%s\n",st[i].num,st[i].timu,st[i].da,st[i].db,st[i].dc,st[i].dd);

}

/*****************选题并做题和系统判卷***********************************************************************************************************************************/
void xuanti()
{
system("cls");
void guanli();
void add();
void xianshijilu(<
22a0e
span class="hljs-keyword">int i);
int load();
int n,f,i,k,c;
char ch[4];
FILE *fp;
f=load();
if(f==0)
{
printf("\n\t\t目前试题库中无试题\n\t\t【1】添加。\n\t\t【2】退出\n");
scanf("%d",&c);
if(c==1)add();
else exit(0);
}
printf("\n您要选择[?]道题(请务必小于试题库中的题目数量--目前只有%d道)",f);
scanf("%d",&n);
system("cls");
fp=fopen("shitiku.dat","ab+");
for(i=0;i<n;i++)
{
fread(&st[i],sizeof(struct shiti),1,fp);
xianshijilu(i);
printf("请选择您第%d题的答案:",i+1);
scanf("%s",ch);
if(strcmp(ch,st[i].zd)==0)
printf("恭喜您答对了!");
else printf("很明显你答错了!");

}
printf("\n\t\t【1】继续做题\n\t\t【2】回主菜单以登录管理试题库\n");
scanf("%d",&k);
system("cls");
switch(k)
{
case 1:xuanti();break;
case 2:guanli();break;
default:printf("退出?");

}
fclose(fp);
}

/****************添加试题**************************************************************************************************************************************/
void add()
{
//void zhucaidan();
system("cls");
void guanli();
int i,n,k,j;
FILE *fp;
n=load();
if(flag==0)
{
printf("您不是教师不能添加试题!\n");

printf("\n正要返回测试首页………………………………………………………………\n");
system("cls");
zhucaidan();
}
a:  printf("\n目前试题库中有【%d】道题目!!!\n",n);
if((fp=fopen("shitiku.dat","ab"))==NULL)  printf("\n打开文件出错\n");
i=n+1;
printf("\n");
printf("请输入第%d道题信息:\n",i);
printf("\t\t\t【序号】:");scanf("%d",&st[i].num);
for(j=0;j<=n;j++)
{
if(st[i].num==st[j].num||st[i].num==0)
{printf("不能输入0序号的题目或已有此题号的题目了请重新添加!\n");
goto a;}

}
printf("\t\t\t【题目】:");scanf("%s",st[i].timu);
printf("\t\t\t【答案A】:");scanf("%s",st[i].da);
printf("\t\t\t【答案B】:");scanf("%s",st[i].db);
printf("\t\t\t【答案C】:");scanf("%s",st[i].dc);
printf("\t\t\t【答案D】:");scanf("%s",st[i].dd);
printf("\t\t\t【正确答案是:】:");scanf("%s",st[i].zd);//printf("\n");
system("cls");
printf("您添加的试题为:");
printf("\n\t\t【题目】:%s\n\t\t【答案A】:%s\n\t\t【答案B】:%s\n\t\t【答案C】:%s\n\t\t【答案D】:%s\n\t\t【正确答案是:】:%s\n",st[i].timu,st[i].da,st[i].db,st[i].dc,st[i].dd,st[i].zd);

if(fwrite(&st[i],sizeof(struct shiti),1,fp)==1)
printf("保存成功!\n");
fclose(fp);
printf("\t\t【1】继续添加\n\t\t【2】返回管理首页\n\t\t【3】后退\n");
scanf("%d",&k);
system("cls");
switch(k)
{
case 1:add();break;
case 3:guanli();break;
case 2:laoshicaidan();break;
default:default1();
}

}

/*************修改试题*******************************************************************************************************************************/
void modify()
{
void guanli();
int a,i,n,m,h,flag2=0;FILE *fp;static d;
W:  putsall();
n=load();
printf("\n\t\t请输入要修改的题目序号:\n");
fp=fopen("E:\\心理健康机构\\试题库\\试卷一.txt","rb+");
scanf("%d",&a);
for(i=0;i<n;i++)
{
if(a==st[i].num)
{
xianshijilu(i);
printf("\n【正确答案】:%s",st[i].zd);
d=i;
flag2=1;break;
}
else flag2=0;
}

if(flag2==1)
{
Q:
printf("\n\t\t请输入要修改的项目:\n\n");
printf("\t\t【1】题目\n");
printf("\t\t【2】A选项\n");
printf("\t\t【3】B选项\n");
printf("\t\t【4】C选项\n");
printf("\t\t【5】D选项\n");
printf("\t\t【6】正确答案\n");
fread(&st[d],sizeof(struct shiti),1,fp);
scanf("%d",&m);printf("测试出错地方语句%d",d);
st[d].num=d;
if(m==1)
{
printf("请输入修改后的题目:\n");
scanf("%s",st[d].timu);

}
else if(m==2)
{
printf("请输入修改后的A选项:\n");
scanf("%s",st[d].da);

}

else if(m==3)
{
printf("请输入修改后的B选项:\n");
scanf("%s",st[d].db);
}
else if(m==4)
{
printf("请输入修改后的C选项:\n");
scanf("%s",st[d].dc);
}
else if(m==5)
{
printf("请输入修改后的D选项:\n");
scanf("%s",st[d].dd);
}
else if(m==6)
{
printf("请输入修改后的正确答案:\n");
scanf("%s",st[d].zd);
}

fclose(fp);
fp=fopen("shitiku.dat","wb");
for(i=0;i<n;i++)
fwrite(&st[i],sizeof(struct shiti),1,fp);
fclose(fp);
printf("\n修改成功!\n");
printf("\n\t\t【1】继续修改本题\n\t\t【2】修改其他题目\n\t\t【3】返回管理主菜单\n\t\t【4】去做题\n\t\t");
scanf("%d",&h);
system("cls");
switch(h)
{case 1:goto Q;break;
case 2:goto W;break;
case 3:guanli();break;
case 4:xuanti();break;
}
}
else
{
printf("\n\t\t无此序号的题目!\n\t\t正在返回管理界面………………………\n");
guanli();
}
}

/*********删除试题的函数*********************************************************************************************************************************/

void del()
{
void guanli();
int a,n,i,k,j,c,ch;FILE *fp;FILE *fp1;int flag1=0;
n=load();
if(n==0)/*n=0的情况*/
{   system("cls");
printf("\n\t\t目前试题库中无试题");
Sleep(2000);
system("cls");
printf("\n\t\t【1】后退\n\t\t【2】退出\n");
scanf("%d",&c);
if(c==1)   guanli();
else if(c==1&&flag==0)printf("您不是教师不能添加试题!");
else exit(0);
}
else if(n==1)/*n=1的情况*/
{
putsall();
printf("\n\t\t只有一道题目按任意【数字键】删除\n\t\t【其他键】回到主菜单\n");
scanf("%d",&ch);
void zhucaidan();
if(ch>=0&&ch<=9)
{
fp=fopen("shitiku.dat","w");
fclose(fp);
fp=fopen("shitiku.dat","rb+");
fclose(fp);
printf("\n\t\t删除操作成功\n\t正在重新回到主菜单………………………\n");
zhucaidan();
}
else
{
printf("\n\t\t删除操作成功\n\t正在重新回到主菜单………………………\n");
system("cls");
zhucaidan();
}

}
else
{
putsall();
printf("\n\t请输入您要删除的题序号(谨慎操作不可恢复):\n");
scanf("%d",&a);
fp=fopen("shitiku.dat","rb");
for(i=0;i<n;i++)
{ if(a==st[i].num)
{     flag1=1;
break;}
}
if(flag1==0)
{
printf("\n\t无此题号的题目正在重新回到主菜单………………………\n");
guanli();
}
fclose(fp);

if(flag1==1)
{   fp=fopen("shitiku.dat","rb+");
if(a==st[n-1].num)
{
for(j=0;j<n-1;j++)
{
st[j].num=st[j].num;
strcpy(st[j].timu,st[j].timu);
strcpy(st[j].da,st[j].da);
strcpy(st[j].db,st[j].db);
strcpy(st[j].dc,st[j].dc);
strcpy(st[j].dd,st[j].dd);
strcpy(st[j].zd,st[j].zd);
}  fclose(fp);
fp1=fopen("shitiku.dat","wb");
for(i=0;i<n-1;i++)
fwrite(&st[i],sizeof(struct shiti),1,fp1);
fclose(fp1);
fp1=fopen("shitiku.dat","rb+");
fclose(fp1);
puts("\n删除操作成功!\n接下来您可以:\n");
printf("\t\t【1】继续删除试题\n\t\t【2】回主菜单\n\t\t【3】做题\n");
scanf("%d",&k);
system("cls");
switch(k)
{
case 1:del();break;
case 2:guanli();break;
case 3: xuanti();break;
}

}
else
{
for(i=0;i<n-1;i++)
{
if(a==st[i].num)

{    k=i;
for(j=k;j<n-1;j++)
{
st[j].num=st[j+1].num;
strcpy(st[j].timu,st[j+1].timu);
strcpy(st[j].da,st[j+1].da);
strcpy(st[j].db,st[j+1].db);
strcpy(st[j].dc,st[j+1].dc);
strcpy(st[j].dd,st[j+1].dd);
strcpy(st[j].zd,st[j+1].zd);
}

fclose(fp);
fp1=fopen("shitiku.dat","wb");
for(i=0;i<n-1;i++)
fwrite(&st[i],sizeof(struct shiti),1,fp1);
fclose(fp1);
puts("\n删除操作成功!\n接下来您可以:\n");
printf("\t\t【1】继续删除试题\n\t\t【2】回主菜单\n\t\t【3】做题\n");
scanf("%d",&k);
system("cls");
switch(k)
{
case 1:del();break;
case 2:guanli();break;
case 3: xuanti();break;
}
}/*if语句的括号*/

}/*for循环的括号*/

}/*else的括号*/
}/*if(flag1==1)的括号*/
}/*整个else(n不等于0跟1的情况)的括号*/
}/*整个删除数据函数的括号*/
/***********************************题库管理的主菜单**********************************************************************************************************/
void guanli()
{
int n;
system("cls");
printf("\n\t\t【1】增加\n\t\t【2】删除\n\t\t【3】修改\n\t\t【4】后退");
scanf("%d",&n);
switch(n)
{case 1:add();break;
case 2:del();break;
case 3:modify();break;
case 4:shijuanguanli(); break;
default:exit(0);
}
}

/*****************测试者首页********************************************************************************************************************************************/

void xueshengcaidan()
{
int c;

//xuanti();
system("cls");
printf("【1】修改个人信息\n【2】进行测试\n【3】查询成绩");
printf("\n");
scanf("%d",&c);
switch(c)
{ case 1: Change(); break;
case 2:jinxingceshi(); break;
case 3:chaxunchengji(); break;
default:default1();
}
}

/*******************************************************************************************************************************************************************/
void chaxunchengji()
{   system("cls");
int time[4];
printf("请输入您想查找的时间:");
scanf("%d %d %d %d",&time[0],&time[1],&time[2],&time[3]);
FILE *fp;
fp=fopen(Num,"r");
ceji t;
stu s;
fenxi v;
int f,e;
int i,p;
fread(&s,sizeof(stu),1,fp);
while(!feof(fp))
{
fread(&t,sizeof(ceji),1,fp);
if(time[0]==t.time[0]&&time[1]==t.time[1]&&time[2]==t.time[2]&&time[3]==t.time[3] )
{
// j++;
//p==1;
for(i=1;i<91;i++)
printf("%d ",t.grade[i]);
while(!feof(fp))
{
fread(&v,sizeof(fenxi),1,fp);
printf("\n测评总分为:%f\n总均分为%f\n阳性数目数为%f\n阴性项目数:%f\n阳性症状均分:%f\n\n\n",v.Grade[0],v.Grade[1],v.Grade[2],v.Grade[3],v.Grade[4]);
break;
}
if(v.Grade[0]>=160||v.Grade[2]>=43||e==1)
{
printf("您的测评结果为阳性,建议您做进一步阳性筛查。\n");

}
printf("\n\n\t【1】查看详细结果\n\t【0】后退\n");
scanf("%d",&f);
if(f==1)
{
printf("躯体化因子分为:%d\n该因子主要反映身体不适感,包括心血管、胃肠道、呼吸和其他系统的主诉不适,和头痛、背痛、肌肉酸痛,以及焦虑的其他躯体表现。\n",v.factor[1]);
printf("强迫症状因子分为:%d\n该因子主要指那些明知没有必要,但又无法摆脱的无意义的思想、冲动和行为;还有一些比较一般的认知障碍的行为征象也在这一因子中反映。\n",v.factor[2]);
printf("人际关系敏感因子分为:%d\n该因子主要指某些个人不自在与自卑感,特别是与其他人相比较时更加突出。在人际交往中的自卑感,心神不安,明显不自在,以及人际交流中的自我意识,消极的期待亦是这方面症状的典型原因。\n",v.factor[3]);
printf("抑郁因子分为:%d\n苦闷的情感与心境为代表性症状,还以生活兴趣的减退,动力缺乏,活力丧失等为特征。以反映失望,悲观以及与抑郁相联系的认知和躯体方面的感受。另外,还包括有关死亡的思想和自杀观念。\n",v.factor[4]);
printf("焦虑因子分为:%d\n该因子-般指那些烦燥,坐立不安,神经过敏,紧张以及由此产生的躯体征象,如震颤等。测定游离不定的焦虑及惊恐发作是本因子的主要内容,还包括一项解体感受的项目。\n",v.factor[5]);
printf("敌对因子分为:%d\n该因子主要从三个方面来反映敌对的表现:思想,感情及行为。其项目包括厌烦的感觉,摔物,争论直到不可控制的脾气暴发等各方面。\n",v.factor[6]);
printf("恐怖因子分为:%d\n恐惧的对象包括出门旅行,空旷场地,人群,或公共场所和交通工具。此外,还有反映社交恐怖的一些项目。\n",v.factor[7]);
printf("偏执因子分为:%d\n本因子是围绕偏执性思维的基本特征而制订:主要指投射性思维,敌对,猜疑,关系观念,妄想,被动体验和夸大等。\n",v.factor[8]);
printf("精神病性因子分为:%d\n该因子反映各式各样的急性症状和行为,有代表性地视为较隐讳,限定不严的精神病性过程的指征。此外,也可以反映精神病性行为的继发征兆和分裂性生活方式的指征。\n",v.factor[9]);

}
else   xueshengcaidan();break;
}
else {printf("无此次考试成绩!");  break;}
}
printf("\t【1】后退\n\t【2】退出系统\n");
scanf("%d",&p);
switch(p)
{
case 1:xueshengcaidan();break;
case 2:zhucaidan();break;
}
}

/*******************测试者身份核实************************************************************************************************************************************/
void check2()
{
system("cls");
char a[10];
printf("请输入学号:");
scanf("%s",a);
FILE *fp;
char w[100]="E:\\心理健康机构\\测试者信息\\";
strcat(w,a);
strcat(w,".txt");
fp=fopen(w,"ab+");
stu s;
fread(&s,sizeof(stu),1,fp);
system("cls");
if (strcmp(a,s.num)!=0)
{
printf("不存在此用户!");
Sleep(2000);
system("cls");
printf("  正在返回主菜单.............................................");
Sleep(2000);
system("cls");
zhucaidan() ;
}

char str21[20];
printf("请输入密码:");
scanf("%s",str21);
system("cls");
if (strcmp(str21,s.passwd)==0)

{
flag=0;                   //确认身份
printf("密码正确√");
strcpy(Num,w);       //保持
strcpy(nUm,a);
Sleep(3000);
system("cls");
xueshengcaidan();
}
else {
printf("密码错误!");
Sleep(1000);
system("cls");
printf("  正在返回主菜单.............................................");
Sleep(3000);
system("cls");
zhucaidan() ;}
}

/******管理员秘钥匹配(核实密码)*************************************************************************************************************************************/

void check1()
{

system("cls");
char str11[10],str12[10]="123";
printf("请输入密码:");
scanf("%s",str11);
system("cls");
if (strcmp(str11,str12)==0)

{
flag=1;
printf("密码正确√");
Sleep(3000);
system("cls");
laoshicaidan();

}
else {
printf("密码错误!");
Sleep(1000);
system("cls");
printf("  正在返回主菜单.............................................");
Sleep(3000);
system("cls");
zhucaidan() ;}
}

/************管理者首页*******************************************************************************************************************************************/
void laoshicaidan()
{
int ch2;
system("cls");
printf("\n\n\t\t        【1】试卷管理\n\t\t        【2】测试者管理\n\t\t        【3】退出管理\n\t\t");
printf("\n\t\t填框: ");
scanf("%d",&ch2);
switch(ch2)
{ case 1:shijuanguanli();break;
case 2:ceshizheguanli();break;
case 3:system("cls"); zhucaidan();break;
default:default2();
}
}
/***************试卷管理**************************************************************************************************************************************/

void shijuanguanli()
{
int c;
system("cls");
printf("\n\t\t 【1】题库管理\n\t\t 【2】做题并查看质量和修改\n\t\t 【3】后退\n\t\t");
printf("填框: ");
scanf("%d",&c);
switch(c)
{ case 1:guanli();break;
case 2:xuanti();break;
case 3:laoshicaidan();break;
default:exit(0);
}
}

/***********测试者管理*********************************************************************************************************************************************/

void ceshizheguanli()
{
int c;
system("cls");
printf("\n\t\t 【1】查看测试者基本信息\n\t\t 【2】管理测试者基本信息\n\t\t 【3】查看成绩 \n\t\t 【4】后退\n\t\t");
printf("\n填框: ");
scanf("%d",&c);
switch(c)
{ case 1:ceshizhejibenxinxi();break;
case 2:guanliceshizhe();break;
case 3:guanliyuanchakanchenhji();break;
case 4:laoshicaidan();break;
default:exit(0);
}
}

/************测试者基本信息************************************************************************************************************************************/
void ceshizhejibenxinxi()
{   system("cls");
stu s;
int f;
FILE *fp;
fp=fopen("E:\\心理健康机构\\测试者信息\\总信息.txt","ab+");
while(1)
{
fread(&s,sizeof(stu),1,fp);
if(feof(fp))
break;
printf("状态:%d 学号:%s姓名:%s班级:%个人电话:%s班主任:%s班主任电话:%s\n",s.exit ,s.num,s.name,s.classg,s.stuphone,s.teaName,s.teaphone);
}
printf("\n\t\t【1】返回上一层\n\t\t【2】退出管理\n\t");
scanf("%d",&f);
switch(f)
{
case 1:ceshizheguanli();break;
case 2:zhucaidan();break;
}
}

/****************管理测试者*********************************************************************************************************************************/

void guanliceshizhe()
{
int c;
system("cls");
printf("\n\t\t【1】删除用户记录\n\t\t【2】修改用户信息\n\t\t【3】增加用户\n\t\t【4】后退\n\t\t");
printf("填框: ");
scanf("%d",&c);
switch(c)
{
case 1:Delete();break;
case 2:Change();break;
case 3:zhuce();break;
case 4:ceshizheguanli();break;
default:exit(0);
}
}

/*******查看成绩**********************************************************************************************************************************************/
void guanliyuanchakanchenhji()
{   system("cls");
int time[4];
char a[30];
int p;
printf("请输入想要找的学号:");
scanf("%s",a);
FILE *fp;
char w[100]="E:\\心理健康机构\\测试者信息\\";
strcat(w,a);
strcat(w,".txt");
fp=fopen(w,"r");

printf("【1】不安时间查\n【2】按时间查");
scanf("%d",&p);
if(p==1)
{  ceji t;
stu s;
fenxi v;
int f,e;
int i,p;
fread(&s,sizeof(stu),1,fp);
while(!feof(fp))
{
fread(&t,sizeof(ceji),1,fp);

// j++;
//p==1;
for(i=1;i<91;i++)
printf("%d ",t.grade[i]);
while(!feof(fp))
{
fread(&v,sizeof(fenxi),1,fp);
printf("\n测评总分为:%f\n总均分为均分为%f\n阳性数目数为%f\n阴性项目数:%f\n阳性症状均分:%f\n\n\n",v.Grade[0],v.Grade[1],v.Grade[2],v.Grade[3],v.Grade[4]);
break;
}
if(v.Grade[0]>=160||v.Grade[2]>=43||e==1)
{
printf("您的测评结果为阳性,建议您做进一步阳性筛查。\n");

}
printf("\n\n\t【1】查看详细结果\n\t【0】后退\n");
scanf("%d",&f);
if(f==1)
{
printf("\n\n\n\n躯体化因子分为:%d\n该因子主要反映身体不适感,包括心血管、胃肠道、呼吸和其他系统的主诉不适,和头痛、背痛、肌肉酸痛,以及焦虑的其他躯体表现。\n",v.factor[1]);
printf("强迫症状因子分为:%d\n该因子主要指那些明知没有必要,但又无法摆脱的无意义的思想、冲动和行为;还有一些比较一般的认知障碍的行为征象也在这一因子中反映。\n",v.factor[2]);
printf("人际关系敏感因子分为:%d\n该因子主要指某些个人不自在与自卑感,特别是与其他人相比较时更加突出。在人际交往中的自卑感,心神不安,明显不自在,以及人际交流中的自我意识,消极的期待亦是这方面症状的典型原因。\n",v.factor[3]);
printf("抑郁因子分为:%d\n苦闷的情感与心境为代表性症状,还以生活兴趣的减退,动力缺乏,活力丧失等为特征。以反映失望,悲观以及与抑郁相联系的认知和躯体方面的感受。另外,还包括有关死亡的思想和自杀观念。\n",v.factor[4]);
printf("焦虑因子分为:%d\n该因子-般指那些烦燥,坐立不安,神经过敏,紧张以及由此产生的躯体征象,如震颤等。测定游离不定的焦虑及惊恐发作是本因子的主要内容,还包括一项解体感受的项目。\n",v.factor[5]);
printf("敌对因子分为:%d\n该因子主要从三个方面来反映敌对的表现:思想,感情及行为。其项目包括厌烦的感觉,摔物,争论直到不可控制的脾气暴发等各方面。\n",v.factor[6]);
printf("恐怖因子分为:%d\n恐惧的对象包括出门旅行,空旷场地,人群,或公共场所和交通工具。此外,还有反映社交恐怖的一些项目。\n",v.factor[7]);
printf("偏执因子分为:%d\n本因子是围绕偏执性思维的基本特征而制订:主要指投射性思维,敌对,猜疑,关系观念,妄想,被动体验和夸大等。\n",v.factor[8]);
printf("精神病性因子分为:%d\n该因子反映各式各样的急性症状和行为,有代表性地视为较隐讳,限定不严的精神病性过程的指征。此外,也可以反映精神病性行为的继发征兆和分裂性生活方式的指征。\n",v.factor[9]);

}
else  ceshizheguanli();//break;
}
}

if(p==2)
{
printf("请输入您想查找的时间:");
scanf("%d %d %d %d",&time[0],&time[1],&time[2],&time[3]);
ceji t;
stu s;
fenxi v;
int f,e;
int i,p;
fread(&s,sizeof(stu),1,fp);
while(!feof(fp))
{
fread(&t,sizeof(ceji),1,fp);
if(time[0]==t.time[0]&&time[1]==t.time[1]&&time[2]==t.time[2]&&time[3]==t.time[3] )
{
// j++;
//p==1;
for(i=1;i<91;i++)
printf("%d ",t.grade[i]);
while(!feof(fp))
{
fread(&v,sizeof(fenxi),1,fp);
printf("\n测评总分为:%f\n总均分为%f\n阳性数目数为%f\n阴性项目数:%f\n阳性症状均分:%f\n\n\n",v.Grade[0],v.Grade[1],v.Grade[2],v.Grade[3],v.Grade[4]);
break;
}
if(v.Grade[0]>=160||v.Grade[2]>=43||e==1)
{
printf("您的测评结果为阳性,建议您做进一步阳性筛查。\n");

}
printf("\n\n\t【1】查看详细结果\n\t【0】后退\n");
scanf("%d",&f);
if(f==1)
{
printf("\n\n\n\n躯体化因子分为:%d\n该因子主要反映身体不适感,包括心血管、胃肠道、呼吸和其他系统的主诉不适,和头痛、背痛、肌肉酸痛,以及焦虑的其他躯体表现。\n",v.factor[1]);
printf("强迫症状因子分为:%d\n该因子主要指那些明知没有必要,但又无法摆脱的无意义的思想、冲动和行为;还有一些比较一般的认知障碍的行为征象也在这一因子中反映。\n",v.factor[2]);
printf("人际关系敏感因子分为:%d\n该因子主要指某些个人不自在与自卑感,特别是与其他人相比较时更加突出。在人际交往中的自卑感,心神不安,明显不自在,以及人际交流中的自我意识,消极的期待亦是这方面症状的典型原因。\n",v.factor[3]);
printf("抑郁因子分为:%d\n苦闷的情感与心境为代表性症状,还以生活兴趣的减退,动力缺乏,活力丧失等为特征。以反映失望,悲观以及与抑郁相联系的认知和躯体方面的感受。另外,还包括有关死亡的思想和自杀观念。\n",v.factor[4]);
printf("焦虑因子分为:%d\n该因子-般指那些烦燥,坐立不安,神经过敏,紧张以及由此产生的躯体征象,如震颤等。测定游离不定的焦虑及惊恐发作是本因子的主要内容,还包括一项解体感受的项目。\n",v.factor[5]);
printf("敌对因子分为:%d\n该因子主要从三个方面来反映敌对的表现:思想,感情及行为。其项目包括厌烦的感觉,摔物,争论直到不可控制的脾气暴发等各方面。\n",v.factor[6]);
printf("恐怖因子分为:%d\n恐惧的对象包括出门旅行,空旷场地,人群,或公共场所和交通工具。此外,还有反映社交恐怖的一些项目。\n",v.factor[7]);
printf("偏执因子分为:%d\n本因子是围绕偏执性思维的基本特征而制订:主要指投射性思维,敌对,猜疑,关系观念,妄想,被动体验和夸大等。\n",v.factor[8]);
printf("精神病性因子分为:%d\n该因子反映各式各样的急性症状和行为,有代表性地视为较隐讳,限定不严的精神病性过程的指征。此外,也可以反映精神病性行为的继发征兆和分裂性生活方式的指征。\n",v.factor[9]);

}
else  ceshizheguanli();break;
}
else {printf("无此次考试成绩!");  break;}
}
printf("\t【1】后退\n\t【2】退出系统\n");
scanf("%d",&p);
switch(p)
{
case 1:ceshizheguanli();break;
case 2:zhucaidan();break;
}
}//if(p==2)
}

/************录入成绩**************************************************************************************************************************/

void chankanchengji(ceji t)
{
FILE *fp,*fa;
fp=fopen("E:\\心理健康机构\\结果分析\\分析.txt","ab+");
fa=fopen(Num,"ab+");
int i=0,e=0,f=0;
fenxi v;
for(i=0;i<10;i++)
v.factor[i]=0;
for(i=0;i<5;i++)
v.Grade [i]=0;
for(i=1;i<91;i++)
{
v.Grade[0]+=t.grade[i];
if(t.grade[i]>=2)
v.Grade [2]++;
else
v.Grade [3]++;
if(i==1||i==4||i==12||i==27||i==40||i==42||i==48||i==49||i==52||i==53||i==56||i==58)
v.factor[1]+=t.grade[i];
else if(i==3||i==9||i==10||i==28||i==38||i==45||i==46||i==51||i==55||i==65)
v.factor[2]+=t.grade[i];
else if(i==6||i==21||i==34||i==36||i==37||i==41||i==61||i==69||i==73)
v.factor[3]+=t.grade[i];
else if(i==5||i==14||i==15||i==20||i==22||i==26||i==29||i==30||i==3l||i==32||i==54||i==7l||i==79)
v.factor[4]+=t.grade[i];
else if(i==2||i==17||i==23||i==33||i==39||i==57||i==72||i==78||i==80||i==86)
v.factor[5]+=t.grade[i];
else if(i==11||i==24||i==63||i==67||i==74||i==8l)
v.factor[6]+=t.grade[i];
else if(i==13||i==25||i==47||i==50||i==70||i==75||i==82)
v.factor[7]+=t.grade[i];
else if(i==8||i==18||i==43||i==68||i==76||i==83)
v.factor[8]+=t.grade[i];
else if(i==7||i==16||i==35||i==62||i==77||i==84||i==85||i==87||i==88||i==90)
v.factor[9]+=t.grade[i];
else
v.factor[0]+=t.grade[i];
}

v.Grade [1]=v.Grade[0]/90;
v.Grade [4]=(v.Grade[0]-v.Grade [3])/v.Grade [2];
v.factor[0]=v.factor[0]/7;
v.factor[1]=v.factor[1]/12;
v.factor[2]=v.factor[2]/10;
v.factor[3]=v.factor[3]/9;
v.factor[4]=v.factor[4]/13;
v.factor[5]=v.factor[5]/10;
v.factor[6]=v.factor[6]/6;
v.factor[7]=v.factor[7]/7;
v.factor[8]=v.factor[8]/6;
v.factor[9]=v.factor[9]/10;
fwrite(&v,sizeof(fenxi),1,fa);
fwrite(&v,sizeof(fenxi),1,fp);
fclose(fa);
fclose(fp);
printf("测评总分为:%f\t\t\n总均分为:%f\t\t\n阳性数目数为%f\t\t\n阴性项目数:%f\t\t\n阳性症状均分:%f\n\t\t",v.Grade[0],v.Grade[1],v.Grade[2],v.Grade[3],v.Grade[4]);
for(i=0;i<10;i++)
{if(v.factor[i]>2)
e=1;
}
if(v.Grade[0]>=160||v.Grade[2]>=43||e==1)
{
printf("您的测评结果为阳性,建议您做进一步阳性筛查。\n");

}
printf("\n\t【1】查看详细结果\n\t【2】退出系统\n");
scanf("%d",&f);
if(f==1)
{
printf("躯体化因子分为:%d\n该因子主要反映身体不适感,包括心血管、胃肠道、呼吸和其他系统的主诉不适,和头痛、背痛、肌肉酸痛,以及焦虑的其他躯体表现。\n",v.factor[1]);
printf("强迫症状因子分为:%d\n该因子主要指那些明知没有必要,但又无法摆脱的无意义的思想、冲动和行为;还有一些比较一般的认知障碍的行为征象也在这一因子中反映。\n",v.factor[2]);
printf("人际关系敏感因子分为:%d\n该因子主要指某些个人不自在与自卑感,特别是与其他人相比较时更加突出。在人际交往中的自卑感,心神不安,明显不自在,以及人际交流中的自我意识,消极的期待亦是这方面症状的典型原因。\n",v.factor[3]);
printf("抑郁因子分为:%d\n苦闷的情感与心境为代表性症状,还以生活兴趣的减退,动力缺乏,活力丧失等为特征。以反映失望,悲观以及与抑郁相联系的认知和躯体方面的感受。另外,还包括有关死亡的思想和自杀观念。\n",v.factor[4]);
printf("焦虑因子分为:%d\n该因子-般指那些烦燥,坐立不安,神经过敏,紧张以及由此产生的躯体征象,如震颤等。测定游离不定的焦虑及惊恐发作是本因子的主要内容,还包括一项解体感受的项目。\n",v.factor[5]);
printf("敌对因子分为:%d\n该因子主要从三个方面来反映敌对的表现:思想,感情及行为。其项目包括厌烦的感觉,摔物,争论直到不可控制的脾气暴发等各方面。\n",v.factor[6]);
printf("恐怖因子分为:%d\n恐惧的对象包括出门旅行,空旷场地,人群,或公共场所和交通工具。此外,还有反映社交恐怖的一些项目。\n",v.factor[7]);
printf("偏执因子分为:%d\n本因子是围绕偏执性思维的基本特征而制订:主要指投射性思维,敌对,猜疑,关系观念,妄想,被动体验和夸大等。\n",v.factor[8]);
printf("精神病性因子分为:%d\n该因子反映各式各样的急性症状和行为,有代表性地视为较隐讳,限定不严的精神病性过程的指征。此外,也可以反映精神病性行为的继发征兆和分裂性生活方式的指征。\n",v.factor[9]);
printf("\n\t\t【1】返回上一层\n\t\t【2】退出系统\n\t");
scanf("%d",&f);
switch(f)
{
case 1:xueshengcaidan();break;
case 2:zhucaidan();break;
}
}
else zhucaidan();

}

/*************************************主菜单********************************************************************************************************************/
void zhucaidan()
{
int c;

system ("color 1E");
printf("              ***************************************************\n");
printf("\t\t            欢迎来到心理健康测试系统\n\n");
printf("\t\t                测试者登录请按【1】\n                         \t管理员登录请按【2】\n\t\t\t        新用户注册请按【3】\n\t\t\t        关闭测试系统按【4】\n\t\t");
printf("填框: ");
scanf("%d",&c);
//system("cls");
switch(c)
{
case 1:check2();break;
case 2: check1();break;
case 4: close();break;
case 3: zhuce();break;
default:default1();
}

}

/******************************************************************************************************************************************************************/

/*

*/

/*

*/

/********系统关闭提醒*************************************************************************************************************************************************/

void close()
{
system("cls");
printf("系统关闭!");
Sleep(2);
printf("\n");
}

/******错误选择按钮**************************************************************************************************************************************************/

void default1()
{    system("cls");
printf("无此操作!");
Sleep(1000);
system("cls");
zhucaidan() ;

}

/************错误选择按钮*************************************************************************************************************************************/
void default2()
{    system("cls");
printf("无此操作!");
Sleep(1000);
system("cls");
laoshicaidan();

}

/*****************************************待开发**************************************************************************************************************************

//随机数组题take_tests.c
# include "my_head.h"
void take_tests()                            //随机数组题
{
static int n, l, m, c, L;
int g;
srand( (unsigned)time( NULL ) );         //产生不同的随机数
system("cls");
printf ("请输入需要几套试卷:");
n = scanf("%d",&g);
if (i <= 10)
{
printf ("题目不足!\n回车键返回……");
getchar();
return ;
}
for (j = 1; j <= n; j ++)
{
L = 1;
do
{
m = 0;
c = rand()%i + 1;                 //生成随机数
for(l = 1; l < L; l ++)
{
if(c == ts[j][l])
m ++;
}
if(m == 0)
{
ts[j][L] = c;
L++;
}
}while(L != 11);
}
j -= 1;
printf ("\n已生成%d套试卷!\n回车键返回……",n);
getchar();
return ;
}

/******************删除用户**********************************************************************************************************************************************/
void  Delete()
{
system("cls");
char a[10];
stu s;
printf("请输入学号:");
scanf("%s",a);
FILE *fp;
char w[100]="E:\\心理健康机构\\测试者信息\\";
strcat(w,a);
strcat(w,".txt");
fp=fopen(w,"ab+");
fread(&s,sizeof(stu),1,fp);
system("cls");
if (strcmp(a,s.num)!=0)
{
printf("不存在此用户!");
fclose(fp);
remove(w);
Sleep(2000);
system("cls");
guanliceshizhe();
}
else
{

fclose(fp);
remove(w);//unlink(w);删除单个文件

system("cls");
printf("删除成功!");
Sleep(3000);
system("cls");
guanliceshizhe();
}
}

/***********考试函数********************************************************************************************************************************************************/
void  jinxingceshi()
{
system("cls");
char qidong;
int Sa;
char q;
FILE *fb,*fa;
fa=fopen(Num,"ab+");
fb=fopen("E:\\心理健康机构\\试题库\\题.txt","r");
char s[100];
int count=1;
ceji a;
int i;
for(i=0;i<91;i++)
a.grade[i]=0;
time_t t;
struct tm *lt;
time (&t);// linux获取时间戳。
lt = localtime (&t);    //转化
a.time[0]= lt->tm_year+1900;
a.time[1]=lt->tm_mon+1;
a.time[2]=lt->tm_mday;
a.time[3]=lt->tm_hour;
printf("请根据程度用下面序号作答!\n\n");
printf("程度分五等,分别如下:\n\n");
printf("1-没有、2-很轻、3-中等、4-偏重、5-严重\n\n") ;
printf("请按空格键开始测试!\n");
while(1)
{
qidong=getchar();
if(qidong==' ')
break;
}

system("cls");
printf("测试即将开始!");
Sleep(3000);
system("cls");
while(!feof(fb))
{
fscanf(fb,"%s",s);
printf("\t%s\n",s);
printf("填框:");
scanf("%d",&a.grade[count] );
a.grade[0]+=a.grade[count];
count++;
system("cls");
}
printf("测试结束!");
fwrite(&a,sizeof(ceji),1,fa);
fclose(fa);
fclose(fb);
Sleep(2000);
system("cls");
chankanchengji(a);
printf("正在返回上一层!");
Sleep(3000);
system("cls");
xueshengcaidan();
}

/*********************************************************************************************************************************************************/
void  Change()
{      system("cls");
FILE *fp1,*fp2,*fa,*fb;
char reset[10];
char change[20];
char a[10];
char w[100]="E:\\心理健康机构\\测试者信息\\";
if(flag==1)
{
printf("请输入想要修改的用户账号:");
scanf("%s",a);
strcat(w,a);
strcat(w,".txt");
fp1=fopen(w,"ab+");
}
else   fp1=fopen(Num,"ab+");
fa=fopen("E:\\心理健康机构\\测试者信息\\单修改.txt","ab+");
stu s;
ceji t;
fread(&s,sizeof(stu),1,fp1);
printf("请输入您想要修改的信息:");
scanf("%s",reset);
printf("请输入您所修改的信息值:");
scanf("%s",change);
system("cls");
fread(&s,sizeof(stu),1,fp1);
if(!strcmp(reset,"姓名"))
strcpy( s.name ,change);
else if(!strcmp(reset,"班级"))
strcpy(s.classg ,change);
else if(!strcmp(reset,"性别"))
strcpy(s.xb  ,change);
else if(!strcmp(reset,"电话"))
strcpy( s.stuphone ,change);
else if(!strcmp(reset,"班主任姓名"))
strcpy(s.teaName ,change);
else if(!strcmp(reset,"班主任联系方式"))
strcpy(s.teaphone  ,change);
fwrite(&s,sizeof(stu),1,fa);
while(1)
{
fread(&t,sizeof(ceji),1,fp1);
if(feof(fp1))  break;
fwrite(&t,sizeof(ceji),1,fa);
}
fclose(fa);
fclose(fp1);
if(flag==1)
remove(w);
else remove(Num);

fp1=fopen(w,"ab+");
fa=fopen("E:\\心理健康机构\\测试者信息\\单修改.txt","ab+");
fread(&s,sizeof(stu),1,fa);
fwrite(&s,sizeof(stu),1,fp1);
while(1)
{
fread(&t,sizeof(ceji),1,fa);
if(feof(fa))  break;
fwrite(&t,sizeof(ceji),1,fp1);
}
fclose(fa);
fclose(fp1);
remove("E:\\心理健康机构\\测试者信息\\单修改.txt");
fp2=fopen("E:\\心理健康机构\\测试者信息\\总信息.txt","ab+");
fb=fopen("E:\\心理健康机构\\测试者信息\\总修改.txt","ab+");
while(1){
fread(&s,sizeof(stu),1,fp2);
if(feof(fp2))  break;
if(!strcmp( s.num,a))
{  if(!strcmp(reset,"姓名"))  //姓名  班级  性别  电话  班主任姓名  班主任联系方式
strcpy( s.name ,change);
else if(!strcmp(reset,"班级"))
strcpy(s.classg ,change);
else if(!strcmp(reset,"性别"))
strcpy(s.xb  ,change);
else if(!strcmp(reset,"电话"))
strcpy( s.stuphone,change);
else if(!strcmp(reset,"班主任姓名"))
strcpy(s.teaName  ,change);
else if(!strcmp(reset,"班主任联系方式"))
strcpy(s.teaphone  ,change);
}

fwrite(&s,sizeof(stu),1,fb);
}
fclose(fb);
fclose(fp2);
remove("E:\\心理健康机构\\测试者信息\\总信息.txt");
fp2=fopen("E:\\心理健康机构\\测试者信息\\总信息.txt","ab+");
fb=fopen("E:\\心理健康机构\\测试者信息\\总修改.txt","ab+");
while(1){
fread(&s,sizeof(stu),1,fb);
if(feof(fb))  break;
fwrite(&s,sizeof(stu),1,fp2);
}
fclose(fb);
fclose(fp2);
remove("E:\\心理健康机构\\测试者信息\\总修改.txt");
printf("修改完成!");
Sleep(4000);
system("cls");
printf("正在返回上一层!");
Sleep(3000);
system("cls");
guanliceshizhe();
}

/****************测试者注册注册注册***************************************************************************************************************************************/

void zhuce()
{
system("cls");
FILE *fp,*fb;
printf("请输入学号:");
char a[10];
stu s;

while(1)
{   scanf("%s",a);
char w[100]="E:\\心理健康机构\\测试者信息\\";
strcat(w,a);
strcat(w,".txt");
fp=fopen(w,"ab+");
fread(&s,sizeof(stu),1,fp);
system("cls");

if(strlen(a)==10)
{
if (strcmp(a,s.num)==0)
{
printf("存在此用户!");
Sleep(3000);
system("cls");
printf("请重新输入!");
Sleep(2000);
system("cls");
printf("请输入学号:");
}
else
{
strcpy(s.num,a);
break;
}
}
else
{
printf("输入的学号位数错误,请重新输入:");
Sleep(2000);
system("cls");
printf("请输入学号:");
}
}
s.exit=1;               //存在
printf("请输入密码:");
scanf("%s",s.passwd );
printf("请输入姓名:");
scanf("%s",s.name);
printf("请输入班级:");
scanf("%s",s.classg);
printf("请输入性别:");
scanf("%s",s.xb);
printf("请输入电话:");
scanf("%s",s.stuphone);
printf("请输入班主任姓名:");
scanf("%s",s.teaName);
printf("请输入班主任联系方式:");
scanf("%s",s.teaphone);
char w[100]="E:\\心理健康机构\\测试者信息\\";
strcat(w,s.num);
strcat(w,".txt");
fp=fopen(w,"ab+");
fb=fopen("E:\\心理健康机构\\测试者信息\\总信息.txt","ab+");
fwrite(&s,sizeof(stu),1,fp);
fwrite(&s,sizeof(stu),1,fb);
fclose(fp);
fclose(fb);
system("cls");
if(flag==1)
{
printf("添加成功!");
Sleep(3000);
system("cls");
guanliceshizhe();
}
else
{
printf("恭喜您注册成功!");
Sleep(3000);
system("cls");
zhucaidan();
}
}

/*************************************主菜单**********************************************************************************************************/

void main()/*主函数*/
{
// zhucaidan();
//介绍
MessageBox (NULL,TEXT("\t为什么要有课设呀!\n\t真是的!这课设有用吗???\n"), TEXT("内心独白"),MB_ICONQUESTION|MB_YESNO);//注:图标在前,按钮在后。中间用"|"分割。
MessageBox (NULL,TEXT(" \t答案毋庸置疑,是肯定的! "), TEXT("内心独白"),MB_YESNO);
MessageBox (NULL,TEXT("重点来了,请注意! "), TEXT("重点"),MB_ICONWARNING   );
MessageBox (NULL,TEXT("\t本系统由TFboy工作室制作\n\t版权所有, 侵权必究\n\t侵权举报电话:13700501421(翟先生)"), TEXT("版权声明"),MB_OK);//只有OK
MessageBox (NULL,TEXT("欢迎使用此测试系统"), TEXT("欢迎"),MB_ICONWARNING );
/*
按钮参数:
MB_OK                 有一个"确定"在框里面
MB_YESNO              有"是"和"否"在里面
MB_ABORTRETRYIGNORE   有Abort(放弃),Retry(重试)和Ignore(跳过)在里面
MB_YESNOCANCEL        有"是"和"否"和"取消"在里面
MB_RETRYCANCEL        有"重试"和"取消" 在里面
MB_OKCANCEL           有"确定"和"取消"在里面
返回值:
按下的按钮       返回的值
确定                1
取消                2
放弃                3
重试                4
跳过                5
是                  6
否                  7
*/

/*
图标:
MB_ICONEXCLAMATION    一个惊叹号出现在消息框
MB_ICONWARNING        一个惊叹号出现在消息框
MB_ICONINFORMATION    一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONASTERISK       一个圆圈中小写字母i组成的图标出现在消息框
MB_ICONQUESTION       一个问题标记图标出现在消息框
MB_ICONSTOP           一个停止消息图标出现在消息框
MB_ICONERROR          一个停止消息图标出现在消息框
MB_ICONHAND           一个停止消息图标出现在消息框
*/
zhucaidan();
//   head = (stu *)malloc(sizeof(stu));                     // 头结点申请空间
//    head->next = NULL;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: