高级语言程序设计课程设计.doc_第1页
高级语言程序设计课程设计.doc_第2页
高级语言程序设计课程设计.doc_第3页
高级语言程序设计课程设计.doc_第4页
高级语言程序设计课程设计.doc_第5页
免费预览已结束,剩余54页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

h1521001 高级语言程序设计课程设计教学大纲一、课程设计基本信息课程编号:h1521001 课程学时:18实验课程学分:1 适用专业: 计算机应用技术开课学期:2 上机学时: 应做实验个数:1 所属实验室:程序设计与软件实验室二、课程设计教学目的及要求 教学目的:本课程设计是学生学习完高级语言程序设计课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用c语言进行程序设计的方法,加深对c语言特点和使用c语言进行程序设计开发过程的理解,加强动手能力。教学基本要求:(1)要求从所给题目中任选一个,每个学生必须独立完成课程设计,不能互相抄袭。(2) 设计完成后,对所完成的工作进行答辩。(3) 要求写出一份详细的课程设计报告。(4)程序设计题目,须提交相应的程序,并需提供加注释的源程序,能正常运行。 三、课程设计题目描述与要求.各种排序算法比较编写一程序,其中包含各种较为常见和典型的排序算法,通过设计程序比较各种排序算法的特点。设计要求:(1)能随机生成若干数字,并通过设计的排序算法进行排序。(2)排序完毕后应该有相应的排序后信息,如排序时间,交换次数等信息。(3)显示出最后的结论。.学生信息管理系统本程序属于非数值计算型算法设计,学生需要设计出学生管理系统所需要的基本功能,并设计简单的界面(无需图形化),设计要求:(1)通过选择菜单选择操作。(2)将学生的信息存入文件中。(3)可以查看相应的学生信息。(4)可以添加学生信息,删除学生信息。图书馆模拟程序本程序属于非数值计算型算法设计,学生需要设计出借阅图书所需要的基本功能,并设计简单的界面(无需图形化),可以模拟图书馆的功能,图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。设计要求:(1)通过选择菜单选择操作。、(2)图书信息录入功能(图书信息用文件保存)。(3)图书信息浏览功能。(4)查询或排序功能:(至少一种查询方式)按书名查询和按作者名查询。(5)图书信息的删除与修改。(6)可以记录借阅信息。职工信息管理系统职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。设计要求:(1)职工信息录入功能(职工信息用文件保存)。(2)职工信息浏览功能。(3)查询或排序功能:(至少一种查询方式) 按工资查询和按学历查询等。(4)职工信息删除、修改功能 5飞机订票系统假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计要求:(1)航班信息录入功能(航班信息用文件保存)。(2)航班信息浏览功能。(3)查询航线:(至少一种查询方式)按航班号查询和按终点站查询。(4)承办订票和退票业务6学生选修课程系统设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。设计要求:(1)课程信息录入功能(课程信息用文件保存)。(2)课程信息浏览功能。(3)查询功能:(至少一种查询方式)按学分查询和按课程性质查询。(4)学生选修课程。7泊车管理系统假定有n个车位,汽车在到来的时候首先选择车位,然后记录当前停车的时间,在取车的时候再记录取车时间,根据停了多长时间来给出费用,设计要求:(1)可以固定停车费用,也可以选择输入停车费用。(2)查看当前有多少车位,有哪些是空闲的。(3)选择停车的车位,并记录当前时间。(4)选择取车,并记录时间。(5)根据停车时间,计算费用,并打印出明细。8通讯录系统假设有一个通讯录,通讯录中记录一些个人信息,包括姓名、性别、生日、电话、地址等其他相关信息,设计要求:(1)个人信息录入功能(个人信息用文件保存)。(2)个人信息浏览功能。(3)查询功能:根据姓名查询。(4)添加新的个人信息,删除个人信息。除此之外,学生可自行选择课题进行设计(课题必须经指导教师审题后合格),对于大型项目可进行团队开发,但应制定详细的项目分工说明。四、设计报告的内容1、设计题目2、设计说明3、系统详细设计,包括程序流程、结构、代码说明等4、程序运行环境、输入输出条件5、总结(心得体会及建议等)五、课程设计的成绩评定课程设计成绩评定的依据有设计报告资料、具体实现设计方案的程序及课程设计考勤登记表。 优:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述;程序完全实现设计方案,设计方案先进,软件可靠性好; 良:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进; 中:有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确; 及格:有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确; 不及格:没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。提交的电子文档和软件必须是由学生自己独立完成,雷同者教师有权视其情况扣分或记零分。学生成绩管理 1、 设计管理系统的具体内容。2、界面设计:显示欢迎信息等,可考虑加入动画效果及口令验证功能。 3、简易菜单:设计简易菜单或图形菜单。 4、能完成相关信息的录入:至少要包含3项以上的数据,其数据表要以文件的形式保存 5、能完成对某项信息的修改和删除 6、能完成对某个信息的查询7、能完成简单统计并输出8、能退出系统,正常结束程序,并出现结束信息,如“bye!”等 9、系统中所有文件名均必须冠以自己的姓名(拼音),以免与混淆include #include /*头文件*/#include#include#include#include#include#include#define null 0#define esc 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 *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(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) /*学号的唯一性*/ 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; /*若输入“#”,则返回真值结束*/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-*/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 stu_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 printf(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.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,stud;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) /*检查文件指针结束*/ 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); 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(suct 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是否继续(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英语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); /*关闭文件*/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 rewind(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) /*可以防止记录为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 %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位。姓名输入符合中国人的姓名,只能用中文,且最长为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)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,highest1,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 使用方法:系统输入数据后,将在当前目录中建立一个名为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() 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(); /*从键盘读取一个字符,但不显示于屏幕*/ 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: listfile(); break;case f6: statistics(); break;case esc:exit(1); break;/*default: puts(ttt输入错误选项!);printf(ttt按任意键返回.);getch();*/clrscr(); /*每执行完一项功能后,自动清屏*/ 产品信息管理系统#includestdio.h#includestdlib.h#includestring.htypedef struct prod char num10; char name10; char leixing12; char guige10; char danwei10; int sum; float prize; char jihuo12; char youxiao12; struct prod *next;product,*plink;char *menu= 1.产品信息的输入: , 2.产品信息的修改:, 3.产品信息的删除: , 4.根据产品名称查询: , 5.显示全部产品信息: , 6.按参考价格从小到大显示产品信息:, 7.显示全部过期产品信息: , 8.增加产品信息: , 9.退出系统: ;int menu_select() char c3; int a; int i; for(i=0;i9;i+) printf(%sn,menui); do scanf(%s,c); a=atoi(c); while(a10); return a;void print(product *head);product *creat();product *del(product *h);product *modify(product *h);void inquire(product *h);void printguoqi(product *h);product *insert(product *h);void sortprint(product *h);void main() product *head=null; for(;) switch(menu_select() case 1:head=creat();break; case 2:head=modify(head);break; case 3:head=del(head);break; case 4:inquire(head);break; case 5:print(head);break; case 6:sortprint(head);break; case 7:printguoqi(head);break; case 8:head=insert(head);break; case 9:exit(0); product *creat() product *p,*h=null; int i; printf(请输入产品编号时,以#结束:n); printf(!请注意,输入数据时不可以按空格:!n); do p=(plink)malloc(sizeof(product); printf(请输入产品编号:n); scanf(%s,p-num); if(strcmp(p-num,#)=0) break; printf(请输入产品名称:n); scanf(%s,p-name); printf(请输入产品类型编号:n); scanf(%s,p-leixing); printf(请输入产品规格:n); scanf(%s,p-guige); printf(请输入产品计量单位:n); scanf(%s,p-danwei); printf(请输入产品的数量:n); scanf(%d,&p-sum); printf(请输入产品的参考价格(可输小数):n); scanf(%f,&p-prize); printf(请输入产品进货日期(年.月.日):n); scanf(%s,p-jihuo); printf(请输入产品的有效期:n); scanf(%s,p-youxiao); p-next=h; h=p; while(1); return h;void print(product *head) product *p; p=head; if(p=null)printf(|产品编号|名称|产品类型编号|产品规格|计量单位|数量|参考价格|进货日期|有效日期|n); while(p) printf(|编号|名称|产品类型编号|产品规格|计量单位|数量|参考价格|进货日期|有效日期|n); printf(|%5s|%4s|%-12s|%8s|%4s|%8d|%9f|%10s|%10sn,p-num,p-name,p-leixing,p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论