C语言课程设计课程管理系统实验报告

上传人:鲁** 文档编号:497577127 上传时间:2023-10-14 格式:DOC 页数:43 大小:746KB
返回 下载 相关 举报
C语言课程设计课程管理系统实验报告_第1页
第1页 / 共43页
C语言课程设计课程管理系统实验报告_第2页
第2页 / 共43页
C语言课程设计课程管理系统实验报告_第3页
第3页 / 共43页
C语言课程设计课程管理系统实验报告_第4页
第4页 / 共43页
C语言课程设计课程管理系统实验报告_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《C语言课程设计课程管理系统实验报告》由会员分享,可在线阅读,更多相关《C语言课程设计课程管理系统实验报告(43页珍藏版)》请在金锄头文库上搜索。

1、 课程设计实验报告课程管理系统计算机科学与工程学院14060307班董永博 陈佳兴 田晨光 赵炳舒 欧 静 目录题目-3分析过程与思路-3算法-5函数模块介绍-9源程序-10运行结果-36课程设计总结-42一 题目课程管理系统二 分析过程与思路课程管理系统首先要能够分别实现课程信息的增加、删除、查询、修改。为了增加程序的实用性,应当能够将输入的课程信息通过存文件的方式将课程信息存入硬盘。而使用系统的可能是学生和管理员两类,因此要实现根据登录类型来开放应有的功能。由于课程信息包含很多成员,例如课程编码、课程名等。因此应该用链表对信息进行记录,由于不清楚课程总数,因此需要用动态链表。动态链表的使用

2、需要声明合适的结构体,数据域中应包含课程所包含的各个成员、指针域用来指向下一个结点。动态链表的建立需要用到malloc函数。对已经建立的链表需要存入文件,需要用到fwrite、fread、feof等文件处理函数,保存文件要多次用到,因此应该独立做一个函数。删除函数要用到诸如free函数,为了防止删除的结点为首结点,删除后找不到头结点,因此删除函数应该是一个指针函数,用以返回删除后的新的头结点。登录函数要返回一个值用以在其他函数中判断登录类型,以便针对用户开放相应的功能。课程管理系统登录key学生登录mainpage()管理员登陆mainpage()查询serch()查询serch()输入inp

3、t()添加add()删除dele()修改alter()程序功能结构示意图三 算法NY21开始输入登录类型oO=?学生登录管理员登录mainpage()key函数简单算法字符串相等1输入mm=?serch()退出inpt()结束O=?mainpage函数算法简单示意Save函数21!17&!2开辟新节点输入新节点数据输入zz=?inpt函数算法简单示意开辟新节点结点相连YNYNYNYserch函数查看方式n=0?打开文件文件为空开辟结点读取文件数据已读完文件为空Mainpage函数输出一个结点完毕?查询方式结点遍历查找输出重新?操作?添加add修改alter删除deleSerch函数算法简单示意

4、NY输入数据满足条件异常处理示意p1-前一结点p2-当前结点p1-next=p2删除首结点head=p1-nextfree(p2)return(head)free(p1)删除函数简单示意四 函数模块介绍void inpt();/输入函数:用以输入一系列数据,在文件中没有课程信息数据或者需要全部更新时使用该函数模块。void serch();/查询函数,用以查询已经存储的课程信息。并通过调用其他函数,来对课程信息进行一系列操作。void alter(int all,int b,lesson *head);/修改函数,用以小规模的修改已经存储的课程信息。lesson *dele(int all,i

5、nt b,lesson *head);/删除函数,用以删除一些已经失效了的课程信息。通过返回新链表的头指针,以便对新链表进行一系列操作。void save(int n,lesson *p);/保存函数,用以将已经建立的链表存入硬盘,便于随时使用。void output(struct lesson *q2);/输出函数,用以将课程信息输出到屏幕上显示出来。void add(int all,lesson *head);/添加,用以在原课程信息的基础上添加新的课程信息。void mainpage();/主界面函数int key();/登录函数,通过返回值来判断用户类型,以开放不同的功能。五 源程序#

6、include#include#include#define len sizeof(struct lesson)#define print printf(输入数据有误,请重新输入!n);int n,temp,o;struct lessonchar num5;/课程编码char proj10;/课程名char crdt4;/学分char hour3;/学时char term2;/学期char week5;/周次char date5;/周日期(周几)char period5;/节次char room6;/教室struct lesson *next;/结构体指针;void inpt();/输入函数v

7、oid serch();/查询函数void alter(int all,int b,lesson *head);/修改函数lesson *dele(int all,int b,lesson *head);/删除函数void save(int n,lesson *p);/保存函数void output(struct lesson *q2);/输出函数void add(int all,lesson *head);/添加void mainpage();/主界面函数int key();/登录函数int main()/ 田晨光o=key();/调用登录函数mainpage();/调用主界面 return

8、 0;void mainpage()/主界面函数 董永博int m=1;while(m=1)printf(*n);/ printf(* 输入1增加课程 *n); printf(* 输入2查询课程 *n); printf(* 输入3退出程序 *n); printf(*nn);doscanf(%d,&m);if(m3) print;/该循环体使用户输入选项代码并判断代码是否合理while(m3); system(CLS);/清除屏幕内容 switch(m)/通过switch语句转向用户选择的功能函数 case 1:inpt();break;/调用输入函数 case 2:serch();break;

9、/调用查询函数 case 3:exit(0);break;/退出void inpt()/输入函数 田晨光if(o=1)system(CLS);/清屏printf(没有权限,请联系管理员!n);mainpage();int k=1,z,x,i;struct lesson *head;/声明一个lesson类型的结构体指针,作为头指针。struct lesson *p1,*p2;/声明两个lesson类型的结构体指针,建造链表。p1=p2=(struct lesson *)malloc(len);/使两个结构体指针都指向第一个节点n=0;/n用来从零开始记录当前为第几节点 while(k=1)/循

10、环输入n=n+1;/循环体每执行一次使n加1printf(请输入课程编码(1-4位字符串 例:001)n);/输入数据doscanf(%s,&p1-num);if(strlen(p1-num)4) print;while(strlen(p1-num)4);printf(请输入课程名(1-10位字符串 例:math)n);doscanf(%s,&p1-proj);if(strlen(p1-proj)10) print; while(strlen(p1-proj)10);printf(请输入学分(两位实数,整数部分1位,小数部分1位,例:1.5)n);dox=0;scanf(%s,&p1-crdt);if(strlen(p1-crdt)4) print;elsefor(i=0;icrdt)i57|(p1-crdt)i45)x=1;print;break;

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

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号