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; }
相关文章推荐
- 基于NIOS-II的示波器:PART4 系统调试&测试
- 基于 GlusterFS 的高可用 MySQL 数据库系统测试
- (转)基于Web的系统测试方法
- 基于Web的系统测试方法
- 基于Web的系统测试方法
- 基于Web的系统测试
- 基于PXI平台的ESP系统性能测试平台
- TD-SCDMA系统基于网元仿真技术的OMC功能测试研究
- 动态添加,删除行之心理测试系统
- 一种基于动态插件系统的移动测试黑科技
- 基于Web的系统测试
- 基于虚拟仪器技术的短波电台自动测试系统(图)
- 基于Web的系统测试方法[转]
- 基于Web的系统测试方法
- 基于Linux系统的性能测试
- 基于 Spring MVC 的开源项目,方便黑盒测试的测试管理系统
- 基于Web的系统测试
- 网站测试自动化系统—基于Selenium和VSTT
- 安卓系统底层C语言算法之测试参数是几个long型的算法
- jCpuTest 小小的 基于JAVA的 系统性能测试软件 首发啦~~