C语言课程设计学生选课系统.doc

上传人:文库蛋蛋多 文档编号:2384854 上传时间:2023-02-17 格式:DOC 页数:20 大小:402KB
返回 下载 相关 举报
C语言课程设计学生选课系统.doc_第1页
第1页 / 共20页
C语言课程设计学生选课系统.doc_第2页
第2页 / 共20页
C语言课程设计学生选课系统.doc_第3页
第3页 / 共20页
C语言课程设计学生选课系统.doc_第4页
第4页 / 共20页
C语言课程设计学生选课系统.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C语言课程设计学生选课系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计学生选课系统.doc(20页珍藏版)》请在三一办公上搜索。

1、内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生选课系统学生姓名: 学 号:专 业:计算机科学与技术班 级:计算机-3班指导教师:内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生选课系统指导教师时间2014.12.302015.1.3一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。学生选修课程管理系统设计假定

2、有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:v 课程信息录入功能(课程信息用文件保存)输入;课程信息浏览功能输出v 查询功能:(至少一种查询方式)算法按学分查询 按课程名称查询v 学生选修课程(可选项)三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,

3、要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工

4、业出版社目 录内蒙古科技大学课程设计任务书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 任务概述课程信息录入功能(课程信息用文件保存)输入;课程信息浏览功能输出查询功能:(至少一种查询方式)算法

5、按学分查询 按课程名称查询学生选修课程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.

6、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);

7、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,OUT

8、PUT); 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-cl

9、ass_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!=

10、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) /用

11、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(课程编号 课程名称 课程性质 课程总学时 教学用时

12、实验用时 学分 开课学期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-nex

13、t; /指针指向下一个结点 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; el

14、se p1=p1-next; if(p1=NULL) /链表走到最后,则没有找到相应课程 printf(没有这门课程n); printf(学分达到要求n); 第四章 测试分析4.1 测试程序执行情况图4.14.2 出现的问题和解决的方法1. 文件可以输入,但是无法读取解决办法:申请动态内存。2. 函数调用出现问题,是程序无法正常运行解决办法:使用switch语句调用函数第五章 用户手册(可选)5.1 使用说明先选择录入信息,录入结束后,按0跳出,执行其他任务选择操作时,点击对应的数字再按回车即可5.2 运行说明请勿输入不符合格式的字符如需退出,请输入对应数字第六章 课程设计总结两周的课程设计结

15、束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 通过这次课程设计,本人在多方面都有所提高。通过这次设计,综合运用本专业所学课程的理论和生产实际知识进行一次设计工作的实际训练从而培养和提高我独立工作能力,巩固与扩充了程序设计等课程所学的内容,掌握程序设计设计

16、的方法和步骤,提高了计算能力,编程能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。附录:程序代码#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

17、-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.录入信息

18、 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(课程编号 课程名称 课程

19、性质 课程总学时 教学用时 实验用时 学分 开课学期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-

20、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 cour

21、se*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); scan

22、f(%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(str

23、cmp(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(课程编号 课

24、程名称 课程性质 课程总学时 教学用时 实验用时 学分 开课学期n); printf(FORM1,OUTPUT); n+; p1=p1-next; if(n=0) printf(没有选修课程n);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(课程编号 课程名称 课程性质 课程总学时 教学用时 实验用时 学分

25、 开课学期n); printf(FORM1,OUTPUT); printf(选课成功!n); break; else p1=p1-next; if(p1=NULL) /链表走到最后,则没有找到相应课程 printf(没有这门课程n); printf(学分达到要求n); void main() struct course*head; FILE*fp; int k; fp=fopen(课程list.txt,a+);loop:mune(); /goto循环的开始位置 printf(请输入你的操作:n); scanf(%d,&k); if(k!=0) switch(k) /利用switch语句实现菜单式工作 case 1:head=scan(fp);break; case 2:print(head);break; case 3:search_grade(head);break; case 4:search_kind(head);break; case 5:search_else(head);break; case 6:choose(head);break; default:printf(操作不存在); goto loop; /利用goto语句实现循环

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号