帮其他学校的写了两个大作业(c语言那种)
第一个是个***管理系统
大意就是公司工资管理系统,要计算一下汇率,没什么说的
第二个是一个迷宫,难点在于随机生成迷宫那边,关键是深搜的过程是随机的就可以生成一条道路(这条道路都是可通行的),剩下的点大部分不可通行,当然也不能全不能让人走,否则这条道路就太明显了),想了个办法,如果是那条初始道路就直接铺路,否则很大概率是墙,小概率是道路。
算法还可以继续优化,等有空改成Android的再美化下界面还是不错的。
//工资管理系统
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int n=0;//数据库中人员的数量
FILE *fp;
FILE *fp2;
int q[]={0,3500,5000,8000,12500,38500,58500,83500};//税的级数
double q1[]={0,0.03,0.1,0.2,0.25,0.3,0.35,0.45};
int q2[]={0,0,105,555,1005,2775,5505,13505};//速算扣除数
typedef struct person//人员,具有收入,
{
char name[20];//姓名
char staff_number[20];//员工编号
double Gross_pay;//税前收入
double tax;//税收
}person;
person a[100];
int cmp(person c,person d)
{
return c.Gross_pay<d.Gross_pay;
}
void menu()//主界面
{
printf("***************************\n");
printf("*****显示信息请按1*********\n");
printf("*****信息管理请按2*********\n");
printf("*****录入信息请按3*********\n");
printf("*****导出信息请按4*********\n");
printf("*****工资排序请按5*********\n");
printf("*****用户退出请按6*********\n");
printf("***************************\n");
}
void menu2()//基本信息界面
{
printf("************添加信息请按1********\n");
printf("************删除信息请按2********\n");
printf("************修改信息请按3********\n");
}
void menu3()
{
printf("*******按照姓名删除请按1**********\n");
printf("*******按照员工编号请按2**********\n");
}
void show()
{
int i;
printf("%10s%10s%10s%10s\n","姓名","员工编号","收入","个税");
for (i=0;i<n;i++)
printf("%8s%10s %lf %lf\n",a[i].name,a[i].staff_number,a[i].Gross_pay,a[i].tax);
printf("\n\n");
}
void add()
{
int i;
printf("请输入需要添加的员工姓名: ");
scanf("%s",a[n].name);
printf("请输入需要添加的员工编号: ");
scanf("%s",a[n].staff_number);
printf("请输入添加的收入: ");
scanf("%lf",&a[n].Gross_pay);
for (i=0;i<=7;i++)
if (q[i]>=a[n].Gross_pay)
break;
a[n].tax=(a[n].Gross_pay-q[i-1])*q1[i-1]+q2[i-1];
n++;
printf("\n\n");
}
void shanyuangong()
{
char s[20];
int i,j,t;
printf("请输入需要删除的员工姓名: ");
scanf("%s",s);
printf("\n");
t=0;
for (i=0;i<n;i++)
if (strcmp(a[i].name,s)==0)
{
for (j=i;j<n-1;j++)
a[j]=a[j+1];
t=1;
}
n--;
if (t==0)
printf("数据库中没有该条信息!\n\n");
}
void shanyuangongbianhao()
{
char s[20];
int i,j,t;
printf("请输入需要删除的员工编号: ");
scanf("%s",s);
printf("\n");
t=0;
for (i=0;i<n;i++)
if (strcmp(a[i].staff_number,s)==0)
{
for (j=i;j<n-1;j++)
a[j]=a[j+1];
t=1;
}
n--;
if (t==0)
printf("数据库中没有该条信息!\n");
}
void Delete()
{
int key;
menu3();
do
{
printf("请输入你的选择: ");
scanf("%d",&key);
if ((key<=0)||(key>2))
printf("请输入正确的选择\n");
else
{
if (key==1)
shanyuangong();//删除员工
if (key==2)
shanyuangongbianhao();//删除员工编号
}
}while(key<=0||key>2);
}
void change()
{
char s[20];
int i,j,t;
printf("请输入员工的姓名: ");
scanf("%s",s);
t=0;
for (i=0;i<n;i++)
if (strcmp(a[i].name,s)==0)
{
t=1;
printf("请输入新的员工编号: ");
scanf("%s",a[i].staff_number);
printf("请输入新的员工收入: ");
scanf("%lf",&a[i].Gross_pay);
}
if (t==0)
printf("数据库没有这条信息!\n");
}
void manage()
{
int i,key;
menu2();//基本信息界面
do
{
scanf("%d",&key);
if ((key<=0)||(key>3))
printf("请输入正确的选择\n");
else
switch(key)
{
case 1:add();//增加
break;
case 2:Delete();//删除
break;
case 3:change();//修改信息
}
}while(key<=0||(key>3));
}
void luru()
{
fp=fopen("F:\\1.txt","r");
while(fscanf(fp,"%s%s%lf",a[n].name,a[n].staff_number,&a[n].Gross_pay)!=EOF)
{
n++;
}
}
void daochu()
{
int i;
fp2=fopen("F:\\2.txt","w");
printf("%10s%10s%10s%10s\n","姓名","员工编号","收入","个税");
for (i=0;i<n;i++)
printf("%8s%10s %lf %lf\n",a[i].name,a[i].staff_number,a[i].Gross_pay,a[i].tax);
}
void paixu()
{
int i,j;
sort(a,a+n,cmp);
show();
}
int main()
{
int key;
menu();
do
{
printf("请输入你的选择 ");
scanf("%d",&key);
if ((key<=0)||(key>6))
printf("请输入正确的选择\n\n\n");
else
{
switch(key)
{
case 1:show();//展示信息
break;
case 2:manage();//信息管理
break;
case 3:luru();//录入信息(编不出英文了)
break;
case 4:daochu();//导出英文
break;
case 5:paixu();//排序
break;
}
}
}while(key!=6);//当输入6退出
printf("*****欢迎使用********\n");
return 0;
}
//迷宫
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int direction[4];//存储4个方向
int a[105][105];
char s[105][105];
int visit[105][105];
int Time;
int n;//迷宫的行,列
void initdirection()
{
int i,j,k,ok;
memset(direction,0,sizeof(direction));
for (i=0;i<=3;i++)
{
j=rand()%4;
ok=1;
for (k=0;k<i;k++)
if (j==direction[k])
ok=0;
if (ok)
direction[i]=j;
else
i--;
}
}
void DFS(int x,int y)
{
int c[4]={0,0,-1,1};//direction[0,1,2,3]分别对应上下左右
int d[4]={1,-1,0,0};
int dx,dy,i,j;
if ((x==n-1)&&(y==n-1))//如果到终点
{
Time=1;
return;
}
initdirection();//随机生成四个方向(其实就是全排列啦~~)
for (i=0;i<=3;i++)
{
dx=x+c[direction[i]];//更新横纵坐标
dy=y+d[direction[i]];
if ((dx>=0)&&(dx<n)&&(dy>=0)&&(dy<n)&&(!visit[dx][dy])&&(!Time))
{
a[dx][dy]=1;//认为它是通路
visit[dx][dy]=1;
DFS(dx,dy);
if (!Time)
a[dx][dy]=0;
}
}
}
void initsecretmap()//随机生成迷宫
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
a[i][j]=0;//一开始标记为不可通行
memset(visit,0,sizeof(visit));
a[0][0]=1;
visit[0][0]=1;//起点标记为可通行
DFS(0,0);
}
int main()
{
int i,j,m,k,t;
char ch;
printf("*******欢迎使用+学号的迷宫\n");//此处自行修改........(贴心不)
printf("请输入迷宫的行数\n");
scanf("%d",&n);
srand(time(NULL));
while((n<=0||n>100))
{
printf("请输入正确的数字\n");
scanf("%d",&n);
}
system("cls");
initsecretmap();//随机生成迷宫,最后应该得到a数组,1就是通路
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
if (a[i][j]==0)
{
m=rand()%100;
if (m<=20)
s[i][j]=' ';
else
s[i][j]='#';
}
else
{
s[i][j]=' ';
}
}
s[0][0]='.';
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%c",s[i][j]);
printf("\n");
}
i=0;
j=0;
while((i!=n-1)||(j!=n-1))
{
ch=getchar();
if ((ch=='w')&&(i-1>=0)&&(s[i-1][j]==' '))
{
s[i][j]=' ';
i--;
s[i][j]='.';
}
else
if ((ch=='s')&&(i+1<n)&&(s[i+1][j]==' '))
{
s[i][j]=' ';
i++;
s[i][j]='.';
}
else if ((ch=='a')&&(j-1>=0)&&(s[i][j-1]==' '))
{
s[i][j]=' ';
j--;
s[i][j]='.';
}
else if ((ch=='d')&&(j+1<n)&&(s[i][j+1]==' '))
{
s[i][j]=' ';
j++;
s[i][j]='.';
}
system("cls");
for (k=0;k<n;k++)
{
for (t=0;t<n;t++)
printf("%c",s[k][t]);
printf("\n");
}
}
printf("Yin Win");
return 0;
}