2022年C语言学生选课管理系统.pdf

上传人:C****o 文档编号:12787150 上传时间:2022-04-26 格式:PDF 页数:27 大小:876.79KB
返回 下载 相关 举报
2022年C语言学生选课管理系统.pdf_第1页
第1页 / 共27页
2022年C语言学生选课管理系统.pdf_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《2022年C语言学生选课管理系统.pdf》由会员分享,可在线阅读,更多相关《2022年C语言学生选课管理系统.pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、学生选课系统1 需求分析任务要求制做学生选课系统,共包括课程信息和学生信息两部分。课程信息包括: 课程编码、课程名称、 适用专业、课程类型(必修、限选、必选、实践、学习)、学分、学时、主讲教师等。学生信息管理,学生选课管理(学生选课学分总数有一定范围),学生可以对课程进行查询、浏览,选完课后可以退选、重选,并可以按学号、姓名进行查询和统计。要求: 1. 源文件采用多文件的工程结构。 2.数据储存采用文件形式。 3.标准的 C输入输出。 4.功能完善,适当的注释。 5.关于文件的内容要自学。系统功能需求分析1. 为存储课程信息,需要定义一个结构体类型, 成员包括课程编码、课程名称、适用专业、课程

2、类型、学分、学时、主讲教师,所选人数等等,并建立链表,定义该结构体类型的指针,用于指向各节点;2. 为存储学生信息,需要定义一个结构体类型,成员包括学生编码、学生姓名、所选课程编码、所选课程学分和等等,并建立链表,定义精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 27 页 - - - - - - - - - - 该结构体类型的指针,用于指向各节点;3. 对于课程信息和学生信息, 可以选择从键盘输入也可选择从文件中打开原来存盘的信息,并对他们分别建立添加、删除、浏览、查询等功能的子函数,完成相

3、应的功能,对程序实现模块化。这其中要用到对链表的删除、插入、增加等知识。删除包括课程删除和学生信息删除,删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的课程编号或学生学号,若相等就删除, 不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。查询功能要设置按照学生姓名、学生编号等多种方式。4. 学生选课是要先输入自己的学号, 如果在已经输入的学生信息中找不到此学号,则提示需要先输入自己的信息。如找到了自己的学号,则可以进行选课。 在选课之前要先对所有的课程信息进行浏览。选课有一定的学分限制,超过相应的学分(这里设置的是10 个学分),系统就会显示可以选满的

4、信息。此系统还可以实现删除所选课程的功能,设计思路与选课功能相似。5为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。6. 实现易于使用者理解和使用的友好界面。2 概要设计系统总体设计框架对程序进行模块化可以使整个程序清晰明了。对课程信息和学生信息建立从文件中输入、从键盘中输入、添加、删除、查询和浏览的功能,其各个子函数中运用链表储存数据。 选课管理建立学生选课、推选、查询、浏览的功能,其各个子函数中运用链表储存数据。从主函数开始执行, 依次调用各个子函数, 并运用文件的相关知识将信息进行存盘。系统功能模块图学生选课系统精品资料 - - - 欢迎下载 - -

5、- - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 27 页 - - - - - - - - - - 从文件从键盘从文件从键盘选课退课3 详细设计功能模块设计思路主要功能模块的算法设计思路如下:1、课程信息录入函数( void load() )从键盘录入( void zhang( ))I 定义指向结构体变量的指针;II 从头指针指向的结构体开始依次录入结构体中所包含的各个成员;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 27 页 -

6、 - - - - - - - - - III直到输入的结构体成员的编号为0,录入结束从文件录入( void zhang1( ))I 分别定义指向结构体变量的指针和指向文件的指针;II 输入文件的路径,打开文件,若没有找到则有提示;III 将文件中的信息依次读出,最后结构体的指针为2、课程信息管理( void managementc() )增加课程信息( void insert(struct course *incourse))I 定义指向结构体变量的指针;II 输入要增加的课程编号,从头指针指向的结构体依次向后,直到链表的最后;III 输入课程结构体各个成员的信息, 使最后一个结构体指针值为删

7、除课程信息( void delc(int num1))I 定义指向结构体变量的指针;II 输入要增加的课程编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;III 将其删除,其前一个的结构体指针指向其后一个结构体3、学生信息录入函数( void input() )从键盘录入( void putin( ))I 定义指向结构体变量的指针;II 从头指针指向的结构体开始依次录入结构体中所包含的各个成员;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 27 页 - - - -

8、- - - - - - III 直到输入的结构体成员的编号为0,录入结束从文件录入( void putin2( ))I 分别定义指向结构体变量的指针和指向文件的指针;II 输入文件的路径,打开文件,若没有找到则有提示;III 将文件中的信息依次读出,最后结构体的指针为4、学生信息管理( void managements() )增加学生信息( void inserts(struct student * incouse))I 定义指向结构体变量的指针;II 输入要增加的学生编号,从头指针指向的结构体依次向后,直到链表的最后;III 输入学生结构体各个成员的信息, 使最后一个结构体指针值为删除学生信

