学生选课系统C语言设计_第1页
学生选课系统C语言设计_第2页
学生选课系统C语言设计_第3页
学生选课系统C语言设计_第4页
学生选课系统C语言设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、题目一、学生选课管理系统第一部分:课程设计名称、目的、要求名称: 学生选修课程系统设计 目的:运用C语言提高解决实际问题的能力 实验环境:Microsoft Visual C+内容: 假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学 时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按 要求(如总学分不得少于60)自由选课。功能】 系统以菜单方式工作?课程信息录入功能(课程信息用文件保存)输入?课程信息浏览功能输出?查询功能:(至少一种查询方式)算法?按学分查询?按课程性质查询?学生选修课程(可选项)?第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根

2、据目标程序 运行的过程来编写的。具体的设计思路如下:程序的要求是设计学生选修课管理系统, 对选修课程能够进行录 入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的 数据输入, 可以设置一个管理员登陆选项, 通过该选项进入管理员界 面,进行选修课的录入和修改操作, 最后将录入的课程保存到相应的 文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个 为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取, 然后对其中的 内容进行查询等, 在学生选好课程以后, 可以将其选好的课程保存于 相应的文件中, 以便下次进行修改。 通过函数

3、的层层调用来实现程序 的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数 据的操作。整个程序的设计思路到此结束。第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】 本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将 程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login() 4.退出界面函数:void bye_sys()7.课程查询函数:void c_search()10.

4、菜单函数:voidindex()11.主函数部分;mai n()总体设计:系统功能模块图5.课程选择函数:voidc_select()6.课程浏览函数:void c_view()8.课程增加函数:void c_add()9.课程删除函数:voidc_delete()部分函数流程图:1、课程选择函数:2、课程查询函数3、课程增加函数4、课程删除函数第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进 行演示与实现。【软件运用举例】1、程序开始界面如下:选择某个选项,如进行管理员登录,进行课程的增加 进

5、入管理员界面:请选择服务种类,2、再选择所要进行的操作,如进行课程增加,结果如下:请输入课程信息id果程编号汨2课程名字:信号系统乩i果程已选人数信息输入完毕按任意犍继续F面可以进行继续增加课程或者退出:1212 3 3录齧生理岀择善退选丄-继续输入-返回管理菜单请选择3、选择课程浏览,可以分页查看相应的课程信息:第一页:-共有2築记录-课程騙号=1课程名字=高数 课程学分,2课程己选人数.1课程人数上限1B请选择=二上一更2-下一贞共有2条记录谋程錦号:3课程名字=信i果程学分:4课程己选人数=寺系统1Q课程人数上限=50上一贡2.TJ回目录请选择=第二页:清选择=:上 1 贝罠下 1 贞丁

6、回目录请选择服务种类:2请輸入你要删除的课程编号;2记录己删除!按任意犍返回删除后可以进行浏览,观察删除后的结果:-共有1条记录.课程編号:1课程名字:高数 课程学分.2课程己选人数=1课程人数上限;10请输入你曼查询的课程编号=2查找结果:课程编号=2谍程名字淄号系统课程学分注课程己选人数江0课程人数上限汚04、管理员课程删除操作:可见删除后只有一条记录。删除操作完成正确。F面进行学生操作的使用方法:一学拄登陆一请输入你要选课程的编号,1选I果成功请选择I丄-继续选课2退出,回登录界面! 学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相 同,不再演示。第五部分:程序的优缺点【程序的优

7、点】算法是程序的灵魂,程序的优点首先表现在算法上的优点, 其次 才是功能上的。算法上的优点主要体现在以下三点:1、学生登陆界面:2、课脅1*-学课课退选择学生选课选项:3、1.程序采用main主函数方式设计,程序的主体的功能大都由该功能完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。功能上的优点 主要体现在以下两点:

8、简洁明了的程序菜单。 程序主要采用了层次不同的菜单, 相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明, 提示方式多样, 而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。程序的缺点】 主要表现在以下两点:1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。第六部分:心得体会选课系统程序比起通讯录

9、程序来讲好写一些, 由于本程序用到了 数组,对于数组的操作掌握的比较熟练, 所以在编写程序的时候困难 没有那么多。本程序在编写的过程中用到了许多通讯录中的模块化设计和函 数互相调用的思想,使得编写比较方便和好用。通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法, 掌握和提高了运用C语言 进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重 要,然后采取逐步细化的方法实现整个程序。对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。 通常要先设计满足基本要求的系统

