《语c言课程设计说明书学生选修课管理--大学毕设论文.doc》由会员分享,可在线阅读,更多相关《语c言课程设计说明书学生选修课管理--大学毕设论文.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、内蒙古科技大学课程设计论文 内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生选修课管理学生姓名:卢强学 号:1567159127专 业:软件工程班 级:15软件1班指导老师:褚燕华时间:2016年1月6日内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生选修课系统指导教师褚燕华时间2016.1.52016.1.9一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计
2、题目中任意选择一题,独立完成,题目选定后不可更换。学生选修课程管理系统设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:v 课程信息录入功能(课程信息用文件保存)输入;课程信息浏览功能输出v 查询功能:(至少一种查询方式)算法按学分查询 按课程名称查询v 学生选修课程(可选项)三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)
3、3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少500行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1
4、C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社29目录课程设计任务书 III目录 III第一章:程序总体设计思路 3第二章:程序功能划分、图示及流程图 3函数划分 3总体设计 4第三章:程序设计数据及运行结果 6第四章:心得体会 10第五章:附录(参考文献及源程序) 10主函数部分:main() 12登陆界面函数:void login()12学生登陆界面函数:void stu_login()12管理员登陆界面函数:void man_login()13退出界面函数:void bye_sys()13课程增加函数:void c_add()14学生课程查询函数:
5、void c_search()17管理员课程查询函数:void c_searchm()20管理员课程浏览函数:void c_view()22学生课程浏览函数:void c_view()25第一章:需求分析1.1 引言 当今时代是飞速发展的信息时代,在各行业中离不开信息处理,这正是计算机被广泛地应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大提高了其安全性,计算机的功能愈来愈重要。1.2 任务概述 选修课管理系统,包括以下功能: 从键盘输入课程编号、课程性质、课程名称、学分等,并将其保存在磁盘文件里 具有进行按照学分查询的
6、功能 具有浏览的功能和增加课程的功能 具有信息输出的功能 1.3 数据描述 struct course/定义课程结构体int c_num;/课程编号char c_name20;/课程名字int c_score;/课程学分char c_properties20;/课程性质int c_time;/课程学时char c_term20;/开课学期;struct studentchar s_number10;char s_password10;struct managerchar m_name10;char m_password10;1.4 功能需求输入功能:一次可以输入学生多种数据的输入 显示功能:可
7、以浏览多个学生的基本信息 增加功能:增加课程种类 查询功能:按照学分查询文件保存:可以保存学生的基本信息到磁盘1.5 任务计划第18周 星期一:设计 星期二:构思 星期三:调试 星期四、五:改错 星期五、六:测试运行 第二章:概要设计2.1 函数划分:本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,讲程序划分为6个部分分别编写,程序主题功能将由9个部分来完成,这9部分依次是:1. 登陆界面函数:void login()2. 学生登陆界面函数:void stu_login()3. 管理员登陆界面函数:void man_login()4. 退出界面函数:void bye_
8、sys()5. 课程浏览函数:void c_view()6. 课程查询函数:void c_search()7. 课程增加函数:void c_add()8. 菜单函数:void index()9. 主函数部分:main()2.2 总体设计: 选修课管理系统学生登录系统管理员登录系统学生查询学生浏览管理员查询管理员浏览新增课程 2.3 数据类型设计:int c_num;/课程编号char c_name20;/课程名字int c_score;/课程学分char c_properties20;/课程性质int c_time;/课程学时char c_term20;/开课学期第三章:程序设计数据、运行结果
9、本程序是一款应用软件,故数据设计、程序运行结果应在程序的运行中得以体现,现在通过一个程序的运用实例来对程序云翔结果进行演示与实现。1. 程序主菜单界面,如图3.1:图3.1 主菜单界面2. 选择编号2,进行管理员登录,如图3.2:图3.2 管理员登录菜单界面3. 输入编号1,进行新增课程操作,结果如图3.3:图3.4 课程信息录入下面可以进行继续增加或者退出,如图3.4:图3.54. 选择课程浏览操作,可以分页查看相应的课程信息:第一页,如图3.5:图3.5第一页课程浏览输入编号2,进入第二页,如图3.6:图3.6 第二页浏览浏览5. 课程查询操作,如图3.7:图3.7 按学分查询按Enter
10、显示查询结果,如图3.8:图3.8 查询结果6. 学生登录界面模块,如图3.9:图3.9 学生登录菜单7. 学生选课操作,如图3.10:图3.10 按课程编号选课并成功继续选课,若不存在对应课程编号则选课失败,如图3.11:图3.11 按课程编号选课失败10.学生课程浏览与查询课程,结果与管理员类似,不再演示。第四章:心得体会通过这次的课程设计,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。程序设计的过程,实际上是确定问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序
11、。对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等。这对于我很好的掌握VC中调试的工具有很大的帮助。总之,经过这次课程设计,我对C语言的使用和理解都有了很大的加深,对图编程的思想也有了很多新的理解和感受。第五章:附录一、 参考文献1. 李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社。2. 谭浩强主编,程序设计(第三版),清华大学出版社。3. 崔单主编,C语言程序设计案例精粹,电子工业出版社。4. 刘振安
12、主编,C语言程序设计课程设计,机械工业出版社。二、 源程序代码#include#include#include#includevoid index();/首页void login();/登陆void bye_sys();/退出界面void stu_login();/学生登陆菜单void c_view();/课程浏览void c_add();/新增课程void c_searchs();/学生查询函数void c_searchm();/管理员查询函数void c_viewm();/管理员浏览函数void c_views();/学生浏览函数struct course/定义课程结构体int c_num
13、;/课程编号char c_name20;/课程名字int c_score;/课程学分char c_properties20;/课程性质int c_time;/课程学时char c_term20;/开课学期;struct studentchar s_number10;char s_password10;struct managerchar m_name10;char m_password10;int main()/主函数部分login();return 0;void login()/登陆界面void stu_login();void man_login(); void bye_sys();int
14、 input;system(cls);printf(nnnnnntttt1.学生登陆n);printf(ntttt2.管理员登陆n);printf(ntttt3.退出系统nnn);printf(nnnt请输入项目代号(13):);scanf(%d,&input);system(cls);if(input=3)bye_sys();switch(input)case 1:stu_login();break;case 2:man_login();break;void bye_sys()/退出界面exit(0);void man_login()/管理员登陆void c_add();void c_vie
15、w();void c_searchm();int in;system(cls);printf(nnnnttt -管理员登陆菜单-nn);printf(nntttt1.新增课程n);printf(ntttt2.课程浏览n);printf(ntttt3.课程查询n);printf(ntttt4.退出n);printf(nnt请输入项目代号(14):);scanf(%d,&in);switch(in)case 1:c_add();break;case 2:c_viewm();break;case 3:c_searchm();break;case 4:login();break;void stu_lo
16、gin()/学生登陆void c_view();void c_searchs();void login();int input;dosystem(cls);printf(nnnnttt -学生登陆菜单-nn);printf(ntttt1.课程浏览n);printf(ntttt2.课程查询n);printf(ntttt3.退出nn);printf(ntt请输入项目代号(13):);scanf(%d,&input);switch(input)case 1:c_views();break;case 2:c_searchs();break;case 3:login();break;void c_add
17、()/新增课程函数void c_add();void man_login();int i=0,j,inp;FILE *fp;struct course course_new;struct course courses10;system(cls);printf(nntt请输入课程信息);printf(nntt1.课程编号:);scanf(%d,&course_new.c_num);printf(nntt2.课程名字:);scanf(%s,course_new.c_name);printf(nntt3.课程学分:);scanf(%d,&course_new.c_score);printf(nntt
18、4.课程性质:);scanf(%s,&course_new.c_properties);printf(nntt5.课程学时:);scanf(%d,&course_new.c_time);printf(nntt6.开课学期:);scanf(%s,&course_new.c_term);if(fp=fopen(course.dat,rb)!=NULL)dofread(&coursesi,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);for(j=0;j=i-1;j+)if(course_new.c_num=coursesj.
19、c_num)system(cls);printf(nnttt对不起,这个编号以被用nntt按任意键返回管理菜单);getchar();getchar();man_login();break;if(fp=fopen(course.dat,rb)=NULL)fp=fopen(course.dat,wb);elsefclose(fp);fp=fopen(course.dat,ab);fwrite(&course_new,sizeof(struct course),1,fp);fclose(fp);printf(nntt 信息输入完毕t 按任意键继续);getchar();getchar();dosy
20、stem(cls);printf(nntt1.继续输入);printf(nntt2.返回管理菜单);printf(nntt请输入标号:);scanf(%d,&inp);if(inp!=1&inp!=2)printf(输入有误!t按任意键重新输入);getchar();getchar();while(inp!=1&inp!=2);switch(inp)case 1:c_add();break;case 2:man_login();break;void c_searchs()void stu_login();void c_searchs();int id,i=0,j,inp,k;int flag=
21、0;FILE *fp;struct course coursesear10;if(fp=fopen(course.dat,rb)=NULL)/判断信息是否存在system(cls);printf(nnt 课程不存在t按任意键返回);getchar();getchar();stu_login();else/存在的话循环读取文件中的信息直到文件指针到文件尾部dofread(&courseseari,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);system(cls);printf(nnttt 请输入你要查询的课程学分:);
22、scanf(%d,&id);do/检查是否符合要求for(j=0;ji-1;j+)if(id=coursesearj.c_score)flag+;k=j;if(flag=1)system(cls);printf(nnt 课程编号:%dn,courseseark.c_num);printf(nnt 课程名字:%sn,courseseark.c_name);printf(nnt 课程学分:%dn,courseseark.c_score);printf(nnt 课程性质:%sn,courseseark.c_properties);printf(nnt 课程学时:%dn,courseseark.c_t
23、ime);printf(nnt 开课学期:%sn,courseseark.c_term);getchar();getchar();printf(nnt1.回目录继续查询t2.退出查询系统n);printf(请选择:);scanf(%d,&inp);switch(inp)case 1:c_searchs();case 2:stu_login();default:printf(nt 没有这项服务t请按任意键重新输入);getchar();getchar();elsesystem(cls);printf(nnt 不存在对应记录n);printf(nnt1.回目录继续查询t2.退出查询系统n);pri
24、ntf(请选择:);scanf(%d,&inp);switch(inp)case 1:c_searchs();case 2:stu_login();default:printf(nt 没有这项服务t 请按任意键重新输入);getchar();getchar();while(inp!=1);void c_searchm()void man_login();void c_searchm();int id,i=0,j,inp,k;int flag=0;FILE *fp;struct course coursesear10;if(fp=fopen(course.dat,rb)=NULL)system(
25、cls);printf(nnt 课程不存在t按任意键返回);getchar();getchar();man_login();elsedofread(&courseseari,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);system(cls);printf(nnttt 请输入你要查询的课程学分:);scanf(%d,&id);dofor(j=0;ji-1;j+)if(id=coursesearj.c_score)flag+; k=j;if(flag=1)system(cls);printf(nnt 课程编号:%dn,c
26、ourseseark.c_num);printf(nnt 课程名字:%sn,courseseark.c_name);printf(nnt 课程学分:%dn,courseseark.c_score);printf(nnt 课程性质:%sn,courseseark.c_properties);printf(nnt 课程学时:%dn,courseseark.c_time);printf(nnt 开课学期:%sn,courseseark.c_term);getchar();getchar();printf(nnt1.回目录继续查询t2.退出查询系统n);printf(请选择:);scanf(%d,&i
27、np);switch(inp)case 1:c_searchm();case 2:man_login();default:printf(nt 没有这项服务t请按任意键重新输入);getchar();getchar();elsesystem(cls);printf(nnt 不存在对应记录n);printf(nnt1.回目录继续查询t2.退出查询系统n);printf(请选择:);scanf(%d,&inp);switch(inp)case 1:c_searchm();case 2:man_login();default:printf(nt 没有这项服务t 请按任意键重新输入);getchar()
28、;getchar();while(inp!=1);void c_viewm()void stu_login();void c_view();int inp,i=0,n=0;FILE*fp;char input;struct course courseview10;if(fp=fopen(course.dat,rb)=NULL)system(cls); printf(nnt 课程不存在nn);printf(tnt);getchar();getchar();man_login();elsedofread(&courseviewi,sizeof(struct course),1,fp);i=i+1;
29、while(!feof(fp);fclose(fp);dosystem(cls);if(i=1)printf(nnnttt没有记录!n);getchar();getchar();man_login();elseprintf(nttt-共有%d条记录-,i-1);printf(nnttt 课程编号: %dn,courseviewn.c_num);printf(nnttt 课程名字: %sn,courseviewn.c_name);printf(nnttt 课程学分: %dn,courseviewn.c_score);printf(nnttt 课程性质: %sn,courseviewn.c_pro
30、perties);printf(nnttt 课程学时: %dn,courseviewn.c_time);printf(nnttt 开课学期: %sn,courseviewn.c_term);printf(nntt1.上一页t2.下一页t3.回目录);printf(nt请选择: );scanf(%d,&inp);switch(inp) case 1:if(n=0)printf(nt已到达首页t按任意键返回);input=getchar();input=getchar();elsen=n-1;break;case 2: if(n=i-2)printf(nt已到达尾页t按任意键返回);input=g
31、etchar();input=getchar();elsen=n+1;break;case 3:man_login();break; default:printf(nt操作错误t按任意键返回);getchar();getchar();break;while(inp!=3);void c_views()void stu_login();void c_view();int inp,i=0,n=0;FILE*fp;char input;struct course courseview10;if(fp=fopen(course.dat,rb)=NULL)system(cls); printf(nnnt
32、 课程不存在nn);printf(tnt);getchar();getchar();stu_login();elsedofread(&courseviewi,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);dosystem(cls);if(i=1)printf(nnnttt没有记录!n);getchar();getchar();stu_login();elseprintf(nttt-共有%d条记录-,i-1);printf(nnttt 课程编号: %dn,courseviewn.c_num);printf(nnttt 课
33、程名字: %sn,courseviewn.c_name);printf(nnttt 课程学分: %dn,courseviewn.c_score);printf(nnttt 课程性质: %sn,courseviewn.c_properties);printf(nnttt 课程学时: %dn,courseviewn.c_time);printf(nnttt 开课学期: %sn,courseviewn.c_term);printf(nntt1.上一页t2.下一页t3.回目录);printf(nt请选择: );scanf(%d,&inp);switch(inp) case 1:if(n=0)printf(nt已到达首页t按任意键返回);input=getchar();input=getchar();elsen=n-1;break;case 2: if(n=i-2)printf(nt已到达尾页t按任意键返回);input=getchar();input=getchar();elsen=n+1;break;case 3:stu_login();break; default:printf(nt操作错误t按任意键返回);getchar();getchar();break;while(inp!=3);