9、息( void dels(int num2))I 定义指向结构体变量的指针;II 输入要增加的学生编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III 将其删除,其前一个的结构体指针指向其后一个结构体5、学生选课管理( void elective())学生选课( void elect())I 分别定义指向课程和学生结构体变量的指针;II 输入要选课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - -

10、- - - - -第 5 页,共 27 页 - - - - - - - - - - 信息;III 输入要选课程的编号, 从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;IV 在学生结构体对应的所选课程编号中更改信息,所选学分中加上相应分值,课程结构体所选人数中相应加一学生退课( void back())I 分别定义指向课程和学生结构体变量的指针;II 输入要退课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;III 输入要退课程的编号, 从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;IV

11、在学生结构体对应的所选课程编号中更改信息,所选学分中减去相应分值,课程结构体所选人数中相应减一6、信息浏览和保存( void into())课程信息浏览( void listc())I 定义指向结构体变量的指针;II从头指针指向的结构体依次向后,将课程结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL学生信息浏览( void lists())I 定义指向结构体变量的指针;II从头指针指向的结构体依次向后,将学生结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL课程信息保存( void intoc())精品资料 - - - 欢迎下载 - - - - - - - - -

12、 - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 27 页 - - - - - - - - - - I 定义指向课程结构体变量的指针和指向文件的指针;II 输入保存路径,如果没有保存则有显示;III 将课程信息写入文件中;IV 将课程信息进行保存,关闭文件学生信息保存( void intos())I 定义指向学生结构体变量的指针和指向文件的指针;II 输入保存路径,如果没有保存则有显示;III 将学生信息写入文件中;IV 将学生信息进行保存,关闭文件7、学生信息查询( void store())按学生姓名查询( void search2())I 定义指向结构体

13、变量的指针;II 输入要查询的学生的姓名,从头指针指向的结构体依次向后,直到找到学生姓名为输入值的那个结构体;III 将该学生结构体成员的各信息依次输出按学生编号查询( void search1())I 定义指向结构体变量的指针;II 输入要查询的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III 将该学生结构体成员的各信息依次输出精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 27 页 - - - - - - - - - - 3 调试分析错误显示及分析 a

14、. 编译时出现错误,回看程序发现漏掉符号等细节错误。 b. 运行时,界面格式与最初的设想不一致,通过重新编排,符号的增减及一进,最终达到理想界面。 c. 运行时,输入一个信息后, 第二次输入数据时很难将输入光标移到想要的位子,通过按键的摸索,最终了解了输入要领。 d. 对输入的信息查询时没有记录,发现文件读取错误。修改完善1、开始程序执行时, 各项大的功能每一次只能执行一个就自动跳出,为 了 使 程序 保 持 连续 性 和 更好 的 实 用性 , 使 用 了start,goto start,break,sysyem(“clx ”)等实现了逐渐免于更功能的循环。2、对于学生信息中已选课程的存储,

15、一直不知如何存储。后用实型数组,并进行循环,依次读入课程的编号,将课程编号进行存储。4 用户使用说明适用范围适用于管理者将课程信息和学生信息录入到系统,并可以将课程信息和学生信息进行保存, 日后如果有需要在对课程和学生信息进行增加可删除。 同时也适用于学生在登录自己的学号后,浏览课程信息选课,进行选课和退课操作。使用方法首先管理者将现有的课程信息(包括课程编号、课程名称、使用专业、课程类型、学时、学分、教师、已选人数(初始为零)和学精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 27 页 -

16、- - - - - - - - - 生信息(包括学生学号、姓名、已选学时、已选课程编号)录入到系统,并将其进行文件保存,以便以后使用。若要修改(增加和删除)课程信息和学生信息, 需要先从文件中录入已存信息,再输入编号对其查找并进行相关操作。 学生选课需要先输入自己的学号,若没有此学号的学生信息, 需先录入此人信息在进行选课和退课。在选课和退课前,可以先浏览课程信息,并记住要选课程的编号,以便选课时需要。此外还可以学号和姓名对学生信息进行查询。5 测试结果运行结果主界面精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - -

17、- -第 9 页,共 27 页 - - - - - - - - - - 录入课程信息课程信息浏览精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 27 页 - - - - - - - - - - 课程信息存储录入学生信息精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 27 页 - - - - - - - - - - 学生信息浏览精品资料 - - - 欢迎下载 - - - - - - - -

18、- - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 27 页 - - - - - - - - - - 学生信息存储学生选课精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 27 页 - - - - - - - - - - 选课后学生信息浏览选课后课程信息浏览精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 27 页 - - - - - - - - - - 课

19、程信息管理精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 27 页 - - - - - - - - - - 学生信息管理精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 27 页 - - - - - - - - - - 学生信息查找退出系统精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 2

20、7 页 - - - - - - - - - - 7 附录课设小结通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力, 巩固了专业知识, 对程序的模块化观念也又模糊逐渐变的清晰了。在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识, 不停地修改与调试, 我终于完成了这段程序。在调试过程中, 我认识到了 C语言的灵活性与严谨性, 同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知

21、识学得更扎实、更全面。存在不足精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共 27 页 - - - - - - - - - - 1、系统不够强大,有点脆弱。2、当输入信息(课程信息,学生信息)后,不能自动保存,需手动保存。对于以上不足,以后将进行改进,以确保达到更好。详细代码#include#include#includeint N1,N2;struct studentint num2; char name220; int nelenum50; 键盘录入 );printf(n2.从文件录入

22、);printf(n3.返回主菜单 n);printf(请选择 1-3:);scanf(%d,&i);switch(i)case 1: zhang(); break;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 27 页 - - - - - - - - - - case 2:zhang1();break; case 3:break; void insert(struct course *incourse) 加课程 n); printf(2.删除课程 n); printf(3.返回n); p

