c课程设计游戏21点

2022-09-22

第一篇:c课程设计游戏21点

24点游戏 高质量C语言程序

设计题目: 24点游戏

2012年 9 月 1 日

目录

一题目及要求 二项目概述 三项目分析 四程序思路分析

五总结 六答辩记录 七教师意见

一 题目及要求 计算24点游戏

输入四个数,通过加减乘除计算出24,显示计算过程,并提示成功信息。 二 项目概述

我设计的是24点游戏,它功能是输出给定4个数运算得出24的算式。大概思路很简单,就是穷举4个数字排列组合后的所算式,选择其中结果为24的,并筛选符合数学法则的输出,难点在于穷举 三项目分析

通过题目这是大家很熟悉的游戏,大家也都知道直接计算很难,想不出具体的算法,但考虑到计算机的特点——运算速度快,不知疲倦,我们可以另辟蹊径,让计算机算出所有与这4个数字相关的算式,选择其中得24的算输出即可。所以确定思路,穷举。大概分几个模块,主函数,转化四则运算的fun函数,for循环,if选择,scanf,printf。 四 程序思路分析

程序要求给出4个数字,输出算出等于24的结果的所有算式,所以大体上首先scanf4个数字储存在数组中,然后试用定义的fun函数,fun函数为将4则运算

转化为数字的函数,然后用多个for语句实现数字的排列组合,关于括号的问题,分两种情况,一种是“三一”的,一种是“二二”的。然后写一个报错的语句,关于结果用printf输出,如果结果为-24,-1/24,1/24的,可以改变输出结果的顺序。

下面附上源程序: #include double fun(double a1,double a2,int b) { switch(b) {

case 0:return (a1+a2);

case 1:return (a1-a2);

case 2:return (a1*a2);

case 3:return (a1/a2); } } void main() { int g; for(g=0;g<100;) {

int i,j,k,l,n,m,r,save[4];

double num[4]={1,1,1,1},tem1,tem2,tem3,abc=1111;

char sign[5]="+-*/";

printf("请输入4个数,数字与数字之间用空格隔开:");

for(i=0;i<4;i++)

{

scanf("%lf",num+i);

save[i]=num[i];

} for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(j!=i)

{

for(k=0;k<4;k++)

if(k!=i&&k!=j)

{

for(l=0;l<4;l++)

if(l!=i&&l!=j&&l!=k)

{

for(n=0;n<4;n++)

for(m=0;m<4;m++)

for(r=0;r<4;r++)

{

tem1=fun(num[i],num[j],n);

tem2=fun(tem1,num[k],m);

tem3=fun(tem2,num[l],r);

if(tem3==24.0)printf("{(%d%c%d)%c%d}%c%d=24 ",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);

else if(tem3==-24.0)printf("{%d%c(%d%c%d)}%c%d=24 ",save[k],sign[m],save[i],sign[n],save[j],sign[r],save[l]);

else if(tem3==1.0/24.0)printf("%d%c{(%d%c%d)%c%d}=24 ",save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);

else if(tem3==-1.0/24.0)printf("%d%c{%d%c(%d%c%d)}=24 ",save[l],sign[r],save[k],sign[n],save[i],sign[m],save[j]);

else

{

tem1=fun(num[i],num[j],n);

tem2=fun(num[k],num[l],r);

if(tem2 == 2 && m == 3)

printf("此处省略出现的一个非法运算 ");

else

{

tem3=fun(tem1,tem2,m);

if(tem3==24.0)

printf("(%d%c%d)%c(%d%c%d)=24 ",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);

}

}

}

}

}

} g++; } } 下面详细说明:

double fun(double a1,double a2,int b) //定义fun函数 { switch(b)

{

case 0:return (a1+a2);

case 1:return (a1-a2);

case 2:return (a1*a2);

case 3:return (a1/a2); } }用switch语句将四则运算转化。 void main() 定义主函数

int i,j,k,l,n,m,r,save[4];

double num[4]={1,1,1,1},tem1,tem2,tem3,abc=1111;

char sign[5]="+-*/";

printf("请输入4个数,数字与数字之间用空格隔开:");

for(i=0;i<4;i++)

