《高级语言程序设计》
课程设计报告
姓 名:
学 号:
班 级:
设计时间:
审阅教师:
目 录
一.封面………………………………………………………………1
二.目录页……………………………………………………………2
三.语言描述及截图…………………………………………3—— 5
四.源程序清单………………………………………………6——29
(报告正文部分的格式):
(要求:正文部分一律用五号字,宋体,单倍行距。一级大标题靠左,四号,宋体,加粗。二级大标题靠左,小四,宋体,不加粗。)
课程设计的内容如下:
一. 课程设计的目的与要求(含设计指标)
(参见课程设计要求)
二. 方案实现与调试
2.1分屏处理数据系统
?2.1.1 题目内容的描述
?2.1.2 应用程序功能的详细说明
?2.1.3 输入数据类型、格式和内容限制;
?2.1.4主要模块的算法描述
每次主循环产生一屏10*10的数组,分别两两比较2个元素的大小,较大的赋给MAX,较小的赋给MIN,各个元素累加结果除以100输出平均数。结尾清屏以达到翻页效果.
2.1.5 调试过程及实验结果
2.2掷骰子游戏
?2.2.1 题目内容的描述
?2.2.2 应用程序功能的详细说明
?2.2.3 输入数据类型、格式和内容限制;
?2.2.4主要模块的算法描述
产生1到6的随机数赋给1个包含4个元素的数组,如果前后两个数字大小一样且都为6则选手得8分,若前后两个数字大小一样但不为6则选手得7分,若果前后数字不一样,则按较小数计分。分别将2个选手的得分相加,比较总分,得到最后结果.
2.2.5 调试过程及实验结果
2.3射击游戏
产生一个1到200的随机数,输出相应数量空格,然后紧接着输出笑脸。利用循环逐行输出空格回车,在笑脸下方底部输出星号,利用空循环延时,以达到星号上移的效果.若用户输入数字与产生的随机数相同,星号击中笑脸,玩家获胜,游戏结束。若5次都错,玩家失败,游戏结束
2.6猜数字游戏
利用数组存放产生的随机数,创建一个TXT文本文档,将游戏过程中的所有数据写入其中.比较用户输入的数字和最开始随机产生的答案,输出猜对的个数和位置。直到用户猜对,退出程序
2.7金币
将天数分为i组,先计算出i组的天数内金币总和,然后将实际天数减去i组内的最后一天,把天数差乘以i,最后将所得的结果与之前的总和相加得到最后的金币数量,输出.
深化部分 职工工资管理系统设计
坦白地说,深化部分并不是自己独立完成的,在编写过程中参阅了课外指导材料,同时感谢爱问知识堂的网友热情的解答.
三.课程设计分析与总结
通过本次课程设计,我进一步熟悉掌握了Turbo C 2.0 的编程环境和书写规范.
在课程设计的过程中,我遇到的了许多困难,有的时候简直抓狂,完全找不到出错的原因。一段时间以后,静下心来,逐行逐句的找错,调试,最后终于发现了症结所在。在设计的过程中,我通过向同学求助,查阅课本及相关资料学习到了许多新的知识.
经过这次的课程设计,我变得更加细心,对于C语言的兴趣更加深厚了。最后发现通过自己的努力探索往往会比在课堂上获得的更多……
四. 源程序清单
1分屏处理数据系统
#include <stdio.h>
#include <stdlib.h>
#define N 10
main()
{
int m=0,i,j,p,max,min,a[N][N];
float sum;
randomize();
for(p=0;p<10;p++)
{
sum=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
a[i][j]=random(999);
max=a[0][0];
min=a[0][0];
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%5d",a[i][j]);
sum=sum+a[i][j];
if(a[i][j]>=max) max=a[i][j];
if(a[i][j]<=min) min=a[i][j];
}
printf("\n");
m=m++;
}
printf(" Max=%d, Min=%d, Average=%.2f\n",max,min,sum/100);
printf(" Press any key to continue...");
if(m>=10)
getch();
clrscr();
}
}
2掷骰子游戏
#include <stdio.h>
#include <stdlib.h>
main()
{
int i,score,n=1,m=0,p1=0,p2=0,a[4];
randomize();
clrscr();
do
{
for(i=0;i<4;i++)
a[i]=1+random(6);
for(i=0;i<4;i=i+2)
{
if(a[i]==a[i+1])
{
if(a[i]==6) score=8;
else score=7;
}
else
{
if(a[i]>a[i+1]) score=a[i+1];
else score=a[i];
}
if(n%2!=0) p1=p1+score;
else p2=p2+score;
if((m==5) && (p1>=p2*2 || p2>=p1*2))
break;
n++;
}
for(i=0;i<4;i++)
{
printf("%2d",a[i]);
if(i%2!=0)
printf("\n");
}
printf(" p1=%d p2=%d\n",p1,p2);
printf("Press any key to continue.....\n\n");
getch();
m++;
}while(m!=10);
if(p1>p2) printf("\nPlayer1 is the winner.\n");
if(p1==p2) printf("The same.\n");
if(p1<p2) printf("Player2 is the winner.\n");
}
3射击游戏
#include<stdio.h>
#include<stdlib.h>
main()
{
int a,b,i,j,k,t=0,m,c;
clrscr();
randomize();
a=1+random(200);
do
{
clrscr();
k=25;
t++;
for(i=0;i<a;i++) printf(" ");
printf("%c",'\1');
printf("\nPlease input a number between 1 to 200:");
scanf("%d",&b);
if(b<1||b>200)
{
printf("Error! Please check the number you put.");
break;
}
do
{
clrscr();
k--;
for(i=0;i<a;i++) printf(" ");
printf("%c",'\1');
for(i=0;i<k;i++) printf("\n");
for(i=1;i<=b;i++) printf(" ");
printf("*");
for(j=0;j<18000;j++)
for(m=0;m<1000;m++)
c=m;
}while(k!=0);
if(b==a)
{
clrscr();
printf("Congradulations!You get the right answer!");
break;
}
}while(t!=5);
if(a!=b && t==5)
{
clrscr();
printf("Sorry...All the answers are wrong.");
}
}
6猜数字游戏
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
FILE*fp;
int a[4],b[4],i,j,t,p,q;
char c;
clrscr();
randomize();
if((fp=fopen("Guessing.txt","a"))==NULL)
printf("Can not open output file.");
for(i=0;i<4;i++)
a[i]=random(10);
fprintf(fp,"\nThe right answer is:");
for(i=0;i<4;i++)
{
fprintf(fp," %d",a[i]);
}
do
{
p=0;
q=0;
printf("Please input numbers:\n");
fprintf(fp,"\nPlease input numbers:");
for(i=0;i<4;i++)
{
c=getche();
b[i]=c-'0';
fprintf(fp," %d",b[i]);
}
for(i=0;i<4;i++)
{
if(a[i]==b[i]) q++;
}
for(i=0;i<4;i++)
{
j=0;
do
{
if(a[i]==b[j])
{
p++;
b[j]=-1;
}
j++;
}while(j!=4);
}
if(q!=4)
printf("\nThere are %d numbers right and %d in the right locatoin\n",p,q);
fprintf(fp,"\nThere are %d numbers right and %d numbers in the right location",p,q);
}while(q!=4);
if(q==4)
{
printf("\nCongrudulations!");
fprintf(fp,"\nCongrudulations!");
}
if(q!=4)
{
printf("\nSorry...YOU LOSE!");
fprintf(fp,"\nSorry...YOU LOSE!\n");
}
}
7金币
#include <stdio.h>
main()
{
int n,i,sum=0,last_num=0;
clrscr();
printf("Please input the day:");
scanf("%d",&n);
for(i=1; (i*i+i)/2 <= n;i++)
{
sum=sum+i*i;
last_num=last_num+i;
}
if(n-last_num>0)
sum=sum+i*(n-last_num);
printf("The number of the gold is:%d\n",sum);
}
深化部分 职工工资管理系统设计
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
typedef struct ZHIGONG
{
char zhigongNumber[10];
char zhigongName[20];
char zhigongsex[4];
char zhigongage[10];
char zhigongedu[10];
char zhigongposition[30];
char zhigongwage[1000];
struct ZHIGONG *next;
}ZHIGONG;
ZHIGONG *headLink;
void ReadInfoFormFile(void);
void DesplayMenu(void);
void CreateHeadLink(void);
ZHIGONG *MallocNode(void);
void GetInformation(ZHIGONG *t);
void InsertOneNode(ZHIGONG *t);
void DesplayInfoByzhigongwage(void);
void DesplayInfoByezhigongedu(void);
void DesplayOneNode(ZHIGONG *t);
void DeleteNodeByzhigongNumber(void);
void OutputInformation(void);
void ChangeMarkByzhigongName(void);
void CompositorByTotalzhigongwage(void);
void CompositorByTotalzhigongedu(void);
void SaveLinkToFile(void);
int choose;
void main()
{
CreateHeadLink();
ReadInfoFormFile();
DesplayMenu();
SaveLinkToFile();
}
/************************************
************************************/
void ReadInfoFormFile(void)
{
FILE *fp;
ZHIGONG *p;
fp=fopen("zhigong.txt","r");
if(!fp)
{
printf("The file didn't exist.\n");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%s%s%s%s",p->zhigongNumber,p->zhigongName,p->zhigongsex,
p->zhigongage,p->zhigongedu,p->zhigongposition,p->zhigongwage))
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
************************************/
void DesplayMenu(void)
{
ZHIGONG *p;
printf("-----------Please Choose------------\n\n");
printf(" 1 Please input the information \n");
printf(" 2 Show the information \n");
printf(" 3 Look up by salary \n");
printf(" 4 Look up by education \n");
printf(" 5 Rebuild by salary \n");
printf(" 6 Rebuild by education \n");
printf(" 7 Delete according to working number \n");
printf(" 8 Change according to working number \n");
printf(" 9 Exist\n\n");
scanf("%d",&choose);
switch(choose)
{
case 1:
p=MallocNode();
GetInformation(p);
InsertOneNode(p);
break;
case 2:
OutputInformation();
break;
case 3:
DesplayInfoByzhigongwage();
break;
case 4:
DesplayInfoByezhigongedu();
break;
case 5:
CompositorByTotalzhigongwage();
break;
case 6:
CompositorByTotalzhigongedu();
break;
case 7:
DeleteNodeByzhigongNumber();
break;
case 8:
ChangeMarkByzhigongName();
break;
case 9:
SaveLinkToFile();
free(headLink);
default:
break;
}
DesplayMenu();
}
/************************************
************************************/
void CreateHeadLink(void)
{
ZHIGONG *p;
p=(ZHIGONG*)malloc(sizeof(ZHIGONG));
headLink=p;
p->next=NULL;
}
/****************************************
*****************************************/
ZHIGONG *MallocNode(void)
{
ZHIGONG *p;
int i;
p=(ZHIGONG*)malloc(sizeof(ZHIGONG));
if(p==NULL)
return NULL;
for(i=0;i<10;i++)
p->zhigongNumber[i]='\0';
for(i=0;i<20;i++)
p->zhigongName[i]='\0';
for(i=0;i<4;i++)
p->zhigongsex[i]='\0';
for(i=0;i<10;i++)
p->zhigongage[i]='\0';
for(i=0;i<10;i++)
p->zhigongedu[i]='\0';
for(i=0;i<30;i++)
p->zhigongposition[i]='\0';
for(i=0;i<1000;i++)
p->zhigongwage[i]='\0';
p->next=NULL;
return p;
}
/************************************
************************************/
void GetInformation(ZHIGONG *t)
{
printf("Please input the working number:\n");
scanf("%s",t->zhigongNumber);
printf("Please input the name:\n");
scanf("%s",t->zhigongName);
printf("Please input the sex:\n");
scanf("%s",t->zhigongsex);
printf("Please input the birthday:\n");
scanf("%s",t->zhigongage);
printf("Please input the education:\n");
scanf("%s",t->zhigongedu);
printf("Please input the office position:\n");
scanf("%s",t->zhigongposition);
printf("Please input the salary:\n");
scanf("%s",t->zhigongwage);
}
/************************************
************************************/
void InsertOneNode(ZHIGONG *t)
{
ZHIGONG *p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/*************************************************
**************************************************/
void DesplayInfoByzhigongwage(void)
{
ZHIGONG *p;
char zhigongwage[1000];
char flag=0;
p=headLink->next;
printf("Please input the salary:\n");
scanf("%s",zhigongwage);
while(p)
{
if(strcmp(p->zhigongwage,zhigongwage)==0)
{
printf("Working number\tName\tSex\tBirthday\tEducation\tOffice Position\tSalary\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("Sorry.There is no worker in salary of %s.\n",zhigongwage);
}
/************************************************
*************************************************/
void DesplayInfoByezhigongedu(void)
{
ZHIGONG *p;
char zhigongedu[10];
char flag=0;
p=headLink->next;
printf("Please input the education:\n");
scanf("%s",zhigongedu);
while(p)
{
if(strcmp(p->zhigongedu,zhigongedu)==0)
{
printf("Working number\tName\tSex\tBirthday\tEducation\tOffice Position\tSalary\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("Sorry.There is no worker in salary of %s.\n",zhigongedu);
}
/************************************
************************************/
void DesplayOneNode(ZHIGONG *t)
{
printf("%s\t",t->zhigongNumber);
printf("%s\t",t->zhigongName);
printf("%s\t",t->zhigongsex);
printf("%s\t",t->zhigongage);
printf("%s\t",t->zhigongedu);
printf("%s\t",t->zhigongposition);
printf("%s\t\n",t->zhigongwage);
}
/*************************************************
**************************************************/
void DeleteNodeByzhigongNumber(void)
{
char zhigongNumber[10];
ZHIGONG *p,*q;
char flag=0;
printf("Please input the working number:");
scanf("%s",zhigongNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->zhigongNumber,zhigongNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
{
printf("Sorry.There is no such a number.\n");
return;
}
printf("Delete Sucessfully.\n");
}
/************************************
************************************/
void OutputInformation(void)
{
ZHIGONG *p;
p=headLink->next;
if(p==NULL)
{
printf("Please input the information\n\n");
return;
}
printf("Working Number\tName\tSex\tBirthday\tEducation\tOffice Position\tSalary\n\n");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/*********************************************
**********************************************/
void ChangeMarkByzhigongName(void)
{
ZHIGONG *p;
char zhigongName[10];
char flag=0;
char zhigongedu,zhigongwage,zhigongage,zhigongNumber,zhigongsex,zhigongposition;
p=headLink->next;
printf("Please input the name:\n");
scanf("%s",zhigongName);
while(p)
{
if(strcmp(p->zhigongName,zhigongName)==0)
{
printf("Please input the new working number:\n");
scanf("%s",&zhigongNumber);
printf("Please input the new education:\n");
scanf("%s",&zhigongedu);
printf("Please input the new salary:\n");
scanf("%s",&zhigongwage);
printf("Please input the new birthday:\n");
scanf("%s",&zhigongage);
printf("Please input the new sex:\n");
scanf("%s",&zhigongsex);
printf("Please input the new office position:\n");
scanf("%s",&zhigongposition);
strcpy(p->zhigongposition,&zhigongposition);
strcpy(p->zhigongsex,&zhigongsex);
strcpy(p->zhigongNumber,&zhigongNumber);
strcpy(p->zhigongedu,&zhigongedu);
strcpy(p->zhigongwage,&zhigongwage);
strcpy(p->zhigongage,&zhigongage);
flag=1;
printf("Change Sucessfully.\n");
break;
}
p=p->next;
}
if(!flag)
printf("Sorry.There is no worker named %s.\n",zhigongName);
}
/************************************
************************************/
void SaveLinkToFile(void)
{
ZHIGONG *p;
FILE *fp;
p=headLink->next;
if(p==NULL)
{
printf("Please input the information\n\n");
return;
}
fp=fopen("zhigong.txt","w+");
if(!fp)
{
printf("The file didn't exist.\n");
return;
}
while(p)
{
fprintf(fp,"%s%s%s%s%s%s%s",p->zhigongNumber,p->zhigongName,p->zhigongsex,
p->zhigongage,p->zhigongedu,p->zhigongposition,p->zhigongwage);
p=p->next;
}
fclose(fp);
}
/************************************
************************************/
void CompositorByTotalzhigongwage(void)
{
ZHIGONG exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("Please input the information\n");
return;
}
while(r)
{
p=r;
q=r->next;
while(q)
{
if((p->zhigongwage)>(p->zhigongwage))
{
strcpy(exchange.zhigongNumber,q->zhigongNumber);
strcpy(exchange.zhigongName,q->zhigongName);
strcpy(exchange.zhigongsex,q->zhigongsex);
strcpy(exchange.zhigongage,q->zhigongage);
strcpy(exchange.zhigongedu,q->zhigongedu);
strcpy(exchange.zhigongposition,q->zhigongposition);
strcpy(exchange.zhigongwage,q->zhigongwage);
strcpy(q->zhigongNumber,p->zhigongNumber);
strcpy(q->zhigongName,p->zhigongName);
strcpy(q->zhigongsex,p->zhigongsex);
strcpy(q->zhigongage,p->zhigongage);
strcpy(q->zhigongedu,p->zhigongedu);
strcpy(q->zhigongposition,p->zhigongposition);
strcpy(q->zhigongwage,p->zhigongwage);
strcpy(p->zhigongNumber,exchange.zhigongNumber);
strcpy(p->zhigongName,exchange.zhigongName);
strcpy(p->zhigongsex,exchange.zhigongsex);
strcpy(p->zhigongage,exchange.zhigongage);
strcpy(p->zhigongedu,exchange.zhigongedu);
strcpy(p->zhigongposition,exchange.zhigongposition);
strcpy(p->zhigongwage,exchange.zhigongwage);
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}
/************************************
************************************/
void CompositorByTotalzhigongedu(void)
{
ZHIGONG exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("Please input the information\n");
return;
}
while(r)
{
p=r;
q=r->next;
while(q)
{
if((q->zhigongedu)>(p->zhigongedu))
{
strcpy(exchange.zhigongNumber,q->zhigongNumber);
strcpy(exchange.zhigongName,q->zhigongName);
strcpy(exchange.zhigongsex,q->zhigongsex);
strcpy(exchange.zhigongage,q->zhigongage);
strcpy(exchange.zhigongedu,q->zhigongedu);
strcpy(exchange.zhigongposition,q->zhigongposition);
strcpy(exchange.zhigongwage,q->zhigongwage);
strcpy(q->zhigongNumber,p->zhigongNumber);
strcpy(q->zhigongName,p->zhigongName);
strcpy(q->zhigongsex,p->zhigongsex);
strcpy(q->zhigongage,p->zhigongage);
strcpy(q->zhigongedu,p->zhigongedu);
strcpy(q->zhigongposition,p->zhigongposition);
strcpy(q->zhigongwage,p->zhigongwage);
strcpy(p->zhigongNumber,exchange.zhigongNumber);
strcpy(p->zhigongName,exchange.zhigongName);
strcpy(p->zhigongsex,exchange.zhigongsex);
strcpy(p->zhigongage,exchange.zhigongage);
strcpy(p->zhigongedu,exchange.zhigongedu);
strcpy(p->zhigongposition,exchange.zhigongposition);
strcpy(p->zhigongwage,exchange.zhigongwage);
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}