高级语言程序设计课程设计.doc

上传人:文库蛋蛋多 文档编号:2386206 上传时间:2023-02-17 格式:DOC 页数:59 大小:170KB
返回 下载 相关 举报
高级语言程序设计课程设计.doc_第1页
第1页 / 共59页
高级语言程序设计课程设计.doc_第2页
第2页 / 共59页
高级语言程序设计课程设计.doc_第3页
第3页 / 共59页
高级语言程序设计课程设计.doc_第4页
第4页 / 共59页
高级语言程序设计课程设计.doc_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《高级语言程序设计课程设计.doc》由会员分享,可在线阅读,更多相关《高级语言程序设计课程设计.doc(59页珍藏版)》请在三一办公上搜索。

1、H1521001 高级语言程序设计课程设计教学大纲一、课程设计基本信息课程编号:H1521001 课程学时:18实验课程学分:1 适用专业: 计算机应用技术开课学期:2 上机学时: 应做实验个数:1 所属实验室:程序设计与软件实验室二、课程设计教学目的及要求 教学目的:本课程设计是学生学习完高级语言程序设计课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用C语言进行程序设计的方法,加深对C语言特点和使用C语言进行程序设计开发过程的理解,加强动手能力。教学基本要求:(1)要求从所给题目中任选一个,每个学生必须独立完成课程设计,不能互相抄袭。(2) 设计完成后,对所完成的工作进行答辩。

2、(3) 要求写出一份详细的课程设计报告。(4)程序设计题目,须提交相应的程序,并需提供加注释的源程序,能正常运行。 三、课程设计题目描述与要求.各种排序算法比较编写一程序,其中包含各种较为常见和典型的排序算法,通过设计程序比较各种排序算法的特点。设计要求:(1)能随机生成若干数字,并通过设计的排序算法进行排序。(2)排序完毕后应该有相应的排序后信息,如排序时间,交换次数等信息。(3)显示出最后的结论。.学生信息管理系统本程序属于非数值计算型算法设计,学生需要设计出学生管理系统所需要的基本功能,并设计简单的界面(无需图形化),设计要求:(1)通过选择菜单选择操作。(2)将学生的信息存入文件中。(

3、3)可以查看相应的学生信息。(4)可以添加学生信息,删除学生信息。图书馆模拟程序本程序属于非数值计算型算法设计,学生需要设计出借阅图书所需要的基本功能,并设计简单的界面(无需图形化),可以模拟图书馆的功能,图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。设计要求:(1)通过选择菜单选择操作。、(2)图书信息录入功能(图书信息用文件保存)。(3)图书信息浏览功能。(4)查询或排序功能:(至少一种查询方式)按书名查询和按作者名查询。(5)图书信息的删除与修改。(6)可以记录借阅信息。职工信息管理系统职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职

4、工号不重复)。设计要求:(1)职工信息录入功能(职工信息用文件保存)。(2)职工信息浏览功能。(3)查询或排序功能:(至少一种查询方式) 按工资查询和按学历查询等。(4)职工信息删除、修改功能 5飞机订票系统假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计要求:(1)航班信息录入功能(航班信息用文件保存)。(2)航班信息浏览功能。(3)查询航线:(至少一种查询方式)按航班号查询和按终点站查询。(4)承办订票和退票业务6学生选修课程系统设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机

5、学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。设计要求:(1)课程信息录入功能(课程信息用文件保存)。(2)课程信息浏览功能。(3)查询功能:(至少一种查询方式)按学分查询和按课程性质查询。(4)学生选修课程。7泊车管理系统假定有n个车位,汽车在到来的时候首先选择车位,然后记录当前停车的时间,在取车的时候再记录取车时间,根据停了多长时间来给出费用,设计要求:(1)可以固定停车费用,也可以选择输入停车费用。(2)查看当前有多少车位,有哪些是空闲的。(3)选择停车的车位,并记录当前时间。(4)选择取车,并记录时间。(5)根据停车时间,计算费用,并打印出明细。8通讯录系统