{

scanf("%lf",num+i); //输入语句

save[i]=num[i];}

定义参数,有fun函数转化四则运算,但需要将四则运算的符号存入字符数组中以便输出时使用。用for语句循环实现输入。

用两段语句分两种情况计算for(n=0;n<4;n++)

for(m=0;m<4;m++)

for(r=0;r<4;r++)

{

tem1=fun(num[i],num[j],n);

tem2=fun(tem1,num[k],m);

tem3=fun(tem2,num[l],r); for循环实现运算的排列组合,上面是一种情况(不带有括号的),下面是另一种

else

{

tem1=fun(num[i],num[j],n);

tem2=fun(num[k],num[l],r); else 下面是两两组合的情况

{tem3=fun(tem1,tem2,m);

if(tem3==24.0) printf("(%d%c%d)%c(%d%c%d)=24 ",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);

用for和if语句实现数字的排列组合, for(i=0;i<4;i++) for(j=0;j<4;j++) if(j!=i) {

for(k=0;k<4;k++) if(k!=i&&k!=j)

{

for(l=0;l<4;l++)

if(l!=i&&l!=j&&l!=k)

{ 输出语句如下 if(tem3==24.0)printf("{(%d%c%d)%c%d}%c%d=24 ",save[i],sign[n],save[j],sign[m],save[k],sign[r],save[l]);

else if(tem3==-24.0)printf("{%d%c(%d%c%d)}%c%d=24 ",save[k],sign[m],save[i],sign[n],save[j],sign[r],save[l]);

else if(tem3==1.0/24.0)printf("%d%c{(%d%c%d)%c%d}=24 ",save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);

else if(tem3==-1.0/24.0)printf("%d%c{%d%c(%d%c%d)}=24 ",save[l],sign[r],save[k],sign[n],save[i],sign[m],save[j]); 对于其他几种结果通过改变输出时变量的顺序即可。 五 总结

通过这次学习,我学到了很多,这个程序的难度级别是B,不是很难,但是算法比较繁琐,考虑要细心才行。通过此次程序设计,也让我们把平时学的理论知识用在了实际问题上,有助于我们的理解和运用,而且这个程序设计本身也比较有趣,能激发我们自己去深入研究。

以上就是我对这次程序设计的心得体会,也希望在以后的专业课学习中能够充分利用计算机本身速度快的优势,利用编写程序完成一些用手工计算很难完成的问题。

张博禹 05111112 六 答辩记录

七 教师意见

第二篇:c课程设计

1. 题目:

打开文件“file1.dat”,并将文件中的内容输出到屏幕。 2. 思路分析 3. 程序代码:

#include #include int main(void) { FILE *fp; char ch; //文件打开

fp=fopen("file1.dat","r"); if(fp==NULL)//打开失败,退出

exit(0); //读取一个字符

ch=fgetc(fp); while(!feof(fp))//不算文件末尾

{

putchar(ch);//显示字符

ch=fgetc(fp); } //关闭文件

fclose(fp); return 0; } 4. 运行结果截图:

新能源与动力工程学院

第三篇:c课程设计

数学与信息学院工程2007级 C语言程序设计大型作业报告

题目: 用栈设置密码 学号:

姓名:

联系电话: Email:

任课教师:

报告递交日期: 2009年2月20日

用栈设置密码

用C语言来编制程序,让读者了解到C在现实生活中运用的一个示例.

一.系统功能说明 .............................................................................................................................. 3

1.1整体程序 ............................................................................................................................. 3 1.2程序内部 ............................................................................................................................. 3

1.2.1 主程序 ..................................................................................................................... 3 1.2.2 其他函数 ................................................................................................................. 3

二.使用说明 ...................................................................................................................................... 4

2.1安装手册 ............................................................................................................................. 4 2.2使用手册 ............................................................................................................................. 4 三.程序结构 ...................................................................................................................................... 5

3.1程序结构说明 ..................................................................................................................... 5

3.1.1头函数 ...................................................................................................................... 5 3.1.2 creat 函数 ................................................................................................................ 5 3.1.3compare 函数 ........................................................................................................... 5 3.1.4display 函数 ............................................................................................................. 5 3.1.5main 函数 ................................................................................................................. 5 3.2 重要数据的说明 ................................................................................................................ 6 3.3程序函数清单 ..................................................................................................................... 6 四.系统设计难点及其解决方法 .................................................................................................... 10 4.1密码 ................................................................................................................................... 10 4.1.1 是否要输入密码 ................................................................................................... 10 4.1.2 密码的设置 ........................................................................................................... 10 4.1.3 是否有密码的输入 ............................................................................................... 10 4.2验证密码 ........................................................................................................................... 11 五.不足之处 .................................................................................................................................... 11 六.其他说明 .................................................................................................................................... 11

2 一.系统功能说明

1.1整体程序

该程序是利用c语言来密码验证程序,可以根据设计好的程序对另外的程序等对象设置一个密码,只要能正确的输入密码就可以进入所想要进入的对象,从而使其具有一定的安全性能.

1.2程序内部 1.2.1 主程序

主程序首先以菜单的形式出现,你可以根据自己的喜好选择是否要设置密码,这样给人视觉上的舒适;接着调用函数输入密码和比较来验证密码

1.2.2 其他函数

1.运用调用的函数可以来设置密码 2.验证密码是否正确; 3.输出你输入的验证密码,看是否你是否输入错误,以致可以在下次输入时有所注意;

3 二.使用说明

2.1安装手册 先从网上下载好编制这个程序的软件,而我选择的编程软件是c-free,其功能和TC相近,而且更适合初学者运用,它可以让你使用鼠标,让你在编程的过程中带有些方便性,而且它也可以输入输出中文,让你在理解上也加强了; 下载地址: http:///

安装:

(我下载的是cfree4_0_std_setup_ch.exe,也以其为说明对象;) 打开cfree4_0_std_setup_ch.exe软件(双击)--出现安装界面,单击”下一步”--同意协议,”下一步”--在”浏览”处选择你存放位置,”下一步”--(同上一步)--选择附加快捷方式,”下一步”--”确定”即可安装好c-free; 2.2使用手册

1.打开c-free,新建一个空白页,便可以开始编写程序 2.编写好后就可以”运行并调试”程序,生成.o和.exe文件,若出现错误提示,可以根据提示出现错误的行和其错误的原因进行修改,(和TC的功能相似);

4 三.程序结构

3.1程序结构说明

整个程序大致可以分为五个部分: 3.1.1头函数

这里的头函数用到的是”stdio.h”,其包括了程序中出现的一些输入输出函数等,确保了函数能够顺利的进行; 3.1.2 creat 函数 该函数运用栈的形式来放入数字来建立密码 3.1.3compare 函数 该函数将把输入的验证密码和所设置的密码进行比较判断是否两个密码的值相等,并以flag(其值为0或者1)来标记是否相等,并把该值返回到主函数中; 3.1.4display 函数 该函数是将密码进行输出,让人了解到上一次输入的值,从而知道是否是自己输入错误,有提醒的作用; 3.1.5main 函数

该函数是主函数,先一个菜单的形式出现,能给人以良好的视觉感

5 受,后以switch可以选择是否要设置密码, 其中调用creat等函数来进行密码的设置和验证 3.2 重要数据的说明

1)count 该值作为一个标志符号,来记入验证密码输入的次数,若超过3次(即count>=3)则输入无效 2)f 也是一个标识符,当f=1时,则说明不设置密码,直接以”输入正确的形式进入”,若f=0,则是要设置密码; 3)flag

存放compare函数的返回值,来标识验证密码是否输入正确,若为0则错误,为1则争取; 3.3程序函数清单 #include

//头函数

//结点设置 typedef struct LNODE{int data;

struct LNODE *next;

}LNODE,*Linkstack; Linkstack creat(Linkstack S) {

int node;Linkstack p; 就是密码的值

//用来设置密码

//node为结点内的值,也 6

S=NULL;

printf("input the node(end with 0):");

scanf("%d",&node);

while(node!=-1)

//运用while 来输入密码

{ p=(Linkstack)malloc(sizeof(LNODE));

p->data=node;

p->next=S;

S=p;

scanf("%d",&node); }

return S; } int compare(Linkstack S,Linkstack Sa) //把验证密码和设置的密码进行比较(用返回flag 的值来判断密码是正确) {

Linkstack p,q;

int flag; p=S; q=Sa; while(p!=NULL&&q!=NULL) //判定结点内的值是否相等 { if(p->data==q->data) { p=p->next;q=q->next; } else {

flag=0;return flag; } }

} if(p==NULL&&q==NULL) { flag=1; return flag;} else { flag=0; return flag;} Linkstack display(Linkstack S) {

Linkstack p;

p=S;

while(p!=NULL){ printf("%2d",p->data);

//输出验证密码栈

p=p->next;}

printf(" "); } main() {

Linkstack secret,s; //secret为密码栈,s为验证密码栈

int count=0,flag,f=0; //count来标识输入验证密码的次数,f为判断是否要输入密码;

int x; printf("是否存在密码");

printf(" 1--存在 2--不存在,建密码"); printf(" 请选择(1或者2):" ); scanf("%d",&x);

} switch(x){ case 1:f=1;break; case 2:secret=creat(secret);break;} while(count<3&&!f){ printf("请输入密码: "); s=creat(s); display(s); flag=compare(secret,s); if(!flag) { printf("输入错误; "); count++;} else{printf("输入正确");break; } } if(count==3&&f) printf("今天输入次数已满--输入无效"); if(f&&!count) printf("无密码,直接进入");

