ImageVerifierCode 换一换
格式:DOC , 页数:43 ,大小:853KB ,
资源ID:4518804      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4518804.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(C语言课程设计课程管理系统实验报告.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

1、课程设计 计算机学院14060307班 课程设计实验报告课程管理系统计算机科学与工程学院14060307班董永博 14060307102陈佳兴 14060307101田晨光 14060307113赵炳舒 14060307121欧 静 14060307126 目录题目-3分析过程与思路-3算法-5函数模块介绍-9源程序-10运行结果-36课程设计总结-42一 题目课程管理系统二 分析过程与思路课程管理系统首先要能够分别实现课程信息的增加、删除、查询、修改。为了增加程序的实用性,应当能够将输入的课程信息通过存文件的方式将课程信息存入硬盘。而使用系统的可能是学生和管理员两类,因此要实现根据登录类型来

2、开放应有的功能。由于课程信息包含很多成员,例如课程编码、课程名等。因此应该用链表对信息进行记录,由于不清楚课程总数,因此需要用动态链表。动态链表的使用需要声明合适的结构体,数据域中应包含课程所包含的各个成员、指针域用来指向下一个结点。动态链表的建立需要用到malloc函数。对已经建立的链表需要存入文件,需要用到fwrite、fread、feof等文件处理函数,保存文件要多次用到,因此应该独立做一个函数。删除函数要用到诸如free函数,为了防止删除的结点为首结点,删除后找不到头结点,因此删除函数应该是一个指针函数,用以返回删除后的新的头结点。登录函数要返回一个值用以在其他函数中判断登录类型,以便

3、针对用户开放相应的功能。课程管理系统登录key学生登录mainpage()管理员登陆mainpage()查询serch()查询serch()输入inpt()添加add()删除dele()修改alter()程序功能结构示意图三 算法NY21开始输入登录类型oO=?学生登录管理员登录mainpage()key函数简单算法字符串相等1输入mm=?serch()退出inpt()结束O=?mainpage函数算法简单示意Save函数21!17&!2开辟新节点输入新节点数据输入zz=?inpt函数算法简单示意开辟新节点结点相连YNYNYNYserch函数查看方式n=0?打开文件文件为空开辟结点读取文件数据

4、已读完文件为空Mainpage函数输出一个结点完毕?查询方式结点遍历查找输出重新?操作?添加add修改alter删除deleSerch函数算法简单示意NY输入数据满足条件异常处理示意p1-前一结点p2-当前结点p1-next=p2删除首结点head=p1-nextfree(p2)return(head)free(p1)删除函数简单示意四 函数模块介绍void inpt();/输入函数:用以输入一系列数据,在文件中没有课程信息数据或者需要全部更新时使用该函数模块。void serch();/查询函数,用以查询已经存储的课程信息。并通过调用其他函数,来对课程信息进行一系列操作。void alter

5、(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);/添加,用以在原课程信息的基础上

6、添加新的课程信息。void mainpage();/主界面函数int key();/登录函数,通过返回值来判断用户类型,以开放不同的功能。五 源程序#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;/周日期(周几)

7、char period5;/节次char room6;/教室struct lesson *next;/结构体指针;void inpt();/输入函数void 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();

8、/主界面函数int key();/登录函数int main()/14060307113 田晨光o=key();/调用登录函数mainpage();/调用主界面 return 0;void mainpage()/主界面函数 14060307101董永博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); syst

9、em(CLS);/清除屏幕内容 switch(m)/通过switch语句转向用户选择的功能函数 case 1:inpt();break;/调用输入函数 case 2:serch();break;/调用查询函数 case 3:exit(0);break;/退出void inpt()/输入函数14060307113 田晨光if(o=1)system(CLS);/清屏printf(没有权限,请联系管理员!n);mainpage();int k=1,z,x,i;struct lesson *head;/声明一个lesson类型的结构体指针,作为头指针。struct lesson *p1,*p2;/声明

10、两个lesson类型的结构体指针,建造链表。p1=p2=(struct lesson *)malloc(len);/使两个结构体指针都指向第一个节点n=0;/n用来从零开始记录当前为第几节点 while(k=1)/循环输入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(

11、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)icrdt)4|x=1);printf(请输入学时(两位整数 例:32)n);dox=0;scanf(%s,&p1-hour);if(strlen(p1-hour)3) print;elsefor(i=0;ihour)i57|(p1-hour)ihour)3|x=

12、1);printf(请输入学期(以为整数 例:2)n);dox=0;scanf(%s,&p1-term);if(strlen(p1-term)2) print;elsefor(i=0;iterm)i57|(p1-term)iterm)2|x=1);printf(请输入周次(例1-17)n);doscanf(%s,&p1-week);if(strlen(p1-week)5) print; while(strlen(p1-week)5); printf(请输入日期(三位周日期 例:mon、sat)n);doscanf(%s,&p1-date);if(strlen(p1-date)3) print;

