版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 题目一、学生选课管理系统 第一部分:课程设计名称、目的、要求第二部分:程序总体设计思路第三部分:程序功能划分、图示及流程图第四部分:程序设计数据、运行结果第五部分:程序的优缺点第六部分:心得体会第七部分:附录(源程序)第八部分:附录(参考文献) 目录. . . . . . . . 第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用c语言提高解决实际问题的能力实验环境:microsoft visual c+ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课
2、。【功能】系统以菜单方式工作v课程信息录入功能(课程信息用文件保存)输入v课程信息浏览功能输出v查询功能:(至少一种查询方式)算法v按学分查询v按课程性质查询v学生选修课程(可选项)v 第二部分:程序总体设计思路由于c语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。 具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。
3、另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。整个程序的设计思路到此结束。 第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是: 1. 登录界面函数;void lo
4、gin()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() 总体设计:系统功能模块图 部分函数流程图:1、 课程选择函数: 2、 课程查询函数 3、 课程增加函数 4
5、、课程删除函数第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的 运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】1、程序开始界面如下: 选择某个选项,如进行管理员登录,进行课程的增加进入管理员界面: 2、再选择所要进行的操作,如进行课程增加,结果如下: 下面可以进行继续增加课程或者退出: 3、选择课程浏览,可以分页查看相应的课程信息: 第一页: 第二页: 4、课程查询 查找结果: 4、 管理员课程删除操作: 删除后可以进行浏览,观察删除后的结果: 可见删除后只有一条记录。删除操作完成正确。下面进行学生操作的使用方
6、法:1、学生登陆界面: 2、选择学生选课选项: 3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。第五部分:程序的优缺点【程序的优点】算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。 算法上的优点主要体现在以下三点:1. 程序采用main主函数方式设计,程序的主体的功能大都由该功能 完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。2. 程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。3. 插入操作在本程序中将课程信息直
7、接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。 功能上的优点主要体现在以下两点: 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。 【程序的缺点】主要表现在以下两点:1、 本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。 2、 本程序没有使用文本读写函数fscanf和fp
8、rintf,所以的到的课程文件和选课文件都是二进制形式。第六部分:心得体会选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用c语言进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。对于一个较大的应
9、用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual c中调试的工具有很大的帮助。总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。 第七部分:附录一、参考文献:1、李丽娟主编 ,c语言程序设计教程(第二版),人民邮电出版社2、严蔚敏主编,数据结构(c语言),清华大学出版社3、崔单主编,c语言程序设计案例精粹,电子工业出版社4、谭浩强主编,程序设计(
10、第三版),清华大学出版社二、源程序#include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.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();/学生查询函数void
11、 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 studentchar s_number10; char s_password10;struct managerchar m_name10;char m_password10; void index()/首页char input;printf(&quo
12、t;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
13、_sys(); int input;dosystem("cls");printf("nnnt1.学生登录n");printf("t2.管理员登陆n");printf("t3.退出本系统n");printf("t请选择服务类别:");scanf("%d",&input);if (input!=1&&input!=2&&input!=3) /输入数不等于选项的时候打印画面 printf("nt输入出错!请重新选择n");
14、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_login();break; void bye_sys()/退出界面exit(0); void man_login()void c_add();void c_delete()
15、;void c_view();void c_searchm(); int in;dosystem("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&
16、;&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; v
17、oid stu_login()/学生登录菜单void c_select();void c_view();void c_searchs();void login(); int input;dosystem("cls");printf("nnnt-学生登陆-");printf("nnt1.学生选课n");printf("t2.课程浏览n");printf("t3.课程查询n");printf("t4.退出n");scanf("%d",&input);i
18、f(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
19、;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("t<按任意键返回管理菜单>nt");input=getchar();input=getchar();stu_log
20、in();/进入学生登陆菜单 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&
21、quot;,"wb");elsefclose(fp1);fp1=fopen("courseselect.dat","ab"); for(j=0;j<i;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_log
22、in();break;default:printf("输入错误,将返回登录界面!n"); login();break; elsefwrite(&coursesj,sizeof(struct course),1,fp1); fclose(fp1); printf("nntt选课成功t请选择:");printf("nntt1.继续选课");printf("nntt2.退出,返回登录界面!");scanf("%d",&in);switch(in)case 1:c_select();br
23、eak;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");printf("t<
24、按任意键返回管理菜单>nt");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)printf("nnnttt没有记录!n");getchar();getchar();man_login();elseprintf
25、("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课程人数上限: %dn",courseviewn.c_melepe
26、o);printf("nnt1.上一页t2.下一页t3.回目录");printf("n请选择:"); 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();els
27、en=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) /判断是否存
28、在课程 system("cls");printf("nnnt课程不存在nn");printf("t<按任意键返回管理菜单>nt");getchar();getchar();stu_login();/进入学生登陆菜单 else/存在的话循环读取文件中的信息直到文件指针到文件尾部 dofread(&courseviewi,sizeof(struct course),1,fp);i=i+1;while(!feof(fp);fclose(fp);/文件读完后关闭 dosystem("cls");if(i
29、=1)printf("nnnttt没有记录!n");getchar();getchar();stu_login();elseprintf("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"
30、,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已到达首页 t按任意键返回"); input=getchar();input=getchar();elsen=n-1;break;case 2:if
31、(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); void c_searchs()void stu_login();void c_searchs(); int id,i=0,j,inp,k;int flag=0;file *fp;struct co
32、urse 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);s
33、ystem("cls");printf("nnttt请输入你要查询的课程编号:");scanf("%d",&id); do/检查输入是否符合要求for(j=0;j<i-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);prin
34、tf("nnt课程学分:%dn",courseseark.c_score);printf("nnt课程已选人数:%dn",courseseark.c_nelepeo); printf("nnt课程人数上限:%dn",courseseark.c_melepeo); getchar();getchar();printf("nnt1.回目录继续查询t2.退出查询系统n");printf("请选择:");scanf("%d",&inp);switch(inp)case 1:c
35、_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_lo
36、gin();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 (fp=fopen("course.dat","rb")=null) /判断课程信息是否存在 system("cls")
37、;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=
38、0;j<i-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_nelepeo); printf(
39、"nnt课程人数上限:%dn",courseseark.c_melepeo); 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(&qu
40、ot;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()/增加课程void c
41、_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
42、);printf("nntt3.课程学分:");scanf("%d",&course_new.c_score);printf("nntt4.课程已选人数:");scanf("%d",&course_new.c_nelepeo);printf("nntt5.课程人数上限:");scanf("%d",&course_new.c_melepeo); if(fp=fopen("course.dat","rb")!=nul
43、l)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","
44、;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.继续输
45、入");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
46、*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); elsepr
47、intf("nntt不存在任何课程t按任意键返回"); getchar();getchar();man_login(); for(j=0;j<i-1;j+)if(coursesj.c_num=n)flag=1;fp=fopen("course.dat","wb");for(k=0;k<j;k+)fwrite(&coursesk,sizeof(struct course),1,fp); fclose(fp); fp=fopen("course.dat","ab");for(k=
48、j+1;k<i-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();/ printf("nntt记录已删除!t按任意键返回ntt"); int main()index();login();return 0; 蚇袅袇肁薃袄罿芇葿袃肂聿莅袂袁芅莁袁羄膈蚀袀肆莃薆衿膈膆蒂衿袈莂莈羈羀膄蚆羇肃莀薂羆膅膃薈羅羅莈蒄薂肇芁莀薁腿蒆虿薀衿艿薅蕿羁蒅蒁蚈肃芈莇蚇膆肀蚅蚇袅芆蚁蚆肈聿薇蚅膀莄蒃蚄袀膇荿蚃羂莂蚈蚂肄膅薄螁膇莁蒀螁袆膄莆螀罿荿节蝿膁膂蚀螈袁蒇薆螇羃芀蒂螆肅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手机通讯摊位转租协议
- 商业物业租赁协议
- 长沙市二手房美食环绕合同
- 饲料行业业务员聘用合同范本
- 传媒公司摄影师合同
- 油罐车驾驶员雇佣合同书
- 饮料业特种垃圾管理办法
- 户外教育气球施放安全指南
- 肯德基运营管理
- 急性高原性肺水肿护理
- 昆明理工大学《自然语言处理》2022-2023学年第一学期期末试卷
- 陈义小学进城务工人员随迁子女入学工作制度和措施
- 部编版六年级道德与法治上册第9课《知法守法 依法维权》精美课件(第2课时)
- 小儿急腹症观察和护理
- 统编版七年级上学期期末考试语文试卷(含答案)
- 《长江电力财务分析》课件
- 2023年中国铁路武汉局集团有限公司招聘大专(高职)学历笔试真题
- 中考英语复习听说模拟训练(一)课件
- 公立医院创新管理薪酬激励方案
- 药品经营使用和质量监督管理办法2024年宣贯培训课件
- 旅社承包合同样本
评论
0/150
提交评论