第一篇:C语言课程设计(优质作业含运行截图)
大连交通大学 软件学院
C语言课程设计报告
SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING
C语言课程设计报告
Experiment Designing reporter
课程名称 : C语言课程设计
英文名称 : C Program Experiment Designing
专 业 :工商管理类+软件工程095
学 号 :09********
姓 名 :@哒winci
指导教师 :陈**
日 期 : 2010年 7月12日至2010年7月22日
大连交通大学软件学院
大连交通大学 软件学院
C语言课程设计报告
SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING
《C语言课程设计》报告
C Program Experiment Designing
课程编号:01200308005
学时: 40学时 适用专业:软件工程专业 授课单位:软件学院
一、C语言课程设计目的及要求
目的:
根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
要求:
1. 熟悉Turbo C 的编程环境、主要菜单功能。
2. 通过上机验证运算符、表达式、运算规则、函数使用。3. 熟练使用C语言的典型语句编写简单程序。4. 调试典型例题或习题。5. 提高上机编程能力
二、实验类型
设计类型
三、实验学时
40学时
四、实验设备
微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套
五、C语言课程参考教材:
1.C语言程序设计 清华大学出版社 马靖善主编
2.谭浩强.C语言程序设计(第三版).北京:高等教育出版社,2002 大连交通大学 软件学院
C语言课程设计报告
SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING
课程设计(报告)任务书
任务及要求:
1.设计(研究)内容和要求 研究内容:
(1).歌星大赛打分系统(2).五个国家名排序(3).谜语博士的难题(4).哪个大夫哪天值班(5).分辨黑与白(6)学生成绩查询系统 任务和要求:
(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。(2).对指导教师下达的题目进行系统分析。(3).根据分析结果完成系统设计。
(4).编程:在计算机上实现题目的代码实现。(5).完成对该系统的测试和调试。(6).提交课程设计报告。(7).指标: 要求完成课程设计报告3千字以上(约二、三十页).完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.2.原始依据
了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目,提高用C语言解决实际问题的能力。3.参考文献
[1] 黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006 [2] 马靖善等.C语言程序设计.清华大学出版社,2005
大连交通大学 软件学院
C语言课程设计报告
SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING
[3] 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002
2010年7月20日 大连交通大学 软件学院
C语言课程设计报告
SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING
目录
错误!未定义书签。歌星大赛打分系统
1.1 功能说明............................................................................错误!未定义书签。1.2 设计说明............................................................................错误!未定义书签。1.3 程序运行截图....................................................................错误!未定义书签。1.4源程序代码.........................................................................错误!未定义书签。2五个国家名排序............................................................................错误!未定义书签。
2.1 功能说明............................................................................错误!未定义书签。2.2 设计说明............................................................................错误!未定义书签。2.3 程序运行截图....................................................................错误!未定义书签。2.4 源程序代码........................................................................错误!未定义书签。3谜语博士的难题............................................................................错误!未定义书签。
3.1 功能说明............................................................................错误!未定义书签。3.2 设计说明............................................................................错误!未定义书签。3.3 程序运行截图....................................................................错误!未定义书签。3.4 源程序代码........................................................................错误!未定义书签。4哪个大夫哪天值班........................................................................错误!未定义书签。
4.1 功能说明............................................................................错误!未定义书签。4.2 设计说明………………………………………………………………………...4.3 程序运行截图....................................................................错误!未定义书签。4.4 源程序代码........................................................................错误!未定义书签。5分辨黑与白....................................................................................错误!未定义书签。
5.1 功能说明............................................................................错误!未定义书签。5.2 设计说明............................................................................错误!未定义书签。5.3 程序运行截图....................................................................错误!未定义书签。5.4 源程序代码........................................................................错误!未定义书签。6学生成绩查询系统
6.1 功能说明............................................................................错误!未定义书签。6.2 设计说明............................................................................错误!未定义书签。6.3 程序运行截图....................................................................错误!未定义书签。6.4 源程序代码........................................................................错误!未定义书签。
大连交通大学 软件学院
C语言课程设计报告
SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING 歌星大赛打分系统
1.1功能说明
在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1-100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。编写程序实现。
1.2 设计说明
从键盘上输入评委的打分,用for循环结构求出分数中的最大值max、最小值min以及所有分数的和sum,最后输出sum-max-min的值
1.3 程序运行截图
1.4 源程序代码
#include
大连交通大学 软件学院
C语言课程设计报告
SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING
sum=0;/*将求累加和变量的初值置为0*/ for(i=1;i<=10;i++){ printf(“Input number %d=”,i);scanf(“%d”,&integer);/*输入评委的评分*/ sum+=integer;/*计算总分*/ if(integer>max)max=integer;/*通过比较筛选出其中的最高分*/ if(integer 2.1 功能说明 输入5个国名并按字母顺序排列后输出。 2.2 设计说明 主函数void main(): 从键盘上输入各个国家的名字数组cs[5],然后用字符串运算符strcpy将数组cs[5]copy到st[20],再比较两数组对应各元素,输出 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING 2.3 程序运行截图 2.4 源程序代码 #include char st[20],cs[5][20]; int i,j,p; printf(“input country's name:n”); for(i=0;i<5;i++) gets(cs[i]); printf(“n”); for(i=0;i<5;i++) { p=i;strcpy(st,cs[i]); for(j=i+1;j<5;j++) if(strcmp(cs[j],st)<0)p=j; if(p!=i) { strcpy(st,cs[i]); strcpy(cs[i],cs[p]); strcpy(cs[p],st); } puts(cs[i]); } printf(“n”); getch();} 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING 谜语博士的难题 3.1功能说明 两面族是荒岛上的一个新民族,他们的特点是说话真一句假一句且真假交替。如果第一句为真,则第二句是假的;如果第一句为假的,则第二句就是真的,但是第一句是真是假没有规律。 迷语博士遇到三个人,知道他们分别来自三个不同的民族:诚实族、说谎族和两面族。三人并肩站在博士前面。 博士问左边的人:“中间的人是什么族的?”,左边的人回答:“诚实族的”。 博士问中间的人:“你是什么族的?”,中间的人回答:“两面族的”。 博士问右边的人:“中间的人究竟是什么族的?”,右边的人回答:“说谎族的”。 判断这三个人都是哪个民族的。 3.2设计说明 变量A=1表示:左边的人是诚实族的(用C语言表示为A); 变量B=1表示:中间的人是诚实族的(用C语言表示为B); 变量C=1表示:右边的人是诚实族的(用C语言表示为C); 变量AA=1表示:左边的人是两面族的(用C语言表示为AA); 变量BB=1表示:中间的人是两面族的(用C语言表示为BB); 变量CC=1表示:右边的人是两面族的(用C语言表示为CC); 则左边的人是说谎族可以表示为:A!=1且AA!=1(不是诚实族和两面族的人)用C语言表示为:!A&&!AA 中间的人是说谎族可以表示为:B!=1且BB!=1 用C语言表示为:!B&&!BB 右边的人是说谎族可以表示为:C!=0且CC!=1 用C语言表示为:!C&&!CC 根据题目中“三人来自三个民族”的条件,可以列出: a+aa!=2&&b+bb!=2&&c+cc!=2 且 a+b+c==1&&aa+bb+cc==1 根据左边人的回答可以推出:若他们是诚实族,则中间的人也是诚实族;若他不是诚实族,则中间的人也不是诚实族。以上条件可以表示为: c&&!b&&!bb||(!c&&!cc)&&(b||bb)||!c&&cc 将全部逻辑条件联合在一起,利用穷举的方法求解,凡是使上述条件同时成立的变量取值就是题目的答案。 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING 3.3程序运行截图 3.4源程序代码 #include 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING 哪个大夫哪天值班 4.1功能说明 医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。现在已知: A大夫比C大夫晚一天值班; D大夫比E大夫晚二天值班; B大夫比G大夫早三天值班; F大夫的值班日在B和C大夫的中间,且是星期四; 确定每天究竟是哪位大夫值班。 4.2设计说明 由题目可推出如下已知条件: F是星期四值班; B值班的日期在星期一至星期三,且三天后是G值班; C值班的日期在星期五至星期六,且一天后是A值班; E两天后是D值班;E值班的日期只能在星期一至星期三; 在编程时用数组元素的下标1到7表示星期一到星期天,用数组元素的值分别表示A-F七位大夫。 4.3程序运行截图 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING 4.4源程序代码 #include #include int a[8]; char *day[]={“",”MONDAY“,”TUESDAY“,”WED“,”THUSDAY“,”FRIDAY“,”SATDAY“,”SUNDAY“};main() { int i,j,t; a[4]=6; for(i=1;i<=3;i++) { a[i]=2; if(!a[i+3])a[i+3]=7; else{ a[i]=0;continue;} for(t=1;t<=3;t++) { if(!a[t])a[t]=5; else continue; if(!a[t+2])a[t+2]=4; else{ a[t]=0;continue;} for(j=5;j<7;j++) { if(!a[j])a[j]=3; else continue; if(!a[j+1])a[j+1]=1; else{ a[j]=0;continue;} for(i=1;i<=7;i++) printf(”Doctor %d is on duty %s.n“,1+a[i]-1,day[i]); } } } getch();} 分辨黑与白 5.1功能说明 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。五人对坐,每人都可以看到其它人额头上的纸的颜色。五人相互观察后,A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸。” 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING B说:“我看见其它四人额头上帖的都是黑纸。” C说:“我看见一人额头上帖的是白纸,其它三人额头上帖的是黑纸。” D说:“我看见四人额头上帖的都是白纸。” E什么也没说。 现在已知额头上帖黑纸的人说的都是谎话,额头帖白纸的人说的都是实话。判断五人谁的额头是帖白纸,谁的额头是帖黑纸。 5.2设计说明 假如变量A、B、C、D、E表示每个人额头上所帖纸的颜色,0 代表是黑色,1 代表是白色。根据题目中A、B、C、D四人所说的话可以总结出下列关系: A说: a&&b+c+d+e==3||!a&&b+c+d+e!=3 B说: b&&a+c+d+e==0||!b&&a+c+d+e!=0 C说: c&&a+b+d+e==1||!c&&a+b+d+e!=1 D说: d&&a+b+c+e==4||!d&&a+b+c+e!=4 穷举每个人额头所帖纸的颜色的所有可能的情况,代入上述表达式中进行推理运算,使上述表达式为“真”的情况就是正确的结果。 5.3程序运行截图 5.4源程序代码 #include 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING for(b=0;b<=1;b++)/*穷举五个人额头帖纸的全部可能*/ for(c=0;c<=1;c++)for(d=0;d<=1;d++)for(e=0;e<=1;e++)if((a&&b+c+d+e==3||!a&&b+c+d+e!=3)&&(b&&a+c+d+e==0||!b&&a+c+d+e!=0)&&(c&&a+b+d+e==1||!c&&a+b+d+e!=1)&&(d&&a+b+c+e==4||!d&&a+b+c+e!=4)){ printf(”A is pasted a piece of %s paper on his forehead.n“, a?”white“:”black“);printf(”B is pasted a piece of %s paper on his forehead.n“, b?”white“:”black“);printf(”C is pasted a piece of %s paper on his forehead.n“, c?”white“:”black“);printf(”D is pasted a piece of %s paper on his forehead.n“, d?”white“:”black“);printf(”E is pasted a piece of %s paper on his forehead.n“, e?”white“:”black“); } getch();} 学生成绩查询系统 6.1功能说明 查询修改统计成绩。 6.2设计说明 子函数: int SelectMainMenu()显示并选择主菜单。返回:被选择的菜单项 void Show()成绩查询模块 void Modify() 成绩修改模块 void Stat() 成绩统计模块 void StatAve(float *AveWuLi,float *AveShuXue,float *AveYingYu,float 统计平均分 int FindStudent(int num) 根据学号查找某一学生 void SetAllTotle() 计算所有学生总分 void SetTotle(int No) 计算第No个学生总分 *AveKuaiJi) 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING void ShowAllStudent() 显示所有成绩 void ShowTitle() 显示表头信息 void ShowStudent(int No) 显示第No个的学生信息 主函数void main(): 运用switch语句,调用各个子函数完成学生成绩的管理 6.3程序运行截图 6.4源程序代码 #include int num; char name[15]; char sex; float WuLi; float ShuXue; float YingYu; float KuaiJi; float totle;};/*定义6个学生的信息:*/ #define STU_NUMBER 6 /*宏定义学生数为6*/ struct student Stu[STU_NUMBER]={{101,”yuchen“,'F', 98,85,96,89,0},15 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING {102,”xiaotong“, 'F', 99,91,90,93,0},{103,”likanglong“,'M', 76,83,74,82,0},{104,”yinger“,'F', 88,76,89,77,0},{105,”fengjiao“, 'F', 97,100,94,96,0},{106,”sunyao“,'M', 87,89,66,84,0} };int SelectMainMenu();/*显示并选择主菜单。返回:被选择的菜单项*/ /*所有的函数声明:*/ void Show();/*成绩查询模块*/ void Modify();/*成绩修改模块*/ void Stat();/*成绩统计模块*/ void StatAve(float *AveWuLi,float *AveShuXue,float *AveYingYu,float *AveKuaiJi);/*统计平均分*/ int FindStudent(int num);/*根据学号查找某一学生*/ void SetAllTotle();/*计算所有学生总分*/ void SetTotle(int No);/*计算第No个学生总分*/ void ShowAllStudent();/*显示所有成绩*/ void ShowTitle();/*显示表头信息*/ void ShowStudent(int No);/*显示第No个的学生信息*/ void main(){ int isend=0,password=0;/*程序结束标志量,0表示不结束,1表示结束*/ SetAllTotle();/*计算所有学生总分*/ while(password!=666) {printf(”qing shu ru mi ma:n“); scanf(”%d“,&password); } while(1) { switch(SelectMainMenu())/*显示并选择主菜单*/ { case 1: /*成绩查询*/ Show(); /*调用成绩查询函数*/ break; case 2: /*成绩修改*/ Modify();/*调用成绩修改函数*/ break; case 3: /*成绩统计*/ Stat(); /*调用成绩统计函数*/ break; case 4: /*退出系统*/ printf(”nxie xie nin de shi yong,zai jian!nn“); isend = 1;/*设置程序结束标志*/ break; } if(isend)break;/*程序结束*/ 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING } } int SelectMainMenu()/*显示并选择主菜单。返回:被选择的菜单项*/ { int menu_no=0; do /*显示并选择菜单*/ { printf(”=================================n“); printf(” printf(” zuo zhe:li yi mann“); printf(”=================================n“); printf(” zhu cai dan:n“); printf(” 1cheng ji xiu gain“); printf(” 3tui chu xi tongn“); printf(” qing xuan ze(1-4):“); scanf(”%d“,&menu_no); }while(menu_no<1 && menu_no>4); /*直到选择出正确的序号*/ return menu_no;} void Show()/*成绩查询模块*/ { int n,i; while(1) { printf(”n====cheng ji cha xun====n“); printf(”qing shu ru xue hao(shu ru 0 tui chu cheng ji cha xun,shu ru 1 cha xun quan bu):“); scanf(”%d“,&n); if(n==0)break;/*退出成绩查询模块*/ if(n==1)ShowAllStudent();/*显示所有成绩*/ else if((i=FindStudent(n))>=0)/*找到学号为n的学生*/ { ShowTitle();/*显示表头信息*/ ShowStudent(i);/*显示该学生信息*/ } else printf(”----zhao bu dao gai xue hao----n“); } } void Modify()/*成绩修改模块*/ { int n,i,a; while(1) { printf(”n====cheng ji xiu gai====n“); printf(”qing shu ru xue hao(shu ru 0 tui chu cheng ji xiu gai):“); 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING scanf(”%d“,&n); if(n==0)break;/*退出成绩修改模块*/ if((i=FindStudent(n))>=0)/*找到学号为n的学生*/ { ShowTitle();/*显示表头信息*/ ShowStudent(i);/*显示该学生信息*/ printf(”qing shu ru yao xiu gai de cheng ji:n“);printf(”1 WuLin“);printf(”2 ShuXuen“);printf(”3 YingYun“);printf(”4 KuaiJin“);scanf(”%d“, &a);switch(a){case 1:printf(”qing shu ru WuLi cheng ji:n“); scanf(”%f“, &Stu[i].WuLi);break;case 2:printf(”qing shu ru ShuXue cheng ji:n“); scanf(”%f“, &Stu[i].ShuXue);break;case 3:printf(”qing shu ru YingYu cheng ji:n“); scanf(”%f“, &Stu[i].YingYu);break;case 4:printf(”qing shu ru KuaiJi cheng ji:n“); scanf(”%f“, &Stu[i].KuaiJi);break; default:printf(”shu ru cuo wu“); } SetTotle(i);/*计算该学生总分*/ printf(”----xiu gai cheng gong----n“); } else printf(”----zhao bu dao gai xue hao----n“); } } void Stat()/*成绩统计模块*/ { float AveWuLi, AveShuXue, AveYingYu, AveKuaiJi; StatAve(&AveWuLi, &AveShuXue, &AveYingYu, &AveKuaiJi);/*统计四门课的班级平均分*/ printf(”n====cheng ji tong ji====n“); printf(”xue sheng ren shu:%dn“, STU_NUMBER); printf(”WuLi ping jun fen:%6.2fn“, AveWuLi); printf(”ShuXue ping jun fen:%6.2fn“, AveShuXue); printf(”YingYu ping jun fen:%6.2fn“, AveYingYu); printf(”KuaiJi ping jun fen:%6.2fn“, AveKuaiJi);} /*统计四门课的班级平均分,用指针参数返回*/ void StatAve(float *AveWuLi, float *AveShuXue, float *AveYingYu, float *AveKuaiJi){ 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING int i; float sumWuLi=0, sumShuXue=0, sumYingYu=0, sumKuaiJi=0; for(i=0;i { sumWuLi += Stu[i].WuLi; sumShuXue += Stu[i].ShuXue; sumYingYu += Stu[i].YingYu; sumKuaiJi += Stu[i].KuaiJi; } *AveWuLi = sumWuLi / STU_NUMBER; *AveShuXue = sumShuXue / STU_NUMBER; *AveYingYu = sumYingYu / STU_NUMBER; *AveKuaiJi = sumKuaiJi / STU_NUMBER;} /*根据学号查找某一学生。返回:-1没找到,>=0该学生所在数组的下标*/ int FindStudent(int num){ int i; for(i=0;i if(Stu[i].num==num)break; if(i else return-1;/*没找到*/ } void SetAllTotle()/*计算所有学生总分*/ { int i; for(i=0;i SetTotle(i);} void SetTotle(int No)/*计算第No个学生总分*/ { Stu[No].totle = Stu[No].WuLi + Stu[No].ShuXue + Stu[No].YingYu +Stu[No].KuaiJi;} void ShowAllStudent()/*显示所有成绩*/ { int i; ShowTitle(); for(i=0;i ShowStudent(i);} void ShowTitle()/*显示表头信息*/ { printf(”n%12s%12s%12s%10s%10s%10s%10sn“,”xue hao“, ”xing ming“, ”xing bie“,”WuLi“,”ShuXue“,”YingYu“,”KuaiJi“,”Zong Fen“);} 大连交通大学 软件学院 C语言课程设计报告 SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNING void ShowStudent(int No)/*显示第No个的学生信息*/ { printf(”%12d%12s%12c%10g%10g%10g%10gn",Stu[No].num, Stu[No].name, Stu[No].sex, Stu[No].WuLi,Stu[No].ShuXue, Stu[No].YingYu, Stu[No].KuaiJi,Stu[No].totle);} 课程设计 设计一个学生成绩管理系统,该系统记录了全班同学语文数学英语3门课程的成绩,并对成绩进行管理。主要功能如下: 1)具备对成绩的管理功能(添加、删除、排序) 2)具备对课程成绩的统计功能(最高分,最低分,平均分,及格率等) 3)具备按学号、姓名、或课程名查询成绩的功能。 4)具备将学生成绩写入文件,并从文件读入学生成绩的功能 备注:成绩记录以下信息:班级,学号,姓名,课程成绩(百分制)。可以用能表示学生成绩的结构体数组存储数据。 设计要求 1.分析课程设计题目的要求 2.写出详细设计说明 3.编写程序代码,调试程序使其能正确运行 4.设计完成的软件要便于操作和使用 5.设计完成后提交课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书、设计成果和设计心得五个部分。 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语言程序设计课程设计 设计题目:专业:计算机科学与技术班级:2010级计算机二班组长姓名:马得才【P101712944】成员姓名:孙丽欣【P101712927】 赵广峰【P101712926】 迟成凯【P101712928】 冶成意【P101712930】 2010年5月20日 题目: 指导教师:普措才仁 一、案例需求 二、案例分析 三、案例设计 四、案例实现 五、参考文献 #include int num1; char name1[20]; int score; int nelepeo;//课程已选人数 int Melepeo;//课程人数上限 struct couse * next;}; int student(); //学生登陆 int teacher(); //教师登陆 struct student//学生信息结构体 { int num2; char name2[20]; int nelenum[50];//已选课程编号 int nelen;//已选课程数量 struct student * next;}; void Ms(){ for(kk1=0;kk1<1100;kk1++) for(kk2=0;kk2<1200;kk2++) for(kk3=0;kk3<1200;kk3++);} void keyboardc()//录入课程子函数(从键盘录入){ void intoc();struct couse *p1,*p2;N1=0;p1=p2=(struct couse*)malloc(sizeof(struct couse));printf(“n课程编号:”);fflush(stdin);scanf(“%d”,&p1->num1);printf(“n课程名称:”);scanf(“%s”,p1->name1);printf(“n学分:”);scanf(“%d”,&p1->score);printf(“n课程人数上限:”);scanf(“%d” ,&p1->Melepeo);printf(“ntttt输入成功!”);p1->nelepeo=0;head1=NULL;while(p1->num1!=0){ N1=N1+1; if(N1==1)head1=p1; else p2->next=p1; p2=p1; p1=(struct couse *)malloc(sizeof(struct couse)); printf(“n-----------------------------”); printf(“n课程编号:(输入0结束)”);scanf(“%d”,&p1->num1);printf(“n课程名称:”);scanf(“%s”,p1->name1);printf(“n学分:”);scanf(“%d”,&p1->score);printf(“n课程人数上限:”);scanf(“%d” ,&p1->Melepeo); p1->nelepeo=0; printf(“ntttt输入成功!”);} p2->next=NULL;intoc();} void filec()//录入键盘子函数(从文件录入){ void intoc(); FILE * fp; char filepath[20]; struct couse *p1,*p2; N1=0; printf(“输入要读入的文件路径:”); getchar(); gets(filepath); if((fp=fopen(filepath,“r”))==NULL) { printf(“找不到%s文件!n”,filepath); exit(0); } p1=p2=(struct couse*)malloc(sizeof(struct couse)); fscanf(fp,“%d%s%d%d%d”,&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo); head1=NULL; while(!feof(fp)) { N1=N1+1; if(N1==1)head1=p1; else p2->next=p1; p2=p1; p1=(struct couse *)malloc(sizeof(struct couse)); fscanf(fp,“%d%s%d%d%d”,&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo); } p2->next=NULL; intoc();} void inputc()//录入课程主函数 { int i; printf(“ttt录入课程信息n”); printf(“n1.从键盘录入n”); printf(“2.从文件录入n”); printf(“3.返回主菜单n”); printf(“请选择(1~3):n”); scanf(“%d”,&i); switch(i) { case(1):keyboardc();break; case(2):filec();break; case(3):system(“cls”);return;break; //return } } void insertc(struct couse *incouse)//课程管理子函数(增加课程){ void intoc(); struct couse *p0,*p1,*p2; p1=head1; p0=incouse; if(head1==NULL) { head1=p0; p0->next=NULL; } else { while((p0->num1 > p1->num1)&&(p1->next!=NULL)) { p2=p1; p1=p1->next; } if(p0->num1 <= p1->num1) { if(head1==p1)head1=p0; else p2->next=p0; p0->next=p1; } else { p1->next=p0; p0->next=NULL; } } N1=N1+1; intoc();} void delc(int num1)//课程管理子函数(删除课程){ void intoc(); struct couse *p1,*p2; if(head1==NULL) { printf(“n没有课程,无法删除!n”); goto end; } p1=head1; while(num1!=p1->num1 && p1->next!=NULL) { p2=p1; p1=p1->next; } if(num1==p1->num1) { if(p1==head1)head1=p1->next; else p2->next=p1->next; printf(“已删除该编号课程!n”); N1=N1-1; } else printf(“无该编号的课程!n”); end:; intoc();} void managementc()//课程管理主函数 { struct couse * incouse; struct couse *p1; int i,num1; printf(“ttt课程管理n”); printf(“1.新增课程n”); printf(“2.删除课程n”); printf(“3.返回主菜单n”); printf(“请选择(1~3):n”); scanf(“%d”,&i); switch(i) { case(1): { incouse=(struct couse *)malloc(sizeof(struct couse)); printf(“n课程编号:”); fflush(stdin); scanf(“%d”,&p1->num1); printf(“n课程名称:”); scanf(“%s”,p1->name1); printf(“n学分:”); scanf(“%d”,&p1->score); printf(“n课程人数上限:”); scanf(“%d” ,&p1->Melepeo); printf(“ntttt输入成功!”); incouse->nelepeo=0; insertc(incouse); break; } case(2): { printf(“请输入要删除课程的编号:n”); scanf(“%d”,&num1); delc(num1); break; } case(3):system(“cls”);return;break; } } void keyboards()//录入学生信息子函数(从键盘录入){ void intos(); int i; struct student *p1,*p2; N2=0; p1=p2=(struct student *)malloc(sizeof(struct student)); printf(“n学生学号:”); scanf(“%d”,&p1->num2); printf(“n学生姓名:”); scanf(“%s”,p1->name2); p1->nelen=0; for(i=0;i<50;i++)p1->nelenum[i]=0; head3=NULL; while(p1->num2!=0) { N2=N2+1; if(N2==1)head3=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(sizeof(struct student)); //return printf(“n学生学号:(输入0结束!)”); scanf(“%d”,&p1->num2); printf(“n学生姓名:”); scanf(“%s”,p1->name2); p1->nelen=0; for(i=0;i<50;i++)p1->nelenum[i]=0; } p2->next=NULL; intos();return;} void files()//录入学生信息子函数(从文件录入){ int i=0; FILE * fp; char filepath[20]; struct student *p1,*p2; N2=0; printf(“输入要读入的文件路径:”); getchar(); gets(filepath); if((fp=fopen(filepath,“r”))==NULL) { printf(“找不到%s文件!n”,filepath); exit(0); } p1=p2=(struct student*)malloc(sizeof(struct student)); fread(p1,sizeof(struct student),1,fp); head3=NULL; while(!feof(fp)) { i=0; N2=N2+1; if(N2==1)head3=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(sizeof(struct student)); fread(p1,sizeof(struct student),1,fp); } p2->next=NULL;} void inputs()//录入学生信息主函数 { int i; printf(“nttt录入学生信息n”); printf(“n1.从键盘录入n”); printf(“2.从文件录入n”); printf(“3.返回主菜单n”); printf(“请选择(1~3):n”); scanf(“%d”,&i); switch(i) { case(1):keyboards();break; case(2):files();break; case(3):system(“cls”);return;break; } return 0;} void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息){ void intos(); struct student *p0,*p1,*p2; p1=head3; p0=incouse; if(head3==NULL) { head3=p0; p0->next=NULL; } else { while((p0->num2 > p1->num2)&&(p1->next!=NULL)) { p2=p1; p1=p1->next; } if(p0->num2 <= p1->num2) { if(head3==p1)head3=p0; else p2->next=p0; p0->next=p1; } else { //return p1->next=p0; p0->next=NULL; } } N2=N2+1; intos();} void dels(int num2)//学生信息管理子函数(删除学生信息){ void intos(); struct student *p1,*p2; if(head3==NULL) { printf(“n没有该学生信息,无法删除!n”); goto end; } p1=head3; while(num2!=p1->num2 && p1->next!=NULL) { p2=p1; p1=p1->next; } if(num2==p1->num2) { if(p1==head3)head3=p1->next; else p2->next=p1->next; printf(“已删除该学生信息!n”); N2=N2-1; } else printf(“无该学号的学生!n”); intos(); end:;} void managements()//学生信息管理主函数 { struct student * incouse; int i,num2; printf(“ttt学生信息管理n”); printf(“1.新增学生信息n”); printf(“2.删除学生信息n”); printf(“3.返回主菜单n”); printf(“请选择(1~3):n”); scanf(“%d”,&i); switch(i) { case(1): { incouse=(struct student *)malloc(sizeof(struct student)); incouse->nelen=0; incouse->nelenum[0]=0; printf(“学生学号t学生姓名n”); scanf(“%d%s”,&incouse->num2,incouse->name2); inserts(incouse); break; } case(2): { printf(“请输入要删除学生的学号:n”); scanf(“%d”,&num2); dels(num2); break; } case(3):system(“cls”);return;break; //return } } void elect(struct student * s)//选课 { void intos(); struct couse * p; int num1,i; printf(“请输入要选课的编号:n”); scanf(“%d”,&num1); for(i=0;s->nelenum[i]!=0;i++); s->nelenum[i]=num1; (s->nelen)++; p=head1; while(p->num1!=num1)p=p->next; (p->nelepeo)++; intos();} void cheak()//学生选课子函数(查询可选课程){ char e; struct couse * c; struct student * s; int num2,i,j=0,t=0; printf(“请输入你的学号:”); scanf(“%d”,&num2); s=head3; while((s->num2!=num2)&&(s->next!=NULL))s=s->next; if(s->num2!=num2) { printf(“不存在你的信息,请进入主菜单录入你的信息!n”); goto end; } c=head1; printf(“你的可选课程编号:n”); while(c!=NULL) { for(t=0,i=0;s->nelenum[i]!=0;i++) { if(c->num1==s->nelenum[i])t=1; } if(t==0 &&(c->nelepeo!=c->Melepeo)) { printf(“%dn”,c->num1); j++; } c=c->next; } if(j==0) { printf(“你已选完所有课程,无法再多选!n”); goto end; } printf(“选课(y/n)?:n”); getchar(); e=getchar(); i=0; while((e=='y')||(e=='Y')) { elect(s); printf(“继续选课(y/n)?:n”); getchar(); e=getchar(); } end:;} void back(struct student * p)//退课 { void intos(); struct couse * p1; int num1,i,j; printf(“请输入你要退掉的课程编号:n”); scanf(“%d”,&num1); p1=head1; while(p1->num1!=num1)p1=p1->next; for(i=0;p->nelenum[i]!=num1;i++); for(j=i;p->nelenum[j]!=0;j++)p->nelenum[j]=p->nelenum[j+1]; p->nelenum[--j]=0; (p1->nelepeo)--; printf(“退课成功!n”); intos();} void hcheak()//学生选课子函数(查询已选课程){ char c; struct couse * p0; struct student * p; int num2,i,f=0; printf(“请输入学号:n”); scanf(“%d”,&num2); p=head3; while(p->num2!=num2 && p!=NULL)p=p->next; if(p==NULL) { printf(“不存在你的信息,请回主菜单录入信息:n”); goto end; } printf(“已选课程编号:n”); if(p->nelenum[0]==0) { printf(“你还没选课!n”); goto end; } for(i=0;p->nelenum[i]!=0;i++) { printf(“%dn”,p->nelenum[i]); p0=head1; while(p0->num1!=p->nelenum[i])p0=p0->next; f=f+p0->score; } printf(“总学分:%dn”,f); printf(“是否进行退课(y/n)?”); getchar(); c=getchar(); while((c=='y')||(c=='Y')) { back(p); printf(“继续退课(y/n)?”); getchar(); c=getchar(); (p->nelen)--; } end:;} void elective()//学生选课主函数 { int i; printf(“ttt学生选课n”); printf(“1.查询可选课程n”); printf(“2.查询已选课程n”); printf(“3.返回主菜单n”); printf(“请输入(1~3):n”); scanf(“%d”,&i); switch(i) { case(1):cheak();break; case(2):hcheak();break; case(3): system(“cls”);return;break; // return } } void listc()//输出课程信息 { struct couse * p; p=head1; printf(“课程编号 课程名称 学分 课程已选人数 课程人数上限n”); while(p!=NULL) { printf(“%-8d%10s%6d%8d%12dn”,p->num1,p->name1,p->score,p->nelepeo,p->Melepeo); p=p->next; } } void lists()//输出学生信息 { struct student * p; p=head3; printf(“学生学号 学生姓名 已选课程数量n”); while(p!=NULL) { printf(“%-4d %10s %6dn”,p->num2,p->name2,p->nelen); p=p->next; } } void intoc()//存储课程信息 { FILE * fp; struct couse * p; char filepath[30]; if((fp=fopen(“课程信息.dat”,“a+”))==NULL) { printf(“n保存失败!”); exit(0); } p=head1; while(p!=NULL) { fprintf(fp,“%d %s %d %d %dn”,p->num1,p->name1,p->score,p->nelepeo,p->Melepeo); p=p->next; } fclose(fp); printf(“课程信息已保存成功!n”);} void intos()//存储学生信息 { int i; FILE * fp; struct student * p; char filepath[30]; if((fp=fopen(“学生信息.dat”,“a+”))==NULL) { printf(“n保存失败!”); exit(0); } p=head3; while(p!=NULL) { fwrite(p,sizeof(struct student),1,fp); p=p->next; } fclose(fp); printf(“学生信息已保存成功!n”); printf(“ntttt选择菜单:”); printf(“ntttt1.继续添加ntttt2.返回主菜单:”); printf(“请选择:”); scanf(“%d”,&i); switch(i) { case 1:inputs();break; case 2:teacher();break; default:printf(“n输入有误!n”);} } void store()//信息主函数 { int i; printf(“tt系统信息查看及存储n”); printf(“1.查看课程信息n”); printf(“2.查看学生信息n”); printf(“3.返回主菜单n”); printf(“请输入(1~3):n”); scanf(“%d”,&i); switch(i) { case(1):listc();break; case(2):lists();break; case(3):system(“cls”);return;break; } } int main()//主函数 //retuen { int i; FILE *fp; printf(“nttt欢迎使用学生选课系统!n”); printf(“n请选择菜单:”); printf(“ntttt1.教师登陆ntttt2.学生登陆n”); printf(“请选择:”); scanf(“%d”,&i); switch(i) { case 1:teacher();break; case 2:student();break; default:printf(“输入有误!”); } } int student() { int i; printf(“ntttt1.学生选课n”); printf(“ntttt2.系统信息查看及存储n”); printf(“ntttt3.退出系统n”); printf(“请选择:”); scanf(“%d”,&i); switch(i) { case 1: { system(“cls”); elective(); break; } case 2: { system(“cls”); store(); break; } default:printf(“输入有误!”); } } int teacher() { FILE *fp; int i; printf(“菜单:n”); printf(“1.录入课程信息n”); printf(“2.课程管理n”); printf(“3.录入学生信息n”); printf(“4.学生信息管理n”); printf(“5.系统信息查看n”); printf(“6.退出系统n”); if((fp=fopen(“课程信息.dat”,“rb”))==NULL) { printf(“n打开系统文件失败! n”); //fp=fopen(“信息.dat”,“rb”)); // } // if(feof(fp)) // { printf(“n还未添加课程信息,请添加课程信息!n”); inputc(); } while(!feof(fp)) { emp1=(struct couse*)malloc(sizeof(struct couse)); if(emp1==NULL) { printf(“n分配内存失败!n”); return; } fread(emp1,sizeof(struct couse),1,fp); if(feof(fp))break; if(head1==NULL) { head1=emp1; head2=emp1; } else{ head2->next=emp1; head2=emp1; } head2->next=NULL; } fclose(fp); fp==NULL; if((fp=fopen(“学生信息.dat”,“rb”))==NULL) printf(“n打开系统文件失败!n”); // //if(feof(fp)==1) // { printf(“还未添加学生信息,请添加学生信息!”); inputs(); while(!feof(fp)) { emp1=(struct student*)malloc(sizeof(struct student)); if(emp2==NULL) { printf(“n分配内存失败!n”); return; } fread(emp2,sizeof(struct student),1,fp); if(feof(fp))break; if(head3==NULL) { head3=emp2; head4=emp2; } else{ head4->next=emp2; head4=emp2; } head4->next=NULL; } fclose(fp); fp==NULL; printf(“n请输入菜单选项(1~6):n”); scanf(“%d”,&i); switch(i) { case(1): { system(“cls”); inputc(); break; } case(2): { system(“cls”); managementc(); break; } case(3): { system(“cls”); inputs(); break; } case(4): { system(“cls”); managements(); break; } case(5): { system(“cls”); store(); break; } case(6): { system(“cls”); printf(“感谢使用本系统!nn再见!n”); } } return 1; }第二篇:c语言课程设计作业(推荐)
第三篇:C语言课程设计
第四篇:C语言课程设计范文
第五篇:C语言课程设计