2022年沈阳中考满分作文C语言课程方案报告—实验设备管理系统 .pdf
个人资料整理仅限学习使用11 级信息工程系组员:向长伟杨文智C 语言实验管理系统程序设计一 课程设计的目的提高程序设计能力,检验课堂教案内容,掌握程序设计的基本方法和调试技能。二 课程设计正文1 课程设计题目的原文;实验设备信息包括:设备编号、设备种类如:微机打印机 扫描仪 等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。试设计一实验设备信息管理系统,使之能提供以下功能:1)能够完成对设备的录入和修改2)对设备进行分类统计3)设备的查询2 需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期 正常设备 Node *equip 。FILE *fp 。int flag 。Node *p,*q 。printf(tttt 设备管理系统n 。equip=(Node*malloc(sizeof(Node。equip-next=NULL。p=equip 。fp=fopen( 设备管理系统 ,wb+ 。q=(Node*malloc(sizeof(Node。if(fread(q,sizeof(Node,1,fp /将文件的内容放入接点中 q-next=NULL。p-next=q 。p=q。 /将该接点挂入链表中 fclose(fp 。 /关闭文件while(1 printf(*目录 *。printf(n1 添加记录 n 。printf(n2 修改记录 n 。printf(n3 显示记录 n 。printf(n4 统计分类记录 n 。printf(n0*-EXIT-*n。printf( 请输入你要操作的序号:。scanf(%d,&flag。switch(flag case 0: printf(n提示 :已经退出系统,ByeBye!n 。 break 。case 1: Add(equip。 break 。 /增加记录case 2: Modify(equip。 break 。/修改记录case 3: Disp(equip。 break 。/显示记录信息case 4: Tongji(equip。 break 。 /统计记录default: printf(n提示 :输入错误 !n 。 break 。 B 各功能模块设计1)输入模块Struct shebei 开始显示一系列功能选择输入 n,判断 m 是否是 0到 4?根据 n 值调用各功能模块函数结束N 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 7 页个人资料整理仅限学习使用 char ID10。 char name15。 char kind15。 char over15。 char yesno10。 char time10 。char price10 。 /添加记录 Node *p,*r,*s 。char id10 。 /先用于输入ID,也用于判断是否跳出循环r=equip 。s=equip-next 。 /使 s 为第一个有用的结点while(r-next!=NULL /这个循环的作用是使r 为最后一个有用的结点r=r-next 。 /将指针置于最末尾while(1 printf(提示 :输入 0 则返回主菜单 !n 。printf(n 请你输入设备ID 号:。scanf(%s,id。if(strcmp(id,0=0 break。p=(Node *malloc(sizeof(Node。 /申请空间strcpy(p-data.ID,id。printf(n 请输入设备名称:。scanf(%s,p-data.name。printf(n 请输入设备种类:。scanf(%s,p-data.kind。printf(n 请输入报废日期:。scanf(%s,&p-data.over。printf(n 请输入设备是否报废:。scanf(%s,&p-data.yesno。printf(n 请输入设备购买时间:。scanf(%s,&p-data.time。printf(n 请输入设备价格:。scanf(%s,&p-data.price。printf(提示 :已经完成一条记录的添加。n 。p-next=NULL。r-next=p 。 /这一步是必需的,将 p 与先前的链表连起来构成一条新链表r=p。 /也是必需的 .将 r 又重设为新链的最后一个有用结点 /修改 开始输入 ID 号,并将指针置于最末尾依次输入shebei 结构体内容,完成一条添加记录结束提示以完成一条记录添加精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 7 页个人资料整理仅限学习使用Node *p 。char find20 。if(!equip-next printf(n提示 :没有资料可以修改!n 。return 。 printf( 请输入要修改的设备ID 号:。scanf(%s,find。p=equip-next。while(p!=NULL if(strcmp(p-data.ID,find=0 /如果找到的话返回的是符合要求break 。p=p-next 。 if(p / 若找到 int x 。while(1 printf( 完成修改请输入0 否则输入任意数再进行修改:。scanf(%d,&x。if(x=0 break 。 printf( 请输入新设备号(原来是 %s :,p-data.ID。scanf(%s,p-data.ID。printf( 请输入新设备名称(原来是 %s :,p-data.name。scanf(%s,p-data.name。printf( 请输入新设备设备种类名称(原来是 %s :,p-data.kind。scanf(%s,p-data.kind。printf( 请输入新设备报废日期名称(原来是 %s :,p-data.over。scanf(%s,p-data.over。printf( 请输入新设备是否报废(原来是 %s :,p-data.yesno。scanf(%s,p-data.yesno。printf( 请输入新设备购买时间(原来是 %s :,p-data.kind。scanf(%s,p-data.time。printf( 请输入新设备价格(原来是 %s :,p-data.price。scanf(%s,p-data.price。printf(n提示 :该项记录资料已经成功修改!n 。 else printf(n提示 :你要修改的信息不存在!n 。 开始判断是否有内容可以修改请输入要修改的设备 ID 号结束N 完成修改输入0 否着输入任意数进行修改没 有 资 料 可 以 修改,跳出修改成功提示该项记录资料成功修改精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 7 页个人资料整理仅限学习使用/输出记录 Node *p 。p=equip-next。if(!p printf(n提示 :没有记录可以显示!n 。return 。 printf(tttt 显示结果 n 。printf( 设备号码设备名称 设备种类报废日期是否报废购买时间价格n 。while(p printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price。p=p-next 。 /统计 Node *p 。int sel 。int flag2=0,ha=0。 char find20 。p=equip-next。if(!equip-next /若链表为空 printf(n提示 :没有资料可以统计分类!n 。return 。 printf(提示 :n=0退出 n=1按设备号统计n=2按设备名称开始没有记录可以显示,跳出有记录者按要求输出结精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 7 页个人资料整理仅限学习使用统计 n 。scanf(%d,&sel。if(sel=1 printf(n 输入你要统计分类的设备号:。scanf(%s,find。while(p if(strcmp(p-data.ID,find=0 flag2+ 。 if(flag2=1&ha!=flag2 printf( 设备号码设备名称设备种类报废日期是否报废购买时间价格 n 。printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price。ha=flag2 。 else if(flag2haprintf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price。ha=flag2 。 p=p-next 。 if(flag2 printf(n*按设备号%s统计分类的有%d条记录:*nn,find,flag2。 else printf(n按设备号 %s 统计的结果为0 个nn,find 。 else if(sel=2 printf(n 输入你要统计分类的设备名称:。scanf(%s,find。while(p if(strcmp(p-data.name,find=0 flag2+ 。 if(flag2=1&ha!=flag2 printf( 设备号码设备名称设备种类报废日期是否报废购买时间价格 n 。printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 7 页个人资料整理仅限学习使用ha=flag2 。 else if(flag2haprintf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,p-data.name,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price。ha=flag2 。 p=p-next 。 if(flag2 printf(n*按设备名称%s统计的有%d条记录:*nn,find,flag2。 else printf(n按设备名称 %s 统计分类的结果为0 个nn,find 。 else if(sel=0 return。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 7 页