第一篇:教师奖金计算系统-C语言课程设计
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
教师奖金计算系统-C语言课程设计
#include
1、专职教师n”);printf(“
2、行政n”);printf(“0、退出程序n”);scanf(“%d”,&a);
printf(“n===================n”);switch(a){ case 0:j=0;break;
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
case 1: { {do
{printf(“请输入你的教师类型:n”);
printf(“
1、高级讲师n2、中级讲师n3、助理讲师n4、见习期n”);
scanf(“%d”,&b);
switch(b)
{case 1: c=10;d=40;break;
case 2: c=9;d=35;break;
case 3: c=8;d=30;break;
case 4: c=4;d=10;break;
default: printf(“n输入错误,请重新输入:n”);
}
}
while(b<=0||b>4);} printf(“n===================n”);{for(i=1;i<=3;i++)
{
printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i);
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
scanf(“%d”,&m[i]);
printf(“您输入的课时数为:%dn”,m[i]);
printf(“请输入所代 课程%d 所对应的听课人数n”,i);
scanf(“%d”,&e);
if(e<60)n[i]=1;
if(e>=61&&e<=70)n[i]=1.2;
if(e>=71&&e<=80)n[i]=1.3;
if(e>=81&&e<=90)n[i]=1.4;
if(e>=91&&e<=100)n[i]=1.5;
if(e>=101&&e<=120)n[i]=1.6;
if(e>=121&&e<=140)n[i]=1.7;
if(e>=141&&e<=160)n[i]=1.8;
if(e>=161&&e<=180)n[i]=1.9;
if(e>=181)n[i]=2.0;
printf(“您输入的课程人数为%dn课程%d对应系数为%2.2fn”,e,i,n[i]);
} }
printf(“n===================n”);
{do
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
{printf(“请选择您的教师等级:n”);
printf(“
1、A等n2、B等n3、C等n”);
scanf(“%d”,&f);
if(f==1)g=1;
else if(f==2)g=0;
else if(f==3)g=-1;
else printf(“n输入错误,请重新输入:n”);
}
while(f<=0||f>3);
}
printf(“n===================n”);printf(“n===========以下为您本月的奖金信息:===========n”);printf(“乘学时系数后本月各课程课时:n”);printf(“课程1:%2.2fn”,m[1]*n[1]*4.5);printf(“课程2:%2.2fn”,m[2]*n[2]*4.5);printf(“课程3:%2.2fn”,m[3]*n[3]*4.5);printf(“本月超课时为:%2.2fn”,(m[1]*n[1]+m[2]*n[2]+m[3]*n[3])*4.5-36);printf(“本月奖金数为:%2.2fn”,((m[1]*n[1]+m[2]*n[2]+m[3]*n[3])*4.5-36)*(d+g)+36*(c+g
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案));break;} case 2: { {do
{printf(“请选择类型:n”);
printf(“
1、普通行政(未兼课)nn2、普通行政兼课、实验室教师nn3、见习其行政(未兼课)nn4、见习期行政兼课nn5、中层领导(未兼课)nn6、中层领导兼课nn ”);
scanf(“%d”,&b);
}
while(b<=0||b>6);}
printf(“n===================n”);
switch(b)
{case 1: h=1500;
printf(“n===========以下为您本月的奖金信息:===========n”);
printf(“您本月的坐班奖金为:%dnn”,h);
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
break;
case 2:h=1500;
{do
{printf(“请输入你的教师类型:n”);
printf(“
1、高级讲师n2、中级讲师n3、助理讲师n”);
scanf(“%d”,&d);
switch(d)
{case 1: c=10;break;
case 2: c=8;break;
case 3: c=6;break;
default: printf(“n输入错误,请重新输入:n”);
}
}
while(b<=0||b>3);
}
printf(“n===================n”);
{for(i=1;i<=3;i++)
{
printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i);
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
scanf(“%d”,&m[i]);
printf(“您输入的课时数为:%dn”,m[i]);
}
}
printf(“n===================n”);
{do
{printf(“请选择您的教师等级:n”);
printf(“
1、A等n2、B等n3、C等n”);
scanf(“%d”,&f);
if(f==1)g=1;
else if(f==2)g=0;
else if(f==3)g=-1;
else printf(“n输入错误,请重新输入:n”);
}
while(f<=0||f>3);
}
printf(“n===================n”);
printf(“n===========以下为您本月的奖金信
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
息:===========n”);
printf(“您本月所教课时为:%2.2fn”,(m[1]+m[2]+m[3])*4.5);
printf(“您本月的坐班奖金为:%dn”,h);
printf(“n您本月的全部奖金为:%2.2fn”,h+((m[1]+m[2]+m[3])*4.5)*(c+g));
break;
case 3: h=700;
printf(“n===========以下为您本月的奖金信息:===========n”);
printf(“n您本月的坐班奖金为:%dn”,h);
break;
case 4: h=700;
c=4;
{for(i=1;i<=3;i++)
{
printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i);
scanf(“%d”,&m[i]);
printf(“您输入的课时数为:%dn”,m[i]);
}
}
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
printf(“n===================n”);
{do
{printf(“请选择您的教师等级:n”);
printf(“
1、A等n2、B等n3、C等n”);
scanf(“%d”,&f);
if(f==1)g=1;
else if(f==2)g=0;
else if(f==3)g=-1;
else printf(“n输入错误,请重新输入:n”);
}
while(f<=0||f>3);
}
printf(“n===================n”);
printf(“n===========以下为您本月的奖金信息:===========n”);
printf(“您本月所教课时为:%2.2fn”,(m[1]+m[2]+m[3])*4.5);
printf(“您本月的坐班奖金为:%dn”,h);
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
printf(“n您本月的全部奖金为:%2.2fn”,h+((m[1]+m[2]+m[3])*4.5*(c+g)));
break;
case 5: h=2000;
printf(“n===========以下为您本月的奖金信息:===========n”);
printf(“您本月的坐班奖金为:%dn”,h);
break;
case 6: h=2000;
{do
{printf(“请输入你的教师类型:n”);
printf(“
1、高级讲师n2、中级讲师n3、助理讲师n”);
scanf(“%d”,&d);
switch(d)
{case 1: c=20;break;
case 2: c=15;break;
case 3: c=10;break;
default: printf(“n输入错误,请重新输入:n”);
}
}
while(d<=0||d>3);
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
}
printf(“n===================n”);
{for(i=1;i<=3;i++)
{
printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i);
scanf(“%d”,&m[i]);
printf(“您输入的课时数为:%dn”,m[i]);
}
}
printf(“n===================n”);
{do
{printf(“请选择您的教师等级:n”);
printf(“
1、A等n2、B等n3、C等n”);
scanf(“%d”,&f);
if(f==1)g=1;
else if(f==2)g=0;
else if(f==3)g=-1;
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
else printf(“n输入错误,请重新输入:n”);
}
while(f<=0||f>3);
}
printf(“n===================n”);
printf(“n===========以下为您本月的奖金信息:===========n”);
printf(“您本月所教课时为:%2.2fn”,(m[1]+m[2]+m[3])*4.5);
printf(“您本月的坐班奖金为:%dn”,h);
printf(“n您本月的全部奖金为:%2.2fn”,h+((m[1]+m[2]+m[3])*4.5)*(c+g));
break;
}
}break;
}
}while(j==1);
}
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
精心收集
精心编辑 精致阅读 如需请下载!
第二篇:C语言课程设计火车票系统源代码
#include
//编号// char name[20];
//起点和终点// char time[5];
//出发时间// int price;
//车票价格// int amount;
//剩余数量// struct Node *next;}Node;//创建链表并输入数据// struct Node *creat(){ struct Node *head,*r,*s;
int i=0;
char choice;
head=(struct Node *)malloc(sizeof(struct Node));head->next=NULL;r=head;do {
s=(struct Node *)malloc(sizeof(struct Node));s->next=NULL;printf(“请输入第%d种火车票的信息:n”,++i);printf(“请输入火车的编号:”);
scanf(“%d”,&s->num);
printf(“起点和终点:”);scanf(“%s”,s->name);printf(“出发时间:”);scanf(“%s”,s->time);printf(“车票价格:”);scanf(“%d”,&s->price);printf(“剩余数量:”);scanf(“%d”,&s->amount);
r->next=s;
r=s;
printf(“Continue?(Y/N)”);scanf(“%s”,&choice);}while(choice=='Y'||choice=='y');
r->next=NULL;return(head);} //将单链表中的信息保存到文件1.txt中// void save(struct Node *h){
struct Node *s;FILE *fp;
char filename[10]=“1.txt”;
fp=fopen(“1.txt”,“wt”);if(fp==NULL){
printf(“n写文件出错,按任意键退出!”);getchar();exit(1);}
for(s=h->next;s!=NULL;s=s->next)
fprintf(fp,“%d %s %s %d %d n”,s->num,s->name,s->time,s->price,s->amount);
getchar();fclose(fp);} // 从文件1.txt中读取信息并存入单链表中// struct Node *read(){ struct Node *head,*r,*s;FILE *fp;char filename[10]=“zl.txt”;fp=fopen(“1.txt”,“rt”);if(fp==NULL){
printf(“读文件错误,按任意键退出!”);getchar();exit(1);} head=(struct Node *)malloc(sizeof(struct Node));head->next=NULL;r=head;while(!feof(fp)){
s=(struct Node *)malloc(sizeof(struct Node));fscanf(fp,“%d %s %s %d %d”,&s->num,s->name,s->time,&s->price,&s->amount);
r->next=s;r=s;
} r->next=NULL;fclose(fp);
return head;} //将链表中的数据输出// void print(struct Node *h){
struct Node *s;
printf(“n火车票信息如下:n”);
printf(“~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n”);printf(“编号
起点和终点
出发时间
车票价格
剩余票数:n”);
for(s=h->next;s->next!=NULL;s=s->next){ printf(“ %d
%10s
%5s %10d %6dn”,s->num,s->name,s->time,s->price,s->amount);} } //链表查询// struct Node * find(struct Node *h){ int i,j;char s[20];printf(“tt
查询方法有以下几种:n”);printf(“tt
1.火车票编号n”);printf(“tt
2.起点和终点n”);printf(“tt
3.出发时间n”);printf(“tt
4.车票价格n”);printf(“tt
5.剩余票数n”);printf(“请输入您要查询的方法的序号:”);scanf(“%d”,&i);switch(i){ case 1:printf(“请输入你要查询火车票的编号:”);scanf(“%d”,&j);
while(h->next!=NULL)
{
h=h->next;
if(h->num==j)return h;
}
return NULL;break;case 2:printf(“请输入您要查询火车票的起点和终点:”);scanf(“%s”,s);while(h->next!=NULL){
h=h->next;if(strcmp(h->name,s)==0)
return h;
} return NULL;break;case 3:printf(“请输入您要查询火车票的时间:”);
scanf(“%s”,s);
while(h->next!=NULL)
{
h=h->next;
if(strcmp(h->time,s)==0)
return h;
}
return NULL;
break;case 4:printf(“请输入你要查询火车票的价格 :”);scanf(“%d”,&j);
while(h->next!=NULL)
{
h=h->next;
if(h->price==j)
return h;
}
return NULL;
break;case 5:printf(“请输入你要查询火车票的剩余票数:”);scanf(“%d”,&j);
while(h->next!=NULL)
{
h=h->next;
if(h->amount==j)
return h;
} return NULL;
break;} } //修改信息// change(struct Node *h,int k){ int j;struct Node *p;p=find(h);printf(“------------n”);printf(“t
您要修改哪一项?n”);printf(“t
1.火车编号n”);printf(“t
2.起点和终点n”);printf(“t
3.出发时间n”);printf(“t
4.车票价格n”);
printf(“t
5.剩余票数n”);printf(“t
0.退出系统n”);
printf(“------------n”);printf(“请输入您要修改项的编号:”);scanf(“%d”,&j);switch(j)
{ case 1:
printf(“修改后的火车编号:”);
scanf(“%d”,&p->num);
break;
case 2:
printf(“修改后的起点和终点:”);
scanf(“%s”,p->name);
break;
case 3:
printf(“修改后的出发时间:”);
scanf(“%s”,p->time);
break;
case 4:
printf(“修改后的车票价格:”);
scanf(“%d”,&p->price);
break;
case 5:
printf(“修改后的剩余票数:”);
scanf(“%d”,&p->amount);
break;
case 0:break;} } //删除信息// delete(struct Node *h){ struct Node *p;
int j;
printf(“请输入您要删除的火车票的编号:”);scanf(“%d”,&j);p=h->next;
if(p==NULL)
return 0;while(p!=NULL){ if(p->num==j){
h->next=p->next;
free(p);
return 1;} h=p;p=p->next;
} return 0;} //添加信息// void append(){
struct Node *p;
FILE *fp;
fp=fopen(“1.txt”,“at+”);
if(fp==NULL)
{
printf(“写文件出错,按任意键返回.n”);getchar();exit(1);
}
printf(“请输入要添加的火车票的信息:火车编号,起点和终点,出发时间,车票价格,剩余票数:n”);scanf(“%d%s%s%d%d”,&p->num,p->name,p->time,&p->price,&p->amount);fprintf(fp,“%d %s %s %d %dn”,p->num,p->name,p->time,p->price,p->amount);getchar();fclose(fp);} //数据的统计// void count(struct Node *h){ struct Node *s;s=h;int i,j,k,n=0;printf(“*****************************************************************************n”);
printf(“tt
请选择您要统计项目的序号:n”);
printf(“tt
1.车票价格n”);
printf(“tt
2.剩余票数n”);printf(“tt
0.退出界面n”);
scanf(“%d”,&i);switch(i)
{
case 1:
printf(“请输入您要统计车票的价格的标准:”);
scanf(“%d”,&j);
printf(“tt
请选择低于或高于标准:n”);
printf(“tt
1.价格低于%d的个数n”,j);
printf(“tt
2.价格高于%d的个数n”,j);
scanf(“%d”,&k);
if(k==1)
{
for(s=h->next;s->next!=NULL;s=s->next)
if(s->price n++; printf(“车票价格低于%d的个数有%d个.n”,j,n); } else { for(s=h->next;s->next!=NULL;s=s->next) if(s->price>j) n++; printf(“车票价格低于%d的个数有%d个.n”,j,n); } break; case 2: printf(“请输入您要统计剩余票数的数量:”); scanf(“%d”,&j); printf(“tt 请选择低于或高于所输票数:n”); printf(“tt 1.票数低于%d的个数n”,j); printf(“tt 2.票数高于%d的个数n”,j); scanf(“%d”,&k); if(k==1) { for(s=h->next;s->next!=NULL;s=s->next) if(s->amount n++; printf(“剩余票数低于%d的个数有%d个.n”,j,n); } else { for(s=h->next;s->next!=NULL;s=s->next) if(s->amount>j) n++; printf(“剩余票数高于%d的个数有%d个.n”,j,n); } break; case 0:break; } } //保存用户和密码到文件2.txt中// void save_user(){ char file[10]=“2.txt”;FILE *fp;char name[20];char pwd[10];fp=fopen(“2.txt”,“at+”);if(fp==NULL){ printf(“n写文件出错,按任意键退出.n”); getchar();exit(1);} printf(“请输入用户名:”); scanf(“%s”,name);printf(“请输入密码:”); scanf(“%s”,pwd); fprintf(fp,“%s %sn”,name,pwd); getchar(); fclose(fp); printf(“用户注册成功!n”);} //检验用户和密码是否匹配// int check(char *name,char *pwd){ char name1[20];char pwd1[10];FILE *fp;char file[10]=“2.txt”;if((fp=fopen(“2.txt”,“rt”))==NULL){ printf(“读文件出错,按任意键退出!n”); getchar(); exit(1);} while(!feof(fp)){ fscanf(fp,“%s %s”,name1,pwd1); if(strcmp(name1,name)==0&&strcmp(pwd1,pwd)==0) return 1;} return 0;} //数据排序// void sort(struct Node *h){ struct Node *s,*p,*m,*n;int t,t1,t2,t3;char s1[20];char s2[10]; printf(“车票价格由小到大排序如下:n”);for(s=h->next;s->next!=NULL;s=s->next)for(p=s->next;p->next!=NULL;p=p->next) if(s->price>p->price) { t1=s->num;s->num=p->num;p->num=t1; t2=s->price;s->price=p->price;p->price=t2; t3=s->amount;s->amount=p->amount;p->amount=t3; strcpy(s1,s->name);strcpy(s->name,p->name);strcpy(p->name,s1); strcpy(s2,s->time);strcpy(s->time,p->time);strcpy(p->time,s2); } print(h);printf(“nn剩余车票数量由多到少排序如下:n”);for(s=h->next;s->next!=NULL;s=s->next) for(p=s->next;p->next!=NULL;p=p->next) if(s->amount amount) { t1=s->num;s->num=p->num;p->num=t1; t2=s->price;s->price=p->price;p->price=t2; t3=s->amount;s->amount=p->amount;p->amount=t3; strcpy(s1,s->name);strcpy(s->name,p->name);strcpy(p->name,s1); strcpy(s2,s->time);strcpy(s->time,p->time);strcpy(p->time,s2); } print(h);} void main(){ struct Node *head,*p;int i,j,k;head=(struct Node *)malloc(sizeof(struct Node));head->next=NULL;char name[20];char pwd[10];printf(“n***************欢迎进入火车票管理系统******************n”);printf(“tt 1.用户登录n”);printf(“tt 2.用户注册n”);printf(“tt 0.退出系统 n”);printf(“请输入所选序号:”);scanf(“%d”,&k); switch(k){ case 1: printf(“请输入用户名:”); scanf(“%s”,name); printf(“请输入密码:”); scanf(“%s”,pwd); if(check(name,pwd)) { printf(“密码正确.n”); do { printf(“nntt*********************欢迎进入火车票管理系统***********************n”); printf(“tt 1.录入火车票信息tt 2.添加火车票信息n”); printf(“tt 3.修改火车票信息tt 4.删除火车票信息n”); printf(“tt 5.打印火车票信息tt 6.查询火车票信息n”); printf(“tt 7.统计火车票信息tt 8.火车票销售排行n”); printf(“tt 0.退出系统n”); printf(“请输入您要进入菜单的序号(0-8):”); scanf(“%d”,&i); switch(i) { case 1: printf(“请录入火车票信息nn”); head=creat(); save(head); head=read(); break; case 2: append(); break; case 3: printf(“请输入您要修改的火车票的编号:”); scanf(“%d”,&j); change(head,j); save(head); break; case 4: head=read(); if(delete(head)) { printf(“已正确删除!n”); save(head); } else printf(“要删除的结点不存在!n”); break; case 5: head=read(); print(head); break; case 6: printf(“请输入您要查询火车票的编号(以0结束):”); scanf(“%d”,&j); { p=find(head); printf(“编号 起点和终点 出发时间 车票价格 剩余票数:n”); printf(“%d %10s %5s %10d %6dn”,p->num,p->name,p->time,p->price,p->amount); printf(“请继续输入序号(以0结束):”); scanf(“%d”,&j); } break; case 7: head=read();count(head);break; case 8: sort(head);break; case 0: printf(“************************用!*****************************n”);break; } }while(i!=0); } else printf(“密码错误或用户名不存在.n”); break;case 2:save_user();break;case 0:break;} 谢 谢 使 题目 一、学生选课管理系统 第一部分:课程设计名称、目的、要求 第二部分:程序总体设计思路 第三部分:程序功能划分、图示及流程图 第四部分:程序设计数据、运行结果 第五部分:程序的优缺点 第六部分:心得体会 第七部分:附录(源程序) 第八部分:附录(参考文献) 目录 ..............................................................................第一部分:课程设计名称、目的、要求 名称:学生选修课程系统设计 目的:运用C语言提高解决实际问题的能力 实验环境:Microsoft Visual C++ 6.0 内容: 假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。【功能】 系统以菜单方式工作 课程信息录入功能(课程信息用文件保存)--输入 课程信息浏览功能--输出 查询功能:(至少一种查询方式)--算法 按学分查询 按课程性质查询 学生选修课程(可选项) 第二部分:程序总体设计思路 由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。 具体的设计思路如下: 程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。 整个程序的设计思路到此结束。 第三部分:程序功能划分、图示及流程图 【功能模块划分及其流程图】 本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是: 1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login()4.退出界面函数:void bye_sys() 5.课程选择函数:void c_select()6.课程浏览函数:void c_view()7.课程查询函数:void c_search()8.课程增加函数:void c_add()9.课程删除函数:void c_delete()10.菜单函数:void index()11.主函数部分; main() 总体设计: 学生选课系统管理员登录学生登录新增课程删除课程课程浏览查询课程学生选课课程浏览课程查询c_add函数c_delete函数c_view函数c_search函数c_select函数c_view函数c_search函数 系统功能模块图 部分函数流程图: 1、课程选择函数: 开始输入要选择的课程的编号j=0;j 2、课程查询函数 开始输入要查询的课程的编号j=0;j 3、课程增加函数 开始输入要增加的课程的编号j=0;j 4、课程删除函数 开始输入要删除的课程的编号nj=0;j 本程序是一款应用软件,故数据设计、程序运行结果应在程序的 运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】 1、程序开始界面如下: 选择某个选项,如进行管理员登录,进行课程的增加 进入管理员界面: 2、再选择所要进行的操作,如进行课程增加,结果如下: 下面可以进行继续增加课程或者退出: 3、选择课程浏览,可以分页查看相应的课程信息: 第一页: 第二页: 4、课程查询 查找结果: 4、管理员课程删除操作: 删除后可以进行浏览,观察删除后的结果: 可见删除后只有一条记录。删除操作完成正确。下面进行学生操作的使用方法: 1、学生登陆界面: 2、选择学生选课选项: 3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。 第五部分:程序的优缺点 【程序的优点】 算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。 [算法上的优点]主要体现在以下三点: 1.程序采用main主函数方式设计,程序的主体的功能大都由该功能 完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。 2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。 3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。 [功能上的优点] 主要体现在以下两点: 1. 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2. 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。 【程序的缺点】 主要表现在以下两点: 1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。 2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。 第六部分:心得体会 选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。 本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。 通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。 程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。 对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。 总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。 第七部分:附录 一、参考文献: 1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社 2、严蔚敏主编,数据结构(C语言),清华大学出版社 3、崔单主编,C语言程序设计案例精粹,电子工业出版社 4、谭浩强主编,程序设计(第三版),清华大学出版社 二、源程序 #include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h” void index();//首页 void login();void bye_sys();//退出界面 void stu_login();//学生登录菜单 void c_select();void c_view();//课程浏览 void c_add();//增加课程 void c_delete();void c_searchs();//学生查询函数 void c_searchm();//管理员查询函数 void c_viewm();//管理员浏览函数 void c_views();//学生浏览函数 struct course//定义课程结构体 { int c_num; char c_name[20]; int c_score; int c_nelepeo;//课程已选人数 int c_melepeo;//课程人数上限 };struct student { char s_number[10]; char s_password[10];};struct manager { char m_name[10];char m_password[10];}; void index()//首页 { char input; printf(“nnttt*****************************n”); printf(“ttt 湖南大学学生选课系统n”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt**********设计者:刘晓斌******nnn”); input=getchar(); system(“cls”);} void login()//登陆界面 { void stu_login(); void man_login(); void bye_sys(); int input; do { system(“cls”); printf(“nnnt1.学生登录n”); printf(“t2.管理员登陆n”); printf(“t3.退出本系统n”); printf(“t请选择服务类别:”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3)//输入数不等于选项的时候打印画面 { printf(“nt输入出错!请重新选择~n”); printf(“nt按任意键返回选择页面~nt”); getchar();getchar(); system(“cls”); } if(input==3)//如果输入3退出系统 { bye_sys(); } }while(input!=1&&input!=2&&input!=3); switch(input) { case 1:stu_login();break; case 2:man_login();break; } } void bye_sys()//退出界面 { exit(0);} void man_login(){ void c_add(); void c_delete(); void c_view(); void c_searchm(); int in; do { system(“cls”); printf(“nnt1.新增课程n”); printf(“t2.删除课程n”); printf(“t3.课程浏览n”); printf(“t4.课程查询n”); printf(“t5.退出n”); printf(“nnt请选择服务种类:”); scanf(“%d”,&in); if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5) { printf(“nt没有这项服务t按任意重新选择”); getchar();getchar(); } }while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5); switch(in) { case 1:c_add();break; case 2:c_delete();break; case 3:c_viewm();break; case 4:c_searchm();break; case 5:login();break; } } void stu_login()//学生登录菜单 { void c_select(); void c_view(); void c_searchs(); void login(); int input; do { system(“cls”); printf(“nnnt--学生登陆--”); printf(“nnt1.学生选课n”); printf(“t2.课程浏览n”); printf(“t3.课程查询n”); printf(“t4.退出n”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3&&input!=4) { printf(“nt没有这项服务~n”); printf(“t按任意键重新选择”); getchar(); getchar(); } }while(input!=1&&input!=2&&input!=3&&input!=4); switch(input) { case 1:c_select();break; case 2:c_views();break; case 3:c_searchs();break; case 4:login();break; } } void c_select(){ int n,in,i=0,j;int flag=0; FILE *fp; FILE *fp1; char input; struct course courses[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); input=getchar(); input=getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 } printf(“nntt请输入你要选课程的编号:”); scanf(“%d”,&n); if((fp1=fopen(“courseselect.dat”,“rb”))==NULL) { fp1=fopen(“courseselect.dat”,“wb”); } else { fclose(fp1); fp1=fopen(“courseselect.dat”,“ab”); } for(j=0;j if(courses[j].c_num==n) flag++; if(flag==0) { printf(“nntt不存在对应课程n”); printf(“nntt继续选课请按1,退出请按2:n”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default: printf(“输入错误,将返回登录界面!n”); login();break; } } else { fwrite(&courses[j],sizeof(struct course),1,fp1); fclose(fp1); printf(“nntt选课成功t请选择:”); printf(“nntt1.继续选课”); printf(“nntt2.退出,返回登录界面!”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default:break; } } } void c_viewm()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); man_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{man_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_views()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); stu_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{stu_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_searchs(){ void stu_login(); void c_searchs(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1); } void c_searchm(){ void stu_login(); void c_searchm(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1);} void c_add()//增加课程 { void c_add(); void man_login(); int i=0,j,inp; FILE *fp; struct course course_new; struct course courses[10]; system(“cls”); printf(“nntt请输入课程信息”); printf(“nntt1.课程编号:”); scanf(“%d”,&course_new.c_num); printf(“nntt2.课程名字:”); scanf(“%s”,course_new.c_name); printf(“nntt3.课程学分:”); scanf(“%d”,&course_new.c_score); printf(“nntt4.课程已选人数:”); scanf(“%d”,&course_new.c_nelepeo); printf(“nntt5.课程人数上限:”); scanf(“%d”,&course_new.c_melepeo); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); for(j=0;j<=i-1;j++) if(course_new.c_num==courses[j].c_num) { system(“cls”); printf(“nnttt对不起,这个编号已经使用过nntt按任意键返回管理菜单”); getchar();getchar(); man_login(); break; } } if((fp=fopen(“course.dat”,“rb”))==NULL) { fp=fopen(“course.dat”,“wb”); } else { fclose(fp); fp=fopen(“course.dat”,“ab”); } fwrite(&course_new,sizeof(struct course),1,fp); fclose(fp); printf(“nntt信息输入完毕t按任意键继续”); getchar();getchar(); do { system(“cls”); printf(“nntt1.继续输入”); printf(“nntt2.返回管理菜单”); printf(“nntt请选择”); scanf(“%d”,&inp); if(inp!=1&&inp!=2) { printf(“输入不符合要求t按任意键重新选择”); getchar();getchar(); } }while(inp!=1&&inp!=2); switch(inp) { case 1:c_add();break; case 2:man_login();break; } } void c_delete()//查询后删除 { FILE *fp; int i=0,j,n,k,flag=0; struct course courses[10]; void c_delete(); void man_login(); printf(“nntt请输入你要删除的课程编号:”); scanf(“%d”,&n); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } else { printf(“nntt不存在任何课程t按任意键返回”); getchar();getchar(); man_login(); } for(j=0;j { if(courses[j].c_num==n) { flag=1; fp=fopen(“course.dat”,“wb”); for(k=0;k fwrite(&courses[k],sizeof(struct course),1,fp); fclose(fp); fp=fopen(“course.dat”,“ab”); for(k=j+1;k { fwrite(&courses[k],sizeof(struct course),1,fp); } printf(“nntt记录已删除!t按任意键返回ntt”); getchar();getchar(); man_login(); fclose(fp); } } if(flag==0) { printf(“nntt不存在对应的课程t按任意键返回”); getchar();getchar(); man_login(); } // printf(“nntt记录已删除!t按任意键返回ntt”); } int main(){ index();login();return 0;} C语言课程设计 仓库管理系统 #include struct cangku { int num; char name[20]; char introdution[50]; float square; };typedef struct cangku Cangku; int Input(Cangku t[]);void List(Cangku t[],int n);void SearchOnName(Cangku t[],int n);int DeleteRecord(Cangku t[],int n);int AlterRecord(Cangku t[],int n);int AddRecord(Cangku t[],int n);void SortOnName(Cangku t[],int n);void SortOnSquare(Cangku t[],int n);void SaveRecord(Cangku t[],int n);int LoadRecord(Cangku t[]);int LoadRecord1(Cangku t[]);void Save(Cangku t[],int n);void Load(Cangku t[],int n);void Load1(Cangku t[]);int Menu_select(); void main(){ Cangku ck[50];int i,l,length,w=1;int q[4]={5,2,1,0}; system(“cls”);printf(“请输入第1个密码:n”);for(i=0;i<4;i++) { scanf(“%d”,&l); system(“cls”); if(l==q[i]) printf(“正确,继续输入第%d个密码:.n”,i+2); else { w=0; printf(“输入错误!n”); break; } } while(w) { switch(Menu_select()) { case 1: length=Input(ck); SaveRecord(ck,length); break; case 2: length=LoadRecord(ck); SearchOnName(ck,length); break; case 3: length=LoadRecord(ck); length=DeleteRecord(ck,length); SaveRecord(ck,length); break; case 4: length=LoadRecord(ck); length=AlterRecord(ck,length); SaveRecord(ck,length); break; case 5: length=LoadRecord(ck); length=AddRecord(ck,length); SaveRecord(ck,length); break; case 6: length=LoadRecord(ck); system(“cls”); List(ck,length); break; case 7: length=LoadRecord(ck); system(“cls”); SortOnName(ck,length); SaveRecord(ck,length); break; case 8: length=LoadRecord(ck); system(“cls”); SortOnSquare(ck,length); SaveRecord(ck,length); break; case 9: length=LoadRecord(ck); system(“cls”); Save(ck,length); break; case 0: length=LoadRecord1(ck); Load1(ck); system(“cls”); Load(ck,length); break; case 10: exit(0); } } } int Menu_select(){ int c; printf(“按任意键进入仓库管理菜单n”); getchar(); system(“cls”); system(“color F0”);printf(“ ******************************仓库管理*******************************n”); printf(“ * 1.录入仓库初始记录 *n”); printf(“ * 2.按仓库名称查找记录 *n”); printf(“ * 3.删除仓库记录 *n”); printf(“ * 4.修改仓库记录 *n”);printf(“ * 5.增加仓库信息 *n”); printf(“ * 6.显示全部记录 *n”); printf(“ * 7.按仓库名称排序 *n”); printf(“ * 8.按仓库面积排序 *n”); printf(“ * 9.备份 *n”);printf(“ * 0.恢复 *n”);printf(“ * 10.退出 *n”); printf(“ *********************************************************************n”);do { printf(“n输入您想要进行的操作选项键(0-10):”); if(scanf(“%d”,&c)!=1) { while(getchar()!='n') continue; } } while(c<0||c>10);return c;} int Input(Cangku t[]){ int i,n; system(“cls”); printf(“n请输入要输入的仓库数目:n”); scanf(“%d”,&n); printf(“开始输入仓库信息:n”); for(i=0;i { system(“cls”); printf(“n第%d个仓库的编号:”,i+1); scanf(“%d”,&t[i].num); printf(“第%d个仓库的名称:”,i+1); scanf(“%s”,t[i].name); printf(“第%d个仓库的面积:”,i+1); scanf(“%f”,&t[i].square); printf(“第%d个仓库的说明:”,i+1); scanf(“%s”,t[i].introdution);} return(n);} void List(Cangku t[],int n){ int i; printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”);for(i=0;i printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”);getchar();} void SearchOnName(Cangku t[],int n){ char s[20]; int i,flag=0; system(“cls”); printf(“请输入要查找的仓库名称:n”); scanf(“%s”,s); for(i=0;i { if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要查找的仓库信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”);{ printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”); } } if(flag==0) printf(“要查找的仓库不存在!n”);getchar();} int DeleteRecord(Cangku t[],int n){ char s[20]; char ch; int i,j,flag=0; system(“cls”); printf(“请输入要删除的仓库名称n”); scanf(“%s”,s); for(i=0;i if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要删除的仓库信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”);{ printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution);} printf(“ *********************************************************************n”); printf(“n”); printf(“确定删除仓库信息吗?(Y/N)n”); ch=getchar(); ch=getchar(); if(ch=='Y'||ch=='y') { for(j=i;j t[j]=t[j+1]; n--; i--; printf(“删除成功.n”); } } } if(flag==0) printf(“要删除的仓库不存在!n”); getchar(); return n;} int AlterRecord(Cangku t[],int n){ int i,flag=0; char s[20],ch; system(“cls”); printf(“请输入要修改的仓库名称n”); scanf(“%s”,s); for(i=0;i { if(strcmp(s,t[i].name)==0) { flag=1; system(“cls”); printf(“nn要修改的仓库信息如下:n”); printf(“n”); printf(“ *********************************************************************n”); printf(“ ** 编号 名称 面积 说明n”); printf(“ -------n”); { printf(“%17d%13s%20f%14sn”,t[i].num,t[i].name,t[i].square,t[i].introdution); } printf(“ *********************************************************************n”); printf(“n”); printf(“确定修改仓库信息吗?(Y/N)n”); ch=getchar(); ch=getchar(); if(ch=='y'||ch=='Y') { system(“cls”); printf(“请输入修改后的信息:n”); printf(“请输入仓库新的名称:”); scanf(“%s”,t[i].name); printf(“请输入%s仓库新的编号:”,t[i].name); scanf(“%d”,&t[i].num); printf(“请输入%s仓库新的面积:”,t[i].name); scanf(“%f”,&t[i].square); printf(“请输入%s仓库新的说明:”,t[i].name); scanf(“%s”,t[i].introdution); } } } if(flag==0) printf(“要修改的仓库不存在!n”); getchar(); return n;} int AddRecord(Cangku t[],int n){ int i,m; system(“cls”); printf(“n请输入再增加的记录数:n”); scanf(“%d”,&m); printf(“开始追加记录n”); for(i=n;i { system(“cls”); printf(“n第%d个仓库的编号:”,i+1); scanf(“%d”,&t[i].num); printf(“第%d个仓库的名称:”,i+1); scanf(“%s”,t[i].name); printf(“第%d个仓库的面积:”,i+1); scanf(“%f”,&t[i].square); printf(“第%d个仓库的说明:”,i+1); scanf(“%s”,t[i].introdution); } return(n+m);} void SortOnName(Cangku t[],int n){ int i,j; struct cangku temp; for(j=1;j for(i=0;i if((strcmp(t[i].name,t[i+1].name))>0) { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } printf(“排序成功!!n”); printf(“排序后仓库信息列表如下:n”); List(t,n);} void SortOnSquare(Cangku t[],int n){ int i,j; struct cangku temp; for(j=1;j for(i=0;i if(t[i].square { temp=t[i]; t[i]=t[i+1]; t[i+1]=temp; } printf(“排序成功!!n”); printf(“排序后仓库信息列表如下:n”); List(t,n);} void SaveRecord(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“record.txt”,“w”))==NULL) { printf(“不能打开文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp);} int LoadRecord(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“record.txt”,“a+”))==NULL) { printf(“不能打开文件!n”); exit(1);} while(fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); printf(“从文件中成功读出记录!!n”); return n;} int LoadRecord1(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“bkrecord.txt”,“a+”))==NULL) { printf(“不能打开文件!n”); exit(1);} while(fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); printf(“从文件中成功读出记录!!n”); return n;} void Save(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“bkrecord.txt”,“w”))==NULL) { printf(“不能打开文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp); printf(“备份成功.n”); getchar();} void Load1(Cangku t[]){ int n=0; FILE *fp; if((fp=fopen(“bkrecord.txt”,“a+”))==NULL) { printf(“不能打开文件!n”); exit(1); } while (fread(&t[n],sizeof(struct cangku),1,fp))n++; fclose(fp); getchar();} void Load(Cangku t[],int n){ int i; FILE *fp; if((fp=fopen(“record.txt”,“w”))==NULL) { printf(“不能打开文件!n”); exit(1);} for(i=0;i { fwrite(&t[i],sizeof(struct cangku),1,fp); } fclose(fp); printf(“恢复成功.n”);}1 C语言课程设计 飞机空战小游戏 一、实验环境 运行系统 WINDOWSXP 编程工具C++6.0 地点 程序设计与仿真实验室 桌号19电脑IP地址221.12.10.218 二、实验目的和要求 实验目的: (1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作算法。 (2)使学生进一步掌握程序设计、编写、调试能力。(3)使学生了解软件开发的基本步骤和内容。 实验要求::飞机空战小游戏。功能要求: 1)有主菜单界面,能让用户选择开始、退出、难度等级、查看用户积分功能; 2)飞机能通过A、S、D、W或上下左右键控制移动方向,使用空格键发射子弹; 3)屏幕随机出现从上到下的敌方子弹; 4)当打中敌方子弹时,积分加1; 5)当敌方子弹打正飞机时,游戏结束,并提示用户是否保存记录(记录包括用户名及积分值),保存后退回到主菜单; 6)当选择主菜单中的“查看用户积分”选项时,进入第二级菜单,用户可查看全部用户积分记录,也可仅查看积分最高者,也可根据用户输入的用户名查看;(此处要求使用到链表,用于临时存储用户积分数据);(对链表的查找操作) 7)所有用户积分信息使用文件进行永久性保存; 8)用户选择“难度等级”,可设定游戏不同难度,难度越高,出现敌方子弹数目及间隔将增加。 三、实验内容和结果 系统总体设计:编写出c语言代码,运行程序,并调试程序,最终实现游戏的功能。本程序主要包含游戏控制函数、设置是否继续游戏函数、输出函数、子弹移动函数、敌机移动函数、设置函数、菜单函数等7个主要函数,包含了不同的功能,对原来的程序作出了很大的改进,用到的主要语句有if语句,for语句、while语句、printf语句、switch语句等等,添加了颜色函数。 系统模块设计:包含游戏控制函数、设置是否继续游戏函数、输出函数、子弹移动函数、敌机移动函数、设置函数、菜单函数等7个主要函数,其中是否继续游戏函数,菜单函数主要运用了SWITCH语句和If语句,子弹移动函数,敌机移动函数通过数组内各数值的变化来完成,设置函数主要用PRINTF和SCANF语句进行各项数值的设置,游戏控制函数使用if函数,kbhit()函数,switch函数组合控制数组中飞机进行的移动和图案的变换。最后用打印数组的方式打印出数组变换。最后运用SWITCH函数进行各项菜单内容的操作。 实验的测试和结果: 四、实验中的问题及心得 通过本次试验,使我对c语言有了更深一层次的了解,对for语句、while语句、printf语句、switch语句、颜色函数等等的了解及使用更加详细了一些,明白了这些语句的用法,明确了c语言的使用环境,功能。同时我了解到了一些方法来实现一些C语言作为一个基础性编程语言是我们在以后编程中不可或缺的语言,使用率肯定会进一步增高。掌握了c语言就相当于掌握了一门技术,同时c语言相对而言简单一些,更容易理解。自己虽然对这个小游戏进行一部分的改造,但是我也感觉这只是其中的很很小的一部分,肯定会有更加强大的功能等待着我们去改善。 同时,我也发现了自己很多的不足,需要进一步加强这一方面的学习,在数据结构链表的使用上还很欠缺,无法使用链表进行数据的读取和输入,还有在两个程序的连接上还有困难,对于头文件的理解不到位,链表的结构,定义,使用指针的方式„„这些都需要提高。这些技能的欠缺导致了在 这个小游戏中无法顺利完成有关用户名和记录的一些要求。„„ 附录:程序清单 #include void movebul(int [][N]);//子弹移动函数 void movepla(int [][N]);//敌机移动函数 void setting(void);//设置函数 void menu();//菜单 int scr[50][N]={0},pl=9,width=15,speed=16,density=40,score=0,death=0,length=18,y=0,x=5,z=15,life=1,max=0;//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡,子弹,飞机,敌机初始图案,生命 char name[N];char first[N];void main(){ menu();getch();} void print(int a[][N])//输出函数 { int i,j;system(“cls”);for(i=0;i a[i][width-1]=4; for(j=0;j { if(a[i][j]==0)printf(“ ”); if((a[i][j]==1)&&(x<15))printf(“%c”,x);//输出我机的符号 if((a[i][j]==2)&&(z<35))printf(“%c”,z);//子弹 if((a[i][j]==3)&&(y<4))printf(“%c”,y+1);//输出敌机符号 if(i==1&&j==width-1)printf(“总积分:%d”,score);//显示得分 if(i==2&&j==width-1)printf(“已经死亡了%d 次,剩余 %d 条命”,death,life-death);//右上角显示死亡次数 if(i==3&&j==width-1)printf(“普通按键:AD控制左右飞行”); if(i==4&&j==width-1)printf(“ W 发射子弹”);if(i==5&&j==width-1)printf(“特殊按键:+-号加减敌机速度”);if(i==6&&j==width-1)printf(“ /*号单列敌机密度减小增大(均有限制)”); if(i==7&&j==width-1)printf(“VIP按键:X键变化飞机图案,Y键变化敌机图案”); if(i==8&&j==width-1)printf(“tZ键变化子弹图案,P键增加生命(均有限制)”); if(i==9&&j==width-1)printf(“注意:向下移动后按其他方向键飞机显现”); } printf(“n”);} } void movebul(int a[][N]){ int i,j;for(i=0;i { if(i==0&&a[i][j]==2) a[i][j]=0; if(a[i][j]==2) { if(a[i-1][j]==3)//加分 { score+=1; printf(“7”); } a[i][j]=0,a[i-1][j]=2; } } } void movepla(int a[][N]){ int i,j;for(i=length-1;i>=0;i--)//从最后一行往上是为了避免把敌机直接冲出数组。 for(j=0;j if(i==length-1&&a[i][j]==3) a[i][j]=0;//消除敌机,在最低层 if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;//敌机移动 } if(a[length-2][pl]==3&&a[length-1][pl]==1)death++;//死亡 } void continuegame()//继续游戏 { printf(“用户%s”,name);printf(“你的得分是%dn”,score);if(score==0)printf(“tttt 恭喜你刷新了最低记录na”,score);if((score>0)&&(score<20)) printf(“tttt 回家再练 练吧na”,score);if(score>19) printf(“tttt 你真厉害 na”,score);printf(“游戏结束n”);printf(“按y键继续游戏,空格键退出游戏(y/n)?n”);printf(“ttt”);switch(getch())//是否要继续游戏 { case 'y': case 'Y':system(“cls”),death=0,score=0,life=1,x=5,y=0,z=15;menu();break;} } void setting(void)//设置函数 { system(“cls”);//清屏 printf(“n 输入游戏界面的大小(默认3):1-10 ”);scanf(“%d”,&width);width=(width+1)*5;printf(“n 请输入敌机密度大小(默认3):1-5 ”);scanf(“%d”,&density);density=(7-density)*10;printf(“n 输入敌机的飞行速度大小(默认3):1-10 ”);scanf(“%d”,&speed);speed=(11-speed)*2;printf(“n 输入我机的生命(默认1):1-100 ”);scanf(“%d”,&life);printf(“n 输入飞机的图案(默认1):1-2 ”);scanf(“%d”,&x);x=x+4;printf(“n 输入子弹的图案(默认1):1-10 ”);scanf(“%d”,&z);z=z+14;printf(“n 输入敌机的图案(默认1):1-3 ”);scanf(“%d”,&y);y=y-1;} void run(){ int i=0,j=0,k=0,b=0;printf(“请输入用户名:”);scanf(“%s”,name);printf(“您的用户名是:%s”,name);if(getch()==27)setting();printf(“游戏说明:按AWSD控制我机左右飞行,空格键发射子弹n特殊按键:-号敌机减速,+号敌机加速n特殊按键:/号单列敌机密度减小,*号单列敌机密度增大n”);printf(“VIP按键:X键变化飞机图案,Y键变化敌机图案ntZ键变化子弹图案,P键增加生命n”);printf(“任意键开始游戏,esc键进入游戏设置n”);printf(“游戏时也可更改游戏设置任意键开始nn”);system(“color a”);//设置背景颜色 if(getch()==27)setting();scr[length-1][pl]=1;//我方飞机初始位置 scr[0][5]=3;while(death { if(kbhit()) switch(getch())//控制设置按键 { case 'a': case 'A':if(pl>0) scr[length-1][pl]=0,scr[length-1][--pl]=1;break; case 'd': case 'D':if(pl scr[length-1][pl]=0,scr[length-1][++pl]=1;break;case 'W': case 'w':if(length>10) { scr[length-1][pl]=0,scr[length-2][pl]=1; length=length-1; };break; case '+':if(speed>2) { speed=speed-2; };break; case '-':speed=speed+1;break;case '*':if(density>5) { density=density-5; };break; case '/':density=density+10;break; case 'l':if(width<40) { width=width+2; };break; case 's':if(length<30) { scr[length-1][pl]=0; length=length+1; scr[length-1][pl]='5'; };break; case ' ':scr[length-2][pl]=2;break; case 'y':y=(y+1)%4;break; case 'x':x=(x)%2+5;break; case 'z':if(z<25) { z=z+1; } else z=15;break; case 'p':life=life+1;break;} if(++j%density==0)//控制生产敌机的速度 { j=0; srand(time(NULL));//产生随机数 scr[0][rand()%width]=3; scr[rand()%3][rand()%(width+2)]=3; scr[rand()%2][rand()%(width+1)]=3; scr[rand()%4][rand()%(width+4)]=3;//生成随机敌方飞机 } if(++i%speed==0)//控制敌机移动速度,相对于子弹移动速度 movepla(scr);//飞机移动 movebul(scr);//子弹移动 print(scr);//绘制游戏画面 } if(score>=max){ max=score; for(i=0;i { name[i]=first[i]; } } if(score score=score;} continuegame();getch();} void menu(){ printf(“n1:游戏设置n2:游戏说明n3:开始游戏n4:查看用户信息n5:退出游戏n”); switch(getch()){ case '1': setting();menu();break; case '2':printf(“游戏说明:按AWSD控制我机左右飞行,空格键发射子弹n特殊按键:-号敌机减速,+号敌机加速n特殊按键:/号单列敌机密度减小,*号单列敌机密度增大n”);printf(“VIP按键:X键变化飞机图案,Y键变化敌机图案ntZ键变化子弹图案,P键增加生命n”);printf(“ 任意键开始游戏,esc键进入游戏设置n”);printf(“ 游戏时也可更改游戏设置”);menu();break; case '3':run();menu();break; case '4':seerecord();menu();break; case '5':exit(0);break;default:menu();break;} } seerecord(){ printf(“最高纪录为%s,%d”,first[N],max);}第三篇:C语言课程设计学生选课系统
第四篇:C语言课程设计 仓库管理系统
第五篇:C语言课程设计