定制开发室管理系统、室管理软件系统定制开发
- 首页 >> OS编程#include <stdio.h>
#include <stdlib.h>
struct computermarket
{
char computername[15];
char model[10]; //型号
float saleprice; //进价
float soldprice; //售价
int number; //数量
float gain; //盈利
}
computer[1000];
char password[6] = "123"; //初始密码
int main()
{
char select = 0;
char t1[15],t2[15];
struct computermarket computername_order;
struct computermarket price_order;
float sum;
FILE *fp;
int m, n, i, j, k, t3;
int x = 3;
int flag = 0;
char s[8];
system("co 1b");
do
{
printf("请输入密码:\n");
scanf("%s",s);
if(!strcmp(s,password))/*进行密码验证*/
{
printf("PASS\n\n\n");
flag=1;
break;
}
else
{
printf("密码错误,请重新输入:\n");
x--;
}
}
while(x>0);
if(!flag)
{
printf("你已经输入三次错误密码!");
exit(0);
}
back: //goto点0
system("cls");//清屏 包含在stdlib.h头文件中,执行清屏操作
//系统菜单
puts(" ");
puts(" ");
puts(" ***************************************************");
puts(" $ $");
puts(" $ 欢迎使用实验室管理系统 $");
puts(" $ $");
puts(" $ 1.学生注册 $");
puts(" $ $");
puts(" $ 2.修改用户 $");
puts(" $ $");
puts(" $ 3.学生信息 $");
puts(" $ $");
puts(" $ 4.查询用户 $");
puts(" $ $");
puts(" $ 5.删除管理 $");
puts(" $ $");
puts(" $ 6.显示用户信息 $");
puts(" $ $");
puts(" $ 7.排序管理 $");
puts(" $ $");
puts(" $ 8.退出系统 $");
puts(" $ $");
puts(" ********************************************************");
printf("请选择(1-8):");
select=getch();//输入选择选项 getch包含在conio.
switch(select)
{
case '1':
{
//打开资料文件
if((fp=fopen("computer.txt","r+"))==NULL)
{
printf("\n文件不存在!\n按任意键新建一个...\n"); //如果文件不存在,提示新建一个
getch(); //吃掉任意键
fp=fopen("computer.txt","w+");//创建新文件
fclose(fp); //建完关闭,以便用r+方式打开
goto back;//返回点0
}
for(m=0; !feof(fp); m++) //从文件读入数据
fscanf(fp,"%s %s %f %f %d %f\n" ,computer[m].computername,computer[m].model,&computer[m].saleprice,&computer[m].soldprice,&computer[m].number,&computer[m].gain);
system("cls");//清屏
printf("录入学生信息请按1.\n\n");
scanf("%d",&t3); // 输入选项
if(t3==1)
{
system("cls");
printf("要录入的类型:");
scanf("%d",&n);//输入要录入的电脑有几种
for(i=0; i<n; i++) //依次录入库存
{
system("cls");
printf("请输入个人信息: ");
scanf("%s",computer[m+i].computername);
printf("\n姓名:");
scanf("%s",computer[m+i].model);
printf("\n性别:");
scanf("%f",&computer[m+i].saleprice);
printf("\n专业:");
scanf("%f",&computer[m+i].soldprice);
printf("\n学号:");
scanf("%d",&computer[m+i].number);
}
for(i=0; i<n; i++) //将文数据件写入文件中
fprintf(fp,"%7s %7s %7.2f %7 ",computer[m+i].computername,computer[m+i].model,computer[m+i].saleprice,computer[m+i].soldprice,computer[m+i].number);//格式控制 0.00为盈利值
fclose(fp);//关闭文件
printf("您的操作已经完成!\n");
printf("姓名 性别 专业 学号\n");//在屏幕上输出录入的信息
for(i=0; i<n; i++) //左对齐输出
printf("%-7s %-7s %-7.2f %-7.2",computer[m+i].computername,computer[m+i].model,computer[m+i].saleprice,computer[m+i].soldprice,computer[m+i].number);
printf("请按任意键返回主菜单\n");
getch();
}
goto back;//返回点0
}
case '2':
{
fp=fopen("computer.txt","r+");//打开文件
for(m=0; !feof(fp); m++) //读入数据
fscanf(fp,"%s %s %f %f %d %f\n" ,computer[m].computername,computer[m].model,&computer[m].saleprice,&computer[m].soldprice,&computer[m].number,&computer[m].gain);
back2://goto点1
system("cls");//清屏
printf("姓名 性别 专业 学号 \n");
for(k=0; k<m; k++) //输出原来电脑库存的信息
printf("%-7s %-7s %-7.2f %-7.2f ",computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number);
printf("\n请输入姓名: ");//输入要改变库存量的信息
scanf("%s",t1);
printf("\n请输入学号:");
scanf("%s",t2);
for(k=0; k<m; k++) //数据进行比较是否存在
if(strcmp(computer[k].computername,t1)==0&&strcmp(computer[k].model,t2)==0)
break;
if(k==m)//如果不存在
{
printf("您输入的信息不存在。\n");
printf("\n请返回重新输入 按任意键...");
getch();
goto back2;//返回点1
}
printf("姓名 性别 专业 学号 \n");
printf("%-7s %-7s %-7.2f %-7.2f \n",computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number);//输出未改变之前的信息
printf("\n请输入改变的信息:");
scanf("%f",&computer[k].saleprice);
printf("\n请输入改变的信息:");
scanf("%f",&computer[k].soldprice);
printf("\n请输入改变的学号:");
scanf("%d",&computer[k].number);
remove("computer.txt"); //删除原文件
fp=fopen("computer.txt","w+"); //创建新文件
for(i=0; i<m; i++) //在新文件中写入
fprintf(fp,"%7s %7s %7.2f %7.2f %7d %7.2f\n",computer[i].computername,computer[i].model,computer[i].saleprice,computer[i].soldprice,computer[i].number,computer[i].gain);
fclose(fp);
printf("修改成功\n\n");
printf("姓名 性别 专业 学号 \n");
printf("%-7s %-7s %-7.2f %-7.2f \n\n",computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number);//输出改变之后的信息
printf("修改已完成。\n\n1(继续)\n\n2(退出)\n");
scanf("%d",&t3);
if(t3==1)
goto back2;
else
goto back;
}
case '3':
{
fp=fopen("computer.txt","r+");//打开文件
for(m=0; !feof(fp); m++) //读入数据
fscanf(fp,"%s %s %f %f %d %f\n" ,computer[m].computername,computer[m].model,&computer[m].saleprice,&computer[m].soldprice,&computer[m].number,&computer[m].gain);
back3://goto点2
system("cls");
printf("姓名 性别 专业 学号 \n");
sum=0;//算总盈利之用
for(k=0; k<m; k++)
{
//在屏幕上输出库存信息
printf("%-7s %-7s %-7.2f %-7.2f \n",computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number,computer[k].gain);
sum=sum+computer[k].gain;//计算总盈利
}
printf("\n总盈利:%.2f\n\n",sum);//输出总盈利
printf("请输入信息\n\n名: "); //输入信息
scanf("%s",t1);
printf("\n型号:");
scanf("%s",t2);
for(k=0; k<m; k++) //对数据进行比较
if(strcmp(computer[k].computername,t1)==0&&strcmp(computer[k].model,t2)==0)
break;
if(k==m)//如果不存在
{
printf("您输入的信息不存在。\n\n");
printf("请返回重新输入 按任意键...");
getch();
goto back3;//返回点2
}
printf("姓名 性别 学号\n");
printf("\n%-7s %-7s %-7d \n",computer[k].computername,computer[k].model,computer[k].number);//输出要销售的电脑信息
printf("\n请输入信息:");
scanf("%d",&t3);
computer[k].number=computer[k].number-t3;//计算件数
computer[k].gain=computer[k].gain+(computer[k].soldprice-computer[k].saleprice)*t3;//计算盈利
remove("computer.txt"); //删除原文件
fp=fopen("computer.txt","w+"); //创建新文件
for(i=0; i<m; i++) //在新文件中写入数据
fprintf(fp,"%7s %7s %7.2f %7.2f %7d %7.2f\n",computer[i].computername,computer[i].model,computer[i].saleprice,computer[i].soldprice,computer[i].number,computer[i].gain);
fclose(fp);
printf("姓名 性别 学号\n");
printf("%-7s %-7s %-7d \n",computer[k].computername,computer[k].model,computer[k].number);//输出销售后的电脑信息
printf("您的操作已经完成!\n\n");
printf("姓名 性别 专业 学号 \n");
sum=0;
for(k=0; k<m; k++)
{
//在屏幕上输出库存信息
printf("%-7s %-7s %-7.2f %-7.2f \n",computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number,computer[k].gain);
sum=sum+computer[k].gain;//计算总盈利
}
printf("\n总盈利:%.2f\n\n",sum);//输出总盈利
printf("销售已完成。\n\n1(继续)\n\n2(退出)\n");
scanf("%d",&t3);
if(t3==1)
goto back3;
else
goto back;
}
case '4'://查询
{
if((fp=fopen("computer.txt","r+"))==NULL)//打开文件
{
printf("文件打不能打开!\n");//提示文件打不开
getch();
exit(1);
}
for(m=0; !feof(fp); m++) //读入数据
fscanf(fp,"%s %s %f %f %d %f\n" ,computer[m].computername,computer[m].model,&computer[m].saleprice,&computer[m].soldprice,&computer[m].number,&computer[m].gain);
back4:
system("cls");
printf("请输入要查询的信息\n\n");//输入要查询的电脑的信息
printf("姓名:");
scanf("%s",t1);
printf("\n学号:");
scanf("%s",t2);
for(k=0; k<m; k++) //数据进行比较
if(strcmp(computer[k].computername,t1)==0&&strcmp(computer[k].model,t2)==0)
break;
if(k==m)//如果不存在
{
printf("您输入的产品信息不存在。\n");
printf("\n请返回重新输入 按任意键...");
getch();
goto back4;
}
printf("姓名 性别 专业 学号 \n");
printf("\n%-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number,computer[k].gain);
printf("是否要继续查询?\n\n1(继续)\n\n2(退出):");
scanf("%d",&t3);
if(t3==1)
goto back4;
else
goto back;
}
case '5'://删除管理
{
if((fp=fopen("computer.txt","r+"))==NULL)//提示文件打不开
{
printf("文件打不能打开!\n");
getch();
exit(1);
}
for(m=0; !feof(fp); m++) //输入数据
fscanf(fp,"%s %s %f %f %d %f\n" ,computer[m].computername,computer[m].model,&computer[m].saleprice,&computer[m].soldprice,&computer[m].number,&computer[m].gain);
back5://goto点5
system("cls");
printf("姓名 性别 专业 学号 \n");
sum=0; //在屏幕上输出库存
for(k=0; k<m; k++)
{
printf("%-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number,computer[k].gain);
sum=sum+computer[k].gain;//计算总盈利
}
printf("\n总盈利:%.2f\n\n",sum);
printf("请输入要删除的信息\n\n");//输入要删除的电脑的信息
printf("姓名:");
scanf("%s",t1);
printf("\n学号:");
scanf("%s",t2);
for(k=0; k<m; k++) //数据进行比较
if(strcmp(computer[k].computername,t1)==0&&strcmp(computer[k].model,t2)==0)
break;
if(k==m)//如果不存在
{
printf("您输入的产品信息不存在。\n");
printf("\n请返回重新输入 按任意键...");
getch();
goto back5;
}
printf("姓名 专业 学号\n");
printf("\n%-7s %-7s %-7d \n",computer[k].computername,computer[k].model,computer[k].number);
printf("\n是否要删除?\n\n1(删除)\n\n2(不删除):");
scanf("%d",&t3);//选择是否要删除
if(t3==1)//如果要删除
{
remove("computer.txt"); //删除原文件
fp=fopen("computer.txt","w+"); //创建新文件
printf("\n姓名 性别 专业 学号 \n");//删除完后在文件夹中写入和在屏幕显示剩下的电脑信息
for(i=0; i<m; i++)
{
if(i!=k)
{
fprintf(fp,"%7s %7s %7.2f %7.2f %7d %7.2f\n",computer[i].computername,computer[i].model,computer[i].saleprice,computer[i].soldprice,computer[i].number,computer[i].gain);
printf("%-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",computer[i].computername,computer[i].model,computer[i].saleprice,computer[i].soldprice,computer[i].number,computer[i].gain);
}
}
printf("\n删除已完成\n");
}
else //不删除
printf("\n删除未完成\n");
fclose(fp);
printf("\n按任意键返回菜单...");
getch();
goto back;//返回主菜单
}
case '6'://显示电脑库存
{
if((fp=fopen("computer.txt","r+"))==NULL)//打开文件
{
printf("文件打不能打开!\n");//提示文件打不开
getch();
exit(1);
}
for(m=0; !feof(fp); m++) //读入数据
fscanf(fp,"%s %s %f %f %d %f\n" ,computer[m].computername,computer[m].model,&computer[m].saleprice,&computer[m].soldprice,&computer[m].number,&computer[m].gain);
system("cls");
printf("姓名 性别 专业 学号 \n");//在屏幕上显示数据
for(k=0; k<m; k++)
{
printf("%d %-7s %-7s %-7.2f %-7.2f %-7d \n",k+1,computer[k].computername,computer[k].model,computer[k].saleprice,computer[k].soldprice,computer[k].number);
}
fclose(fp);
printf("请按任意键返回主菜单\n");
getch();
goto back;
}
case '7'://排序
{
if((fp=fopen("computer.txt","r+"))==NULL)//打开文件
{
printf("文件打不能打开!\n");//提示文件打不开
getch();
exit(1);
}
for(m=0; !feof(fp); m++) //读入数据
fscanf(fp,"%s %s %f %f %d %f\n" ,computer[m].computername,computer[m].model,&computer[m].saleprice,&computer[m].soldprice,&computer[m].number,&computer[m].gain);
back7:
system("cls");
printf("\n请选择排序标准?\n\n1(按姓名排序)\n\n2(按专业排序)\n\n3(按学号排序)\n");
scanf("%d",&t3);
if(t3==1)//按品牌排序
{
for(i=0; i<m-1; i++)
for(j=i+1; j<m; j++)
if(strcmp(computer[i].computername,computer[j].computername)>0)
{
computername_order=computer[i];
computer[i]=computer[j];
computer[j]=computername_order;
}
printf("按品牌排序输出:\n");
printf("姓名 性别 专业 学号 \n");
for(i=0; i<m; i++)
{
printf("%d %-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",i+1,computer[i].computername,computer[i].model,computer[i].saleprice,computer[i].soldprice,computer[i].number,computer[i].gain);
}
printf("排序已完成。\n\n1(继续)\n\n2(退出)\n");
scanf("%d",&t3);
if(t3==1)
goto back7;
else
goto back;
}
else if(t3==2)//按进价排序
{
for(i=0; i<m-1; i++)
for(j=i+1; j<m; j++)
if(computer[i].saleprice>computer[j].saleprice)
{
price_order=computer[i];
computer[i]=computer[j];
computer[j]=price_order;
}
printf("按进价排序输出:\n");
printf("姓名 性别 专业 学号\n");
for(i=0; i<m; i++)
{
printf("%d %-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",i+1,computer[i].computername,computer[i].model,computer[i].saleprice,computer[i].soldprice,computer[i].number,computer[i].gain);
}
printf("排序已完成。\n\n1(继续)\n\n2(退出)\n");
scanf("%d",&t3);
if(t3==1)
goto back7;
else
goto back;
}
else if(t3==3) //按利润排序
{
for(i=0; i<m-1; i++)
for(j=i+1; j<m; j++)
if(computer[i].gain<computer[j].gain)
{
price_order=computer[i];
computer[i]=computer[j];
computer[j]=price_order;
}
printf("按利润排序输出:\n");
printf("姓名 性别 专业学号\n");
for(i=0; i<m; i++)
{
printf("%d %-7s %-7s %-7.2f %-7.2f %-7.d %-7.2f \n",i+1,computer[i].computername,computer[i].model,computer[i].saleprice,computer[i].soldprice,computer[i].number,computer[i].gain);
}
printf("排序已完成。\n\n1(继续)\n\n2(退出)\n");
scanf("%d",&t3);
if(t3==1)
goto back7;
else
goto back;
}
break;
}
case '8'://退出系统
{
system("cls");
printf("谢谢你的使用!\n");
exit(0);
}
}
}