23、rintf(请输入 1-3:n); scanf(%d,&i); switch(i) case 1:p1=(struct course *)malloc(sizeof(struct course);printf(课程编号 t课程名称 t主修t课程性质 t学分t课时t 教师n);scanf(%d%s%s%s%d%d%s,&p1-num1,p1-name1,p1-major,p1-type,&p1-credit,&p1-period,p1-teacher);p1-people=0;insert(p1); break;case 2:printf(请输入您要删除的课程编号:n);scanf(%d,&nu

24、m1);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 20 页,共 27 页 - - - - - - - - - - delc(num1); break;case 3:break;void putin(void) 键盘录入 n);printf(2.从文件录入 n);printf(3.返回主菜单 n);printf(请输入 1-3:n);scanf(%d,&i);switch(i)case 1:putin(); break;case 2:putin2(); break;case 3:break;void

25、inserts(struct student * incouse) 加学生信息n);printf(2.删除学生信息 n);printf(3.返回主菜单 n);printf(请选择 1-3:n);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 21 页,共 27 页 - - - - - - - - - - scanf(%d,&i);switch(i)case 1:p1=(struct student *)malloc(sizeof(struct student);p1-nelen=0;p1-nelenum0

26、=0;printf(numtnamen);scanf(%d%s,&p1-num2,p1-name2);inserts(p1);break;case 2:printf(请输入您要删除的学生编号:n);scanf(%d,&num2);dels(num2); break;case 3:break;void elect() 课n);printf(2.退课n);printf(3.返回主菜单 n);printf(请输入 1-3:n);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 22 页,共 27 页 - - -

27、- - - - - - - scanf(%d,&i);switch(i)case 1:elect();break;case 2:back();break;case 3:break;void listc() 程信息存储 n);printf(2.学生信息存储 tn);printf(3.返回主菜单 n);printf(请输入 1-3n);scanf(%d,&i);switch(i)case(1):intoc();break;case(2):intos();break;case(3):break;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - -

28、 - - - - - - -第 23 页,共 27 页 - - - - - - - - - - void store() 程信息浏览 n);printf(2.学生信息浏览 n);printf(3.信息存储 n);printf(4.返回主菜单 n);printf(请输入 1-4:n);scanf(%d,&i);switch(i)case(1):listc();break;case(2):lists();break;case(3):into();break;case(4):break;void search1() 学号查找 );printf(n2.按姓名查找 );printf(n3.返回主菜单 )

29、;printf(n请输入 1-3:);scanf(%d,&i);switch(i)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 24 页,共 27 页 - - - - - - - - - - case 1:search1();break;case 2:search2();break;case 3:break;void main() 入课程信息 n);printf(ttt2.课程信息管理 n);printf(ttt3.录入学生信息 n);printf(ttt4.学生信息管理 n);printf(ttt5.

30、学生选课 n);printf(ttt6.信息存储与浏览 n);printf(ttt7.查找学生信息 n);printf(ttt8.退出系统 );printf(tttn请输入 1-8:n);scanf(%d,&i);if(scanf(%d,&i) if(i8) printf(请重新输入 :n);goto start;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 25 页,共 27 页 - - - - - - - - - - if(scanf(%c,&m)printf(输入错误,请重新输入 :n);goto

31、 start;switch(i)case 1:system(cls); load(); goto start;break;case 2:system(cls);managementc();goto start;break;case 3:system(cls);input();goto start;break;case 4:system(cls);managements();goto start;break;case 5:system(cls);elective();goto start;break;case 6:system(cls);store();goto start;break;case 7:system(cls);search();goto start;break;case 8:system(cls);printf(Thank you!nnBye-Bye!n);精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 26 页,共 27 页 - - - - - - - - - - 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 27 页,共 27 页 - - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