C++程序设计-报告-及源代码--学生选课系统_第1页
C++程序设计-报告-及源代码--学生选课系统_第2页
C++程序设计-报告-及源代码--学生选课系统_第3页
C++程序设计-报告-及源代码--学生选课系统_第4页
C++程序设计-报告-及源代码--学生选课系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、 摘 要 C语言是在国内外广泛使用的一种计算机语言。C语言简洁紧凑、灵活方便、运算符丰富、适用范围大、可移植性好。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。本学生选课系统主要利用C语言的数组指针和文件操作能力设计开发一个小型的选课系统,至少具有如下功能:查看课程信息、查找课程信息、增加课程信息、修改课程信息、选课等功能。本文主要对学生选课系统来进行说明。本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有

2、比较深入的掌握。还包括指针、函数、结构体、文件等C语言的基础知识的运用。关键字: 源代码、 指针、调用函数、流程图、结构、数组。目录 TOC o 1-2 h z u HYPERLINK l _Toc234951313 第一章 设计题目的内容、任务及具体要求 PAGEREF _Toc234951313 h 1 HYPERLINK l _Toc234951314 第二章 总体设计思路 PAGEREF _Toc234951314 h 2 HYPERLINK l _Toc234951315 2.1 程序功能 PAGEREF _Toc234951315 h 2 HYPERLINK l _Toc23495

3、1316 2.2 模块关系 PAGEREF _Toc234951316 h 2 HYPERLINK l _Toc234951317 总体框图 PAGEREF _Toc234951317 h 3 HYPERLINK l _Toc234951318 第三章 功能模块的具体设计 PAGEREF _Toc234951318 h 4 HYPERLINK l _Toc234951319 3.1 主函数模块的设计 PAGEREF _Toc234951319 h 4 HYPERLINK l _Toc234951320 3.2 显示课程信息模块的设计 PAGEREF _Toc234951320 h 7 HYPE

4、RLINK l _Toc234951321 3.3 查询模块模块的设计 PAGEREF _Toc234951321 h 8 HYPERLINK l _Toc234951322 3.4 增加模块的设计 PAGEREF _Toc234951322 h 9 HYPERLINK l _Toc234951323 3.5 删除模块模块的设计 PAGEREF _Toc234951323 h 13 HYPERLINK l _Toc234951324 3.6 修改模块模块的设计 PAGEREF _Toc234951324 h 14 HYPERLINK l _Toc234951325 3.7 选课模块的设计 PA

5、GEREF _Toc234951325 h 15 HYPERLINK l _Toc234951326 3.8 显示选课情况模块的设计 PAGEREF _Toc234951326 h 17 HYPERLINK l _Toc234951327 第四章 功能模块的调试及测试 PAGEREF _Toc234951327 h 18 HYPERLINK l _Toc234951328 4.1 登陆界面和主菜单界面的显示 PAGEREF _Toc234951328 h 18 HYPERLINK l _Toc234951329 4.2 查询所有课程信息的显示结果 PAGEREF _Toc234951329 h

6、 19 HYPERLINK l _Toc234951330 4.3 查询单个课程信息的显示结果 PAGEREF _Toc234951330 h 20 HYPERLINK l _Toc234951331 4.4 添加课程信息的显示结果 PAGEREF _Toc234951331 h 20 HYPERLINK l _Toc234951332 4.5 删除和修改课程信息的显示结果 PAGEREF _Toc234951332 h 21 HYPERLINK l _Toc234951333 4.6 选课的显示结果 PAGEREF _Toc234951333 h 22 HYPERLINK l _Toc234

7、951334 查询选课情况的显示结果 PAGEREF _Toc234951334 h 23 HYPERLINK l _Toc234951335 4.8 退出 PAGEREF _Toc234951335 h 23 HYPERLINK l _Toc234951336 总结 PAGEREF _Toc234951336 h 24 HYPERLINK l _Toc234951337 致 谢 PAGEREF _Toc234951337 h 25 HYPERLINK l _Toc234951338 参考资料: PAGEREF _Toc234951338 h 26 HYPERLINK l _Toc234951

