中小学生电子助手课程设计.docx
- 文档编号:6590965
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:30
- 大小:137.80KB
中小学生电子助手课程设计.docx
《中小学生电子助手课程设计.docx》由会员分享,可在线阅读,更多相关《中小学生电子助手课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
中小学生电子助手课程设计
《高级语言程序设计》
课程设计说明书
中小学生电子助手
目录
设计任务·······································(3)
需求分析·····································(4)
系统模块图···································(5)
模块说明·····································(6)
模块1:
函数头·········································(6)
模块2:
主函数·········································(6)
模块3-1:
子函数(建立文件)·································(6)
模块3-2:
子函数(验证用户)·································(7)
模块3-3:
子函数(一元二次方程)·························(7)
模块3-4:
子函数(五子棋)·································(7)
模块3-5:
子函数(四则运算)·································(7)
模块3-6:
子函数(简易通讯录)······························(7)
用户使用说明·································(7)
设计小结····································(9)
参考文献····································(9)
附录(源程序)·································(10)
●一.设计任务
(1)要求任务
为中小学生编写一个与中小学生智力活动有关的小型程序,可进行以下程序处理:
①求一元二次方程任意根
②简单屏幕游戏(五子棋)
③小学生四则运算
④简单通信录
(2)创新完成任务
①添加管理员管理全班学生信息
②管理员认可的用户名一人一个密码
③通讯录、管理用户、登陆密码共用一个文件
④程序拥有英文版和中文版,以适应不同操作系统
注:
win7系统不支持中文运行环境!
3
●二.需求分析
(1)客户要求:
整个程序应有软件封面、说明和帮助文档功能,并加入用户登录(密码验证)功能程序。
封面上应标明软件名称、版本号、编程者姓名、班级、完成日期和功能菜单。
所有要求用户输入处都应有适当的人机对话。
整个程序设计应按模块化设计的要求,分模块设计和调试,再完成整个系统的调试。
每一模块运行结束都应回到主菜单,正常情况下只能从主菜单中退出,且正常退出后应有适当的告别辞。
(2)软件需要:
拥有软件封面模块、密码验证模块、初始化菜单模块、一元二次方程求解模块、小游戏五子棋模块、四则运算模块、简易通讯录模块,以完成所有需求的任务!
4
●三.系统模块图
5
●四.模块说明
(1)函数头
#include"stdio.h"
#include"conio.h"
#include"graphics.h"
#include"bios.h"
#include"math.h"
#include"dos.h"
#include"ctype.h"
#include"string.h"
调用系统中的相关函数,以确保程序的运行正常。
structstudent
{
charname[20];
charxuehao[11];
charadd[30];
chartel[12];
charmima[20];
}stu[200],shuru,guest;
定义学生结构体
(2)主函数
inti;
定义了一个全局变量i;目的在于在循环主菜单与子菜单的过程中,可以共用一个变量;
while
(1)
用了一个循环语句,目的是能让每次功能操作后都能循环回到主菜单并进行操作;
Switch()
经一个选择语句镶嵌到while
(1)的循环语句中,目的是让用户选择功能进行操作;
(3)子函数(建立文件)
Voidxsxxsr();
功能:
利用文件结构体知识完成文件的建立
6
(4)子函数(验证用户)
Voidyanzheng();
功能:
利用简单C知识完成用户的验证
(5)子函数(一元二次方程)
Voidfunc_ecfc();
功能:
完成一元二次方程的求解包括复数解
(6)子函数(五子棋)
{voidinit();voidplay();voidclose();}
功能:
让用户玩五子棋游戏
(7)子函数(四则运算)
Voidszys();
功能:
完成四则运算的测试
(8)子函数(简易通讯录)
Voidjytxl();
功能:
利用结构体文件知识完成通讯录的显示与建立
●五.用户使用说明
本文截图所用的是英文版程序
注:
请按照程序提示进行操作!
每次输入后都要按回车确定!
主菜单a一元二次方程求根b五子棋游戏c小学四则运算测验
d通讯录e退出系统
用数字输入功能的序号,就可以进入所选功能;
7
一元二次函数求解
五子棋游戏
8
简易通讯录
●六.设计小结
经过世纪天的艰苦奋斗,我收获了很多。
这几天,我真的很疲惫,因为,基本每时每刻都在思考这个程序,我觉得作为一个编程员真的太辛苦了,但是当我看到中学生电子助手V1.0版的时候,我觉得辛苦是值得的!
!
我认为编程的时候一定要仔细,耐心,一定要有创新思维,其实编程难就难在思考和调试的过程,一定要思考,一定要不厌其烦的调试,尽情享受编程的乐趣
●七.参考文献
9
[1]谭浩强.C程序设计(第二版).北京:
清华大学出版社,1999
[2]谭浩强.C程序设计(第三版).北京:
清华大学出版社,2010
[3]谭浩强.C程序设计习题集(第三版).北京:
清华大学出版社,2010
●七.附录(中文版源代码)
/*HELLO.C--Hello,world*/
#include"stdio.h"
#include"conio.h"
#include"graphics.h"
#include"bios.h"
#include"math.h"
#include"dos.h"
#include"ctype.h"
#include"string.h"
charch,adm[7]={"123456"};
doublea,b,c,l,x,y,x1,x2;
/********************************************************************/
/********************************************************************/
/************************学生信息文本构建*****************************/
structstudent
{
charname[20];
charxuehao[11];
charadd[30];
chartel[12];
charmima[20];
}stu[200],shuru,guest;
FILE*fp;
intstunum=0;
voidxsxxsr()
{
intnn,i;
if((fp=fopen("10guangxin.txt","ab+"))==NULL)
{
printf("cannotopenthefile\n");
getch();exit(0);
}
for(i=0;i<200;i++)
{
printf("请输入学生信息-姓名:
");
scanf("%s",stu[i].name);
printf("学号:
");
scanf("%s",stu[i].xuehao);
printf("地址:
");
scanf("%s",stu[i].add);
printf("电话号码:
");
scanf("%s",stu[i].tel);
printf("密码:
");
scanf("%s",stu[i].mima);
stunum++;
fwrite(&stu[i],sizeof(stu[i]),1,fp);
printf("是否继续?
是请按1,否请按0\n");
scanf("%d",&nn);
if(nn==0)
break;
}
fclose(fp);
}
/********************************************************************/
/********************************************************************/
/************************读入学生信息*****************************/
voidreadstu()
{
inti;
if((fp=fopen("10guangxin.txt","rb+"))==NULL)
10
{
printf("cannotopenthefile\n");
getch();exit(0);
}
for(i=0;i<200;i++)
{if((fread(&stu[i],sizeof(stu[i]),1,fp))!
=1)break;stunum++;}
}
/********************************************************************/
/********************************************************************/
/************************密码验证********************************/
voidyanzheng()
{
inti,ii,flag=0,flag1=0;
loopmima:
clrscr();
printf("\n\n\n\n\n\n\n\n\t\t\t\t请输入学号:
");
scanf("%s",guest.xuehao);printf("\n");
printf("\n\t\t\t\t请输入密码:
");
scanf("%s",guest.mima);printf("\n");
for(i=0;i<200;i++);
if(strcmp(stu[i].xuehao,guest.xuehao)==0)
{
flag=1;
/*break;*/
}
for(ii=0;ii<200;ii++);
if(strcmp(stu[ii].mima,guest.mima)==0)
{
flag1=1;
/*break;*/
}
if(flag==1&&flag1==1&&ii==i)
{
guest=stu[i-1];
clrscr();
printf("\n\n\n\n\n\n\n\n\t\t\t\t欢迎你!
\n\n");
printf("\t\t\t按任意键继续...");
getch();
}
elseif(flag==1)
{
printf("密码输入错误.\n");
gotoloopmima;
}
elseif(flag==0)
{printf("不存在此学生\n");
gotoloopmima;}
}
/********************************************************************/
/********************************************************************/
/************************菜单选项界面********************************/
voidmenu_s()
{
printf("\n\n");
printf("\t\t|-----------------------------------------|\n");
printf("\t\t|\t菜单选项|\n");
printf("\t\t|-----------------------------------------|\n");
printf("\t\t|\ta.一元二次方程求根|\n");
printf("\t\t||\n");
printf("\t\t|\tb.五子棋游戏|\n");
printf("\t\t||\n");
printf("\t\t|\tc.小学四则运算测验|\n");
printf("\t\t||\n");
printf("\t\t|\td.通讯录|\n");
printf("\t\t||\n");
printf("\t\t|\te.退出|\n");
printf("\t\t||\n");
printf("\t\t|_________________________________________|\n\n");
printf("\t请选择(a,b,c,d或e):
");getch();
}
/********************************************************************/
/********************************************************************/
/************************软件封面************************************/
voidrjfm()
{
printf("\n\n");
printf("\t\t|-----------------------------------------|\n");
printf("\t\t|\t中小学生电子助手|\n");
printf("\t\t|-----------------------------------------|\n");
printf("\t\t|\t姓名:
刘守起|\n");
printf("\t\t||\n");
printf("\t\t|\t学号:
2010146151|\n");
printf("\t\t||\n");
printf("\t\t|\t指导老师:
杨先卫老师|\n");
printf("\t\t||\n");
printf("\t\t|\t单位:
三峡大学|\n");
printf("\t\t||\n");
printf("\t\t|\t|\n");
printf("\t\t||\n");
printf("\t\t|_________________________________________|\n\n");
printf("\n\n\t\t\t按任意键继续...");
}
/********************************************************************/
/********************************************************************/
/********************************************************************/
/************************一元二次函数********************************/
voidfunc_ecfc()
{
intqq;
clrscr();
loopyiyuan:
printf("请输入一元二次的系数a、b、c:
\n");
scanf("%lf%lf%lf",&a,&b,&c);
if((l=b*b-4*a*c)>0)
{
x1=(-b+sqrt(l))/(2*a);
x2=(-b-sqrt(l))/(2*a);
printf("%.2fX*X+%.2fX+%.2f=0的根为:
\n",a,b,c);
printf("X1=%.2f;\tX2=%.2f.\n",x1,x2);
}
elseif(l==0)
{
x1=x2=-b/2/a;
printf("%.2fX*X+%.2fX+%.2f=0的根为:
\n",a,b,c);
printf("X1=X2=%.2f.\n",x1);
}
else
{
x=-b/2/a;
y=sqrt(abs(l));
printf("%.2fX*X+%.2fX+%.2f=0的根为:
\n",a,b,c);
printf("X1=%.2f+%.2fi\n",x,y);
printf("X1=%.2f-%.2fi\n",x,y);
}
printf("\n\n\t\t\tContiune?
Yes-1,N0-0\n");
scanf("%d",&qq);
if(qq==1){clrscr();gotoloopyiyuan;qq=0;}
printf("\n\n\t\t\t按任意键继续...");
}
/********************************************************************/
/********************************************************************/
/********************************************************************/
/************************五子棋游戏********************************/
#defineUP0x4800
#defineDOWN0x5000
#defineLEFT0x4b00
#defineRIGHT0x4d00
#defineESC0x11b
#defineEnter0x1c0d
staticintflag[10][10]={0};
staticintlife=1,Fx;
staticintI,J,yuan1,yuan2;
staticintwin,color1=6,color2=15;
externintinit()
{autointi,j,gdriver=DETECT,gmode;
/*registerbgifont();*/
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,"");
setbkcolor
(2);setlinestyle(1,0,3);
setcolor(YELLOW);
outtextxy(50,10,"PressESCtoquit!
!
!
!
!
");
outtextxy(400,460,"Madebyweida!
!
Thankyou!
");
outtextxy(10,60,"NOWis:
");
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
rectangle(100+(i-1)*40,40*j,100+(i-1)*40+40,40*j+40);
return0;
}
staticvoidDrawcircle(intx,inty,intcolor)
{setcolor(YELLOW);setlinestyle(1,0,1);setfillstyle(1,color);
circle(x,y,15);floodfill(x,y,YELLOW);
}
staticvoidbar0(intcolor)
{setfillstyle(1,2);bar(10,70,50,110);
Drawcircle(30,90,color);
}
staticintNew_one(intcolor)
{intcolo=color,i=0,j=0;
for(i=0;i<=9;i++)
{
for(j=0;j<=8&&flag[i][j]!
=0;j++)
if(i==9&&j==8)return0;
if(flag[i][j]==0)break;
}
Drawcircle(40*j+120,(i+1)*40+20,colo);
I=j,J=i;
if(colo==color1)yuan1=0,flag[i][j]=1;
elseyuan2=0,flag[i][j]=2;
return1;
}
staticintWIN(intx,inty)
{int_x=x,_y=y,i,j,k;
for(i=1;i<=5;i++)/*---------------*/
{for(j=1;j<=i-1;j++)
{if((_x-80)/40-1-j<0)gotoloop1;
if(flag[(_y-20)/40-1][(_x-80)/40-j]==flag[(_y-20)/40-1][(_x-80)/40-1-j])
continue;
elsebreak;
}
for(k=0;k<=4-i;k++)
{if((_x-80)/40-1+k>9)gotoloop1;
if(flag[(_y-20)/40-1][(_x-80)/40-1+k]==flag[(_y-20)/40-1][(_x-80)/40+k])
continue;
elsebreak;
}
if(j==i&&k==5-i)return1;loop1:
;
}
for(i=1;i<=5;i++)
{for(j=1;j<=i-1;j++)
{if((_y-20)/40-1-j<0)gotoloop2;
if(flag[(_y-20)/40-j][(_x-80)/40-1]==flag[(_y-20)/40-1-j][(_x-80)/40-1])
con
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中小学生 电子 助手 课程设计