13、 while(strlen(p1-date)3); printf(请输入节次(例:5-6)n);doscanf(%s,&p1-period);if(strlen(p1-period)5) print; while(strlen(p1-period)5);printf(请输入教室(例:2-201)n);doscanf(%s,&p1-room);if(strlen(p1-room)6) print; while(strlen(p1-room)6);if(n=1) head=p1;/如果n=1,(即当前为第一个节点),就使head指向头结点,作为头指针。system(CLS);/输入完毕,清屏pri

14、ntf(*n);/输出提示信息printf(* 输入1继续添加 *n); printf(* 输入2保存并退出 *n); printf(*n);doscanf(%d,&z);if(z2) print;/该循环体使用户输入选项代码并判断代码是否合理while(z2); if(z=1)/如果用户选择继续添加,进入该分支p1=(struct lesson *)malloc(len);/利用malloc函数,开辟一个新节点 (p2-next)=p1;/令前一个结构体的next指针指向后一个节点,将两个结构体链接起来p2=p1;/令另一个指针也指向下一个节点,便于下次使用else/如果用户选择保存并退出选

15、项,进入该分支。 (p2-next)=NULL;/令最后一个节点的next指针指向NULL; break;/跳出循环n=0-1;save(n,head);/调用save函数,将已经建立的链表存入文件mainpage();/返回主界面void save(int m,lesson *p)/save函数,将数据保存到硬盘的文件中 14060307126欧静FILE *fp;/声明一个文件指针lesson *p1=p;/声明一个结构体指针fp=fopen(D:data.txt,wb);/以写为目的打开D:data.txt路径下的二进制文件while(p-next!=NULL)/当指针p指向的节点中的n