6、假设有一个通讯录,通讯录中记录一些个人信息,包括姓名、性别、生日、电话、地址等其他相关信息,设计要求:(1)个人信息录入功能(个人信息用文件保存)。(2)个人信息浏览功能。(3)查询功能:根据姓名查询。(4)添加新的个人信息,删除个人信息。除此之外,学生可自行选择课题进行设计(课题必须经指导教师审题后合格),对于大型项目可进行团队开发,但应制定详细的项目分工说明。四、设计报告的内容1、设计题目2、设计说明3、系统详细设计,包括程序流程、结构、代码说明等4、程序运行环境、输入输出条件5、总结(心得体会及建议等)五、课程设计的成绩评定课程设计成绩评定的依据有设计报告资料、具体实现设计方案的程序及课

7、程设计考勤登记表。 优:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述;程序完全实现设计方案,设计方案先进,软件可靠性好; 良:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进; 中:有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确; 及格:有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确; 不及格:没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。提交的电子文档和软件必须是由学生自己独立完成,雷同者教师有权视其情况扣分或记零分。学生成绩管理 1、 设计管理系统的

8、具体内容。2、界面设计:显示欢迎信息等,可考虑加入动画效果及口令验证功能。 3、简易菜单:设计简易菜单或图形菜单。 4、能完成相关信息的录入:至少要包含3项以上的数据,其数据表要以文件的形式保存 5、能完成对某项信息的修改和删除 6、能完成对某个信息的查询7、能完成简单统计并输出8、能退出系统,正常结束程序,并出现结束信息,如“Bye!”等 9、系统中所有文件名均必须冠以自己的姓名(拼音),以免与混淆include #include /*头文件*/#include#include#include#include#include#include#define NULL 0#define ESC

9、0x001b /* 退出 */#define F1 0x3b00 /* 查看帮助信息,调用HelpMassage()函数 */#define F2 0x3c00 /*输入学生成绩*/#define F3 0x3d00 /*按学号查找*/#define F4 0x3e00 /*按姓名查找*/#define F5 0x3f00 /*列出所有学生成绩*/#define F6 0x4000 /*统计*/suct stuType /*定义结构体变量*/char NO11; /*学号长度为10*/ char XM10;float CJ4; /*包含4门成绩*/;/*-2-*/int JY_NO(char

