C语言课程设计设备管理系统.docx

上传人:b****3 文档编号:26861180 上传时间:2023-06-23 格式:DOCX 页数:25 大小:20.55KB
下载 相关 举报
C语言课程设计设备管理系统.docx_第1页
第1页 / 共25页
C语言课程设计设备管理系统.docx_第2页
第2页 / 共25页
C语言课程设计设备管理系统.docx_第3页
第3页 / 共25页
C语言课程设计设备管理系统.docx_第4页
第4页 / 共25页
C语言课程设计设备管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C语言课程设计设备管理系统.docx

《C语言课程设计设备管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计设备管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

C语言课程设计设备管理系统.docx

C语言课程设计设备管理系统

#include

#include

#include

#include

typedefstructdate

{

intyear;

intmonth;

intday;

}DATE;

typedefstructshebei{

intno;

charname[10];

DATEbuydate;

longprice;

charadress[30];

chardepartment[10];

structshebei*next;

}SB;

/*--------------------------------------函数定义-----------------------------------*/

voidintroduce();//自我介绍

voidmenu();//菜单

voidaddnode(SB*head);//插入结点

voidshow(SB*q);//显示一个节点信息

voidfind_no(SB*head);//根据设备号查设备信息

voidfind_depart(SB*head);//根据设备名称查询设备信息

voidmodify(SB*head);//根据设备号,修改设备信息

voiddel(SB*head);//根据设备号,删除设备信息

SB*numfind(SB*p);//给定设备号,返回该设备号的结点

voidread(SB*haed);//从文件中读取设备信息,并插入链表中

voidsave(SB*head);//将设备信息保存到文件中

voidcount_name(SB*head);//根据设备名称,统计一种设备的总数

voidcount_depart(SB*head);//根据部门名称,统计一个部门所用设备总数

voidshowall(SB*head);//显示所有设备信息

intdate_check(intyear,intmonth);

/*---------------------------------------主函数--------------------------------------*/

intmain()