9 四.系统设计难点及其解决方法

4.1密码

4.1.1 是否要输入密码 有时候人们希望虽然可以密码设置,但有时候也会希望不要密码,可以直接进入想要进入的界面,则这这种情况是两者选一; 解决方法:用一个菜单的界面,让对方选择是否要输入密码,从而解决了此类问题; 4.1.2 密码的设置 要设置密码和验证密码,则必须至少要书写两个创建密码,但是密码的创建本身就程序内容很多且有重复,使程序看起来很多,篇幅很长,使用者看的也很烦; 解决方法:用一个函数creat()来设置密码,当要设置密码时只要调用函数就可以了,不仅程序看起来篇幅变短,而且易懂; 4.1.3 是否有密码的输入 前面我们选择了是否要输入密码,当不需要密码输入时可以直接显示”直接进入”,而不需要输入密码和密码验证

解决方法:引进f,来标识是否输入密码,当不需要f=1;在输入验证密码之前以while(count<3&&!f)来标识不需要输入密码

10 4.2验证密码 验证密码的次数最多一下子只能有三次,则必须要控制好输入验证密码的次数

解决方法:引进一个标识符count ,当count<3的时候则可以输入验证密码,以count++的形式来表示输入的次数; 五.不足之处

每次运行程序时密码都是空的,要么不输入密码,直接进入;要么是输入密码来验证,但是无法将密码保存,从而无法直接输入密码,来和保存好的密码进行比较; 六.其他说明