16、ext指针不为空时(证明没有保存完毕),进入循环体 if(fwrite(p,len,1,fp)!=1) printf(保存文件失败!n);/用fwrite函数的返回值来反映是否成功保存每一个节点 else printf(保存文件成功!n);p=p1-next;/使结构体指针指向下一个节点;p1=p;if(p-next=NULL&n=-1)if(fwrite(p,len,1,fp)!=1) printf(保存文件失败!n);/用fwrite函数的返回值来反映是否成功保存每一个节点 else printf(保存文件成功!n); fclose(fp);/关闭文件void serch()/查询函数(包

17、含节点的删除与修改)14060307102 董永博int i,k,m,j=1;/声明一些需要用到的变量char p10;/声明一个字符型数组,用以存放用户输入的需要查询的相关信息struct lesson *q1,*q2,*head=NULL;/声明读取链表所需要的三个结构体指针FILE *fp;/声明一个文件指针do fp=fopen(D:data.txt,rb);/以读取为目的打开D:data.txt路径下的二进制文件 if(ferror(fp) clearerr(fp);/如果打开文件错误,立即清除错误后产生的标记,便于文件下次正常打开 if(fp=NULL)/如果文件指针指向NULL(

18、代表该文件不存在)则进入该分支 printf(无法打开文件!n); exit(0); q1=q2=(struct lesson *)malloc(len);/文件打开后,在内存中开辟空间,存放文件读取到的数据 fread(q1,len,1,fp);/读取第一个节点 if(feof(fp)/用feof函数的返回值来判断该文件是否为空文件 printf(没有存储课程信息!n); mainpage(); q2=q1;/两个指针同时指向第一个节点 m=0;/将m 清零,便于接下来记录节点总数 while(!feof(fp)/利用feof函数的返回值来判断文件是否读取完毕 m=m+1;/记录节点数 if

19、(m=1)head=q1;/如果为第一个节点,使head指针指向该节点 q1=(struct lesson *)malloc(len);/继续开辟下一个节点 q2-next=q1;/将新节点与上一个节点链接起来 q2=q1; fread(q1,len,1,fp);/读取文件内容,存入新节点 q2-next=NULL;/文件读取完毕后,令链表的最后一个节点的next指针指向NULL q1=q2=head;/两个结构体指针重新指向头结点printf(*n);/输出提示信息 printf(* 输入0查看全部课程 *n); printf(* 输入1按课程名查询 *n); printf(* 输入2按课程

20、编码查询 *n); printf(* 输入3按周日期查询 *n); printf(* 输入4按起始周查询 *n);printf(* 输入5返回主界面 *n); printf(*nn); do scanf(%d,&k); if(k5) print; while(k5); switch(k) case 0:/当用户选择查看全部课程信息时,进入该分支printf(课程编码 课程名 学分 学时 学期 周次 日期 节次 教室n); for(i=1;inext;/指针指向下一个结点 q2=q1;q2-next=NULL; break; case 1:/当用户选择按课程名查询时,进入该分支 printf(请

21、输入课程名!(1-10位字符串 例:math)n); do scanf(%s,&p); if(strlen(q1-proj)10) print; while(strlen(q1-proj)10);/输入要查询的课程名 temp=0;/将temp归零,便于记录所查询到的节点为第几节点,便于下面修改函数和删除函数的查找 do if(!strcmp(q2-proj,p)/通过字符串比较来查找需要查找的信息 temp=temp+1;/记录节点数 printf(查询到%s相关的课程信息为:nn,p);printf(课程编码 课程名 学分 学时 学期 周次 日期 节次 教室n); output(q2);/

22、调用输出函数 break;/跳出循环 else/如果内容与用户输入字符串不相等,查找下一个节点j=j+1; q1=q2-next; q2=q1; while(q2-next!=NULL); if(temp=0) printf(未查询到相关课程!n);/如果temp等于零,则代表没有查询到相关信息elseprintf(*n);/如果查询到相关课程 printf(* 输入0修改课程信息 *n); printf(* 输入1删除课程信息 *n);printf(* 输入2添加课程信息 *n);printf(*n);do scanf(%d,&k); if(k2) print; while(k2);if(o

23、=1) printf(对不起,您没有权限!请联系管理员!n);/如果学生登录,由于key函数返回值为1,就不开放删除修改功能else/如果是管理员登录,则可以使用删除,修改,添加等功能switch(k)/通过管理员的选择代码,分别调用不同的函数 case 0:alter(m,j,head);break;/调用修改函数,将查询到的课程的位置,链表的总节点数。链表的头指针传给函数 case 1:head=dele(m,j,head);break;/调用删除函数,将返回的指针作为下一次打开的头指针 case 2:add(m,head);break;/调用添加函数,在链表的后面继续添加 break;

24、case 2: printf(请输入课程编码(1-4位字符串 例:001)n);/输入数据 do scanf(%s,&p); if(strlen(q1-num)4) print; while(strlen(q1-num)4); temp=0; do if(!strcmp(q2-num,p) temp=temp+1; printf(查询到编码为%s的课程信息为:nn,p);printf(课程编码 课程名 学分 学时 学期 周次 日期 节次 教室n); output(q2); break; elsej=j+1; q1=q2-next; q2=q1; while(q2-next!=NULL); if

25、(temp=0) printf(未查询到相关课程!n);elseprintf(*n); printf(* 输入0修改课程信息 *n); printf(* 输入1删除课程信息 *n); printf(* 输入2添加课程信息 *n);printf(*n);do scanf(%d,&k); if(k2) print; while(k2);if(o=1) printf(对不起,您没有权限!请联系管理员!n);elseswitch(k) case 0:alter(m,j,head);break; case 1:head=dele(m,j,head);break; case 2:add(m,head);b

26、reak; break; case 3: printf(请输入周日期!(三位周日期 例:mon、sat)n); do scanf(%s,&p); if(strlen(q1-date)3) print; while(strlen(q1-date)3); temp=0; do if(!strcmp(q2-date,p)temp=temp+1; printf(查询到%s的课程信息为:nn,p);printf(课程编码 课程名 学分 学时 学期 周次 日期 节次 教室n); output(q2); break; elsej=j+1; q1=q2-next; q2=q1; while(q2-next!=

27、NULL); if(temp=0) printf(未查询到相关课程!nn);elseprintf(*n); printf(* 输入0修改课程信息 *n); printf(* 输入1删除课程信息 *n);printf(* 输入2添加课程信息 *n);printf(*n);do scanf(%d,&k); if(k2) print; while(k2);if(o=1) printf(对不起,您没有权限!请联系管理员!n);elseswitch(k) case 0:alter(m,j,head);break; case 1:head=dele(m,j,head);break; case 2:add(

28、m,head);break; break; case 4: printf(请输入起始周(例1-17)!n); do scanf(%s,&p); if(strlen(q1-week)5) print; while(strlen(q1-week)5); temp=0; do if(!strcmp(q2-week,p)temp=temp+1; printf(查询到%s周的课程信息为:nn,p);printf(课程编码 课程名 学分 学时 学期 周次 日期 节次 教室n); output(q2); break; elsej=j+1; q1=q2-next; q2=q1; while(q2-next!=NULL); if(temp=0) printf(未查询到相关课程!n);elseprintf(*n); printf(* 输入0修改课程信息 *n); printf(* 输入1删除课程信息 *n);

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服