帮其他学校的写了两个大作业(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; }