该函数只要是用来设置密码的,相当于加密,让设置了密码的对象具有一定的安全性能;当输入密码正确后可以进入加密对象,如是文件word,我们就可以在输入正确后直接打来该文件,否则就不行; 即:

else{ printf("输入正确"); 和if(f&&!count) printf("无密码,直接进入");后加入一句 : fopen(word,’r’); 这样就更加明显的体现了对对象加密的性质,也说明了该程序的一个作用;

第四篇:C课程设计

C语言综合实验设计报告

题目:猜数字游戏

学院:电气与电子工程学院

专业:电气工程及其自动化

班级:080308

姓名:常亚梅

设计日期:20090621

总分:

一、设计题目:猜数字游戏

二、题目阐述及设计思路:

猜数字是一种开发智力的游戏,在现代社会中越来越流行,现用已学的C语言程序的各种知识练习编写简单的应用的程序来实现游戏的功能。该游戏的实现主要用到C语言中的库函数来实现图形界面能 并运用各种循环结构和分支结构来实现选择功能,以次完成整个 游戏的制作。

三、主要知识点:

C语言中的库函数来实现图形界面能 并运用各种循环结构和分支结构来实现选择功能

四、程序清单: #include #include #include #include #include #define up 0x4800 #define down 0x5000 #define left 0x4b00 #define right 0x4d00 #define esc 0x11b

static int kkk=1; int currenti=1; int rpiao[5]; int xpiao[5]; int com[16]; int money=100;

void initmu(void) { int i; char s[3]; char m[5]; char n[2]; n[0]=157; n[1]=NULL; setcolor(2); rectangle(100,20,500,120); rectangle(90,0,510,130); setcolor(14); rectangle(100,220,500,420); rectangle(90,210,510,430); setfillstyle(9,2); floodfill(91,1,2); setfillstyle(9,14); floodfill(91,211,14);/*编框,大小,位置,颜色*/

setcolor(4); for(i=0;i<=14;i++) { setcolor(4); rectangle(110+i*25,230,135+i*25,265); itoa(i+1,s,10); setcolor(15); outtextxy(115+i*25,245,s); outtextxy(120,300,"please choose the five number you want!!!"); }

outtextxy(120,330,"use UP choose,use LEFT and RIGHT move"); outtextxy(120,400,"press esc to quit");/*向图内添加字母*/ itoa(money,m,10); outtextxy(230,180,n); outtextxy(250,180,m); if(kkk==1) { setfillstyle(1,4); bar(115+(currenti-1)*25,255,130+(currenti-1)*25,260); kkk=kkk-1; } } void initcom(void) { int i; for(i=0;i<=15;i++) com[i]=i; }

void rrrpiao(void) { int i; int k; for(i=0;i<=4;i++) { rpiao[i]=random(15)+1; k=rpiao[i]; if(com[k]==0) i=i-1; else com[k]=0; } } /*选择数字*/

void show(int k) { if(k==2) outtextxy(120,40,"you get the fourth prize 5 yuan"); if(k==3) outtextxy(120,40,"you get the third prize 20 yuan"); if(k==4) outtextxy(120,40,"congratulations!!! you get 1000 yuan"); if(k==5) outtextxy(120,40,"great!!!!!,you get 10000 yuan!!!!!"); }/*每局结束后显示的结果*/

void jisuan(void) { int k=0; int i,j; for(i=0;i<=4;i++) for(j=0;j<=4;j++) if(rpiao[i]==xpiao[j]) k=k+1; if(k==0||k==1) money-=10; if(k==2) money-=5; if(k==3) money+=10; if(k==4) money+=990; if(k==5) money+=9990; show(k); }/*总钱数的计算*/

void xxxpiao(void) { static int i=0; int j; int k; int key; char s[3];

key=bioskey(1); if(key) key=bioskey(0);

if(key==esc) { closegraph(); exit(0); }

if(key==up) { xpiao[i]=currenti;

for(j=0;j

if(key==left) {

setfillstyle(1,0); bar(115+(currenti-1)*25,255,130+(currenti-1)*25,260); if(currenti==1) currenti=15; else currenti=currenti-1; setfillstyle(1,4); bar(115+(currenti-1)*25,255,130+(currenti-1)*25,260); }

if(key==right) { setfillstyle(1,0); bar(115+(currenti-1)*25,255,130+(currenti-1)*25,260); if(currenti==15) currenti=1; else currenti=currenti+1; setfillstyle(1,4); bar(115+(currenti-1)*25,255,130+(currenti-1)*25,260);

}/*键盘的控制*/

if(i==5) { for(k=0;k<=4;k++) { itoa(rpiao[k],s,10); outtextxy(230+k*30,350,s); }

outtextxy(120,350,"the number:"); outtextxy(120,370,"you choose:");/*选择完毕后,显示相同的个数*/

for(k=0;k<=4;k++) { itoa(xpiao[k],s,10); outtextxy(230+k*30,370,s); }

jisuan(); sleep(3); cleardevice(); currenti=1; i=0; kkk=1; } }/*选择完毕后,停留的时间并清屏*/

void dead(void) { if(money<10) { outtextxy(120,40,"you have not enough money"); sleep(2); closegraph(); exit(0); } }/*游戏结束的条件*/

void main(void) { int gd=DETECT,gm; initgraph(&gd,&gm,""); while(1) { initmu(); initcom(); rrrpiao(); xxxpiao(); dead(); } }

五、设计结果说明:

1、设计优点:此程序比较容易理解和使用,操作方便。用到的知识比较全面很好的总结和复习了我们以前学过的知识。

2、设计不足:用到的结构比较简单,无复杂的结构

第五篇:c 课程设计

1、推箱子(★★★★★)(限最多3人选)

【规则】本游戏的目的就是把所有的箱子都推到目标位置上。箱子只能推动而不能拉动。一次只能推动一个箱子。

经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道~!

2、贪吃蛇(★★★★★)(限最多3人选)

【规则】:

A 用键盘的方向键控制蛇的上下左右移动。

B 游戏分为三种难度,SLUG为慢速,每吃一朵花得1分;WORM 为中速,每吃一朵花得2分;PYTHON为快速,每吃一朵花得3分。

C 游戏目标:操纵屏幕上那条可爱的小蛇,在黑框中不停吃花,而每吃一朵花,蛇的身体都变的更长一些,游戏的难度也会随之加大。

D 游戏终止:终止条件1——蛇头撞到墙上;终止条件2——蛇身形成一个圈,也就是蛇头碰到自身的任何一处。

3、四子棋(★★★★★)(限最多3人选)

【规则】中国传统的棋类智力游戏。四子棋是一种益智的棋类游戏。分黑白两方(也有其它颜色的棋子)。黑方为先手,白方为后手。落子规则为,每一列必须从最底下的一格开始。依此可向上一格落子。一方落子后另一方落子,依此抡次。直到游戏结束。输赢规则: 同一颜色的棋子或水平,或左右斜方向,或垂直方向有四个连成一线即为该方赢,游戏结束。如果满盘均填满,游戏尚未分输赢,则为和棋。

4、文本处理(★★★★)(限最多3人选)

(1)读取用户指定的任意文本文件,然后允许用户从该文件中查找单词。查询的结果是该单词出现的次数,并列出每次出现所在的行。如果某单词在同一行中多次出现,程序将只显示该行一次。行号按升序显示,即第7行应该在第9行之前输出,以此类推。

(2)文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。

被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总能实现。一种解决方法是逐段地编辑。任何时刻只把待编辑文件的一段放在内存,称为活区。试按照这种方法实现一个简单的行编辑程序。设文件每行不超过320个字符,很少超过80字符。 基本要求:实现以下4条基本编辑命令:

1)行插入。格式:i<行号><回车><文本><回车> 将<文本>插入活区中第<行号>行之后

2)行删除。格式:d<行号1>[□<行号2>]<回车> 删除活区中第<行号1>行(到第<行号2>行)。两种格式的例子是:“d10↙”和“d10□14↙”

3)活区切换。格式:n<回车> 将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。 4)活区显示。格式:p<回车> 逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是否继续显示以后各页(如果存在)。印出的每一行要前置以行号和一个空格符,行号固定占4位,增量为1。

