版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求 第二部分:程序总体设计思路 第三部分:程序功能划分、图示及流程图 . 第四部分:程序设计数据、运行结果 第五部分:程序的优缺点 第六部分:心得体会 第七部分:附录(源程序) 第八部分:附录(参考文献)第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:Microsoft Visual C+ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学 时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按 要求(如总学分不得少于60)自由选课。【功能】系统以
2、菜单方式工作课程信息录入功能(课程信息用文件保存)-输入课程信息浏览功能-输出查询功能:(至少一种查询方式)算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序 运行的过程来编写的。具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录 入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的 数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界 面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的 文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个 为学生登陆界
3、面,该界面学生可以进行课程选择和浏览查询等操作。 在进行该操作之前需要对管理员保存的文件进行读取, 然后对其中的 内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于 相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序 的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数 据的操作。整个程序的设计思路到此结束。第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将 程序划分为6个部分分别编写,程序主体功能将由这 9个部分来完成。这 9个部分依次是:1. 登录界面函数;void logi
4、n()2. 学生登录界面据函数:void stu_login()3. 管理员登录界面函数:void manogin()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.主函数部分;mai n()总体设计:系统功能模块图部分函数流程图:1、 课程选择函数:2、课程查询函数3、课程增加函数4、课程删除函数第四部分:程序设计数据、运
5、行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】1、程序开始界面如下: 别 陆统类 录登系务 啓*本服 生理岀择 学管退选 2.乳请选择某个选项,如进行管理员登录,进行课程的增加进入管理员界面:養览询 课课浏查 新珊诔馀退 12 3 4 5请选择服务种类,2、再选择所要进行的操作,如进行课程增加,结果如下:请输入课程借息id果程编号:毗冬课程名字二信号系统?-课程学分沁4-讲程已选人数:伽5 课程人数上限曲信息输入完毕 按任意犍继续F面可以进行继续增加课程或者退出:丄-继续输入2-逅也管理桑
6、单 请选择.3、选择课程浏览,可以分页查看相应的课程信息:第一页:共有2 条记录课程编号 1课程名字高数课程学分:2课程己选人数:1课程人数上限:1B上一瓦2-下一页?-回目录请选择=第二页:共有Z条记录i果程编号=2课程名字信号系统课程学分.4课程己选人数:10谍程人教上限 501 上一页2 下一页回目录请选择4、课程查询请输入你要查询的课程编号:2查找结果:课程编号注 谍程名字二信号系统课程学分詞课程己选人数汕0课程人数上限匚504、 管理员课程删除操作:请选择彌务种类;2请骗入你要删除的课程编号;2记录己删除!按任意犍返回删除后可以进行浏览,观察删除后的结果:共有1条记录课程編号:1课程
7、名字高数课程学分 2课程己选人蝕1课程人数上限;101-上一贝2-下一贡皐回目录情选择:.可见删除后只有一条记录。删除操作完成正确 下面进行学生操作的使用方法:1、学生登陆界面:课普 注齧出 学课课退 12 3 42、选择学生选课选项:请输入你要选课程的编号;1 选谍成功请选择,继续选课2退出,返回登录界面! 3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相 同,不再演示。第五部分:程序的优缺点【程序的优点】算法是程序的灵魂,程序的优点首先表现在算法上的优点, 其次 才是功能上的。算法上的优点主要体现在以下三点:1. 程序采用main主函数方式设计,程序的主体的功能大都由该功能完成
8、。程序如此设计有利于程序的进一步改进及有助于程序执行 效率的提高。2. 程序对文件数据的读写采用了 fread和fwrite块读写函数,能够将 文件中的数据完全读出,然后赋到定义的数组中,再在相应的数 组中进行一系列操作,最终再写入文件。3. 插入操作在本程序中将课程信息直接插入数组最后一个节点,从 而减少了数据的相互移动,节省了时间。功能上的优点主要体现在以下两点:1. 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互 独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2. 人性化的程序提示语言,程序提示语言较人性化,不仅大多为 祈使语句、疑问句,而且提示明确,具有较强的明确的指导作
9、用。 程序提示不仅层次分明,提示方式多样,而且提示信息井然有序, 更加有利于用户顺利、准确地看懂程序并进行操作。【程序的缺点】主要表现在以下两点:1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。第六部分:心得体会选课系统程序比起通讯录程序来讲好写一些, 由于本程序用到了 数组,对于数组的操作掌握的比较熟练, 所以在编写程序的时候困难 没有那么多。本程序在编写的过程中用到了许多通讯录中的模块化设计和函 数互相调用的思想,使得编写比较方便和好用。通过该系统的
10、课程设计分析,我掌握了模块化设计的方法,理 解和运用了结构化程序设计的思想和方法, 掌握和提高了运用C语言 进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个 步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重 要,然后采取逐步细化的方法实现整个程序。对于一个较大的应用程序,一般不可能一次就设计出一个很完 善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使 用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系 统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律 等,这对于我更好的掌握visual C中调试的工具有很大的帮助。总之经过这次课
11、程设计,我对 c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受第七部分:附录一、参考文献:1、 李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社2、严蔚敏主编,数据结构(C语言),清华大学出版社3、崔单主编,C语言程序设计案例精粹,电子工业出版社4、 谭浩强主编,程序设计(第三版),清华大学出版社二、源程序#i ncludestdio.h#i ncludestdlib.h#i ncludewi ndows.h#i ncludestri ng.hvoid index(); 首页void logi n();void bye_sys(); 退出界面void stu_
12、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_n ame20;int c_score;int c_nelepeo;/课程已选人数 int c_melepeo;/课程人数上限 ;struct stude n
13、tchar s_nu mber10;char s_password10;;struct man agerchar m_n ame10;char m_password10;; void index() 首页 char in put;printf(nnttt*n); prin tf(ttt湖南大学学生选课系统n);prin tf(ttt* nnn)prin tf(ttt*nnn)prin tf(ttt* nnn)prin tf(ttt*nnn)printf(ttt*设计者:刘晓斌 *nnn);in put=getchar();system(cls);void login()登陆界面 void st
14、u_logi n();void mano gi n();void bye_sys();int in put;dosystem(cls);printf(nnnt1.学生登录 n);printf(t2.管理员登陆 n);printf(t3.退出本系统 n);printf(t请选择服务类别:);sca nf(%d,&in put);if (in put!=1 &in put!=2&in put!=3)/输入数不等于选项的时候打印画面printf(nt输入出错!请重新选择n);prin tf(nt按任意键返回选择页面nt);getchar();getchar();system(cls);if(inpu
15、t=3)如果输入3退出系统bye_sys();while(i nput!=1 &in put!=2&in put!=3);switch(i nput)case 1:stu_log in( );break;case 2:ma n_logi n() ;break;void bye_sys() 退出界面exit(0);void man_logi n()void c_add();void c_delete();void c_view();void c_searchm();in t i n;dosystem(cls);printf(nnt1.新增课程 n);printf(t2.删除课程 n);print
16、f(t3.课程浏览 n);printf(t4.课程查询 n);printf(t5.退出 n);prin tf(nnt请选择服务种类:”);sca nf(%d,&in);if(i n!=1 &in !=2&in !=3&in != 4&n !=5)printf(nt没有这项服务t按任意重新选择); getchar();getchar();while(i n!=1&in!=2&in!=3&in !=4&in !=5);switch(i n)case 1:c_add();break;case 2:c_delete();break;case 3:c_viewm();break;case 4:c_sea
17、rchm();break;case 5:logi n( );break;void stu_login()学生登录菜单void c_select();void c_view();void c_searchs();void logi n();int in put;dosystem(cls);printf(nnnt-学生登陆-);printf(nnt1.学生选课 n);printf(t2.课程浏览 n”);printf(t3.课程查询 n”);printf(t4.退出 n);scan f(%d, &in put);if(in put!=1 &in put!=2&in put!=3&in put!=4
18、) printf(nt没有这项服务n);printf(t按任意键重新选择”); getchar();getchar();while(i nput!=1 &in put!=2 &in put!=3&in put!=4);switch(i nput)case 1:c_select();break;case 2:c_views();break;case 3:c_searchs();break;case 4:log in( );break;void c_select()int n ,i n,i=O,j;i nt flag=O;FILE *fp;FILE *fp1;char in put;struct
19、course courses10;if(fp=fope n(course.dat,rb)=NULL) /判断是否存在课程printf(nnnt课程不存在 nn);printf(tnt);in put=getchar();in put=getchar();stu_login();进入学生登陆菜单else/存在的话循环读取文件中的信息直到文件指针到文件尾部dofread(&coursesi,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);/文件读完后关闭prin tf(nntt请输入你要选课程的编号:”);sca nf(%d
20、,&n);if(fp 1= fope n(courseselect.dat,rb)=NULL)fp1=fope n(courseselect.dat,wb);elsefclose(fp1);fp仁fope n(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);scan f(%d, &in);switch(i n)case 1:c_select();break;case 2:stu_log in( );b
21、reak;default:printf(输入错误,将返回登录界面!n);logi n() ;break;elsefwrite(&coursesj,sizeof(struct course),1,fp1); fclose(fp1);printf(nntt选课成功 t 请选择:”);printf(nntt1.继续选课);prin tf(nntt2. 退出,返回登录界面! ); scan f(%d, &in);switch(i n)case 1:c_select();break;case 2:stu_log in( );break; default:break;void c_viewm() 课程浏览
22、void stu_logi n();void c_view();int in p,i=0,n=0;FILE *fp;char in put;struct course courseview10;if(fp=fope n(course.dat,rb)=NULL) /判断是否存在课程system(cls);printf(nnnt课程不存在 nn);printf(tnt);getchar();getchar();stu_login();进入学生登陆菜单else/存在的话循环读取文件中的信息直到文件指针到文件尾部dofread(&courseviewi,sizeof(struct course),1,
23、fp); i=i+1; while(!feof(fp); fclose(fp);/文件读完后关闭dosystem(cls);if(i=1)prin tf(nnnttt没有记录!n);getchar();getchar();man _logi n();elseprintf(nt共有 %d 条记录,i-1);prin tf(nnt课程编号:%dn,courseview n.c_nu m);prin tf(nnt课程名字:%sn,courseview n.c_name);prin tf(nnt课程学分:%dn,courseview n.c_score);prin tf(nnt 课程已选人数:%dn
24、,courseview n.c_n elepeo);prin tf(nnt 课程人数上限:%dn,courseview n.c_melepeo);printf(nnt1.上一页 t2.下一页 t3.回目录);printf(n 请选择:”);scanf (%d,&in p);switch(i np)case 1:if(n=0)printf(nt已到达首页t按任意键返回);in put=getchar();in put=getchar();elsen=n-1;break;case 2:if(n=i-2)printf(nt已到达尾页t按人意见返回); in put=getchar();in put=
25、getchar();elsen=n+1;break;case 3:ma n_logi n() ;break;default:printf(nt操作错误t按任意键返回);getchar();getchar();break;while(i np!=3);void c_views() 课程浏览void stu_logi n();void c_view();intin p,i=0,n=0;FILE *fp;char in put;struct course courseview10;if(fp=fope n(course.dat,rb)=NULL) /判断是否存在课程system(cls);print
26、f(nnnt课程不存在 nn);printf(tnt);getchar();getchar();stu_login();进入学生登陆菜单else/存在的话循环读取文件中的信息直到文件指针到文件尾部dofread(&courseviewi,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);/文件读完后关闭dosystem(cls);if(i=1)prin tf(nnnttt没有记录!n);getchar();getchar();stuo gi n();elseprintf(nt共有 d条记录,i-1);prin tf(nnt
27、课程编号:%dn,courseview n.c_num);prin tf(nnt课程名字:sn,courseview n.c_n ame);prin tf(nnt 课程学分:dn ,courseview n.c_score);prin tf(nnt 课程已选人数:dn,courseview n.c_ nelepeo);prin tf(nnt 课程人数上限:dn,courseview n.c_melepeo);printf(nnt1.上一页 t2.下一页 t3.回目录);printf(n 请选择:);scanf (%d,&in p);switch(i np)case 1:if(n=0)print
28、f(nt已到达首页t按任意键返回);in put=getchar();in put=getchar();elsen=n-1;break;case 2:if(n=i-2)printf(nt已到达尾页t按人意见返回);in put=getchar();in put=getchar();elsen=n+1;break;case 3:stu_logi n() ;break;default:printf(nt操作错误t按任意键返回);getchar();getchar();break;while( in p!=3); void c_searchs()void stu_logi n();void c_se
29、archs();int id,i=O,j,i np,k;int flag=0;FILE *fp;struct course coursesear10;if (fp=fopen(course.dat,rb)=NULL)/ 判断课程信息是否存在system(cls);printf(nnt课程不存在t按任意键返回”);getchar();getchar();stu_logi n();else/存在的话循环读取文件中的信息直到文件指针到文件尾部dofread(&courseseari,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp
30、);system(cls);prin tf(nnttt请输入你要查询的课程编号:”);scan f(%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_num);printf(nnt 课程名字:%sn,courseseark.c_name);printf(nnt 课程学分:%dn,courseseark.c_score);printf(nnt 课程已选人数:%dn,courseseark.c_n
31、elepeo);printf(nnt 课程人数上限:dn,courseseark.c_melepeo); getchar();getchar();printf(nnt1.回目录继续查询t2.退出查询系统n);printf(请选择:);scan f(%d, &in p);switch(i np)case 1:c_searchs();case 2:stu_logi n();default:printf(nt没有这项服务t请按任意键重新输入); getchar();getchar();elsesystem(cls);printf(nnt 不存在对应记录n);printf(nnt1.回目录继续查询t2
32、.退出查询系统n); printf(请选择:);sca nf(%d,&in p);switch(i np)case 1:c_searchs();case 2:stu_logi n();default:printf(nt没有这项服务t请按任意键重新输入); getchar();getchar();while(i np!=1);void c_searchm()void stu_logi n();void c_searchm();int id,i=O,j,i np,k;int flag=0;FILE *fp;struct course coursesear10;if (fp=fopen(course
33、.dat,rb)=NULL)/ 判断课程信息是否存在system(cls);printf(nnt 课程不存在t按任意键返回”);getchar();getchar();stu_logi n();else/存在的话循环读取文件中的信息直到文件指针到文件尾部dofread(&courseseari,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);system(cls);prin tf(nnttt请输入你要查询的课程编号:”);scan f(%d,&id);do/检查输入是否符合要求for(j=0;ji-1;j+)if(id=
34、coursesearj.c_ num)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 课程已选人数:%dn,courseseark.c_nelepeo);printf(nnt 课程人数上限:dn,courseseark.c_melepeo); getchar();getchar();printf(nnt1.回目录继续查询
35、t2.退出查询系统n);printf(请选择:);scan f(%d, &in p);switch(i np)case 1:c_searchm();case 2:ma n_ logi n();default:printf(nt没有这项服务t请按任意键重新输入); getchar();getchar();elsesystem(cls);printf(nnt不存在对应记录n);printf(nnt1.回目录继续查询t2.退出查询系统n);printf(请选择:);sca nf(%d,&in p);switch(i np)case 1:c_searchm();case 2:ma n_ logi n(
36、);default:printf(nt没有这项服务t请按任意键重新输入); getchar();getchar();while(i np!=1);void c_add()增加课程void c_add();void man_logi n();int i=0,j,i np;FILE *fp;struct course course_ new;struct course courses10;system(cls);printf(nntt请输入课程信息”);printf(nntt1.课程编号:”);sca nf(%d,&course_ new.c_ nu m);printf(nntt2.课程名字:);
37、sca nf(%s,course_ new.c_ name);printf(nntt3.课程学分:);sca nf(%d,&course_ new.c_score);printf(nntt4.课程已选人数:);sca nf(%d,&course_ new.c_ nelepeo);printf(nntt5.课程人数上限:);sca nf(%d,&course_ new.c_melepeo);if(fp=fope n(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);prin tf(nnttt对不起,这个编号已经使用过nntt按任意键返回管理菜单);getchar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 15434:2025 EN Information technology - Automatic identification and data capture techniques - Syntax for high-capacity ADC media
- 《单证管理流程》课件
- 《少儿青春期教育》课件
- 单位管理制度集粹选集人员管理
- 《电化学局部腐蚀》课件
- 单位管理制度合并汇编【员工管理篇】
- 单位管理制度分享合集职工管理篇
- 单位管理制度范例汇编员工管理篇
- 单位管理制度呈现汇编【人力资源管理篇】十篇
- 单位管理制度呈现大全员工管理篇十篇
- 主蒸汽及再热热段管件技术协议-终版
- 《简·爱》-2022年中考一轮复习之必读名著对比阅读训练
- 交通灯课程设计交通灯控制器
- 单层钢结构工业厂房纵向定位轴线的定位
- 肿瘤科常见急重症
- 03SG715-1蒸压轻质加气混凝土板(NACL)构造详图
- 粉体工程第六章粉碎过程及设备
- 尽职调查工作底稿1_公司业务调查
- 洪水计算(推理公式法)
- 集装箱码头堆场项目可行性研究报告写作范文
- 医保药店一体化信息管理系统操作手册
评论
0/150
提交评论