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

上传人:小飞机 文档编号:3426063 上传时间:2023-03-13 格式:DOCX 页数:28 大小:43.82KB
返回 下载 相关 举报
学生选课系统C语言设计.docx_第1页
第1页 / 共28页
学生选课系统C语言设计.docx_第2页
第2页 / 共28页
学生选课系统C语言设计.docx_第3页
第3页 / 共28页
学生选课系统C语言设计.docx_第4页
第4页 / 共28页
学生选课系统C语言设计.docx_第5页
第5页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

1、学生选课系统C语言设计题目一、学生选课管理系统 第一部分:课程设计名称、目的、要求 第二部分:程序总体设计思路 第三部分:程序功能划分、图示及流程图 第四部分:程序设计数据、运行结果 第五部分:程序的优缺点 第六部分:心得体会 第七部分:附录 第八部分:附录 目录 . . . . . . . . 第一部分:课程设计名称、目的、要求 名称:学生选修课程系统设计 目的:运用C语言提高解决实际问题的能力 实验环境:Microsoft Visual C+ 6.0 内容: 假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求自由选课

2、。 系统以菜单方式工作 课程信息录入功能(课程信息用文件保存)输入 课程信息浏览功能输出 查询功能:(至少一种查询方式)算法 按学分查询 按课程性质查询 学生选修课程(可选项) 第二部分:程序总体设计思路 由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。 具体的设计思路如下: 程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一

3、个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。 整个程序的设计思路到此结束。 第三部分:程序功能划分、图示及流程图 本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是: 1. 登录界面函数;void login 2. 学生登录界面

4、据函数: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_delete函数c_view函数c_sea

5、rch函数c_select函数c_view函数c_search函数系统功能模块图 部分函数流程图: 1、 课程选择函数: 开始输入要选择的课程的编号j=0;ji;coursesj.c_num=nYflag+j+Nflag=0Y没有找到对应课程N选课成功结束2、 课程查询函数 开始输入要查询的课程的编号j=0;ji-1;coursesj.c_num=nNYflag+j+flag=0Y没有找到对应课程N打印相应的课程结束3、 课程增加函数 开始输入要增加的课程的编号j=0;ji-1;coursesj.c_num=nYprintfj+Nfrwrite写入课程信息到文件结束4、课程删除函数 开始输入要

6、删除的课程的编号nj=0;ji-1;coursesj.c_num=nYk=0;kj;Nfrwrite写入课程信息到文件k+k=j+1;ki-1;k+j+不存在相应课程结束第四部分:程序设计数据、运行结果 本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。 1、程序开始界面如下: 选择某个选项,如进行管理员登录,进行课程的增加 进入管理员界面: 2、再选择所要进行的操作,如进行课程增加,结果如下: 下面可以进行继续增加课程或者退出: 3、选择课程浏览,可以分页查看相应的课程信息: 第一页: 第二页: 4、课程查询 查

7、找结果: 4、 管理员课程删除操作: 删除后可以进行浏览,观察删除后的结果: 可见删除后只有一条记录。删除操作完成正确。 下面进行学生操作的使用方法: 1、学生登陆界面: 2、选择学生选课选项: 3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。 第五部分:程序的优缺点 算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。 算法上的优点主要体现在以下三点: 1. 程序采用main主函数方式设计,程序的主体的功能大都由该功能完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。 2. 程序对文件数据的读写采用了fread和fwrite块读写

8、函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。 3. 插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。 功能上的优点 主要体现在以下两点: 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。 主要表现在以下两点: 1、 本程

9、序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。 2、 本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。 第六部分:心得体会 选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。 本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。 通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。 程序设计的过程,实际上是确

10、定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。 对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。 总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。 第七部分:附录 一、参考文献: 1、李丽娟主编 ,C语言程序设计教程,人

11、民邮电出版社 2、严蔚敏主编,数据结构,清华大学出版社 3、崔单主编,C语言程序设计案例精粹,电子工业出版社 4、谭浩强主编,程序设计,清华大学出版社 二、源程序 #includestdio.h #includestdlib.h #includewindows.h #includestring.h void index;/首页 void login; void bye_sys;/退出界面 void stu_login;/学生登录菜单 void c_select; void c_view;/课程浏览 void c_add;/增加课程 void c_delete; void c_searchs;/

12、学生查询函数 void c_searchm;/管理员查询函数 void c_viewm;/管理员浏览函数 void c_views;/学生浏览函数 struct course/定义课程结构体 int c_num; char c_name20; int c_score; int c_nelepeo;/课程已选人数 int c_melepeo;/课程人数上限 ; struct student char s_number10; char s_password10; ; struct manager char m_name10; char m_password10; ; void index/首页 c