10、, 然后再测试或者在使 用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系 统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律 等, 这对于我更好的掌握visual C中调试的工具有很大的帮助。总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。第七部分:附录一、参考文献:1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社2、严蔚敏主编,数据结构(C语言),清华大学出版社3、崔单主编,C语言程序设计案例精粹,电子工业出版社4、谭浩强主编,程序设计(第三版) ,清华大学出版社二、源程序#include#include#i

11、nclude#includevoid index();生登录rr);printf(t2.管理员登陆n);printf(t3.退出本系统n); printf(t请选择服务类别:); scanf(%d,&input);if (input!=1&input!=2&input!=3)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)printf(nt没有这项服务t按任意重新选择); ge

12、tchar();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()生选课n);增课程n);printf(t2.课程浏览n);printf(t3.课程查询n);printf(t4.退出n);scanf(%d,&input); if(input!=1&input!=2&input

13、!=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 co

14、urse courses10;if(fp=fopen(,rb)=NULL) _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;fwrite(&coursesj,sizeof(struct course),1,fp1);fclose(fp1);printf(nntt选课

15、成功t请选择:); printf(nntt1.继续选课); printf(nntt2.退出,返回登录界面!); scanf(%d,&in);switch(in)case 1:c_select();break;case 2:stu_login();break; default:break;%sn,courseviewn.c_name);%dn,courseviewn.c_score);:%dn,courseviewn.c_nelepeo);:%dn,courseviewn.c_melepeo);printf(nnt1.上一页t2.下一页t3.回目录); printf(n请选择:);scanf (

16、%d,&inp);switch(inp)case 1:elsevoid c_viewm()_num);printf(nntprintf(nntprintf(nnt课程名字: 课程学分: 课程已选人数: 课程人数上限: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:man_login();break;

17、 default:printf(nt操作错误t按任意键返回);getchar();getchar();break;while(inp!=3);课程名字:%sn,courseviewn.c_name);课程学分:%dn,courseviewn.c_score);void c_views()_num);printf(nntprintf(nprintf(nnt课程已选人数:%dn,courseviewn.c_nelepeo);printf(nnt课程人数上限:%dn,courseviewn.c_melepeo);printf(nnt1.上一页t2.下一页t3.回目录”); printf(n请选择:)

18、;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);voi

19、d 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(,rb)=NULL)flag+; k=j;课程编号:%dn,courseseark.c_num);课程名字:%sn,courseseark.c_name);课程学分:%dn,courseseark.c_score);课程已选人数:%dn,courseseark.c_nelepeo);课程人数上限:%dn,courseseark.c_melepeo)

20、;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();_num)if(flag=1)system(cls);printf(nntprintf(nntprintf(nntprintf(nntprintf(nntsystem(cls); printf(nnt不存在对应记录n);p

21、rintf(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 stu_login();void c_searchm();int id,i=0,j,inp,k;int flag=0;FILE *fp;struct course coursesear10;if (f

22、p=fopen(,rb)=NULL)flag+; k=j;if(flag=1)system(cls);printf(nnt课程编号:%dn,courseseark.c_num); printf(nntelse_num)课程名字:%sn,courseseark.c_name);printf(nntprintf(nntprintf(nnt getchar();getchar();printf(nnt1.回目录继续查询t2.退出查询系统n); printf(请选择:); scanf(%d,&inp);switch(inp)case 1:c_searchm();case 2:man_login();d

23、efault: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_add()程编号:); scanf(%d

24、,&; printf(nntt2.课程名字:);课程学分:%dn,courseseark.c_score);课程已选人数:%dn,courseseark.c_nelepeo);课程人数上限:%dn,courseseark.c_melepeo);if(fp=fopen(,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=coursesj.c_num)system(cls);printf(nnttt对不起,这个编号已经使用过nntt按任意键返回管理菜单); getchar();getchar();man_login();break;if(fp=fopen(,rb)=NULL)fp=fopen(,wb);elsefclose(fp);fp=fopen(,ab);fwrite(&course_new,sizeof(

温馨提示

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

评论

0/150

提交评论