已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
0 C 语言上机实习报告语言上机实习报告 院院 系:系: 班班 级:级: 姓姓 名:名: 指指 导导 老老 师:师: 2010-8-28 至至 2010-9-4 1 目录目录 一、设计目的一、设计目的.1 二、设计要求二、设计要求.2 三、题目及其要求三、题目及其要求.2 四、需求分析四、需求分析.2 五、总体设计五、总体设计.3 六、详细设计六、详细设计.3 6.1、主函数、主函数3 6.2、菜单函数、菜单函数4 6.3 各模块设计各模块设计7 6.3.1 输输入函数入函数7 6.3.2 添加函数添加函数9 6.3.3 修改函数修改函数12 6.3.4 查查找函数找函数16 6.3.5 选择课选择课程程20 6.3.6 删删除除课课程程23 6.3.7 浏览浏览函数函数26 6.3.8 退出操作退出操作27 6.3.9 公共函数公共函数保存函数保存函数28 七、上机实习七、上机实习.28 八、设计实习心得八、设计实习心得.29 九、参考书目九、参考书目.29 十、学生选课系统与程序十、学生选课系统与程序.30 一、一、设计目的设计目的 随着信息技术对人类社会进行的全方位渗透,一种新的文化形态信息时代的计 算机文化已经形成。计算机知识成为当代知识分子结构中不可缺少的重要部分。 C 语言是近年来国内外得到迅速推广使用的一种高级语言。C 语言功能丰富,表达能 力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级语言的优点, 又具有低级语言的语言特点,因此 C 语言对我们来说很重要。 2 学习的目的在于将所学到的东西运用于实践,这样方可在实践中巩固以前所学的理论 知识,同时提高自己学习的能力,完善自己掌握的技能,使得我们既能够从实践中强化以 前所学的知识,也能让我们在实践中学到更多新的东西,还能锻炼我们的动手能力,这是 书本上不能学到的。 此次设计就在于让我们把以往所学运用于实践中,让我们通过对实际生活中的实例进 行观察和理论分析后,总结出一套可行的解决方案,然后用编程的方法,把解决方案变为 可能。此次设计,也让我们巩固和加深了对 C 语言课程的基本知识的理解和掌握,帮助我 们掌握 C 语言编程和程序调试的基本技能,让我们体验了如何用 C 语言进行基本的软件设 计,同时也提高了我们书写程序说明的能力和用 C 语言解决实际问题的能力。 二、设计要求二、设计要求 1.认真分析实习指导老师分配的课程设计题目的要求; 2.写出详细设计说明,分块论述; 3.编写程序代码,调试程序使其能正确运行,并且可以实现预期的功能; 4.设计完成的软件要便于操作和使用,有整齐、美观的使用界面; 5.设计完成后提交课程设计报告和源代码文件的电子文档。 三、题目及其要求三、题目及其要求 假定有 n 门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实 验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于 15)自由选课。 试设计一个选修课程系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)课程信息和学生选课信息录入功能(课程信息用文件保存) (3)课程信息浏览功能 (4)查询功能 (5)按学分查询 (6)某门课程学生选修情况(可选项) 四、需求分析四、需求分析 根据题目要求,由于课程和学生所选课程的信息是存放在文件中的,所以要提供文件的 输入输出等操作;在程序过程中还要进行添加课程、浏览课程、查找课程、选择课程、删 除课程以及退出系统等操作,所以应提供相应的输入、现实、查找、选择、删除和退出等 功能的函数来实现;另外还要在最开始设置菜单函数,实现其它功能的选择。 3 五、总体设计五、总体设计 根据以上的题目要求以及需求分析,我认为可将我要设计的程序分为十一个模块:主 函数、菜单函数、输入课程、添加课程、修改课程、查找课程、选择课程、删除课程、浏 览课程、退出系统、保存文件。 (系统功能模块如图 5-1 所示) 主函数 输入 函数 添加 函数 修改 函数 查找 函数 选择 函数 删除 函数 浏览 函数 菜单 函数 保存 函数 保存 函数 保存 函数 保存 函数 退出 函数 保存 函数 六、详细设计六、详细设计 6.1、主函数、主函数 主函数一般设计简洁,本次设计遵循程序清晰可读,功能完善的原则,尽量合理简化 程序。在主函数中,仅提供了标准输出函数的调用和菜单函数的调用。 4 主函数流程图如下图所示: 调用主函数 输出“正在启动系统” 调用菜单函数 其代码如下所示: /* 主函数 */ void main() int b=1; system(color 6f); printf(nnnnnnnnnnt tt 正在启动系统 tn ); for(i=0;i;i+); system(color 2f); menu(); 6.2、菜单函数、菜单函数 根据所要实现的功能,我编译了一个菜单函数,将所有选择功能集中,提供给用户进 行选择。这样做既可以使程序更加紧然有序,也为用户提供了方便快捷的选择,使得整个 设计更加人性化。 菜单函数的流程图如下图所示: 5 菜单 函数 输入 课程 添加 课程 修改 课程 查找 课程 选择 课程 删除 课程 浏览 课程 退出 系统 菜单函数的代码如下所示: void menu() char k100=nnnttttt 班 王兵武nnnnnnn; char *m=k; do system(cls); puts(ntt *管理员菜单*); puts(ntttt1.输入课程.); puts(ntttt2.添加课程.); puts(ntttt3.修改课程.); puts(ntttt4.查找课程.); puts(ntttt5.选择课程.); puts(ntttt6.删除课程.); puts(ntttt7.浏览课程.); puts(ntttt8.退出系统.n); puts(tt*n); printf(ntt 请输入您的选择(1-8):t); scanf(%d, printf(ntt-nn); switch(a) case 1: input(); break; case 2: add(); break; case 3: amend(); break; case 4: search(); break; case 5: select(); break; case 6: cross_off(); break; case 7: output(); break; case 8: 6 system(cls); for(i=0;i;i+); system(color 8f);puts(nnnnttt 谢谢使用。已退出系统。); for(m=k;mk+1;m+)printf(%s,m);exit(0);break; default:puts(输入错误!);break; printf( 按任意键返回首层n); getch(); while(a!=8); 运行主函数和菜单函数效果如下: 显示进入系统 进入主菜单: 7 6.3 各模块设计各模块设计 通过主函数调用菜单函数,通过菜单函数里的开关语句选择调用各功能函数。下面详 述各功能函数。 6.3.1 输输入函数入函数 通过菜单函数调用此函数用于输入已有课程信息,并通过输入函数调用保存函数将课 程信息保存在“课程.txt”文件中。 其流程图如下所示: 调用输入函数 输入课程编号 判断课程是否存在 加入课程已经存在, 按任意键返回主菜单。 课程原来不存在,继续输入课程 其他信息,调用保存函数将其保 存后,继续选择。 若选择返回,则调用 菜单函数返回主菜单。 选择继续,则返回输入函数重复 上述操作。 其代码如下: /* 输入函数 */ void input() int i,flag=0,num=0; char q; do flag = 0; printf(请输入课程编号: ); scanf(%d, for(i=0;i返回主菜单 n); printf(n); printf(请输入:n); printf(n); q=getch(); if(q=1) add(); else menu(); else j=count; KCj.num=num; printf(请输入课程名称:); scanf(%s,KC); printf(请输入课程性质:); scanf(%s,KCj.xingzhi); printf(请输入课程学时:); scanf(%d, printf(输入实验上机学时:); scanf(%d, printf(请输入课程学分:); scanf(%f, printf(请输入开课学期:); scanf(%d, 11 count+; baocun(); printf(添加成功!n); printf(请继续选择: 1-继续输入; 其它键-返回主菜单n); q=getch(); if(q!=1)menu(); while(flag=1); 其运行效果如下图所示: (1)所添加课程原来不存在,则继续添加该课程信息: (2)所添加课程已经存在,则继续选择进行下一步操作: 12 6.3.3 修改函数修改函数 修改函数用于对已经存在的课程信息进行相应的修改,用来修改已有课程的名称、学 时、实验上机学时、学分和开课学期相关信息。调用该函数时,先输入课程编号,判断其 实都存在,如果存在,则进行相应项的修改,修改完毕保存然后选择继续修改或者返回主 菜单。若不存在,则进行选择,选择继续修改或者返回主菜单。 流程图如下所示 13 调用修改函数 输入课程编号 判断课程 是否存在 改课程已经存在, 则继续修改该课程 其他信息。修改完 保存,继续选择。 若课程不存在,则 继续选择。 选择继续修改, 则继续调用修改 函数 若选择返回,则 调用菜单函数, 返回主菜单。 继续修改,则继 续调用修改函数 选择返回主菜单, 则调用菜单函数。 修改模块代码如下: /* 修改函数 */ void amend() int num,i,flag=0; char q; do printf(请输入要修改的课程编号:); scanf(%d, for(i=0;i继续修改; 其它键-返回主菜单 n); flag=0; printf(n); printf(请输入:); q=getch(); if(q!=1)menu(); else amend(); else printf(无此课程!1-重新输入;任意键-返回主菜单n); printf(n); printf(请输入:); printf(n); q=getch(); if(q!=1)menu(); else amend(); while(flag=0); 运行修改函数效果如下: (1)输入已有课程,继续修改其他信息,显示修改成功,然后继续选择: 15 (2)输入课程不存在,选择继续修改或者返回主菜单: 16 6.3.4 查查找函数找函数 调用查找函数,先选择按编号查找或者按学分查找,然后进行下一步。输入 1,则按 编号进行查找,若该课程存在,则程序将该课程信息打印在屏幕上,若不存在,则打印不 存在信息并提示继续选择查找或者返回主菜单;输入 2,则按学分进行查找,若该课程已 存在,则程序将其信息打印与屏幕上,若不存在则打印不存在的信息,并提示继续选择。 查找模块流程图如下 调用查找 函数 输入 2, 按编号查找 输入 2, 按学分查找 输入编号存在, 则打印相关信息。 提示选择继续查 找或者返回。 编号不存在,打 印不存在的信息, 提示继续查找或 者返回。 输入学分,存在, 则打印课程信息, 然后提示继续查 找或返回。 输入的学分不存 在,打印不存在 的信息,提示重 新查找或返回。 输入其他键 提示输入错误, 按任意键返回主 菜单。 其代码如下所示: void search() char q; int num,i,xuefen,m,flag=0; puts(nnntt 请选择: 1-按编号查询; 2-按学分查询n); scanf(%d, if(m=1) do printf(请输入课程编号:); scanf(%d, for(i=0;i重新输入;其它键-返回主菜单 n); printf(n); printf(请输入:n); printf(n); q=getch(); if(q!=1) menu(); while(flag=0); if(m=2) do printf(请输入课程学分:); scanf(%d, for(i=0;i重新输入;其它键-返回主菜单n); printf(n); printf(请输入:n); printf(n); q=getch(); if(q!=1) menu(); while(flag=0); if(m!=1) q=getch();menu(); 18 运行效果如下五幅图所示: (1)有主菜单选择“4”查找课程,提示选择按编号或者学分进行查找: (1)按编号输入查找,输入已有课程 math 编号 2,效果如下: 19 (2)按编号查询课程,输入编号不存在,提示相关信息及作出相关选择: (4)按学分查询,输入已有课程学分,打印相关信息并提示选择: 20 (5)输入的学分不存在,显示不存在的信息并提示选择: 21 6.3.5 选择课选择课程程 在菜单函数中选择 5,进入选课函数,系统会提示输入课程编号已经学生的学号。若 输入的课程编号存在,则打印选课成功,并将所选择的课程的信息存入“选课.txt”文档中, 并提示选择继续选课或者返回主菜单;若输入的课程编号不存在,则打印岂不存在并提示 进行选择继续选课或者返回主菜单。 其流程图如下所示: 调用选课函数 输入课程编号及学生学号 编号存在,选课成功及继续选课 或者返回主菜单 编号不存在,提示从新选择或返回主菜单。 选课函数的代码如下: /* 选课课程 */ void select() long num2=0,xuehao1; int i,flag=0; char q; FILE *fp_; fp_=fopen(选课.txt,w); if(fp_= NULL) printf(File open error!n); exit(0); do printf(请输入课程编号:); scanf(%d, printf(请输入您的学号:); scanf(%ld, for(i=0;i继续选课; 其它键-返回主菜单 nn); printf(*nn); q=getch(); if(q=1)select(); else menu(); else printf(无此课程!请选择: 1-继续选课;其它键-返回主菜单nn); printf(*nn); q=getch(); if(q=1)select(); else menu(); while(flag=0); 调用选课函数后效果如下两幅图所示: (1)输入课程编号存在时,打印选课成功,并将信息存入文档: 23 (2)输入的课程编号不存在,则打印不存在的信息,并提示做出选择: 24 6.3.6 删删除除课课程程 有主菜单选择 6,进入删除函数。执行此函数,先输入课程编号,若编号存在,则从 文件中删除该课程,并打印删除成功,提示按任意键返回主菜单;若编号不存在,则打印 输入课程不存在,提示重新输入或者返回主菜单。 其流程图如下所示: 进入删除函数 输入课程编号,进行判断。 编号存在,从文件中删除该课程,调用保存函 数并提示按任意键返回主菜单。 编号不存在,提示选择重新输入或者返回主菜 单。 其代码如下: 25 void cross_off() char q; int num4=0; int i,j,flag=0; do printf(请输入要删除的课程编号:); scanf(%d, for(i=0;i返回主菜单n); printf(n); printf(请输入:); printf(n); q=getch(); if(q=1)cross_off(); else menu(); while(flag=0); 其运行效果图如下所示: (1)当输入的课程编号存在,删除成功,显示如下: 26 (2)当输入的课程编号不存在,系统提示重新输入或者返回主菜单: 27 6.3.7 浏览浏览函数函数 在主菜单选择 7,进入浏览函数,程序将自动将课程文档中存储的课程的所有信息打 印在屏幕上。此函数的功能就是输出课程文档中保存的课程信息。 程序的流程图如下所示: 进入浏览函数 系统打印课程信息,并提示按任意键返回主菜单。 程序代码如下: void scan() int i,j,xueshi, num,xueqi=0; char *name,*xingzhi; float xuefen; for(i=1;icount;i+) for(j=0;jcount-1;j+) if(KCj.num=KCj+1.num) num=KCi.num; strcpy(name,KC); strcpy(xingzhi,KCi.xingzhi); xueshi = KCi.xueshi; KCj.shiyan_shangji= KCj-1.shiyan_shangji; xuefen = KCi.xuefen; xueqi = KCi.xueqi; KCi.num=KCi+1.num; strcpy(KC,KCi+1.name); strcpy(KCi.xingzhi,KCi+1.xingzhi); KCi.xueshi = KCi+1.xueshi; KCj.shiyan_shangji= KCj-1.shiyan_shangji; KCi.xuefen = KCi+1.xuefen; KCi.xueqi = KCi+1.xueqi; KCi+1.num=num; strcpy(KCi+1.name,name); strcpy(KCi+1.xingzhi,xingzhi); 28 KCi+1.xueshi = xueshi; KCj.shiyan_shangji= KCj-1.shiyan_shangji; KCi+1.xuefen = xuefen; KCi+1.xueqi= xueqi; printf(课程编号 课程名称 课程性质 课程学时 实验上机 课程学分 开课学期n); for(i=0;icount;i+) printf( %dt %st %st %dt %dt %.1ft %dn, KCi.num,KC,KCi.xingzhi,KCi.xueshi, KCi.shiyan_shangji,KCi.xuefen,KCi.xueqi); baocun(); 运行效果图如下: 6.3.8 退出操作退出操作 在主菜单选择 8,程序进入退出界面的提示操作。按任意键,继退出了系统。 操作效果如图所示: 29 6.3.9 公共函数公共函数保存函数保存函数 在以上操作中,很多函数都调用了保存函数,它的主要作用是将输入、添加、修改、 删除后的课程信息保存在“课程.txt”中。 其代码如下所示: void baocun() int i; FILE *fpp; fpp = fopen(课程.txt,w+); fprintf(fpp,课程号课程名 课程性质 学时 实验学时 学分 学 期n); for(i=0;i tnnnnnnnnnn); for(i=0;i;i+); system(color 2f); menu(); void menu() char k100=nnnttttt 班 王兵武nnnnnnn; char *m=k; do system(cls); puts(ntt *管理员菜单*); puts(ntttt1.输入课程.); puts(ntttt2.添加课程.); puts(ntttt3.修改课程.); puts(ntttt4.查找课程.); puts(ntttt5.选择课程.); puts(ntttt6.删除课程.); puts(ntttt7.浏览课程.); puts(ntttt8.退出系统.n); puts(tt*n); printf(tt 请输入您的选择(1-8):t); scanf(%d, printf(ntt-nn); switch(a) case 1: input(); break; case 2: add(); break; case 3: amend(); break; case 4: search(); break; case 5: select(); break; case 6: cross_off(); break; case 7: scan(); break; case 8:system(cls);for(i=0;i;i+);system(color 8f);puts(nnnnttt 谢谢使用。 已退出系统。); for(m=k;mk+1;m+)printf(%s,m);exit(0); default:puts(输入错误!);break; printf( 按任意键返回首层n); getch(); while(a!=8); 33 void input() int i,flag=0,num=0; char q; do flag = 0; printf(请输入课程编号: ); scanf(%d, for(i=0;i返回 主菜单n); printf(n); printf(请输入:n); printf(n); q=getch(); if(q=1) add(); else menu(); else j=count; KCj.num=num; printf(请输入课程名称:); scanf(%s,KC); printf(请输入课程性质:); scanf(%s,KCj.xingzhi); printf(请输入课程学时:); scanf(%d, printf(输入实验上机学时:); scanf(%d, printf(请输入课程学分:); scanf(%f, printf(请输入开课学期:); scanf(%d, count+; baocun(); 35 printf(添加成功!n); printf(请继续选择: 1-继续输入; 其它键-返回主菜单n); q=getch(); if(q!=1)menu(); while(flag=1); void amend() int num,i,flag=0; char q; do printf(请输入要修改的课程编号:); scanf(%d, for(i=0;i继续修改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年快递员考试题库答案
- 2026年中级注册安全工程师之安全实务化工安全检测卷含完整答案
- 包公审石头解析课件
- 2026年护理质控工作计划模版(2篇)
- 2026年高职(食品营养与健康)公共营养咨询指导综合测试题及答案
- 2026年殡葬服务实务模拟考试卷(含答案)
- 2025年糖尿病预防题目及答案
- 办公室培训心得课件
- 报关申报指南课件
- 办公软件功能介绍课件
- 2026中国联通校园招聘考试(通信技术)历年参考题库含答案详解
- 乙酸乙酯危险化学品安全周知卡培训课件
- 2026年中国电信校园招聘考试笔试试题及答案
- 《内科学》课件-1.消化性溃疡
- 药品批发企业质量管理制度培训试卷及答案
- 2026年部队预防犯罪安全形势分析
- 中级主管护师(护理学368)试卷真题及解析(2026年)
- 中学物理全套教材目录及说明
- 2025年交通事故统计
- GB/T 28159-2025电子级磷酸
- 2025 SMETA员工公平职业发展管理程序-SEDEX验厂专用文件(可编辑)
评论
0/150
提交评论