8、339 附程序清单 PAGEREF _Toc234951339 h 27第一章 设计题目的内容、任务及具体要求设计题目: 学生选课系统设计内容:本程序属于非数值计算型算法设计,学生需要设计出学生选课系统所需要的基本功能,并设计简单的界面(无需图形化)。本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。要求程序运行结果正确,程序和算法具有一定程序度的健壮性,稳定性。设计要求:(1)通过提示菜单选择可以进行的操作。(2)将课程的信息存入文件中,并命名为。(3)将选课情况信息存入文件中,并命名为。(4

9、)在本系统中可以进行管理系统包含的基本操作,其中包括查看所有课程的信息输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课程的相关信息,如果没有找到则给出提示信息添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相应位置删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程不存在选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输入,直到输入正确为止,并将学号和相应的课程编号存入文件中(5)课程基本信息包括课程编号、课程名

10、、学时和学分这些简单信息。(6)课程信息文件中每一行存放一门课程的信息。第二章 总体设计思路2.1 程序功能此系统是简单的学生选课系统。具体的功能包括:输入密码进入系统。查看所有课程的信息输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课程的相关信息,如果没有找到则给出提示信息添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相应位置删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程不存在对课程信息进行修改。选修一门课程,需要给

11、出学号和课程编号,如果课程编号不存在则重新输入,直到输入正确为止,并将学号和相应的课程编号存入xt文件中查看所选课程。2.2 模块关系根据提示输入学号和密码进入系统。通过主函数模块进入各个其它函数的模块,然后达到对课程信息的查看、增加、删除、修改和选课的功能,在这些模块中又调用其它小模块(如:排序模块)。本程序主要有:主函数模块、显示课程信息模块、查询模块、增加模块、删除模块、修改模块、选课模块、显示选课情况模块等八个模块组成。总体框图先输入验证信息进入主模块,然后选择调用的模块显示课程信息模块查询模块主模模块增加模块删除模块修改模块选课模块显示选课情况模块图2-1 各模块关系图第三章 功能模

