C语言大作业,做一个简单的问题回答小系统。要求程序运行时,显示出系统菜单项:

1.回答问题;
2.查看分数;
3.添加新问题和答案;
4.查看问题库里的题目和答案;
5.退出系统;
按照用户的选择,执行不同的功能。初始问题库至少要包含20个问题以及相应的答案。
求程序的结构和并标明思路。20个问题我们自己弄。
qq491927403,有精髓答案求发邮箱。

直接给你把代码写出来了,代码比较简单,基本的模块都给出了注释,有什么不懂再问吧。如果不知道我所采用的文件里面数据存储的方式,可以先使用这个系统添加个题目看看。
**************************************************************************************
#include<stdio.h>
#include<conio.h>

int questionNumber; //题库中题目的数量
int score = 0; //答对的题数

//显示菜单
void showMenu() {
printf("1.回答问题\n");
printf("2.查看分数\n");
printf("3.添加新问题和答案\n");
printf("4.查看问题库里的题目和答案\n");
printf("5.退出系统\n");
printf("请选择:");
}

//读取问题, isAnswer = 1 表示在回答问题, isAnswer = 0 表示在显示题库
void question(int isAnswer) {
//打开题库
FILE * f = fopen("question.data", "r");
if(f == 0) {
printf("\n\n问题不存在,请先添加问题!");
return;
}
long length;
//读取文件长度
fseek(f, 0, 2);
length = ftell(f);
rewind(f);

char line[1000], tag;
line[0] = 0;
questionNumber = 0;
while(ftell(f) < length) {
//显示问题
fgets(line, 1000, f);
printf("\n\n问题 %d :%s\n", ++questionNumber, line);
//显示四个选项
for(tag = 'A'; tag <= 'D'; tag++) {
fgets(line, 1000, f);
printf("%c :%s\n", tag, line);
}
//取得答案
fscanf(f, "%c\n", &tag);
if(isAnswer) { //如果在回答问题,就要求输入答案
for( ; ; ) {
printf("请选择答案(A,B,C,D):");
switch(getche()) {
case 'A' :
case 'a' : if(tag == 'A') score++; break;
case 'B' :
case 'b' : if(tag == 'B') score++; break;
case 'C' :
case 'c' : if(tag == 'C') score++; break;
case 'D' :
case 'd' : if(tag == 'D') score++; break;
default : printf("\n"); continue;
}
break;
}
} else { //如果在显示题库,就直接显示答案
printf("答案:%c", tag);
}
}
fclose(f);
}

//添加题目
void addQuestion() {
//打开题库
FILE * f = fopen("question.data", "a");
char line[1000], tag;
//输入问题
line[0] = 0;
while(line[0] == 0) {
printf("请输入问题:");
gets(line);
}
fprintf(f, "%s\n", line);
//输入四个选项
for(tag = 'A'; tag <= 'D'; tag++) {
line[0] = 0;
while(line[0] == 0) {
printf("请输入选项 %c :", tag);
gets(line);
}
fprintf(f, "%s\n", line);
}
//输入答案
for( ; ; ) {
printf("请输入答案(A,B,C,D):");
switch(tag = getche()) {
case 'A' :
case 'B' :
case 'C' :
case 'D' :
case 'a' :
case 'b' :
case 'c' :
case 'd' : fprintf(f, "%c\n", tag >= 97 ? tag - 32 : tag); break;
default : printf("\n"); continue;
}
break;
}
fclose(f);
}

int main(int argc, char * argv[]) {

showMenu();
for( ; ; ) { //循环操作直到用户退出系统
switch(getche()) {
case '1' : score = 0; question(1); break;
case '2' : printf("\n\n你的分数为:%d分", score == 0 ? 0 : score * 100 / questionNumber); break;
case '3' : printf("\n\n"); addQuestion(); break;
case '4' : question(0); break;
case '5' : exit(0); break;
default : printf("\n\n输入错误,请重新输入:"); continue;
}
printf("\n\n");
showMenu();
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-26
1.回答问题
2.查看分数
3.添加新问题和答案
4.查看题目和答案
5.退出系统
1
1.百度谁最厉害?

A.海洋之星 B.沧海雄风 C.海洋之星2009 D.沧海雄风2009
D
继续吗?(y/n)y
2.世界上最高的山是什么?

A.戏码巴扎黑 B.猪头山 C.珠穆朗玛峰 D.马里亚纳
C
继续吗?(y/n)y
3.楼主为什么不会做?

A.楼主太笨 B.老师太笨 C.校长太笨 D.不知道
A
继续吗?(y/n)y
4.奥巴马是哪国老大?

A.法国 B.美国 C.中国
B
继续吗?(y/n)y
5.最后一次测试吗?

A.是的 B.不是
A
继续吗?(y/n)y
已到最后一题
返回主菜单
1.回答问题
2.查看分数
3.添加新问题和答案
4.查看题目和答案
5.退出系统
2
现在分数为:5
返回主菜单
1.回答问题
2.查看分数
3.添加新问题和答案
4.查看题目和答案
5.退出系统

晕 代码贴不上来了

没有用链表 也没有用

结构体数组

就是纯粹的文件解析

我原来还用这个写过一个比较大的系统

联系我吧 我把代码给你发过去

百度上贴上去 提交不显示 跟没贴一样 鄙视百度

现在还是提交不上 已发送 请查收邮箱 有问题请追问追问

我又发邮件给你了,用的时候出了点小问题,求完善下,好了我绝对采纳你。

本回答被提问者和网友采纳
第2个回答  2012-11-26
case 1
循环输出每个问题,回答后立即给变量count赋值 正确加分数 错误加0
回答完后,print 选项

case 2
调用变量 count 如果变量=null 提示还没有答题 否则直接输出变量
print 选项
case3
给结构体里或数组里继续添加数据(正常的应该放在文件里,程序打开的时候去读取那文件的 20个 题目和答案,不过简单的或可以直接写在程序里)
如果用户输入over(也可以定其他的)则结束
print 选项
case 4
输出结构体或数组的数据
print选项
case 5
退出循环
第3个回答  2012-11-26
给你提供点思路:

main函数里用循环
1、判断条件可以是设的变量,初值为1 在用户选5时变量置0退出
2、菜单显示用printf排版 可以在外面函数里写或直接在while里写
3、putchar来读用户选择
4、写各子函数实现查看 添加 等功能
main:
int quitflag = 1;
while(quitflag)
{
printf()//
1.回答问题;
2.查看分数;
3.添加新问题和答案;
4.查看问题库里的题目和答案;
5.退出系统;

c=getchar();
switch(c)
{
case 1:回答问题函数;
break;
case 2:查看分数函数;
break;
依次
case 5:quitflag = 0;
break;
default:break;
}
}

对于问题和答案 可以采用链表实现查找、添加、删除和比对答案等功能
如结构体定义为这种形式:
typedef struct aaaa
{
int ID;
char q[50];//问题
char a[50];//答案
aaaa* next;//下一个指针
}
至于链表的实现有很多现成的例子可以参考,懒得写了
第4个回答  2012-11-26
之前做过一个
商店货品小系统!
可以增加商品删除商品卖出商品!。。。
思路:
1。问题与答案以结构体存储。。。
2.。链表。。。追问

能不能给出程序大概的结构啊

相似回答