欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    c语言课程设计实验室值班系统实验报告.docx

    • 资源ID:11670893       资源大小:897.05KB        全文页数:20页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言课程设计实验室值班系统实验报告.docx

    1、c语言课程设计实验室值班系统实验报告一需求分析(1)用C语言实现系统;(2)利用结构体数组实现值班人员等信息的数据结构设计;(3)系统具有增加,查询,插入,排序等基本功能;(4)系统的各个功能模块要求用函数的形式实现;(5)将各类信息存在文件中。二总体设计1.根据需求分析出所用的结构体2.对功能进行清晰的认识,功能与功能之间有没有关联3.对程序的整体框架够一个大概认识4.具体实现各部分功能5.设计与用户的交互界面,在main中实现对功能模块的调用6.流程图如下:三详细设计1.void set_color(int color)功能:设置颜色,使得输出界面的不同信息有辨识度,是通过调用window

    2、s库函数实现的入口参数:颜色代号2.int txt_number(char *txt)功能:读取文件行数,便于创建链表时制循环次数,是通过读取文件中的总空格数,再除以每一行的空格数实现入口参数:文件名称返回值:文件行数3.void changeTxt(worker*head)功能:重新把链表数据读入文件,生成新文件入口参数:值班人员链表4.void creat(worker*head)功能:从文件中读取数据创建人员链表入口参数:值班人员链表5.void printList(worker*head)功能:输出值班人员信息入口参数:值班人员链表6.void delet_member(worker*

    3、head)功能:删除值班信息入口参数:值班人员链表7.void change_member(worker*head)功能:编辑/改变值班信息入口参数:值班人员链表8.worker* selectSort(worker *head)功能:对链表进行选择排序,因为值班人员链表带头结点,所以将头结点后面的余下链表部分单独做了一个排序,然后将该排序后链表返回,在paixv中作为值班人员链表头结点的后面的链表入口参数:值班人员链表返回值:值班人员链表9.void paixv(worker*head)功能:排序,和selectSort(head) 搭配使用入口参数:值班人员链表10.void add(wo

    4、rker*head)功能:添加值班信息入口参数:值班人员链表11.void show(worker*head)功能:显示全部请假人员入口参数:值班人员链表12.int main()各函数调用关系:main调用函数 5,6,7,9,10,11函数9调用函数8函数4调用函数2函数1,3被多个函数所调用,因为功能需要多次使用四程序运行结果测试与分析1)显示实验室值班人员姓名、编号、所属实验内容、联系电话等信息;2)查询人员方式一:通过编号查询方式二:3)值班信息编辑或修改(实验内容,请假等)4)删除信息删除前删除后5)添加工作人员6)根据工作量排序7)对值班人员进行登记(查看全部请假人员)8)功能循

    5、环操作五结论与心得学会了指针的使用,尽量以后把这一块搞懂另外几个心得:1.在用指针进行操作时,一定要注意是否为NULL,否则会运行出错,即while(p-xxx), 没有while(p&p-xxx) 安全。2.链表的最后一个节点一定要将next置为NULL,否则会造成各种问题,出现死循环等等3.注意带头结点和不带头结点的链表的区别4.注意:数组下标一定不要越界5.设计交互界面时候,尽量美观,使得操作简易通过C语言课设的制作,我对C语言的兴趣更加浓厚,这是不小的收获!附录#include #include #include #include typedef struct worker char

    6、name9;/ 姓名 char number5; / 编号 char telephone12; / 电话 char lab30; / 实验内容 int flag; / 是否请假,1表示请假 int workload; / 工作量 struct worker*next;worker;void set_color(int color) / 设置颜色 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);int txt_number(char *txt) /读取不同菜单文件行数,便于创建菜单控制循环次数 FILE *fp; i

    7、nt num=0; char c; fp = fopen(txt,r); if(fp) while(c = fgetc(fp)!= EOF) if(c= ) num+; fclose(fp); return (num/5); / 除2是因为每行有5个空格void changeTxt(worker*head) / 重新把链表数据读入文件,生成新文件 FILE *ft = fopen(temp.txt,w); worker* p=head-next; while(p) fprintf(ft,%s %s %s %s %d %dn,p-name,p-number,p-telephone,p-lab,p

    8、-flag,p-workload); p=p-next; fclose(ft); remove(值班信息.txt); rename(temp.txt,值班信息.txt);void creat(worker*head) / 从文件中读取数据创建人员链表 if(head=NULL) printf(创建失败!); else FILE*fp=fopen(值班信息.txt,r); int num=txt_number(值班信息.txt); if(fp) worker*tail=head; for(int i=0;iname,node-number,node-telephone,node-lab,&nod

    9、e-flag,&node-workload); tail-next=node; tail=node; tail-next=NULL; fclose(fp); else printf(错误文件打不开!); void printList(worker*head) / 输出值班人员信息 worker*p=head-next; printf(nt-); printf(nt|序号|t|姓名|t|编号|t |电话|t |实验内容|t |请假|t |工作量|tn); printf(t-n); int i=1; while(p) printf(t|%dt%st%st %st%st%dt %dt|n,i+,p-

    10、name,p-number,p-telephone,p-lab,p-flag,p-workload); printf(t-n); p=p-next; void delet_member(worker*head) / 删除值班信息 printf(n请问您想按以下哪种删除?nnt1.编号删除nt2.姓名删除nn请输入您的选择: ); int key; set_color(0xc);scanf(%d,&key); set_color(0x7); if(key=2) printf(请输入您需要删除人员的姓名:); char people9; set_color(0xc);scanf(%s,people

    11、);set_color(0x7); worker*p=head-next; worker*pre=head; while(p&strcmp(people,p-name) pre=p; p=p-next; if(p=NULL) printf(nntttt删除失败!未找到该人员的信息。n); else pre-next=p-next; free(p); printf(nntttt删除成功!人员详细信息如下:nn); printList(head); changeTxt(head); else if(key=1) printf(请输入您需要删除人员的编号:); char number9; set_c

    12、olor(0xc);scanf(%s,number);set_color(0x7); worker*p=head-next; worker*pre=head; while(p&strcmp(number,p-number) pre=p; p=p-next; if(p=NULL) printf(nntttt删除失败!未找到该人员的信息。n); else pre-next=p-next; free(p); printf(nntttt删除成功!人员详细信息如下:nn); printList(head); changeTxt(head); else printf(nnttt-提示:您的输入有误!nn)

    13、; void change_member(worker*head) / 编辑值班信息 printf(n请问您想按以下哪种方式查找到该人员?nnt1.编号nt2.姓名nn请输入您的选择: ); int key; set_color(0xc);scanf(%d,&key); set_color(0x7); if(key=2) printf(请输入人员的姓名:); char people9; set_color(0xc);scanf(%s,people);set_color(0x7); worker*p=head-next; while(p&strcmp(people,p-name) p=p-nex

    14、t; if(p=NULL) printf(nntttt修改失败!未找到该人员的信息。n); else printf(nntttt查找成功!人员详细信息如下:nn); printf(t-); printf(nt|姓名|t|编号|t |电话|t |实验内容|tt|请假|t|工作量|tn); printf(t-n); printf(t|%st%st %st%st %dt %dt|n,p-name,p-number,p-telephone,p-lab,p-flag,p-workload); printf(t-nn); printf(请重新输入该人员的全部信息,空格分开:nn); set_color(0

    15、xc);scanf(%s%s%s%s%d%d,p-name,p-number,p-telephone,p-lab,&p-flag,&p-workload); set_color(0x7); printf(nntttt修改成功!人员详细信息如下:nn); printList(head); changeTxt(head); else if(key=1) printf(请输入人员的编号:); char number9; set_color(0xc);scanf(%s,number);set_color(0x7); worker*p=head-next; while(p&strcmp(number,p

    16、-number) p=p-next; if(p=NULL) printf(nntttt删除失败!未找到该人员的信息。n); else printf(nntttt查找成功!人员详细信息如下:nn); printf(t-); printf(nt|姓名|t|编号|t |电话|t |实验内容|tt|请假|t|工作量|tn); printf(t-n); printf(t|%st%st %st%st %dt %dt|n,p-name,p-number,p-telephone,p-lab,p-flag,p-workload); printf(t-nn); printf(请重新输入该人员的全部信息,空格分开:

    17、nn); set_color(0xc);scanf(%s%s%s%s%d%d,p-name,p-number,p-telephone,p-lab,&p-flag,&p-workload); set_color(0x7);printf(nntttt修改成功!人员详细信息如下:nn); printList(head); changeTxt(head); else printf(nnttt-提示:您的输入有误!nn); worker* selectSort(worker *head) / 链表选择排序 worker*p=head; worker*q=head; worker*pre,*max,*ma

    18、x_pre,*p_pre; worker*temp; pre=q; while(q) p=q; max=q; p_pre=pre; while(p) if(max-workloadp-workload) max_pre=p_pre; max=p; p_pre=p; p=p-next; if(q!=max) if(q-next=max) / 要交换的两节点是否相邻 q-next=max-next; max-next=q; else temp=q-next; q-next=max-next; max_pre-next=q; max-next=temp; if(q!=head ) /是否为第一个节点

    19、 pre-next=max; else head=max; pre=max; q=max-next; return head;void paixv(worker*head) / 根据编号排序 head-next=selectSort(head-next); printf(nntttt排序成功!人员详细信息如下:nn); printList(head);/changeTxt(head);void add(worker*head) / 添加值班信息 worker*p=(worker*)malloc(sizeof(worker); printf(请按提示输入新加入人员的全部信息,空格分开:nn);

    20、printf(名字 编号 电话 实验名称 是否请假 工作量 nn); set_color(0xc);scanf(%s%s%s%s%d%d,p-name,p-number,p-telephone,p-lab,&p-flag,&p-workload); set_color(0x7);worker*q=head-next; while(q-next) q=q-next; q-next=p; p-next=NULL; printf(nntttt修改成功!人员详细信息如下:nn); printList(head); changeTxt(head);void show(worker*head) / 显示全

    21、部请假人员 worker*p=head-next; printf(nn今日全部请假人员如下:n); printf(nt|序号|t|姓名|t|编号|t |电话|t |实验内容|t |n); printf(t-n); int i=1; while(p) if(p-flag) printf(t|%dt%st%st %st%st|n,i+,p-name,p-number,p-telephone,p-lab); printf(t-n); p=p-next; int main() int key; worker*head=(worker*)malloc(sizeof(worker); head-next=

    22、NULL; printf(nt*欢迎进入值班信息系统*nn); printf(nt-全部值班信息-n); creat(head); printList(head); set_color(0x2); printf(n请问您想进行何种操作:nn); set_color(0x7); printf(t1.值班信息编辑(请假)nt2.删除人员nt3.添加人员nt4.根据工作量排序nt5.查看全部请假人员nt6.退出系统); printf(nn请输入您的选择: ); set_color(0xc);scanf(%d,&key); set_color(0x7); while(key!=6) switch(ke

    23、y) case 1: change_member(head); break; case 2: delet_member(head); break; case 3: add(head); break; case 4: paixv(head); break; case 5: show(head); break; set_color(0x2); printf(n请问您想进行何种操作:nn); set_color(0x7); printf(t1.值班信息编辑(请假)nt2.删除人员nt3.添加人员nt4.根据工作量排序nt5.查看全部请假人员nt6.退出系统); printf(nn请输入您的选择: ); set_color(0xc);scanf(%d,&key); set_color(0x7); return 0;


    注意事项

    本文(c语言课程设计实验室值班系统实验报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开