C语言课程设计-实验室设备管理系统

设计要求

实验室设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为1条记录),包括设备号、设备名称、领用人、所属部门、数量、购买时间、价格等.能够完成以下功能:
1)建立一个文件,将每条记录信息写入文件中并能显示于屏幕上;
2)能对文件进行补充.修订.删除,能统计所有设备的总价值;
3)进一步要求:完成设备按种类、按所属部门进行统计.

代码展示

#include<stdio.h>
#include<string.h> 
#include<windows.h>
#include<malloc.h>
//设备结构体 
struct equip{
   
	char version[15]; 		//设备号 
	char name[30];			//设备名称 
	char usename[15]; 		//领用人
	int usenum;				//领用数量 
	char branch[30];		//所属部门
	int number;				//设备数量
	double price;			//购买价格
	char buyday[10];		//购买时间
	char kind[5];			//种类 
	int numofequi;			//文件中设备信息条数 
};
struct equip equip[10000];
void main(){
   
	void menu();
	printf("\n *******欢迎使用本软件!*******\n\n");
	menu();
	printf("\n *******感谢使用本软件!*******\n");
}
void menu(){
   
	int a; 
	void menu();
	void readfile();
	void inputnew();
	void sumprice();
	void change();
	void Delete();
	void inputuse();
	void giveback();
	void statistic();
while(1){
   //这里的死循环是为了解决scanf输入误输入字符重新输入 
		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(" =================================\n"); 
		printf(" 请选择你需要的功能序号:"); 
		if(	scanf("%d",&a)!=0){
   
			break;
		}
		fflush(stdin);//清除输入缓冲区的数据 
		printf("您的输入出现问题,即将返回主菜单!");
		Sleep(1000);//延迟运行 
		system("cls");//清屏 
		printf("\n *******欢迎使用本软件!*******\n\n");
	}
	switch(a){
    //这里switch是根据选择进入不同功能的函数 
	case 1: readfile(); system("pause");/*程序暂停*/system("cls");menu();break; 
	case 2: sumprice(); system("cls");menu();break;
	case 3: inputnew();	system("cls");menu();break;
	case 4: change(); 	system("cls");menu();break;
	case 5: Delete(); 	system("cls");menu();break;
	case 6: inputuse(); system("cls");menu();break;
	case 7: giveback(); system("cls");menu();break;
	case 8: statistic();/*分类统计*/system("cls");menu();break;
	case 9: exit(0);break;
	default:printf("\n【Error】您输入的序号有误!\n\n");menu();
	}
}
//功能一: 显示已经记录的设备信息
void readfile(){
   
	void readnosee();
	void show();
	int i;
	system("cls");
	readnosee();//只读取文件数据并存在结构体数组equip中,但不显示 
	show();
	printf("\n"); 
}
//功能二: 统计设备的总价值
void sumprice(){
   
	void readnosee();
	double sum=0;
	int numsum=0;
	int i,m=3;
	FILE *p;
	system("cls");
	readnosee();
	m=equip[0].numofequi;
	p=fopen(".\\输出文件夹\\综合统计.txt","w+");
	printf("=============设备信息如下=============\n序号  设备号         设备名称       所属部门       设备数量       设备价格       购买时间       领用人  领用数量   种类\n") ;
	//fprintf语句是为了将数据写入文件 
	fprintf(p,"=============设备信息如下=============\n序号  \t设备号         \t设备名称       \t所属部门       \t设备数量       \t设备价格       \t购买时间       \t领用人  \t领用数量       \t种类\n");
	for(i=0;i<m;i++){
   
		sum=sum+(equip[i].number+equip[i].usenum)*equip[i].price;
		numsum=numsum+equip[i].number+equip[i].usenum;
		printf("%-6d%-15s%-15s%-15s%-15d%-15.2lf%-15s%-10s%-10d%-s\n",i+1,equip[i].version,equip[i].name,equip[i].branch,equip[i].number,equip[i].price,equip[i].buyday,equip[i].usename,equip[i].usenum,equip[i].kind);
		fprintf(p,"%-6d\t%-15s\t%-15s\t%-15s\t%-15d\t%-15.2lf\t%-15s\t%-10s\t%-15d\t%s\n",i+1,equip[i].version,equip[i].name,equip[i].branch,equip[i].number,equip[i].price,equip[i].buyday,equip[i].usename,equip[i].usenum,equip[i].kind);
	}
	printf("~~~~~~~~\n目前系统记录的设备\n总价值是:%.2lf\n总数量:%d\n~~~~~~~~\n",sum,numsum);
	fprintf(p,"~~~~~~~~\n目前系统记录的设备总价值是:%.2lf\n总数量:%d\n~~~~~~~~\n",sum,numsum);
	printf("【Tips】已生成“综合统计.txt”文件\n"); 
	fclose(p);
	system("pause");
}
//功能三: 录入新设备信息并存储
void inputnew(){
   
	int i,n,m,h=1;
	FILE*fp;
	void readnosee();
	void save();
	readnosee(); //读取文件但不在屏幕显示 
	m=equip[0].numofequi;
	printf("请输入录入设备的种数:");
	scanf("%d",&n); 
	printf("请输入设备\n===============================\n设备号    设备名称     所属部门    设备数量   设备价格    购买时间    种类\n"); 
	for(i=m;i<n+m;i++){
   
		printf("请输入第%d条数据\n",h);
		h++;
		scanf("%s%s%s%d%lf%s%s",equip[i].version,equip[i].name,equip[i].branch,&equip[i].number,&equip
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值