各条命令中的行号均须在活区中各行行号范围之内,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。

5、时间编程(★★★★)

(限最多3人选)

要求: 能模拟机械钟表行走(时针,分针,秒针),还要准确地利用数字显示时间,在屏幕上显示一个活动时钟,当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月.按任意键时程序退出。

6、单项选择题标准化考试系统(★★★)(限最多3人选) 功能要求:

(1) 用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)

(2) 试题录入:可随时增加试题到试题库中

(3) 试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入) (4) 答题:用户可实现输入自己的答案

(5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

7、车票管理系统(★★★)(限最多3人选)

一车站每天有n个发车班次,每个班次都有一班次号(

1、

2、3„n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如

班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数

1 8:00 上海南 杭州 2 45 30 2 6:30 嘉兴 杭州 0.5 40 40 3 7:00 嘉兴 杭州 0.5 40 20 4 10:00 嘉兴 杭州 0.5 40 2 功能要求:用c设计一系统,能提供下列服务: (1)录入班次信息(信息用文件保存),可不定时地增加班次数据

(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。 (3)查询路线:可按班次号查询 ,可按终点站查询 (4)售票和退票功能

A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数

B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数

8、成绩管理系统 (★★★)(限最多3人选) 现有学生成绩信息,内容如下

姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47 „. .. .. .. „

请用C编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面: 功能要求: (1)信息维护:

要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息 (2)信息查询:

要求:查询时可实现按姓名查询、按学号查询 (3)成绩统计:

要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。

(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)

9、成绩记录簿(★★★)(限最多3人选)

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:

(1)创建信息链表并以磁盘文件保存;

(2)读取磁盘文件并显示输出所有学生的成绩;

(3)按学号或姓名查询成绩;

(4)添加成绩记录;

(5)修改指定姓名或学号的学生的成绩并可存盘;

(6)显示输出60分以下、60~7

9、80~8

9、90分以上各分数段的学生信息。

10、学生籍贯信息记录簿(★★★)(限最多3人选)

编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能:

(1)创建信息链表并以磁盘文件保存;

(2)读取磁盘文件并显示输出所有学生的籍贯信息;

(3)按学号或姓名查询其籍贯;

(4)按籍贯查询并输出该籍贯的所有学生;

(5)能添加、删除和修改学生的籍贯信息;

(6)显示输出四川籍和非四川籍学生的信息并可分别存盘。

11、影碟出租管理(★★★)(限最多3人选)

总体需求 编写一个影碟出租管理程序 影碟信息的组成部分为:碟片名称、国家、类型、借阅标记等 出租信息的组成部分为:会员名、碟片名称、借阅日期、归还日期、租金等

功能需求 1) 新片上架:添加碟片信息

2) 碟片查询:按片名查询某片是否可借阅,结果有三种(可借阅、已借出、无此片)。

3) 碟片借阅:输入会员名、碟片名称、借阅日期,修改碟片的租借标记(每个会员一次可借阅多片)