10、*stu_num,FILE *fp) /*检验学号的正确性*/ suct stuType stud;int NO;char *p=stu_num;if(scmp(stu_num,#)=0) return 1; /*若输入#返回真值,不再循环输入*/while(*p!=0) /*学号必须是数字,否则返回重新输入*/ NO=(int)*p;if(NO57) puts(ttt非法学号!请重新输入!n);return 0;else p ; /*指针加1*/if(slen(stu_num)!=10) /*若学号长度不为10,则返回重新输入*/ puts(ttt学号长度不对!n);return 0;if(

11、getchar()!=n) /*若学号后面的字符不是回车符,则学号长度大于10*/ printf(ttt学号长度大于10个!请重新输入!n);dowhile(getchar()!=n); /*用getchar接收多余的字符*/return 0; elserewind(fp); /*使文件指针指向头*/while(!feof(fp) /*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/ fread(&stud,sizeof(suct stuType),1,fp); /*读取一定长度的数据*/if(scmp(stu_num,stud.NO)=0) /*学号

12、的唯一性*/ printf(ttt学号重复,请重新输入!n);printf(ttt该学生成绩如下:n); printf(ttt语文:%.1fn,stud.CJ0);printf(ttt数学:%.1fn,stud.CJ1);printf(ttt英语:%.1fn,stud.CJ2);printf(ttt总评:%.1fn,stud.CJ3);return 0;return 1;/*-3-*/int JY_NO2(char *stu_num) /*检验学号*/ int NO;char *p=stu_num; if(scmp(stu_num,#)=0)return 1; /*若输入“#”,则返回真值结束

13、*/if(slen(stu_num)!=10) /*学号长度为10*/ puts(ttt学号长度不对!n);return 0;while(*p!=0) /*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/ NO=(int)*p;if(NO57) puts(ttt非法学号!请重新输入!n);return 0;else p ; /*指针加1*/if(getchar()!=n) /*检验学号长度是否大于10,并把多余的字符去掉*/ printf(ttt学号长度大于10个!请重新输入!n); dowhile(getchar()!=n);return 0; return 1;/*-4-*/

14、int JY_XM(char *stu_XM) /*检验姓名*/ int PD;char *p;p=stu_XM;while(*p!=0) /*姓名只能用中文*/ PD=(int)*p;if(PD0) puts(ttt姓名只能用中文,请重新输入!n);return 0;else p ; /*使指针加1,指向下一汉字*/if(getchar()!=n) /*姓名长度不得大于5个*/ printf(ttt姓名长度大于5个!请重新输入!n);dowhile(getchar()!=n);return 0; return 1; /*字符串全为汉字返回真*/*-5-*/int JY_CJ(float st

15、u_CJ) /*学生成绩只能在0100之间*/ if(stu_CJ100) printf(ttt输入错误,成绩只能在0100之间!n);return 0;return 1;/*-6-*/void CreatFile() /*输入文件*/ FILE *fp;suct stuType stu,stu0=,; /*对stu0先赋值*/fp=fopen(stu.dat,wb ); /*打开或创建一个二进制文件,打开时将原来的内容删除*/if(fp=NULL) printf(ttt文件打开失败!nttt按任意键返回.);getch();return;else while(1) stu=stu0;do p

16、rintf(nttt请输入学号:); /*输入学号并检验其正确性*/scanf(s,stu.NO);while(!JY_NO(stu.NO,fp);if(scmp(stu.NO,#)=0)break;do printf(nttt请输入姓名:); /*输入姓名并检验其正确性*/scanf(s,stu.XM);while(!JY_XM(stu.XM);do printf(nttt请输入语文成绩:); /*输入成绩并检验其正确性*/scanf(%f,&stu.CJ0);while(!JY_CJ(stu.CJ0);do printf(nttt请输入数学成绩:); /*同上*/scanf(%f,&stu

17、.CJ1);while(!JY_CJ(stu.CJ1);do printf(nttt请输入英语成绩:);scanf(%f,&stu.CJ2);while(!JY_CJ(stu.CJ2);do printf(nttt请输入总评成绩:);scanf(%f,&stu.CJ3);while(!JY_CJ(stu.CJ3);fwrite(&stu,sizeof(suct stuType),1,fp); /*写文件*/fclose(fp); /*关闭文件*/*-7-*/void Search_Xuehao() /*按学号查询*/ FILE *fp;int flag;suct stuType stu,stu

18、d;fp=fopen(stu.dat,rb);if(fp=NULL) /*若文件打不开则输出下面的信息*/ printf(ttt文件打开失败!nttt按任意键返回.);getch();return;else do puts(nttt输入“#”结束查询);do printf(ttt请输入要查询的学号:);scanf(s,stu.NO);while(!JY_NO2(stu.NO);if(scmp(stu.NO,#)=0)break; /*若输入“#”则结束循环*/flag=0;rewind(fp);while(fread(&stud,sizeof(suct stuType),1,fp) /*检查文

19、件指针结束*/ if(scmp(stu.NO,stud.NO)=0) /*比较学号*/ puts(ttt该学生成绩如下:);printf(ttt学号:%sn,stud.NO);printf(ttt姓名:%sn,stud.XM);printf(ttt语文:%.1fn,stud.CJ0);printf(ttt数学:%.1fn,stud.CJ1);printf(ttt英语:%.1fn,stud.CJ2);printf(ttt总评:%.1fn,stud.CJ3);flag=1; /*记录学号是否查到*/if(flag=0)puts(ttt无此学号!);while(scmp(stu.NO,#)!=0);

20、 fclose(fp); /*关闭文件*/*-8-*/void Search_Xingming() /*按姓名查找*/ FILE *fp;int flag=0;suct stuType stu,stud;fp=fopen(stu.dat,rb);if(fp=NULL) printf(ttt文件打开失败!nttt按任意键返回.);getch();return;else dodo printf(ttt请输入要查询的学生姓名:);scanf(s,stu.XM);while(!JY_XM(stu.XM);rewind(fp); /*文件指针指向头*/while(fread(&stud,sizeof(s

21、uct stuType),1,fp) if(scmp(stu.XM,stud.XM)=0) /*比较姓名是否相同*/ puts(ttt该学生姓名如下:);printf(ttt学号:%sn,stud.NO);printf(ttt姓名:%sn,stud.XM);printf(ttt语文:%.1fn,stud.CJ0);printf(ttt数学:%.1fn,stud.CJ1);printf(ttt英语:%.1fn,stud.CJ2);printf(ttt总评:%.1fn,stud.CJ3);flag=1; /*记录姓名是否被查到*/if(flag=0)puts(nttt无此学生!);puts(ttt

22、是否继续(y-继续,其他返回)?);while(getch()=y);fclose(fp); /* puts(ttt请按任意键继续.);*/* getch();*/*-9-*/int ListFile(void) /*输出文件,列出所有学生成绩*/ FILE *fp;int REC=0; /*记录学生人数*/suct stuType stu;fp=fopen(stu.dat,rb);if(fp=NULL) printf(ttt文件打开失败!nttt按任意键返回.);getch();return 1;else printf(ttt学生成绩如下:n);printf(ttt学号tt姓名t语文t数学t

23、英语t总评n);rewind(fp);while(fread(&stu,sizeof(suct stuType),1,fp) /*每读取一个长度的数据就输出*/printf(ttt%s,stu.NO);printf(t%s,stu.XM); printf(t%.1f,stu.CJ0); printf(t%.1f,stu.CJ1); printf(t%.1f,stu.CJ2);printf(t%.1f,stu.CJ3);printf(n);REC ;if(REC =0) /*每输出20个学生成绩,停一下*/ printf(ttt请按任意键继续.n);getch();fclose(fp); /*关

24、闭文件*/printf(ttt请按任意键继续.);getch();/*-10-*/void Statistics() /*统计及格和优秀人数*/ FILE *fp;int REC=0,pass4=0,good4=0; /*REC-记录个数,即人数,pass-及格人数,good-优秀人数*/float highest4=0,score4=0; /*highest-最高分,score-总分*/suct stuType stu;fp=fopen(stu.dat,rb);if(fp=NULL) printf(ttt文件打开失败!nttt按任意键返回.);getch();return;else rewi

25、nd(fp);while(fread(&stu,sizeof(suct stuType),1,fp) REC ;score0=score0 stu.CJ0; /*语文*/if(stu.CJ0=60)pass0 ;if(stu.CJ0=80)good0 ;if(highest0=60)pass1 ;if(stu.CJ1=80)good1 ;if(highest1=60)pass2 ;if(stu.CJ2=80)good2 ;if(highest2=60)pass3 ;if(stu.CJ3=80)good3 ;if(highest3stu.CJ3)highest3=stu.CJ3;if(REC=0

26、) /*可以防止记录为0是REC作除数而造成的错误*/ printf(ttt未输入学生记录!按任意键返回.);getch();return;elseprintf(tttt 语文t 数学t 英语t 总评n); /*输出统计信息*/printf(ttt平均分: %.1ft %.1ft %.1ft %.1fn,score0/REC,score1/REC,score2/REC,score3/REC);printf(ttt最高分: %.1ft %.1ft %.1ft %.1fn,highest0,highest1,highest2,highest3);printf(ttt优秀人数:%dt %dt %dt

27、 %dn,good0,good1,good2,good3);printf(ttt及格人数:%dt %dt %dt %dn,pass0,pass1,pass2,pass3); fclose(fp);printf(nttt请按任意键继续.);getch();/*-11-*/void HelpMessage() clrscr();printf(nnnnn 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。n n 使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。

28、姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。n 此程序在Turbo C2.0下运行通过nn 由于是初学者,水平有限此系统还有许多不够完整和严密性,敬请指正!);getch();/*-12-*/int GetKey(void) /*此函数返回一个按键的数值*/ int key; key=bioskey(0); /*bioskey为调用BIOS键盘接口*/if(key=60)pass1 ;if(stu.CJ1=80)good1 ;if(highest1=60)pass2 ;if(stu.CJ2=80)good2 ;if(highest2=60)pass3 ;if(stu.CJ3=80)

29、good3 ;if(highest3stu.CJ3)highest3=stu.CJ3;if(REC=0) /*可以防止记录为0是REC作除数而造成的错误*/ printf(ttt未输入学生记录!按任意键返回.);getch();return;elseprintf(tttt 语文t 数学t 英语t 总评n); /*输出统计信息*/printf(ttt平均分: %.1ft %.1ft %.1ft %.1fn,score0/REC,score1/REC,score2/REC,score3/REC);printf(ttt最高分: %.1ft %.1ft %.1ft %.1fn,highest0,hig

30、hest1,highest2,highest3);printf(ttt优秀人数:%dt %dt %dt %dn,good0,good1,good2,good3);printf(ttt及格人数:%dt %dt %dt %dn,pass0,pass1,pass2,pass3); fclose(fp);printf(nttt请按任意键继续.);getch();/*-11-*/void HelpMessage() clrscr();printf(nnnnn 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。n n 使用方法:系统输入数据后,将在当前目

31、录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。n 此程序在Turbo C2.0下运行通过nn 由于是初学者,水平有限此系统还有许多不够完整和严密性,敬请指正!);getch();/*-12-*/int GetKey(void) /*此函数返回一个按键的数值*/ int key; key=bioskey(0); /*bioskey为调用BIOS键盘接口*/if(key8) /*位移*/key=key&0x00ff;return key; /*返回按键*/*-13-*/void main

32、() int key;suct date d; /*定义时间结构体*/geate(&d); /*读取系统日期并把它放到结构体d中*/clrscr(); /*清除屏幕*/printf(nnnnn); printf(ttt*n); /*版本信息*/printf(ttt 学生成绩管理系统1.0 n);printf(ttt*n);printf(ttt 制作群: 404 1工作室 n);printf(ttt 指导老师:- n);printf(ttt 制作时间:2004年5月 n);printf(ttt*n);printf(ttt请按任意键继续.);/*while(!kbhit();*/getch();

33、/*从键盘读取一个字符,但不显示于屏幕*/ system(cls); /*调用DOS的清屏函数,TC中可用clrscr代替*/while(1) /*主菜单*/ printf(nnnnn);printf(ttt*n);printf(ttt*tF1 -帮助 *n);printf(ttt*tF2 -输入数据并存入文件 *n);printf(ttt*tF3 -根据学号查询成绩 *n);printf(ttt*tF4 -根据姓名查询成绩 *n);printf(ttt*tF5 -输出文件内容 *n);printf(ttt*tF6 -统计及格和优秀人数 *n);printf(ttt*tESC-退出系统 *n);printf(ttt*n);printf(nttt请输入选项tt%d年%d月%d日nn,d.da_year,d.da_mon,d.da_day); /*提示信息,并显示当前系统日期*/key=GetKey(); /*调用自定义函数,读取一个键*/switch(key)case F1: HelpMessage(); break;case F2: CreatFile(); break;case F3: Search_Xuehao(); break;case F4: Search_Xingming();break;case F5: Li

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号