13、har input; printf(nnttt*n); printf(ttt 湖南大学学生选课系统n); printf(ttt*nnn); printf(ttt*nnn); printf(ttt*nnn); printf(ttt*nnn); printf(ttt*设计者:刘晓斌*nnn); input=getchar; system(cls); void login/登陆界面 void stu_login; void man_login; void bye_sys; int input; do system(cls); printf(nnnt1.学生登录n); printf(t2.管理员登陆n

14、); printf(t3.退出本系统n); printf(t请选择服务类别:); scanf(%d,&input); if (input!=1&input!=2&input!=3) /输入数不等于选项的时候打印画面 printf(nt输入出错!请重新选择n); printf(nt按任意键返回选择页面nt); getchar;getchar; system(cls); if(input=3)/如果输入3退出系统 bye_sys; while(input!=1&input!=2&input!=3); switch(input) case 1:stu_login;break; case 2:man_

15、login;break; void bye_sys/退出界面 exit(0); void man_login void c_add; void c_delete; void c_view; void c_searchm; int in; do system(cls); printf(nnt1.新增课程n); printf(t2.删除课程n); printf(t3.课程浏览n); printf(t4.课程查询n); printf(t5.退出n); printf(nnt请选择服务种类:); scanf(%d,&in); if(in!=1&in!=2&in!=3&in!=4&in!=5) print

16、f(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; do system(cls);

17、 printf(nnnt-学生登陆-); printf(nnt1.学生选课n); printf(t2.课程浏览n); printf(t3.课程查询n); printf(t4.退出n); 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_vie

18、ws;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/存在的话循环读取文件中的信息直

19、到文件指针到文件尾部 do fread(&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); else fclose(fp1); fp1=fopen(courseselect.dat,ab); for(j=0;ji;j+) if(coursesj.c_num=n)

20、 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; else fwrite(&coursesj,sizeof(struct course),1,fp1); fclose(fp1); printf(nntt选课成功t请选择:); printf(nntt1.继续选课); pri

21、ntf(nntt2.退出,返回登录界面!); scanf(%d,&in); switch(in) case 1:c_select;break; case 2:stu_login;break; default:break; 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(nnnt课程不存在nn

22、); printf(tnt); getchar;getchar; stu_login;/进入学生登陆菜单 else/存在的话循环读取文件中的信息直到文件指针到文件尾部 do fread(&courseviewi,sizeof(struct course),1,fp); i=i+1; while(!feof(fp); fclose(fp);/文件读完后关闭 do system(cls); if(i=1) printf(nnnttt没有记录!n); getchar;getchar; man_login; else printf(nt-共有%d条记录-,i-1); printf(nnt课程编号: %

23、dn,courseviewn.c_num); printf(nnt课程名字: %sn,courseviewn.c_name); printf(nnt课程学分: %dn,courseviewn.c_score); printf(nnt课程已选人数: %dn,courseviewn.c_nelepeo); printf(nnt课程人数上限: %dn,courseviewn.c_melepeo); printf(nnt1.上一页t2.下一页t3.回目录); printf(n请选择:); scanf (%d,&inp); switch(inp) case 1: if(n=0) printf(nt已到达

24、首页 t按任意键返回); input=getchar; input=getchar; else n=n-1; break; case 2: if(n=i-2) printf(nt已到达尾页t按人意见返回); input=getchar; input=getchar; else n=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

25、inp,i=0,n=0; FILE *fp; char input; struct course courseview10; if(fp=fopen(course.dat,rb)=NULL) /判断是否存在课程 system(cls); printf(nnnt课程不存在nn); printf(tnt); getchar;getchar; stu_login;/进入学生登陆菜单 else/存在的话循环读取文件中的信息直到文件指针到文件尾部 do fread(&courseviewi,sizeof(struct course),1,fp); i=i+1; while(!feof(fp); fclo

26、se(fp);/文件读完后关闭 do system(cls); if(i=1) printf(nnnttt没有记录!n); getchar;getchar; stu_login; else printf(nt-共有%d条记录-,i-1); printf(nnt课程编号: %dn,courseviewn.c_num); printf(nnt课程名字: %sn,courseviewn.c_name); printf(nnt课程学分: %dn,courseviewn.c_score); printf(nnt课程已选人数: %dn,courseviewn.c_nelepeo); printf(nnt课

27、程人数上限: %dn,courseviewn.c_melepeo); printf(nnt1.上一页t2.下一页t3.回目录); printf(n请选择:); scanf (%d,&inp); switch(inp) case 1: if(n=0) printf(nt已到达首页 t按任意键返回); input=getchar; input=getchar; else n=n-1; break; case 2: if(n=i-2) printf(nt已到达尾页t按人意见返回); input=getchar; input=getchar; else n=n+1; break; case 3:stu

28、_login;break; default: printf(nt操作错误t按任意键返回); getchar;getchar; break; while(inp!=3); 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;getcha

29、r; stu_login; else/存在的话循环读取文件中的信息直到文件指针到文件尾部 do fread(&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_num) flag+; k=j; if(flag=1) system(cls); printf(nnt课程编号:%dn,courseseark.c_nu

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号