{

intcom;

SBHead;//设定链表头结点,头结点中没有数据信息

charch,ch1;

system("colorf0");

introduce();

system("PAUSE");//暂停界面

system("CLS");

Head.next=NULL;

printf("导入数据库信息,");

read(&Head);

system("PAUSE");

while

(1)

{

system("CLS");//清屏,申明于stdlib.h,显示之前清除之前的显示

fflush(stdin);

menu();

printf("请输入您的选择<0~10>:

");

scanf("%d",&com);

ch1=getchar();//吸收回车符,以免以后输入字符出现意外

printf("\n");

switch(com)

{

case1:

read(&Head);break;

case2:

addnode(&Head);break;

case3:

find_no(&Head);break;

case4:

find_depart(&Head);break;

case5:

count_name(&Head);break;

case6:

count_depart(&Head);break;

case7:

showall(&Head);break;

case8:

modify(&Head);break;

case9:

del(&Head);break;

case10:

save(&Head);break;

case0:

{

printf("\n是否保存(Y/N)?

");

ch=getchar();

ch1=getchar();//吸收回车符

if((ch=='Y')||(ch=='y'))

save(&Head);

return0;

}break;

default:

printf("操作错误!

请重新输入...\n\n");

}

system("PAUSE");//暂停界面

}

}

/*--------------------------------------自我介绍-------------------------------------*/

//函数名称:

introduce

//函数功能:

显示自我介绍

//函数说明:

无参数,将我的信息显示在屏幕上

/*-----------------------------------------------------------------------------------*/

voidintroduce()

{

printf("\n\n\t------------------------自我介绍-----------------------\n");

printf("\t\t班级:

T1323-16\n");

printf("\t\t姓名:

王某某\n");

printf("\t\tQQ:

353579464\n");

printf("\t\t题目:

6.设备管理\n");

printf("\t\t题目要求:

\n");

printf("\t\t

(1)能从键盘输入设备信息\n");

printf("\t\t

(2)指定设备号,显示设备信息\n");

printf("\t\t(3)指定部门名称,显示该部门所使用的设备\n");

printf("\t\t(4)给定设备号,修改设备的信息\n");

printf("\t\t(5)给定设备号,删除设备信息\n");

printf("\t\t扩展功能:

\n");

printf("\t\t

(1)统计一种设备总数\n");

printf("\t\t

(2)统计某部门使用的设备总数\n");

printf("\t\t(3)从文件中读设备信息\n");

printf("\t\t(4)将设备信息保存到文件中\n");

printf("\t--------------------------------------------------------\n\n\t\t\t");

}

/*----------------------------------------菜单---------------------------------------*/

//函数名称:

menu

//函数功能:

显示菜单

//函数说明:

无参数,将菜单显示在屏幕上

/*-----------------------------------------------------------------------------------*/

voidmenu()

{

printf("**********************欢迎进入设备信息管理菜单***************************\n");

printf("*1.从文件中导入设备信息*\n");

printf("*2.输入设备信息*\n");

printf("*3.根据设备号查询设备信息*\n");

printf("*4.根据部门名称查询设备信息*\n");

printf("*5.统计某种设备的总数*\n");

printf("*6.统计某部门所用设备总数*\n");

printf("*7.显示所有设备信息*\n");

printf("*8.修改设备信息*\n");

printf("*9.删除设备*\n");

printf("*10.保存*\n");

printf("*0.退出*\n");

printf("*************************************************************************\n");

}

/*----------------------------------------addnode--------------------------------------------*/

//函数名称:

addnode

//函数功能:

建立链表

//函数说明:

参数为表头指针,创建新结点,输入设备信息,将新结点插入头结点后

/*-------------------------------------------------------------------------------------------*/

voidaddnode(SB*head)

{

SB*newp,*p;

intmaxday;

while

(1)

{

p=head->next;

newp=(SB*)malloc(sizeof(SB));//开辟一个新结点

printf("\n\n请输入设备号(输入0结束输入):

");

scanf("%d",&newp->no);//输入设备号

if(newp->no==0)break;//输入0代表结束,跳出while循环

for(;p!

=NULL;p=p->next)//循环查找设备号

{//这里花括号必须加,不然for语句没有结束,运行会出错

if(p->no==newp->no)break;//已查找到,跳出for循环

}

if(p!

=NULL){

printf("\n设备号已存在!

请重新输入...");

free(newp);//释放之前开辟的空间

continue;

}

printf("请输入设备名称:

");

scanf("%s",&newp->name);

printf("请输入购买日期(格式:

0000-00-00):

");

while

(1){//方便输入错误以后重新输入

scanf("%d-%d-%d",&newp->buydate.year,&newp->buydate.month,&newp->buydate.day);

maxday=date_check(newp->buydate.year,newp->buydate.month);

if(newp->buydate.month>12||newp->buydate.day>maxday)

printf("\n日期输入错误!

请重新输入:

");//月份超出1~12或者日期超出1~31则提示错误

elsebreak;//格式正确,跳出当前循环,继续输入其他信息

}

printf("请输入设备价格:

");

while

(1){//方便输入错误以后重新输入

scanf("%ld",&newp->price);

if(newp->price<0)printf("\n价格不能小于0,请重新输入:

");//价格小于0报错

elsebreak;//格式正确,跳出while循环,继续输入其他信息

}

printf("请输入设备生产厂家:

");

scanf("%s",&newp->adress);

printf("请输入使用部门:

");

scanf("%s",&newp->department);

newp->next=head->next;//在头结点后插入新结点

head->next=newp;

}

}

/*------------------------------------------show----------------------------------------------*/

//函数名称:

show

//函数功能:

显示一个结点信息

//函数说明:

参数为要显示的结点指针

/*--------------------------------------------------------------------------------------------*/

voidshow(SB*q)

{

printf("***********************************\n");//显示设备信息

printf("设备号:

%d\n",q->no);

printf("设备名称:

%s\n",q->name);

printf("购买日期:

%d-%d-%d\n",q->buydate.year,q->buydate.month,q->buydate.day);

printf("设备价格:

%ld\n",q->price);

printf("生产厂家:

%s\n",q->adress);

printf("使用部门:

%s\n",q->department);

printf("***********************************\n\n");

}

/*-----------------------------------------find-----------------------------------------------*/

//函数名称:

find

//函数功能:

找到查找的设备号对应结点

//函数说明:

参数为链表头结点指针,找到设备号对应的结点,返回该结点指针(设备数据库不为空时才能查)

/*--------------------------------------------------------------------------------------------*/

SB*numfind(SB*head)

{

SB*p;

intnum;

charch;

scanf("%d",&num);

ch=getchar();//吸收回车符

for(p=head->next;p!

=NULL;p=p->next)//循环查找设备号

if(p->no==num)break;//已查找到,跳出for循环

if(p==NULL)//p=NULL表示未找到对应设备信息

printf("\n没有找到该设备号!

\n\n");//提示没有找到设备信息

returnp;

}

/*-------------------------------------find_no------------------------------------------------*/

//函数名称:

find_no

//函数功能:

根据设备号,查询设备信息

//函数说明:

参数为链表头结点指针,将查询到的设备信息显示在屏幕上

/*--------------------------------------------------------------------------------------------*/

voidfind_no(SB*head)

{

charch;

SB*p;

while

(1)

{

p=head->next;

if(p==NULL){

printf("设备信息数据库为空!

请选择其他操作...\n\n");//检查数据库是否为空,再查找设备号

break;

}

else{

printf("\n\n请输入要查询的设备号:

");

p=numfind(head);

if(p!

=NULL)show(p);//找到对应设备号,输出设备信息

}

printf("是否继续查询?

(Y/N)");//提示是否继续

ch=getchar();//吸收回车符

if((ch=='N')||(ch=='n'))break;//如果回答n或N,则跳出while循环

elseif((ch!

='Y')&&(ch!

='y')){

printf("输入错误!

");//如果回答既不是Y也不是N则,提示错误,返回菜单界面

break;

}

}

}

/*----------------------------------find_depart-----------------------------------------------*/

//函数名称:

find_depart

//函数功能:

根据部门名称,查询设备信息

//函数说明:

参数为链表头结点指针,将查找到的设备信息显示在屏幕上

/*--------------------------------------------------------------------------------------------*/

voidfind_depart(SB*head)

{

SB*p;

inti;

charfindname[10],ch,ch1;

while

(1)

{

p=head->next;

if(p==NULL){

printf("设备信息数据库为空!

请选择其他操作...\n");

break;

}

printf("\n\n请输入部门名称:

");

gets(findname);

for(i=0,p=head->next;p!

=NULL;p=p->next)//循环,查找对应的部门名称

{

if(strcmp(findname,p->department)==0)

{

show(p);

i++;//统计该部门使用的设备个数

}

}

if(i==0)//i=0,即设备信息中没有该部门

printf("\n找不到该部门使用的设备!

\n");//提示未找到对应部门

printf("\n是否继续查询?

(Y/N)");//提示是否继续

ch=getchar();

ch1=getchar();//吸收回车符

if((ch=='N')||(ch=='n'))break;//如果回答n或N,则跳出while循环

elseif((ch!

='Y')&&(ch!

='y'))

{

printf("\n输入错误!

");//如果回答既不是Y也不是N则,提示错误,返回菜单界面

break;

}

}

}

/*---------------------------------------modify-----------------------------------------------*/

//函数名称:

modify

//函数功能:

根据设备号,修改设备信息

//函数说明:

参数为链表头结点指针,输入设备号,修改对应设备号的设备信息,没有输出

/*--------------------------------------------------------------------------------------------*/

voidmodify(SB*head)

{

SB*p;

intmaxday;

charch,ch1;

while

(1){

p=head->next;

if(p==NULL){

printf("设备信息数据库为空!

请选择其他操作...\n");//检查数据库是否为空,再查找设备号

break;

}

else{

printf("请输入要修改的设备号:

");

p=numfind(head);

if(p!

=NULL){//找到设备号对应结点,修改信息

show(p);//显示p便于修改

printf("请输入修改后的设备信息:

\n\n");

printf("请输入设备名称:

");

scanf("%s",&p->name);

printf("请输入购买日期(格式:

0000-00-00):

");

while

(1){//方便输入错误以后重新输入

scanf("%d-%d-%d",&p->buydate.year,&p->buydate.month,&p->buydate.day);

maxday=date_check(p->buydate.year,p->buydate.month);

if(p->buydate.month>12||p->buydate.day>maxday)

printf("\n日期输入错误!

请重新输入:

");//月份超出1~12或者日期超出1~31则提示错误

elsebreak;//格式正确,跳出当前循环,继续输入其他信息

}

printf("请输入设备价格:

");

while

(1){//方便输入错误以后重新输入

scanf("%ld",&p->price);

if(p->price<0)printf("\n价格不能小于0,请重新输入:

");//价格小于0报错

elsebreak;//格式正确,跳出while循环,继续输入其他信息

}

printf("请输入设备生产厂家:

");

scanf("%s",&p->adress);

printf("请输入使用部门:

");

scanf("%s",&p->department);

ch1=getchar();

printf("\n修改成功!

\n");

}

}

printf("\n是否继续修改?

(Y/N)");//提示是否继续

ch=getchar();

if((ch=='N')||(ch=='n'))break;//如果回答n或N,则跳出while循环

elseif((ch!

='Y')&&(ch!

='y'))

{

printf("\n输入错误!

");//如果回答既不是Y也不是N则,提示错误,返回菜单界面

break;

}

}

}

/*---------------------------------------del--------------------------------------------------*/

//函数名称:

del

//函数功能:

根据设备号,删除设备信息

//函数说明

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1