4)碟片归还:输入会员名、碟片名称、归还日期,修改碟片的租借标记,计算每片租金(每三天的租金为1元,不满三天的按三天计算)。因为每个会员一次可借阅多片,所以也可能一次归还多片。在该操作结束前,应输出该会员此次归还所需支付的总租金。

5)用子函数实现各个子功能

用户界面 输入: 程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。

输出: 1) 应用程序正常运行后,要在屏幕上显示一个文字菜单

2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等

12、学生管理系统(★★★)(限最多3人选)

使用下面的数据,用C设计一个简单的学籍管理系统,实现出最基本的功能。

学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成

学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 87734333 07 张园园 女 102 87756122 „ „. .. „ „„„.. 学生成绩基本信息文件(B.TXT)及其内容:

学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得学分

01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66 „ „. „„„. .. .. „ 功能要求及说明:

(1)数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。

综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70% . 实得学分的计算: 采用等级学分制. 综合成绩在90-100之间 ,应得学分=学分*100% 综合成绩在80-90之间 ,应得学分=学分*80% 综合成绩在70-80之间 ,应得学分=学分*75% 综合成绩在60-70之间 ,应得学分=学分*60% 综合成绩在60以下 ,应得学分=学分*0% (2)查询功能:分为学生基本情况查询和成绩查询两种 A:学生基本情况查询: A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。

A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。

B:成绩查询:

B1:输入一个学号时,查询出此生的所有课程情况,格式如下: 学 号:xx 姓 名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx „ „ „ „ „„„ „ „ 共修:xx科,实得总学分为: xxx (3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。

(4) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。

13、手机通信录模拟系统(★★★)(限最多3人选)

用C设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。

(一) 功能要求

(1)查看功能:选择此功能时,列出下列三类选择。

A 办公类 B 个人类 C 商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码)

(2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如

杨春 13589664454 商务类 chuny@126.com 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。

(3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字。

(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

14、保安值班安排系统(★★★)(限最多3人选)

某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:

赵:星期

二、星期四

钱:星期

一、星期六

孙:星期

三、星期日

李:星期五

周:星期

一、星期

四、星期六

吴:星期

二、星期五

陈:星期

三、星期

六、星期日

15、通信录(★★)(限最多3人选)

设一个通信录由以下几项数据信息构成:

数据项 类型

姓名 字符串

地址 字符串

邮政编码 字符串

电话号码 字符串

试为通信录数据定义类型和定义通信录变量, 实现功能:存取、显示、删除记录、查询记录等功能。要求用文件实现。

上一篇:调查报告作文400字下一篇:bot项目的经验总结