2022年C语言学生管理系统 .pdf
《2022年C语言学生管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言学生管理系统 .pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 清华大学课题名称: C语言学生管理系统姓名: 李键学号: 20091246 专业班级: 计算机 0903 班系 (院) :信息科学与工程学院指导老师: 王刚设计时间: 2010-2011 第二学期名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 35 页 - - - - - - - - - 2 学生选课系统1 需求分析1.1 任务要求制做学生选课系统,共包括课程信息和学生信息两部分。课程信息包括:课程编码、课程名称、适用专业、课程类型(必修、限选、必选、实践、学习)、学
2、分、学时、主讲教师等。学生信息管理,学生选课管理(学生选课学分总数有一定范围),学生可以对课程进行查询、浏览,选完课后可以退选、重选,并可以按学号、姓名进行查询和统计。要求: 1.源文件采用多文件的工程结构。2.数据储存采用文件形式。3.标准的 C 输入输出。4.功能完善,适当的注释。5.关于文件的内容要自学。1.2 系统功能需求分析1.为存储课程信息, 需要定义一个结构体类型 ,成员包括课程编码、 课程名称、 适用专业、课程类型、学分、学时、主讲教师,所选人数等等,并建立链表,定义该结构体类型的指针,用于指向各节点;2.为存储学生信息,需要定义一个结构体类型,成员包括学生编码、学生姓名、所选
3、课程编码、所选课程学分和等等,并建立链表,定义该结构体类型的指针,用于指向各节点;3.对于课程信息和学生信息, 可以选择从键盘输入也可选择从文件中打开原来存盘的信息,并对他们分别建立添加、删除、浏览、查询等功能的子函数,完成相应的功能,对程序实现模块化。 这其中要用到对链表的删除、 插入、增加等知识。删除包括课程删除和学生信息删除, 删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的课程编号或学生学号,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。查询功能要设置按照学生姓名、学生编号等多种方式。4.学生选课是要先输入自己的学号,如果在已
4、经输入的学生信息中找不到此学号,则提示需要先输入自己的信息。如找到了自己的学号,则可以进行选课。在选课之前要先对所有的课程信息进行浏览。选课有一定的学分限制, 超过相应的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 35 页 - - - - - - - - - 3 课程信息从文件录入从键盘录入增加删除学生信息从文件录入从键盘录入增加删除选课退课信息存储学分(这里设置的是 10 个学分) ,系统就会显示可以选满的信息。此系统还可以实现删除所选课程的功能,设计思路与选课功能
5、相似。5为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。6. 实现易于使用者理解和使用的友好界面。2 概要设计2.1 系统总体设计框架对程序进行模块化可以使整个程序清晰明了。对课程信息和学生信息建立从文件中输入、从键盘中输入、添加、删除、查询和浏览的功能,其各个子函数中运用链表储存数据。选课管理建立学生选课、推选、查询、浏览的功能,其各个子函数中运用链表储存数据。从主函数开始执行, 依次调用各个子函数, 并运用文件的相关知识将信息进行存盘。2.2 系统功能模块图学生选课系统名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
6、- - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 35 页 - - - - - - - - - 4 3 详细设计3.1 功能模块设计思路主要功能模块的算法设计思路如下:1、课程信息录入函数( void load() )从键盘录入( void zhang( ))I 定义指向结构体变量的指针;II 从头指针指向的结构体开始依次录入结构体中所包含的各个成员;III 直到输入的结构体成员的编号为0,录入结束从文件录入( void zhang1( ))I 分别定义指向结构体变量的指针和指向文件的指针;II 输入文件的路径,打开文件,若没有找到则有提示;III 将文件中
7、的信息依次读出,最后结构体的指针为2、课程信息管理( void managementc() )增加课程信息( void insert(struct course *incourse) )I 定义指向结构体变量的指针;II 输入要增加的课程编号,从头指针指向的结构体依次向后,直到链表的最后;III 输入课程结构体各个成员的信息,使最后一个结构体指针值为删除课程信息( void delc(int num1))I 定义指向结构体变量的指针;II 输入要增加的课程编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;III 将其删除,其前一个的结构体指针指向其后一个结构体3、学生信
8、息录入函数( void input() )从键盘录入( void putin( ))I 定义指向结构体变量的指针;II 从头指针指向的结构体开始依次录入结构体中所包含的各个成员;III 直到输入的结构体成员的编号为0,录入结束从文件录入( void putin2( ))I 分别定义指向结构体变量的指针和指向文件的指针;II 输入文件的路径,打开文件,若没有找到则有提示;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 35 页 - - - - - - - - - 5 III
9、 将文件中的信息依次读出,最后结构体的指针为4、学生信息管理( void managements() )增加学生信息( void inserts(struct student * incouse) )I 定义指向结构体变量的指针;II 输入要增加的学生编号,从头指针指向的结构体依次向后,直到链表的最后;III 输入学生结构体各个成员的信息,使最后一个结构体指针值为删除学生信息( void dels(int num2))I 定义指向结构体变量的指针;II 输入要增加的学生编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III 将其删除,其前一个的结构体指针指向其后一个结
10、构体5、学生选课管理( void elective())学生选课( void elect())I 分别定义指向课程和学生结构体变量的指针;II 输入要选课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;III 输入要选课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;IV 在学生结构体对应的所选课程编号中更改信息,所选学分中加上相应分值,课程结构体所选人数中相应加一学生退课( void back())I 分别定义指向课程和学生结构体变量的指针;II 输入要退课的学生的编号,从头指针指向的结构体依次向后
11、,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;III 输入要退课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;IV 在学生结构体对应的所选课程编号中更改信息,所选学分中减去相应分值,课程结构体所选人数中相应减一6、信息浏览和保存( void into())课程信息浏览( void listc())I 定义指向结构体变量的指针;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 35 页 - - - - - - - - -
12、 6 II 从头指针指向的结构体依次向后,将课程结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL 学生信息浏览( void lists())I 定义指向结构体变量的指针;II 从头指针指向的结构体依次向后,将学生结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL 课程信息保存( void intoc())I 定义指向课程结构体变量的指针和指向文件的指针;II 输入保存路径,如果没有保存则有显示;III 将课程信息写入文件中;IV 将课程信息进行保存,关闭文件学生信息保存( void intos())I 定义指向学生结构体变量的指针和指向文件的指针;II 输入保存路
13、径,如果没有保存则有显示;III 将学生信息写入文件中;IV 将学生信息进行保存,关闭文件7、学生信息查询( void store())按学生姓名查询( void search2() )I 定义指向结构体变量的指针;II 输入要查询的学生的姓名,从头指针指向的结构体依次向后,直到找到学生姓名为输入值的那个结构体;III 将该学生结构体成员的各信息依次输出按学生编号查询( void search1() )I 定义指向结构体变量的指针;II 输入要查询的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;III 将该学生结构体成员的各信息依次输出3 调试分析3.1 错误
14、显示及分析a.编译时出现错误,回看程序发现漏掉符号等细节错误。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 35 页 - - - - - - - - - 7 b.运行时,界面格式与最初的设想不一致, 通过重新编排, 符号的增减及一进,最终达到理想界面。c.运行时,输入一个信息后,第二次输入数据时很难将输入光标移到想要的位子,通过按键的摸索,最终了解了输入要领。d.对输入的信息查询时没有记录,发现文件读取错误。3.2 修改完善1、开始程序执行时,各项大的功能每一次只能执行
15、一个就自动跳出,为了使程序保持连续性和更好的实用性,使用了start,goto start,break,sysyem( “ clx” )等实现了逐渐免于更功能的循环。2、对于学生信息中已选课程的存储,一直不知如何存储。后用实型数组,并进行循环,依次读入课程的编号,将课程编号进行存储。4 用户使用说明4.1 适用范围适用于管理者将课程信息和学生信息录入到系统,并可以将课程信息和学生信息进行保存, 日后如果有需要在对课程和学生信息进行增加可删除。同时也适用于学生在登录自己的学号后,浏览课程信息选课,进行选课和退课操作。4.2 使用方法首先管理者将现有的课程信息(包括课程编号、课程名称、使用专业、课
16、程类型、学时、学分、教师、已选人数(初始为零) )和学生信息(包括学生学号、姓名、已选学时、已选课程编号)录入到系统,并将其进行文件保存,以便以后使用。若要修改(增加和删除)课程信息和学生信息,需要先从文件中录入已存信息,再输入编号对其查找并进行相关操作。学生选课需要先输入自己的学号,若没有此学号的学生信息, 需先录入此人信息在进行选课和退课。在选课和退课前,可以先浏览课程信息,并记住要选课程的编号,以便选课时需要。此外还可以学号和姓名对学生信息进行查询。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
17、- - - - 第 7 页,共 35 页 - - - - - - - - - 8 5 测试结果55.1运行结果主界面录入课程信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 35 页 - - - - - - - - - 9 课程信息浏览课程信息存储名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 35 页 - - - - - - - - - 10 录
18、入学生信息学生信息浏览名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 35 页 - - - - - - - - - 11 学生信息存储学生选课名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 35 页 - - - - - - - - - 12 选课后学生信息浏览选课后课程信息浏览名师资料总结 - - -精品资料欢迎下载 - - - - - - -
19、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 35 页 - - - - - - - - - 13 课程信息管理学生信息管理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 35 页 - - - - - - - - - 14 学生信息查找退出系统名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共
20、35 页 - - - - - - - - - 15 7 附录7.1 课设小结通过这次课程设计,我对 C语言有了更深刻的了解, 增强了程序的编写能力,巩固了专业知识, 对程序的模块化观念也又模糊逐渐变的清晰了。在程序的运行与调试过程中出现了很多错误, 通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。 在调试过程中, 我认识到了 C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自己的薄弱之处, 如对链表相关知识的欠缺, 文件运用的不熟练, 在以后的学习中我要集中精力、
21、端正态度,争取把知识学得更扎实、更全面。7.2 存在不足1、系统不够强大,有点脆弱。2、当输入信息(课程信息,学生信息)后,不能自动保存,需手动保存。对于以上不足,以后将进行改进,以确保达到更好。7.2 详细代码#include #include #include int N1,N2; struct student int num2; char name220; int nelenum50; /所选课程编号int nelen; /所选课程学分和struct student * next; ; struct course int num1; /课程编号char name120; 名师资料总结 -
22、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 35 页 - - - - - - - - - 16 char major20; char type20; int credit; int period; char teacher20; int people; /选此门课程的人数struct course *next; /结构体指针; struct course * head1; struct student * head2; void zhang() /从键盘录入课程信息 struct
23、course *p1,*p2; N1=0; p1=p2=(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; head1=NULL; while(p1-num1!=0) N1=N1+1; if(N1=1)head1=p1; else p2-next=p1;
24、p2=p1; p1=(struct course * )malloc(sizeof(struct course); scanf(%d%s%s%s%d%d%s,&p1-num1,p1-name1,p1-major,p1-type,&p1-credit,&p1-period,p1-teacher); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 35 页 - - - - - - - - - 17 p1-people=0; p2-next=NULL; void zhang1
25、() /从文件录入课程信息 FILE * fp; char filepath20; struct course *p1,*p2; N1=0; printf( 请输入您要读取的路径 :); getchar(); gets(filepath); if(fp=fopen(filepath,r)=NULL) printf( 找不到 %s 文件!n,filepath); exit(0); p1=p2=(struct course*)malloc(sizeof(struct course); fscanf(fp,%d%s%s%s%d%d%s%d,&p1-num1,p1-name1,p1-major,p1-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言学生管理系统 2022 语言 学生 管理 系统
限制150内