12、块的具体设计3.1 主函数模块的设计在主函数中通过inset()函数让用户输入验证信息进入,简单菜单的制作可以利用printmenu()函数实现。从文件中获取课程信息,并存放在定义的结构数组desk100中。定义结果的源代码为struct classinint number;char classname10;int hours;double credit;typedef struct classin Classin;Classin desk100 = 0然后将文件中的信息读入此数组中,读取函数的代码为:cfptr = fopen(LessonInfo.txt,r);while(!feof(cf

13、ptr)fscanf(cfptr, %d%s%d%lf, &deski.number, deski.classname, &deski.hours, &deski.credit);i+;在后面的使用中都是调用此地址便可以对数组进行修改。输入选择项choice,再用switch语句去调用其它函数,具体实现如下(主函数的主要代码):while(choice != 8) switch(choice) case 1:myread(desk);break; case 2:myfind(desk);break; case 3:myadd(desk);shunxu(desk);filewhite(desk)

14、;break; case 4:mydelete(desk);filewhite(desk);break;case 5:mymodify(desk);shunxu(desk);filewhite(desk);break; case 6:selection(desk, studentin);filewrite(studentin);break; case 7:output(studentin);break; default:break; 接着判断用户是否继续输入,若继续,则重新进行选择;否则,退出程序。开始打开文件将学好和密码读入数组中输入密码和学号密码、学好?换回1换回0图3-1 inset()

15、函数模块的流程图上图是简单的将输入学号和密码的过程提示是一遍,但实际函数中我使用的三从循环。第一重循环是输入学号;第二重循环是判断该学会是否存在,若学号不存在便提示是再输,还是退出系统;在学号存在时进入第三重循环,输入密码(注:学号和密码是在运行此函数时从文件中读到数组里)并在数组中查找,若有和该密码相等的数组元素,就将进入系统,否则提示继续或退出.开始打开文件并将课程信息读入数组输入查询类型Inset()查询模块增加模块删除模块修改模块选课模块显示课程信息模块显示选课情况模块退出结束图3-2 main()函数模块的流程图在次函数中用户通过输入选项进入不同的函数模块。当每次运行一个模块后,又进

16、行选择。3.2 显示课程信息模块的设计本模块的设计主要是设计被调用函数myread(Classin *wkesk),是用指针指向储存课程信息的数组,调用数组的地址。再用循环把数组中的信息输出。主要代码为:for(i=0; i=N-1; i+)if(wdeski.hours = 0) break; printf(%-10d%-20s%-10d%-10lfn, wdeski.number,wdeski.classname,wdeski.hours,wdeski.credit);在此片段函数中wdeski.hours = 0是作为循环的结束条件之一,能提前结束该程序。开始i99课时!=0在屏幕输出课

17、程信息i+结束i = 0图3-3 myprintf()函数模块的流程图在上图中“课时!=0“就是上面解释的wdeski.hours = 0的另一形式。3.3 查询模块模块的设计本模块是要求设计查找功能的函数myfind(Classin *wkesk),同上步将数组地址调用。然后输入要查找的课程编号,再进行在数组中的查找。找到就输出,否则提示重新输入或退出。主要原代码为:printf(Please enter the class number: );scanf(%d,&Number);printf(nn);for(i=0;i=N-1;i+) if(Number = wdeski.number)

18、if(wdeski.credit = 0.0)printf(nnnn);break;printf(%-10s%-20s%-10s%-10s%n,number, classname, hours, credit);printf(%-10d%-20s%-10d%-10lfnnnn, wdeski.number,wdeski.classname,wdeski.hours,wdeski.credit);flag = 0;break;在此程序中flag是作为标准值,初始为-1,当flag改变时说明已经找到该课程,否则为找到。在对flag赋值为-1;再做判断,看是继续查找,还是退出此函数模块。结束开始fl

19、ag=-1输入NumberNumber = wdeski.number输出数组中找到的元素flag=1是否继续flag = -1图3-4 myfind()函数模块的流程图3.4 增加模块的设计本模块要设计被调用增加数组的函数myadd(Classin *wkesk)、排序函数shunxu(Classin *wkesk)和写入文件函数filewhite(Classin *wkesk)。这几个函数是按先后运行的。myadd(Classin *wkesk)的介绍它主要源代码为:if(wdeski.hours = 0)wdeski.number = nub;printf(nPlease enter t

20、he class name: );fflush(stdin); scanf(%s,&wdeski.classname);printf(Please enter the hours: );scanf(%d,&wdeski.hours);printf(Please enter the credit: );scanf(%lf,&wdeski.credit);在运行此代码前,输入要增加的课程编号,然后在数组中查找,若没有,就再添加。其简易流程图为:开始输入numberNumber等于wdeski.number在数组中增加一个结构元素是否再输入?结束图3-5 myadd()函数模块的流程图3.42排序函

21、数shunxu()的介绍: 此函数的原理是用冒泡排序法将数组按照课程编号由大到小排序。其主要源代码为:Classin temp;while(wdeskk+.number != 0); /*计算有多少课程门课程的信息。*/for(i=1; i=k-1; i+)for(j=0; j wdeskj+1.number)if(wdeskj+1.number = 0)break; /*排到尾时,结束*/temp = wdeskj+1;wdeskj+1 = wdeskj;wdeskj = temp; /*交换*/在此函数中temp是做一个交换的中间变量。要注意函数中if(wdeskj+1.number =

22、0)break;是十分有用的,它将数组中由于初始化时的0号元素排除,才能使排序得以成功运行。其流程图为:开始i =1;j=0;文件是否结束k+;i=k-1jwdeskj+1.number交换wdeskj.number和wdeskj+1,i+结束图3-6 shunxu()函数模块的流程图filewhite()的介绍:此函数的主要源代码为:cfptr = fopen(LessonInfo.txt,w); do if(wdeski.hours = 0) break;fprintf(cfptr, %-10d%-20s%-10d%-10.2lfn, wdeski.number,wdeski.classn

23、ame,wdeski.hours,wdeski.credit); i+; while(i 100); 在此函数中用“w”的写入方式,目的是将前面文件中储存的信息覆盖。其流程图为:开始打开文件wdeski.hours是否为0i100用fprintf将数组读进文件,i+结束关闭文件图3-7 filewhite()函数模块的流程图注意:在打开文件进行操作完后要用fclose()关闭文件!3.5 删除模块模块的设计 此模块主要用函数mydelete()用指针指向结构数组的地址,调用指针对数组进行修改。在里就是在数组中删除某项课程信息,然后用函数filewhite()将数组信息读入文件,读取方式为“w”

24、。最主要就是mydelete()函数的应用,下面为其主要源代码:for(i=0; i=N-1; i+)if(wdeski.number = 0) break;if(nub = wdeski.number)flag = 0;for(j=i; j=N-2; j+) wdeskj = wdeskj+1; /*将找到的课程删除*/if(wdeskj+1.hours = 0) break;printf(Delete success.n);break; 在这段函数中使用wdeskj = wdeskj+1用后一个数组元素覆盖前面一个,当循环结束后就达到删除的目的了。其流程图为:开始i100输入numbern

25、umber等于 wdeski.numberj = i;j99结束wdeskj = wdeskj+1;图3-8 mydelete()函数模块的流程图filewhite()函数在增加模块中已经介绍,这里就不做介绍了。 修改模块模块的设计此模块主要用到修改函数mymodify(),其次还有filewhite()函数将修改后的数组读入文件。由于在增加模块中已近比较详细的介绍了filewhite()函数的使用,这里主要介绍mymodify()的原理。其主要源代码是:for(i=0;i=N-1;i+) if(Number = wdeski.number) if(wdeski.credit = 0.0)pr

26、intf(nnnn);break; printf(Please entr the classname: );scanf(%s,&wdeski.classname); printf(Please enter the hours: ); scanf(%d,&wdeski.hours); printf(Please enter the credit: ); scanf(%lf,&wdeski.credit);printf(nModify success!n); flag = 0; break;在此函数中先将输入的课程编号找到,再对其进行修改。查找方法如同mydelete()中的数组查找。在找到后就分

27、别对数组结构中每一个元素修改。开始输入课程编号number结束Number等于wdeski.number修改wdeski中的各个元素输入mm等于*图3-9 mymodify()函数模块的流程图3.7 选课模块的设计在这个模块中用选课函数selection()将课信息读入数组,再用函数filewrite()将数组中的选课情况读进文件中。filewrite()与前面讲的filewhite函数相似,其主要的源代码为:do if(wstudentini.studentnumber = 0) break; fprintf(sfptr, %dt,wstudentini.studentnumber); fo

28、r(j=0; j10; j+) if(wstudentini.classnumberj = 0) fprintf(sfptr, n); break; fprintf(sfptr, %dt, wstudentini.classnumberj); i+;while(i 50);在这里用到两个循环,可以达到选多门课的目的。其它地方可参考filewhite()函数。现在主要来介绍选课函数selection(),首先,其源代码为:scanf(%d,&wstudentini.studentnumber);scanf(“%d”, &a);for(j=0; j=N-1; j+) if(a = wdeskj.n

29、umber)flag = 0;wstudentini.classnumberk+ = a;break;在这个片段中先输入学号,然后输入课程编号,再在数组中查找,若未找到与输的编号相等,则提示重新输入或退出,否则提示选课成功。其流程图为:开始输入学号,再输入课程编号是否存在此课程编号将信息读入数组结束图3-10 selection()函数模块的流程图3.8 显示选课情况模块的设计此函数只用到输出选课情况的函数output()与函数myprintft()相似。其主要源代码为:printf(%stt%sn, student number, class number);for(i=0; i50; i+

30、)if(wstudentini.studentnumber = 0)printf(n);break;printf(%dtt, wstudentini.studentnumber);for(j=0; j10; j+)if(wstudentini.classnumberj = 0)break;printf(%dt, wstudentini.classnumberj);printf(n);流程图为:开始i 50i = 0wstudentini.studentnumber是否等于0输出信息i+结束图3-11 output()函数模块的流程图第四章 功能模块的调试及测试4.1 登陆界面和主菜单界面的显示

31、在进入系统前,用户需输入学号和密码,若没有,则无法进入系统。当然,也有意外,如果保存学号和密码的文件丢失,可以注册登录。登录界面如下(图4-1 登录界面):图4-1 登录界面当学号和密码都正确后进入主菜单界面,并可以按照此界面中的各种提示进行操作。主菜单界面如下(图4-2 主菜单界面):图4-2 主菜单界面4.2 查询所有课程信息的显示结果输入选项编号1,然后就可以看到全部课程信息,(如:图4-3和图4-4)图4-3 主菜单界面图4-4 全部课程信息界面4.3 查询单个课程信息的显示结果同上面操作,在主菜单中输入选项编号2,再输入要查询的课程编号,(如图:4-5):图4-5 课程信息查询界面4

32、.4 添加课程信息的显示结果输入选项编号3,由提示增加课程信息,先输入课程编号输0为查看课程信息,具体操作(如:图4-6)。图4-6 删除课程信息界面4.5 删除和修改课程信息的显示结果在主菜单中输入选项编号4,再输入要删除的课程编号或输0为查看课程信息,具体操作(如:图4-6)。图4-7 课程信息查询界在主菜单中输入选项编号5,再输入要修改的课程的编号 (如:图4-8);图4-7 修改课程信息界面4.6 选课的显示结果输入选项编号6,然后输入学号,再输入要选的课程编号(如:图4-8):图4-8 选修课程的界面查询选课情况的显示结果在主菜单中输入7,即可查询选课情况(如:图4-9);图4-9

33、查看选课情况的界面4.8 退出输入编号8,在主函数中实现退出功能。退出界面如:图4-10图4-10 退出界面各模块调试过程中注意的问题:由于本系统要调用的和定义的函数较多,造成可能忘记声明函数,调试过程中出错不能运行。由于使用的变量较多,在使用之前一定的注意声明,否则出错。还应该注意的是变量的初始化,有时这会造成严重的错误!注意结构体定义和使用的变量个数。注意头文件的声明一定要适用于所有的函数。注意适当的指针的使用可使程序变得更加完美。总结本次课程设计,我学习到了很多内容!1、通过这两周的C课程设计实习,我对c语言的强大功能有了更深一点的了解。同时它也激发了我对编程的兴趣和爱好,特别在成功解决

34、程序中的各种问题时,有则一种兴奋。2、通过编程也使我对C语言课程设计有了更深刻的了解,为以后的使用奠定了坚实的基础。3、注意大程序的设计最好按照“自顶向下,逐步细化,模块化”的方法进行设计。4、编写编写各个小函数时,要学会对运行结果的分析,并进行测试与调试。5、在编程时,应该多使用库函数。因为那些函数都是进过严格调试的,有很强的可移植性,同时也能提高函数的性能。6、使用文件时要注意文件的打开和关闭。7、在使用结构数组时,要特别注意对其初始化,还要特别注意不能出现越界。8、最终最重要的一点还是要有严谨的编程思维,还要足够细心。致 谢首先,感谢学校为我们提供了这个良好的平台来锻炼我们的对c语言的实

35、际操作和应用能力,使我们更加充分的吸收和应用所学的知识。其次,感谢指导老师对我们的帮助,指导老师对我们在程序调试过程中出现的问题提出了许多宝贵的更改方案和意见,使我们的程序能够顺利运行也使我们的程序更人性化实用化。再次,感谢学校提供良好的环境让我们编程。最后,感谢同学们的帮助和支持。参考资料:1Harvey M . Deitel. C程序设计经典教程(第四版) 北京:204-3632王为青等.C语言高级编程及实例剖析 北京:378-412 3向艳等. c语言程序设计 北京:清华大学出版社 2008.9:232-236附程序清单程序代码编写的过程是把设计思想和设计流程图用计算机实现的过程。下面按

36、照统一的设计风格编写学生选课系统的各个模块代码:#include #include #define N 100struct classinint number;char classname10;int hours;double credit;typedef struct classin Classin; /*定义课程信息结构.*/struct selectinint studentnumber;int classnumber10;typedef struct selectin Selectin; /*定义选课信息结构。*/int inset(void);void waiting(void);i

37、nt viewin(int a, Classin *wdesk);void mywrite(Classin *wdesk);void myread(Classin *wdesk);void printmenu(void);void myfind(Classin *wdesk);void myadd(Classin *wdesk);void mydelete(Classin *wdesk);void mymodify(Classin *wdesk);void filewhite(Classin *wdesk);void myprintf(Classin *wdesk);void shunxu(C

38、lassin *wdesk);void selection(Classin *wdesk, Selectin *wstudentin);void filewrite(Selectin *wstudentin);void output(Selectin *wstudentin);/*主函数*/int main()char m = 0;int choice = 0;int i;Classin deskN = 0; Selectin studentin50 = 0; FILE *cfptr;waiting();if(!inset()choice = 8;if(cfptr = fopen(Lesson

39、Info.txt,r) = NULL)printf(the file cant be openedn);printf(You shoud enter the class information!n);mywrite(desk);else i = 0;while(!feof(cfptr) fscanf(cfptr, %d%s%d%lf, &deski.number, deski.classname, &deski.hours, &deski.credit); i+; /*将文件中的课程信息读入数组。*/fclose(cfptr); if(choice != 8)dosystem(cls);pri

40、ntmenu(); printf(Please select: ); scanf(%d,&choice);system(cls);if(choice 8)printf(Incorrect entered.n);printf(Enter any key to continue.nn); fflush(stdin); scanf(%c, &m);while(choice 8); system(cls);while(choice != 8) switch(choice) case 1: myread(desk); break; case 2: myfind(desk); break; case 3:

41、 myadd(desk); shunxu(desk); filewhite(desk); break; case 4: mydelete(desk); filewhite(desk); break; case 5: mymodify(desk); shunxu(desk); filewhite(desk); break; case 6: selection(desk, studentin); filewrite(studentin); break; case 7: output(studentin); break; default: break; /*对各种操作进行选择。*/ if(choic

42、e != 8) system(cls); printmenu(); printf(Please select: ); scanf(%d,&choice); system(cls); return 0; /*结束main.*/*进入系统操作。*/int inset(void) FILE *tp, *sp;int i = 0, j = 0;int num = -1, mima, flag = 0;int a50, b50;int k = 0, c100;char m = 0, x;if(tp = fopen(mima.txt, r) = NULL)printf(The password is mi

43、ss!n);printf(Please register first.n);tp = fopen(mima.txt, w); printf(Please enter your stdent number: );scanf(%d, &ai);printf(Please enter the password: );scanf(%d, &bi);printf(nnregister success!nn);fprintf(tp, %dt%dt, ai, bi);fclose(tp);printf(enter any key to continue.n);fflush(stdin);scanf(%c,

44、&x);system(cls); /*创建登陆信息。*/tp = fopen(mima.txt, r);while(!feof(tp)fscanf(tp, %d%d, &ai, &bi+);fclose(tp);printf( Welcome to Lesson Management System! n);printf(nnnnnnnttt Lesson Management System n);doprintf(ttt Please enter your student number: );scanf(%d, &num);for(j=0; j50; j+) if(num = aj)while

45、(m != *)printf(ttt Please enter the password: );scanf(%d, &mima);if(mima = bj)flag = 1;m = *;break;elseprintf(ttt Your password is wrong!n);printf(ttt Enter any key to continue(enter * to exit.)nnn);printf(ttt );fflush(stdin);scanf(%c, &m);if(m = *)break; /*结束while*/ /*if的后*/if(m = *)break; /*结束for*

46、/if(flag != 1)printf(ttt The student number is not exist!);printf(nttt Enter any key to continue(enter * to exit.)nnn);printf(ttt );fflush(stdin);scanf(%c, &m);while(m != *); /*验证信息*/if(flag = 1)if(sp = fopen(jilu.txt, r) = NULL)printf(The file is not exit!);sp = fopen(jilu.txt, w);elsei = 0;while(!

47、feof(sp) fscanf(sp, %d, &ci+);k+;fclose(sp);sp = fopen(jilu.txt, a);fprintf(sp, %dtt%dn, num, (k+=2)/2);fclose(sp); /*将登陆信息读入文件。*/ return flag;/*向文件中写入课程信息。*/void mywrite(Classin *wdesk)int i=0; char m = 0;do printf(nPlease enter %d class number: , i+1); scanf(%d,&wdeski.number); printf(Please enter

48、 the class name: ); fflush(stdin); scanf(%s,&wdeski.classname); printf(Please enter the hours: ); scanf(%d,&wdeski.hours); printf(Please enter the credit: ); scanf(%lf,&wdeski.credit); printf(nnPlease enter a new class number(enter * to the menu).n); fflush(stdin); scanf(%c,&m); i+;while(m != * & i

49、N);filewhite(wdesk); /*将课程信息读入文件。*/void filewhite(Classin *wdesk)int i = 0;FILE *cfptr;cfptr = fopen(LessonInfo.txt,w); do if(wdeski.hours = 0) break; fprintf(cfptr, %-10d%-20s%-10d%-10.2lfn, wdeski.number,wdeski.classname,wdeski.hours,wdeski.credit); i+;while(i Welcome to Lesson Management System!

50、n);printf(nnnttt Lesson Management System );printf(nnnttt 1.View All Lessonn);printf(ttt 2.View A Lesson Informationn);printf(ttt 3.Add Lesson Informationn);printf(ttt 4.Delete Lesson Informationn);printf(ttt 5.Modify Lesson Informationn);printf(ttt 6.Select Lessonn);printf(ttt 7.View the selected i

51、nformatiom.n);printf(ttt 8.Exitn);printf(nnntttCopyright:Automation08 Fan Weinn);printf(=n);/*在屏幕输出全部课程信息。*/void myread(Classin *wdesk)char m;int i;printf(%-10s%-20s%-10s%-10s%n,number, classname, hours, credit);for(i=0; i=N-1; i+)if(wdeski.hours = 0) break; printf(%-10d%-20s%-10d%-10lfn, wdeski.num

52、ber,wdeski.classname,wdeski.hours,wdeski.credit);printf(Print any key to the menu.n);fflush(stdin);scanf(%c,&m);system(cls);/*查找课程信息。*/void myfind(Classin *wdesk)int Number;char m;int flag,i;doflag = -1; printf(Please enter the class number: ); scanf(%d,&Number);printf(nn); for(i=0;i=N-1;i+) if(Numb

53、er = wdeski.number) if(wdeski.credit = 0.0)printf(nnnn);break; printf(%-10s%-20s%-10s%-10s%n,number, classname, hours, credit);printf(%-10d%-20s%-10d%-10lfnnnn, wdeski.number,wdeski.classname,wdeski.hours,wdeski.credit); flag = 0; break; if(flag = -1)printf(The classe is not existn); printf(Enter ot

54、her key to continue(Enter * to the menu).n);fflush(stdin);scanf(%c,&m);while(m != *); system(cls);/*增加课程信息*/void myadd(Classin *wdesk)char m = 0;int nub = -1, i;nub = viewin(nub, wdesk);do for(i=0; i=N-1; i+) if(nub = wdeski.number) printf(The class number is exist!n); printf(Enter other key to cont

55、inue(Enter * to the menu).nn);fflush(stdin); scanf(%c,&m);break; /*存在所输课程信息*/if(wdeski.hours = 0)wdeski.number = nub;printf(nPlease enter the class name: );fflush(stdin); scanf(%s,&wdeski.classname);printf(Please enter the hours: );scanf(%d,&wdeski.hours);printf(Please enter the credit: );scanf(%lf,

56、&wdeski.credit);printf(nAdd successul!nPlease enter a new class number(enter * to the menu).n);fflush(stdin);scanf(%c,&m);printf(nn);break; /*增加课程信息*/if(m != *) nub = viewin(nub, wdesk);while(m != *);system(cls);/*从屏幕输出全部课程信息。*/void myprintf(Classin *wdesk)int i;printf(%-10s%-20s%-10s%-10s%n,number,

57、 classname, hours, credit);for(i=0; i=N-1; i+)if(wdeski.hours = 0)break;printf(%-10d%-20s%-10d%-10lfn, wdeski.number,wdeski.classname,wdeski.hours,wdeski.credit);/*删除课程信息*/void mydelete(Classin *wdesk)int nub = -1, i, j;int flag = -1;char m = 0;nub = viewin(nub, wdesk);dofor(i=0; i=N-1; i+)if(wdeski

58、.number = 0)break;if(nub = wdeski.number)flag = 0;for(j=i; j=N-2; j+)wdeskj = wdeskj+1; /*将找到的课程删除*/if(wdeskj+1.hours = 0) break;printf(Delete success.n);break; if(flag = -1) printf(the class is not exist.n);printf(Enter any key to continue(enter * to end).n);fflush(stdin);scanf(%c,&m);if(m != *)nub

59、 = viewin(nub, wdesk);while(m != *);system(cls);/*修改课程信息。*/void mymodify(Classin *wdesk)int Number;char m;int flag,i;doflag = -1;Number = viewin(Number,wdesk);printf(nn); for(i=0;i=N-1;i+) if(Number = wdeski.number) if(wdeski.credit = 0.0)printf(nnnn);break; printf(Please entr the classname: );scanf

60、(%s,&wdeski.classname); printf(Please enter the hours: ); scanf(%d,&wdeski.hours); printf(Please enter the credit: ); scanf(%lf,&wdeski.credit);printf(nModify success!n); flag = 0; break; /*寻找课程,并对其信息进行修改*/ if(flag = -1)printf(The classe is not existn); printf(Enter other key to continue(Enter * to

温馨提示

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

评论

0/150

提交评论