单项选择题管理系统 密码123456 界面优美 带声音 界面切换 底色。。。。。。
2012-09-01 23:01
323 查看
密码
123456
123456
#include<stdio.h> #include<stdlib.h> #include<time.h> struct pro { int num; char ques[500]; char ansA[100]; char ansB[100]; char ansC[100]; char ansD[100]; char ans; int flag; struct pro * next; }; void menu(int voice) { printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 主菜单 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 请按№ 1:创建第一批试题 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 请按№ 2:将题目保存到试题库 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 请按№ 3:随即选择题目进行解答 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 请按№ 4:打开已经保存的试题库 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 请按№ 5:增加试题 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 请按№ 6:输出所有试题 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 请按№ 9:退出程序 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n\n"); printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意事项!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); printf("⊙☆⊙ ⊙☆⊙ ⊙☆⊙ 使用3和5和6时请确保已使用了1或4 ⊙☆⊙ ⊙☆⊙ ⊙☆⊙\n"); if(voice) printf("\a"); } //****************************************创建试题*********************************************// struct pro * creat(struct pro * head)//创建试题 { struct pro *p1,*p2; int num=1,k=1; char a='Y'; getchar();//过滤掉主函数中产生的影响 while(a=='Y') { printf("请依次输入 '题目' 'A' 'B' 'C' 'D' 四个选项的内容 以及'正确答案' 每个占一行\n"); p1=(struct pro *)malloc(sizeof(struct pro)); p1->num=num; p1->next=NULL; gets(p1->ques);gets(p1->ansA);gets(p1->ansB);gets(p1->ansC);gets(p1->ansD); // puts(p1->ansA);puts(p1->ansB);puts(p1->ansC);puts(p1->ansD); scanf("%c",&p1->ans); getchar(); if(head==NULL) head=p1; else p2->next=p1; p2=p1; printf("是否进行下一个题目的输入,是请输入'Y'否则请输入'N':\n"); num++; scanf("%c",&a); getchar(); } return head; } //*****************************************输出所有试题*******************************************// print(struct pro * head)//输出所有的试题 { struct pro * temp; int k=14; char a; getchar(); printf("是否将正确答案一起输出 是请按'Y',否则请按'N':\n"); scanf("%c",&a); temp=head; while(temp!=NULL) { printf("题目号:%d\n",temp->num);// getchar(); puts(temp->ques); puts(temp->ansA);puts(temp->ansB);puts(temp->ansC);puts(temp->ansD); if(a=='Y') printf("正确答案:%c\n",temp->ans); printf("%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n", k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k); temp=temp->next; } } //***********************************************写进文件**********************************************************// void to_file(struct pro * head) { struct pro *p1; // int num; FILE *fp; if((fp=fopen("c:\\Problem.txt","w+"))==NULL) { printf("Error on open c:\\Problem.txt!"); } else { p1=head; while(p1!=NULL) { fwrite(p1,sizeof(struct pro),1,fp); // fprintf(fp,"%d %s %s %s %s %s %c",p1->num,p1->ques,p1->ansA,p1->ansB,p1->ansC,p1->ansD,p1->ans); p1=p1->next; } } fclose(fp); } //*********************************************************************************************************************// struct pro * from_file(struct pro *head) { struct pro *p1,*p2; FILE *fp; if((fp=fopen("c:\\Problem.txt","r+"))==NULL) { printf("Error on open c:\\Problem.txt!"); } else { p1=(struct pro *)malloc(sizeof(struct pro)); p1->next=NULL; // while(fscanf(fp,"%d %s %s %s %s %s %c",&p1->num,p1->ques,p1->ansA,p1->ansB,p1->ansC,p1->ansD,&p1->ans)!=NULL) /*用上面的会造成1个选项里如果出现空格就只读取一半 也就是说遇到空格就会赋值进一个变量 然后进行下一个变量的读取而下面 是对一个模块进行读取的 反正如果是结构体 最好就用块读取 */ while(fread(p1,sizeof(struct pro),1,fp)!=NULL) { if(head==NULL) head=p1; else p2->next=p1; p2=p1; p1=(struct pro *)malloc(sizeof(struct pro)); p1->next=NULL; } } fclose(fp); return head; } //*********************************************添加问题*******************************************************// struct pro * add_pro(struct pro *head) { struct pro * p1,*temp; int num; temp=head; while(temp->next!=NULL) {temp=temp->next;} num=temp->num; num++; printf("请依次输入 '题目' 'A' 'B' 'C' 'D' 四个选项的内容 以及'正确答案' 每个占一行\n"); p1=(struct pro *)malloc(sizeof(struct pro)); p1->num=num; p1->next=NULL; getchar(); gets(p1->ques);gets(p1->ansA);gets(p1->ansB);gets(p1->ansC);gets(p1->ansD); scanf("%c",&p1->ans); getchar(); temp->next=p1; return head; } //******************************************选择问题进行解答************************************************************// void answer(struct pro *head) { int k,n,num; char ans; struct pro * temp; srand(time(NULL));//初始化随机数种子 temp=head; while(temp->next!=NULL) {temp->flag=0;temp=temp->next;} num=temp->num; temp->flag=0; printf("请输入您想要解答的问题的个数\n"); scanf("%d",&n); if(n<=num) { while(n--) { k=rand()%(num+1);//k是个随机数 这里回寝室再修改 // printf("k=%d,num=%d",k,num); if(k==0) k=num; // printf("k=%d",k); temp=head; while(temp->num!=k) {temp=temp->next;} if(temp->flag!=1) { printf("题目号:%d\n",temp->num); puts(temp->ques); puts(temp->ansA);puts(temp->ansB);puts(temp->ansC);puts(temp->ansD);temp->flag=1; printf("请输入您的答案:\n"); getchar(); scanf("%c",&ans); if(ans==temp->ans) printf("好聪明的娃子啊 嘿嘿 你对了!\n\n"); else printf("呜呜 可怜的** 你还得努力啊!\n\n"); } else n++; } } else printf("对不起,您输入的范围好像有点大了 先扩充下题库吧 呵呵!"); } //***********************************************主函数****************************************************************// int main() { // FILE *fp; __int64 code=123456,n; int k=3,voice,num; struct pro *head; system("color 2e"); printf("%c %c %c请输入您的“阿拉伯版密码”%c %c %c\a\n",1,3,2,1,3,2); while(k--) { scanf("%I64d",&n); if(n!=code) printf("您的密码有误,您还有%d次机会输入密码\n",k); else break; if(k==0) return 0; } system("cls"); printf("**********输入0选择静音,否则请输入其它任意数字**********\n"); scanf("%d",&voice); system("cls"); menu(voice); head=NULL; while(1) { scanf("%d",&num); switch (num) { case 1: head=creat(head);system("cls");menu(voice);printf("请选择下一步!\n");break; case 2: to_file(head);system("cls");menu(voice);printf("保存成功!\n");break; case 3: system("cls");answer(head);menu(voice);printf("测试完毕!\n");break; case 4: head=from_file(head);system("cls");menu(voice);printf("载入成功!\n");break; case 5: head=add_pro(head);system("cls");menu(voice);printf("添加成功!\n");break; case 6: system("cls");print(head);menu(voice);printf("输出完毕!\n");break; case 9: return 0; } } }
相关文章推荐
- 在xp中tc环境下实现的 销售管理系统(可切换繁体和简体,可设密码,可通过修改代码修改字体颜色)
- 在xp中tc环境下实现的 销售管理系统(可切换繁体和简体,可设密码,可通过修改代码修改字体颜色)
- 系统管理:RHEL6.3字符界面图形化界面切换
- Linux--系统密码管理及用户切换
- 屏幕锁定后即使输入正确的密码也无法进入,只能点切换用户然后从主登录界面重新进入系统。
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->用户管理模块新增“重置用户密码”功能
- Android切换系统语言,自动更新应用界面显示语言
- 图书管理系统启动界面的设计与实现
- linux X界面 输入密码正确,但是无法登陆系统,命令行界面可以登陆
- 基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页Portal界面拖拽(Ⅵ)
- 一个简洁的CMS系统管理界面设计
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面
- hadoop基础------虚拟机(四)-----VMware虚拟机下linux系统的图形界面和命令行文本界面的切换
- 新闻管理系统_修改用户名密码
- 用C语言写的一个控制台界面的通讯录管理系统
- 基于Unity3D的声音管理系统的实现
- Meteor:用户账号管理添加密码和微博weibo账号系统支持
- WinForm界面开发之酒店管理系统--报表篇
- 第十八篇 ANDROID的声音管理系统及服务
- 用字典创建一个平台的用户信息(包含用户名和密码)管理系统,新用户可以用与现有系统帐号不冲突的用户名创建帐号,已存在的老用户则可以用用户名和密码登陆重返系统。