

已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内蒙古科技大学课程设计说明书内蒙古科技大学本科生课程设计说明书题 目:c语言课程设计 学生选课系统学生姓名: 学 号:专 业:计算机科学与技术班 级:计算机-3班指导教师:20内蒙古科技大学课程设计任务书课程名称c语言课程设计设计题目学生选课系统指导教师时间2014.12.302015.1.3一、教学要求1. 巩固和加深学生对c语言课程的基本知识的理解和掌握2. 掌握c语言编程和程序调试的基本技能3. 利用c语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用c语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。学生选修课程管理系统设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:v 课程信息录入功能(课程信息用文件保存)输入;课程信息浏览功能输出v 查询功能:(至少一种查询方式)算法按学分查询 按课程名称查询v 学生选修课程(可选项)三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1c语言程序设计,谭浩强,清华大学出版社2c语言程序设计课程设计,刘振安,机械工业出版社目 录内蒙古科技大学课程设计任务书i第一章 需求分析31.1 任务概述31.2数据描述31.3运行需求31.4任务计划3第二章概要设计42.1总体设计42.2接口设计 /函数声明4第三章详细设计53.1输入模块设计53.2输出模块设计73.3查找模块设计83.4保存及读取模块设计10第四章测试分析134.1测试程序执行情况134.2出现的问题和解决的方法13第五章用户手册(可选)145.1使用说明145.2运行说明14第六章课程设计总结15附录:程序代码16第一章 需求分析1.1 任务概述课程信息录入功能(课程信息用文件保存)输入;课程信息浏览功能输出查询功能:(至少一种查询方式)算法按学分查询 按课程名称查询学生选修课程1.2数据描述有6个结构体,struct course* scan和 struct course*headstruct course*head用来记录,保存课程信息。struct course* scan,用来录入学生信息。1.3 运行需求查看/查询/选择之前必须先将课程信息录入、1.4 任务计划课程信息录入功能(课程信息用文件保存)输入;课程信息浏览功能输出查询功能:(至少一种查询方式)算法按学分查询 按课程名称查询学生选修课程第二章 概要设计2.1 总体设计1. 课程信息录入功能(以文件的形式保存)2. 课程信息浏览功能3. 查询功能4. 选择功能2.2接口设计 可参考用以下表格形式:表2.1:函数列表函数名函数格式 /即函数首部函数功能scanvoid信息录入printfvoid信息输出munevoid查看searchvoid查询choosevoid选择第三章 详细设计3.1 输入模块设计图3.1void mune() /菜单函数 printf(*n); printf(如果录入信息,请选择1n); printf(如果浏览信息,请选择2n); printf(如果按学分查询课程,请选择3n); printf(如果按课程性质查询课程,请选择4n); printf(如果按选修课程查询,请选择5n); printf(如果想进行选课,请选择6n); printf(如果想退出,请选择0n); printf(*n);3.2 输出模块设计图3.2struct course* scan(file*fp) /输入课程信息 struct course*head; /链表头指针 struct course*p1,*p2; /指示指针 int n=0; p1=p2=(struct course*)malloc(len); /开辟内存空间 printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(请输入数据:); scanf(form,input); /输入数据 fprintf(fp,form1,output); head=null; while(p1-num!=0) /链表结束的判断条件 n=n+1; if(n=1) head=p1; /当在第一个结点时,头指针等于第一个结点的首地址 else p2-next=p1; p2=p1; p1=(struct course*)malloc(len); /继续开辟内存空间 printf(请输入数据:); scanf(%ld,&p1-num); /输入课程号 if(p1-num!=0) /判断课程号是否为0,如果为0,程序结束 scanf(%s %s %d %d %d %d %d,p1-name,p1-kind,&p1-all_time,&p1-class_time,&p1-experiment_time,&p1-grade,&p1-term); /p1-flag=0; fprintf(fp,form1,output); p2-next=null; /最后一个结点的值为空 fclose(fp); /关闭文件 return(head); /返回头指针 3.3查找模块设计图3.3void search_grade(struct course*head) /按学分查询课程 struct course*p1; int k,n; n=0; p1=head; printf(请输入查询课程的学分:n); scanf(%d,&k); while(p1!=null) /根据链表里面的内容输出 if(k=p1-grade) printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(form1,output); n+; p1=p1-next; if(n=0) printf(无结果n); /如果没有课程,则输出无结果 void search_kind(struct course*head)/按课程性质查询 char a10; int n=0; struct course*p1; p1=head; gets(a); while(p1!=null) if(strcmp(a,p1-kind)=0) /用strcmp函数进行字符串的比较 printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(form1,output); /如果相同,输出课程信息 n+; p1=p1-next; if(n=0) printf(无结果n);void search_else(struct course*head) /查询所有选修课程 struct course*p1; int n=0; p1=head; while(p1!=null) if(strcmp(p1-kind,xuanxiu)=0) printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(form1,output); n+; p1=p1-next; if(n=0) printf(没有选修课程n); 3.4浏览信息 图3.4.1 void print(struct course*head) /将输入的内容显示在屏幕上 struct course*p1; if(head!=null) /如果头指针为空,则程序结束 p1=head; else goto end; printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); do printf(form1,output); /输出内容 p1=p1-next; /指针指向下一个结点 while(p1!=null); end:;3.5.选课void choose(struct course*head) /选课函数 struct course*p1; int k,s=0; /s为所选课程的学分总数,k为所选课程的课程编号 if(head!=null) p1=head; while(snum) /当找到对应的课程编号后,输出课程信息 s=s+p1-grade; printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(form1,output); printf(选课成功!n); break; else p1=p1-next; if(p1=null) /链表走到最后,则没有找到相应课程 printf(没有这门课程n); printf(学分达到要求n); 第四章 测试分析4.1 测试程序执行情况图4.14.2 出现的问题和解决的方法1. 文件可以输入,但是无法读取解决办法:申请动态内存。2. 函数调用出现问题,是程序无法正常运行解决办法:使用switch语句调用函数第五章 用户手册(可选)5.1 使用说明先选择录入信息,录入结束后,按0跳出,执行其他任务选择操作时,点击对应的数字再按回车即可5.2 运行说明请勿输入不符合格式的字符如需退出,请输入对应数字第六章 课程设计总结两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 通过这次课程设计,本人在多方面都有所提高。通过这次设计,综合运用本专业所学课程的理论和生产实际知识进行一次设计工作的实际训练从而培养和提高我独立工作能力,巩固与扩充了程序设计等课程所学的内容,掌握程序设计设计的方法和步骤,提高了计算能力,编程能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。附录:程序代码#include#include#include#define len sizeof(struct course)#define form %d %s %s %d %d %d %d %d#define form1 %5d%20s%20s%5d%5d%5d%5d%5dn#define input &p1-num,p1-name,p1-kind,&p1-all_time,&p1-class_time,&p1-experiment_time,&p1-grade,&p1-term#define output p1-num,p1-name,p1-kind,p1-all_time,p1-class_time,p1-experiment_time,p1-grade,p1-termstruct courseint num; char name20; char kind10; int all_time; int class_time; int experiment_time; int grade; int term; /int flag; struct course *next; void mune() /菜单函数 printf(*n); printf( 1.录入信息 n); printf( 2.浏览信息 n); printf( 3.查询课程(按学分)n); printf( 4.查询课程(按性质)n); printf( 5.按选修课程查询n); printf( 6.选课 n); printf( 0.退出 n); printf(*n); struct course* scan(file*fp) /输入课程信息 struct course*head; /链表头指针 struct course*p1,*p2; /指示指针 int n=0; p1=p2=(struct course*)malloc(len); /开辟内存空间 printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(请输入数据:); scanf(form,input); /输入数据 fprintf(fp,form1,output); head=null; while(p1-num!=0) /链表结束的判断条件 n=n+1; if(n=1) head=p1; /当在第一个结点时,头指针等于第一个结点的首地址 else p2-next=p1; p2=p1; p1=(struct course*)malloc(len); /继续开辟内存空间 printf(请输入数据:); scanf(%ld,&p1-num); /输入课程号 if(p1-num!=0) /判断课程号是否为0,如果为0,程序结束 scanf(%s %s %d %d %d %d %d,p1-name,p1-kind,&p1-all_time,&p1-class_time,&p1-experiment_time,&p1-grade,&p1-term); /p1-flag=0; fprintf(fp,form1,output); p2-next=null; /最后一个结点的值为空 fclose(fp); /关闭文件 return(head); /返回头指针 void print(struct course*head) /将输入的内容显示在屏幕上 struct course*p1; if(head!=null) /如果头指针为空,则程序结束 p1=head; else goto end; printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); do printf(form1,output); /输出内容 p1=p1-next; /指针指向下一个结点 while(p1!=null); end:;void search_grade(struct course*head) /按学分查询课程 struct course*p1; int k,n; n=0; p1=head; printf(请输入查询课程的学分:n); scanf(%d,&k); while(p1!=null) /根据链表里面的内容输出 if(k=p1-grade) printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(form1,output); n+; p1=p1-next; if(n=0) printf(无结果n); /如果没有课程,则输出无结果 void search_kind(struct course*head)/按课程性质查询 char a10; int n=0; struct course*p1; p1=head; gets(a); while(p1!=null) if(strcmp(a,p1-kind)=0) /用strcmp函数进行字符串的比较 printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(form1,output); /如果相同,输出课程信息 n+; p1=p1-next; if(n=0) printf(无结果n);void search_else(struct course*head) /查询所有选修课程 struct course*p1; int n=0; p1=head; while(p1!=null) if(strcmp(p1-kind,xuanxiu)=0) printf(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(form1,output
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 方锤行业深度研究分析报告(2024-2030版)
- 2025年中国清淤机械行业市场深度研究及发展趋势预测报告
- 2022-2027年中国普洱茶行业市场运行现状及投资规划建议报告
- 2025至2030中国鱼干行业发展分析及竞争策略与趋势预测报告
- 2025至2030饮料制造商行业产业运行态势及投资规划深度研究报告
- 2025至2030中国版复古灯市场运营规划及未来供需调查报告
- 2025至2030中国炒锅产业销售渠道与未来经营风险预警报告
- 2025至2030中国滚动行李箱行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国游船胶衣行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国清洗车行业市场深度分析及前景趋势与投资报告
- 15S202 室内消火栓安装
- 2024年国资委研究中心事业单位招聘5人历年(高频重点复习提升训练)共500题附带答案详解
- 2023年上海高中学业水平合格性考试历史试卷真题(含答案详解)
- 风力发电工程施工与验收规范
- 2024年个人劳务承包合同书
- 2024浙江嘉兴市海宁高新技术产业园区公开招聘3人重点基础提升难、易点模拟试题(共500题)附带答案详解
- 18 设计紧急避难路线图(教案)人美版(北京)(2012)美术三年级下册
- GB 9744-2024载重汽车轮胎
- ISO15614-1 2017 金属材料焊接工艺规程及评定(中文版)
- 抖音来客商家门店经营
- 术后镇痛慢性疼痛癌性疼痛诊疗标准规范及作业流程
评论
0/150
提交评论