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

作者&投稿:彩鹏 (若有异议请与网页底部的电邮联系)
c程序设计大作业 做一个简单的问题回答小系统.要求程序运行时,显示出系统菜单项:~

为你量身定做的。
① 文件自动读取和保存;
② 回答问题功能;
③ 查看分数功能;
④ 添加新问题功能;
⑤ 查看所有问题和答案的功能。

先上图,采纳后发送到你的邮箱。

主界面:


新增题目:


回答问题(考试):


查看分数(答题完毕后自动查看分数,也可以再主界面查看上一次答题的分数,百分制):

#include
using namespace std;
void main()
{
char ch;
cout<<"Menu:A(dd)、D(delete)、S(ort)、Q(uit),Select one:"<<endl;
cout<<"A表示增加,D表示删除,S表示排序,Q表示退出!"<<endl;
cout<<"Enter ch: ";
cin>>ch;
while(ch!='Q')
{
if(ch=='A')
{
cout<<"数据已经增加!"<<endl;
cout<<"Enter ch: ";
cin>>ch;continue;
}
else
if(ch=='D')
{
cout<<"数据已经删除!"<<endl;
cout<<"Enter ch: ";
cin>>ch;continue;
}
else
if(ch=='S')
{
cout<<"数据已经排序!"<<endl;
cout<<"Enter ch: ";
cin>>ch;continue;
}
else
{
cout<<"错误!"<<endl;
cout<<"请从新输入:"<<endl;
cout<<"Enter ch: ";
cin>>ch;
}
}
if(ch=='Q')
cout<<"程序结束!"<<endl;
}

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

晕 代码贴不上来了

没有用链表 也没有用

结构体数组

就是纯粹的文件解析

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

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

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

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

case 1
循环输出每个问题,回答后立即给变量count赋值 正确加分数 错误加0
回答完后,print 选项

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

给你提供点思路:

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;//下一个指针
}
至于链表的实现有很多现成的例子可以参考,懒得写了

之前做过一个
商店货品小系统!
可以增加商品删除商品卖出商品!。。。
思路:
1。问题与答案以结构体存储。。。
2.。链表。。。

我的C语言要做期末大作业了,求给出一些在复杂和简单中间的程序。
答:include<stdio.h> int main (void){ int i,j,sum,k;int a[3][3],b[3][3],s[3][3];printf("please input a num:\n");for(i=0; i<3; i++){ for(j=0; j<3; j++)scanf("%2d",&a[i][j]);} printf("please input b num:\n");for(i=0; i<3; i++){ for...

面向对象程序设计期末大作业题目(C语言)
答:面向对象程序设计 期末大作业题目 第1题:设计一个学生学籍管理系统 学生信息包括:姓名、学号、性别和英语、数学、程序设计、体育成绩。从键盘输入数据,建立数据文件student.dat。实现对学生或学号查询,显示信息。对所有学生,按照班级计算平均成绩。分别按照英语、数学、程序设计和体育成绩排序生成结果文件。

C语言大作业.
答:输入十名顾客的信息到结构体数组中,最后统计这十名中购买商品总额最大的顾客,将他的信息打印输出。//并按照下列各式把信息存入到customer.txt中://0001 Kate 5 822.8 //0002 Jame 7 2761.9 //2011.1.11 11:37 include<stdio.h> include<math.h> define CST_NUM 10//宏定义客户...

C语言 期末大作业
答:exit(1);} for(i=0;i<N;i++)fprintf(fi,"%d %s %d %d %d %d\n",st[i].num,st[i].name,st[i].yuwen,st[i].shuxue,st[i].yingyu);fclose(fi);//将文件进行保存 printf("学号 姓名 平均分 总分\n");for(i=0;i<N;i++){ sum[i]=st[i].yuwen+st[i].shuxue+st[i]...

C语言大作业 题目是:请设计一个算法完成两个超长正整数的加法。谁会...
答:有没有具体的要求,比方说数据结构方面,我这有一个,你可以参考参考 include"stdio.h"include"stdlib.h"define n 10 /*假定系统允许的最大作业为n,假定模拟实验中n值为10*/ define m 10 /*假定系统允许的空闲区表最大为m,假定模拟实验中m值为10*/ define minisize 100 struct{ float ...

c语言大作业,请大神赐教啊
答:public void save(){ try { FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);outStream.write(text.getText().toString().getBytes());outStream.close();Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();} catch (FileNotFoundException ...

数据结构与算法中的一点问题(c语言版)
答:define N 1000/*输入n允许最大值*/ main(){ int n,s,m;int a[N],b[N];int i,j=0,k,l=0,sum=0;printf("input n:");scanf("%d",&n);printf("input m:");scanf("%d",&m);printf("input s:");scanf("%d",&s);for(i=1;i<=n;i++){ a[i]=1;b[i-1]=0;} ...

C语言帮我看下问题在哪(简单)
答:呵呵,怎么到处提问呀 一般循环是不选用goto语句的,这里改了一下用while()循环 include<stdio.h> float avg(float a,float b,float c,float d,float e);float sum(float a,float b,float c,float d,float e,float f,float g,float h,float i,float j);void main(){ float mark[11]...

帮忙做下C语言的大作业
答:帮忙做下C语言的大作业  我来答 首页 在问 全部问题 娱乐休闲 游戏 旅游 教育培训 金融财经 医疗健康 科技 家电数码 政策法规 文化历史 时尚美容 情感心理 汽车 生活 职业 母婴 三农 互联网 生产制造 其他 日报 日报精选 日报广场 用户 认证用户 视频作者 日报作者...

高分悬赏C语言作业!!!急!!!
答:// 搬砖 include<stdio.h> int main(){ int m,g,c;//定义变量,男生数量为m,女生为g,小孩为c for (m=1;m<36;m++)for (g=1;g<36;g++)for (c=1;c<36;c++)if ((m+g+c)==36&&(8*m+6*g+c)==72)// 满足人数为36,搬砖数量为36则输出 printf("男%d 女%d 小孩%d\...