C语言课程设计--学生选修课系统.doc_第1页
C语言课程设计--学生选修课系统.doc_第2页
C语言课程设计--学生选修课系统.doc_第3页
C语言课程设计--学生选修课系统.doc_第4页
C语言课程设计--学生选修课系统.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古科技大学课程设计论文 内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生选修课管理学生姓名:贾伟学 号:1367111227专 业:计算机科学与技术班 级:13-计算机2班指导教师:周李涌2013年 12月31日39内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生选修课系统指导教师周李涌 时间2013.12.302013.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语言程序设计课程设计,刘振安,机械工业出版社目录课程设计任务书 III目录 III第一部分:程序总体设计思路 3第二部分:程序功能划分、图示及流程图 3函数划分 3总体设计 4课程选择函数流程图 5课程新增函数流程图 6第三部分:程序设计数据及运行结果 7第四部分:心得体会 12第五部分:附录(参考文献及源程序) 12主函数部分:main() 14菜单函数:void index() 14登陆界面函数:void login()15学生登陆界面函数:void stu_login()17管理员登陆界面函数:void man_login()16退出界面函数:void bye_sys()16学生课程选择函数:void c_select()18课程增加函数:void c_add()21课程删除函数:void c_delete()22学生课程查询函数:void c_search()25管理员课程查询函数:void c_search()28管理员课程浏览函数:void c_view()31学生课程浏览函数:void c_view()34第一部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。具体设计思路如下:程序的需求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,一遍下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内容所包含的数据的操作。整个程序的设计思路到此结束。第二部分:程序功能划分、图示及流程图【功能划分及其流程图】函数划分:本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,讲程序划分为6个部分分别编写,程序主题功能将由9个部分来完成,这9部分依次是:1. 登陆界面函数:void login()2. 学生登陆界面函数:void stu_login()3. 管理员登陆界面函数:void man_login()4. 退出界面函数:void bye_sys()5. 课程选择函数:void c_select()6. 课程浏览函数:void c_view()7. 课程查询函数:void c_search()8. 课程增加函数:void c_add()9. 课程删除函数:void c_delete()10. 菜单函数:void index()11. 主函数部分:main()总体设计:学生选课系统管理员登陆学生登陆新增课程删除课程课程浏览查询课程学生选课课程浏览查询课程c_add()c_select()c_search()c_view()c_delete()c_search()c_view()系统功能模块图课程选择函数: 开始输入要选择的课程编号j = 0 ; j i ;( i初始化为0 )coursesj.c_num=n没有找到对应课程j+flag+flag=0选课成功结束课程增加函数:开始请输入课程编号 j=0;ji-1; (i初始化为0)coursesj.c_num=n N Yprintf(“编号已使用过”)j+fwrite写入课程信息到文件结束第三部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运行中得以体现,现在通过一个程序的运用实例来对程序云翔结果进行演示与实现。【软件运用举例】1. 程序首页界面,如图3.1:图3.1 程序首页界面2. 程序主菜单界面,如图3.2:图3.2 主菜单界面3. 选择编号2,进行管理员登录,如图3.3:图3.3 管理员登录菜单界面4. 输入编号1,进行新增课程操作,结果如图3.4:图3.4 课程信息录入下面可以进行继续增加或者退出,如图3.5:图3.55. 选择课程浏览操作,可以分页查看相应的课程信息:第一页,如图3.6:图3.6 第一页课程浏览输入编号2,进入第二页,如图3.7:图3.7 第二页浏览浏览6. 课程查询操作,如图3.8:图3.8 按学分查询按Enter显示查询结果,如图3.9:图3.9 查询结果7. 管理员课程删除操作,如图3.10:图3.10 按课程标号删除8. 学生登录界面模块,如图3.11:图3.11 学生登录菜单9. 学生选课操作,如图3.12:图3.12 按课程编号选课并成功继续选课,若不存在对应课程编号则选课失败,如图3.13:图3.13 按课程编号选课失败10.学生课程浏览与查询课程,结果与管理员类似,不再演示。第四部分:心得体会通过这次的课程设计,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。程序设计的过程,实际上是确定问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等。这对于我很好的掌握VC中调试的工具有很大的帮助。总之,经过这次课程设计,我对C语言的使用和理解都有了很大的加深,对图编程的思想也有了很多新的理解和感受。第五部分:附录一、 参考文献1. 李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社。2. 谭浩强主编,程序设计(第三版),清华大学出版社。3. 崔单主编,C语言程序设计案例精粹,电子工业出版社。4. 刘振安主编,C语言程序设计课程设计,机械工业出版社。二、 源程序代码#include#include#include#includevoid index();/首页void login();/登陆void bye_sys();/退出界面void stu_login();/学生登陆菜单void c_select();/选择课程void c_view();/课程浏览void c_add();/新增课程void c_delete();/删除课程void c_searchs();/学生查询函数void c_searchm();/管理员查询函数void c_viewm();/管理员浏览函数void c_views();/学生浏览函数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;int main()/主函数部分index();login();return 0;void index()/首页char input;printf(nntttn);printf(ttt n);printf(ttt 内蒙古科技大学 n);printf(ttt n);printf(ttt 学生选课系统 n);printf(ttt n);printf(tttn);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt n);printf(ttt贾伟 郭科n);printf(tttnnn);input=getchar();system(cls);/清屏void login()/登陆界面void stu_login();void man_login(); void bye_sys();int input;dosystem(cls);printf(nnnnnntttt1.学生登陆n);printf(ntttt2.管理员登陆n);printf(ntttt3.退出系统nnn);printf(nnnt请输入项目代号:);scanf(%d,&input);if(input!=1&input!=2&input!=3)printf(nt 输入有误!请重新输入n);printf(nt 按任意键返回nt);getchar();getchar();system(cls);if(input=3)bye_sys();while(input!=1&input!=2&input!=3);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_delete();void c_view();void c_searchm();int in;dosystem(cls);printf(nnnnttt -管理员登陆菜单-nn);printf(nntttt1.新增课程n);printf(ntttt2.删除课程n);printf(ntttt3.课程浏览n);printf(ntttt4.课程查询n);printf(ntttt5.退出n);printf(nnt请输入项目代号:);scanf(%d,&in);if(in!=1&in!=2&in!=3&in!=4&in!=5)printf(nt 输入有误!t 按任意键重新输入);getchar();getchar();while(in!=1&in!=2&in!=3&in!=4&in!=5);switch(in)case 1:c_add();break;case 2:c_delete();break;case 3:c_viewm();break;case 4:c_searchm();break;case 5:login();break;void stu_login()/学生登陆void c_select();void c_view();void c_searchs();void login();int input;dosystem(cls);printf(nnnnttt -学生登陆菜单-nn);printf(nntttt1.学生选课n);printf(ntttt2.课程浏览n);printf(ntttt3.课程查询n);printf(ntttt4.退出nn);printf(ntt请输入项目代号:);scanf(%d,&input);if(input!=1&input!=2&input!=3&input!=4)printf(nt 输入有误!n);printf(t按任意键重新输入);getchar();getchar();while(input!=1&input!=2&input!=3&input!=4);switch(input)case 1:c_select();break;case 2:c_views();break;case 3:c_searchs();break;case 4:login();break;void c_select()/选择课程int n,in,i=0,j;int flag=0;FILE *fp;FILE *fp1;char input;struct course courses10;if(fp=fopen(course.dat,rb)=NULL)/判断是否存在课程printf(nnnt 课程不存在nn);printf(tnt);input=getchar();input=getchar();stu_login();/进入学生登录菜单else/存在的话循环读取文件中的信息直到文件指针到文件尾部dofread(&coursesi,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);/文件读完后关闭printf(nntt 请输入你要选择课程的编号:);scanf(%d,&n);if(fp1=fopen(courseselect.dat,rb)=NULL)fp1=fopen(courseselect.dat,wb);elsefclose(fp1);fp1=fopen(courseselect.dat,ab);for(j=0;ji;j+)if(coursesj.c_num=n)flag+;if(flag=0)printf(nntt 不存在对应课程n);printf(nntt 继续选课请输入1,退出请输入2:n);scanf(%d,&in);switch(in)case 1:c_select();break;case 2:stu_login();break;default:printf(输入有误!将返回登录界面!n);login();break;elsefwrite(&coursesj,sizeof(struct course),1,fp1);fclose(fp1);printf(nnttt 选课成功n);printf(nttt1.继续选课);printf(nttt2.返回登录界面n);printf(请选择:);scanf(%d,&in);switch(in)case 1:c_select();break;case 2:stu_login();break;default:break;void c_add()/新增课程函数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(nntt4.课程性质:);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.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();dosystem(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_delete()/删除函数FILE *fp;int i=0,j,n,k,flag=0;struct course courses10;void c_delete();void man_login();printf(nntt 请输入你要删除的课程标号:);scanf(%d,&n);if(fp=fopen(course.dat,rb)!=NULL)dofread(&coursesi,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);elseprintf(nntt 你还没选过课程t 按任意键返回);getchar();getchar();man_login();for(j=0;ji-1;j+)if(coursesj.c_num=n)flag=1;fp=fopen(course.dat,wb);for(k=0;kj;k+)fwrite(&coursesk,sizeof(struct course),1,fp);fclose(fp);fp=fopen(course.dat,ab);for(k=j+1;ki-1;k+)fwrite(&coursesk,sizeof(struct course),1,fp);printf(nntt 记录已删除!t 按任意键返回ntt);getchar();getchar();man_login();fclose(fp);if(flag=0)printf(nntt不存在对应课程t 按任意键返回);getchar();getchar();man_login();void c_searchs()void stu_login();void c_searchs();int id,i=0,j,inp,k;int flag=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 请输入你要查询的课程学分:);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_time);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);printf(请选择:);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(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,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_time);printf(nnt 开课学期:%sn,courseseark.c_term);getchar();getchar();printf(nnt1.回目录继续查询t2.退出查询系统n);printf(请选择:);scanf(%d,&inp);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();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;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_properties);printf(nnttt 课程学时: %dn,courseviewn.c_time);printf(nnttt 开课学期: %sn,courseviewn.c_term);printf(nntt1.上一页t2.下一页t3.回目录);printf(nt请选择: );scanf(%d,&inp);switch(inp)

温馨提示

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

评论

0/150

提交评论