C语言如何实现财务管理系统
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章将为大家详细讲解有关C语言如何实现财务管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下包括1.录入班级成员信息2.排序3.修改学生信息4.
千家信息网最后更新 2025年02月05日C语言如何实现财务管理系统
这篇文章将为大家详细讲解有关C语言如何实现财务管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
具体内容如下
包括
1.录入班级成员信息
2.排序
3.修改学生信息
4.删除指定学号学生
5.查找学生
6.添加财务信息
7.查询详细表
8.显示所有学生信息
9.退出
详细事项:本系统包括管理员登录和普通同学登录,两种登录方式的权限不一样,例如:同学登录只能修改自己学号的信息。初次使用(本地文件为空)需要初始化系统。每次使用完一个功能,会自动返回主函数。使用时需要注意本地文件是否齐全,包括:student.txt(储存学生信息),account.txt(储存财务信息),zh2.txt(储存账户信息),zh3.txt(储存账户信息),file2.txt(储存密码信息),file1.txt(储存密码信息)。本代码使用链表和文件系系统。本代码只是抱砖引玉。
/*首次使用,进行系统初始化 */ #include#include #include #include #include #include char password[9]; //记录密码 char password2[9]; //记录密码 int log; //登录状态函数 int ac; struct student{ char num[15]; //学号 char name[20]; //姓名 char sex; //性别 int age; //年龄 int clas; //班级 char mail[20]; //邮箱 char number[13]; //电话号码 };typedef struct node{ //定义一个结构体 struct student data; struct node *next; }s;void in(s *head); //信息的读取 void menu(); //菜单函数 void add(s *head); //录入函数 void dele(s *head); //删除函数 void mod(s *head); //修改函数 void query(s *head); //查询函数 void sort(s *head); //排序函数 void account(); //财务收入 void print() ; //显示总财务 void printall(); //显示所有学生信息 void out(s *head); //信息的存储 void in(s *head){ FILE *fp; s *p; fp = fopen("student.txt","r"); while (!feof(fp)) { p= (s*)malloc(sizeof(s)); fscanf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,&p->data.sex,&p->data.age,&p->data.clas,p->data.mail,p->data.number); p->next=NULL; s *last=head->next; if(last!=NULL){ //当链表不为空时 ,才可以让last=head while(last->next){ //当last不为空时 ,当while结束时,这个last指向的就是最后一个结点 last=last->next; } last->next=p; }else{ head->next=p; //链表为空 } } fclose(fp);}void out(s *head){ s *p; FILE *fp; if((fp=fopen("student.txt","w"))==NULL){ printf("File open error!\n"); exit(0); } for(p=head->next;p;p=p->next) //把学生信息存进文件中 fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); fclose(fp);}void menu(){ char ch[6],*m,ch3; system("cls"); /*实现清屏操作,即清除之前输入的东西*/ s *head=(s*)malloc(sizeof(s)); head->next=NULL; int i; if(log==1) { 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"); for(i=1;i<=50;i++) //分割线 printf("-"); printf("\n请选择(可多选):"); scanf("%s",ch); m=ch; for(;*m!='\0';m++) //用数组指针实现多函数操作 { switch(*m){ case '1':system("cls");add(head);break; case '2':system("cls");sort(head);break; case '3':system("cls");mod(head);break; case '4':system("cls");dele(head);break; case '5':system("cls");query(head);break; case '6': account();break; case '7': print();break; case '8':printall();break; case '9':exit(0); } } system("cls"); } if(log==2) { printf("因为权限问题,您只能使用一下功能\n"); printf("3.修改学生信息\n"); printf("4.查询信息\n"); printf("6.添加财务信息\n"); printf("7.查询详细表\n"); printf("8.显示所有学生信息\n"); printf("9.退出\n"); for(i=1;i<=50;i++) //分割线 printf("-"); printf("\n请选择(可多选):"); scanf("%s",ch); m=ch; for(;*m!='\0';m++) //用数组指针实现多函数操作 { switch(*m){ case '3':system("cls");mod(head);break; case '4':system("cls");dele(head);break; case '6': account();break; case '7': print();break; case '8':printall();break; case '9':return; } } system("cls"); }}void add(s *head){ //录入函数 FILE *fp; int i,temp=0,sum; //temp用来标记邮箱 sum用来标记电话号码的位数 int x; system("cls"); s *p; do{ p=(s*)malloc(sizeof(s)); //申请一个内存; printf("请输入学号:\n"); scanf("%s",p->data.num); //获取学号 s *q; q=head->next; //指针指向下一个 while(q!=NULL){ //p已经指向尾部了,所以要定义一个别的指针来做for循环遍历 if(strcmp(p->data.num,q->data.num)==0){ getchar(); printf("学号重复,请重新输入:\n"); scanf("%s",p->data.num); } q=q->next; } getchar(); printf("\n请输入姓名:\n"); scanf("%s",p->data.name); getchar(); printf("\n请输入性别(男生填m,女生填w):\n"); scanf("%c",&p->data.sex); while(1){ if((p->data.sex=='w')||(p->data.sex=='m')) break; else{ getchar(); //要在每一项输入之后,读入任意一个字符才能下一步操作 printf("性别符号输入错误,请重新输入:\n"); //防止出入其他符号 scanf("%c",&p->data.sex); } } getchar(); printf("\n请输入年龄:\n"); scanf("%d",&p->data.age); getchar(); printf("\n请填入班级,仅数字:\n"); scanf("%d",&p->data.clas); getchar(); printf("\n请输入邮箱(必须有@):\n"); scanf("%s",p->data.mail); while(1){ for(i=0;p->data.mail[i]!='\0';i++){ if(p->data.mail[i]=='@'){ temp=1; } } if(temp==0){ printf("邮箱中不包含@,请重新输入:\n"); scanf("%s",p->data.mail); }else break; } getchar(); printf("\n请输入电话号码,必须是11位:\n"); scanf("%s",p->data.number); while(1){ sum=0; for(i=0;p->data.number[i]!='\0';i++){ sum+=1; } if(sum!=11){ getchar(); printf("号码位数超过11位或者少于11位,请重新输入:\n"); scanf("%s",p->data.number); }else break; } p->next=NULL; s *last=head->next; if(last!=NULL){ //当链表不为空时 ,才可以让last=head while(last->next){ //当last不为空时 ,当while结束时,这个last指向的就是最后一个结点 last=last->next; } last->next=p; }else{ head->next=p; //链表为空 } getchar(); printf("\n是否还要继续录入,是请输入1,否请输入0\n"); scanf("%d",&x); if(x==0) break; if(x==1) system("cls"); //清空屏幕 }while(1); if((fp=fopen("student.txt","a"))==NULL){ printf("File open error!\n"); exit(0); } for(p=head->next;p;p=p->next) //把学生信息存进文件中 fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); fclose(fp); printf("\n信息已经存入文件\n"); system("pause"); s *k; p=head->next; while(p!=NULL){ //清空链表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; if(x==0) menu(); }void dele(s *head){ //删除函数 int temp=0,i,flag2; in(head); //信息的读取 s *p,*q; char numb[15]; FILE *fpw=fopen("tmp.txt","w"); char ch2; ch2='-'; system("cls"); printf("请输入学号:"); scanf("%s",numb); for(q=head,p=head->next;p;q=p,p=p->next){ //遍历链表,条件是p存在 if(strcmp(numb,p->data.num)==0){ temp=1; system("cls"); printf("学生信息如下:"); printf("学号:%s\n",p->data.num); printf("姓名:%s\n",p->data.name); printf("性别:%c\n",p->data.sex); printf("年龄:%d\n",p->data.age); printf("班级:%d\n",p->data.clas); printf("邮箱:%s\n",p->data.mail); printf("电话号码:%s\n",p->data.number); for(i=1;i<=50;i++){ //分割线 printf("%c",ch2); } printf("\n"); printf("是否要删除此学生信息?(1或2)\n"); scanf("%d",&flag2); if(flag2==2) { printf("取消删除,三秒后返回主菜单"); Sleep(3000); menu(); } if(flag2==1){ if(q){ q->next=p->next; //将前一个指针指向要删除的后一个结点 out(head); } else{ head->next=p->next; out(head); } free(p); printf("信息已删除"); printf("三秒后返回主菜单"); Sleep(3000); menu(); } } } if(temp==1){ //如果temp等于一说明信息已经删除,把改过后的链表重新写入文件中 out(head); } if(temp==0){ //没有找到学生的信息 for(i=1;i<=50;i++) printf("%c",ch2); printf("\n没有找到此学生信息,按任意键退出\n"); printf("三秒后返回主菜单"); Sleep(3000); menu(); } s *k; p=head->next; while(p!=NULL){ //清空链表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL;}void mod(s *head){ //修改函数 int nums; FILE *fp; system("cls"); //清空屏幕 s *p,*q; //作为链表中的指针 in(head); char *m; //用来控制修改的信息编号 int temp=0; int i,sui,ban,j=1;//代表修改的年龄班级 char num1[15]; char ch[8]; char xuehao[15],ming[20],xingbie,youxiang[20],haoma[20];//代表要修改的信息名 printf("请输入要修改的学生的学号:\n"); getchar(); scanf("%s",num1); nums= atoi(num1);// printf("%d",nums); if(log==2) { if(nums != ac) { while(j) { printf("您只能修改自己的信息,请输入正确信息"); scanf("%s",num1); nums= atoi(num1); if(ac==nums) { j=0; } } } } for(p=head->next;p;p=p->next){ //遍历列表,寻找与输入相同的学号 if(strcmp(num1,p->data.num)==0){ temp=1; //找到信息后的标记 printf("1.学号:%s\n",p->data.num); //找到后显示出完整信息 printf("2.姓名:%s\n",p->data.name); printf("3.年龄:%d\n",p->data.age); printf("4.班级:%d\n",p->data.clas); printf("5.邮箱:%s\n",p->data.mail); printf("6.电话号码:%s\n",p->data.number); printf("0.退出\n"); for(i=1;i<=50;i++){ //分割线 printf("-"); } printf("\n"); printf("请输入要修改信息的相应序号(可多选):\n"); scanf("%s",ch); getchar(); m=ch; for(;*m!='\0';m++){ //用循环来解决修改多个学生信息的问题 switch(*m){ case '1':printf("请输入要修改学号的内容:\n"); scanf("%s",xuehao); strcpy(p->data.num,xuehao);break; case '2':printf("\n请输入要修改姓名的内容:\n"); scanf("%s",ming); strcpy(p->data.name,ming);break; case '3':printf("\n请输入要修改年龄的内容:\n"); scanf("%d",&sui); p->data.age=sui;break; case '4':printf("\n请输入要修改班级的内容:\n"); scanf("%d",&ban); p->data.clas=ban;break; case '5':printf("\n请输入要修改邮箱的内容:\n"); scanf("%s",youxiang); strcpy(p->data.mail,youxiang);break; case '6':printf("\n请输入要修改电话号码的内容:\n"); scanf("%s",haoma); strcpy(p->data.number,haoma);break; case '0':break; } } getchar(); printf("修改后的信息如下:\n"); printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);//输出修改后的信息 system("pause");//防止闪屏 } } if(temp==1){ //如果temp等于一说明信息已经删除,把改过后的链表重新写入文件中 out(head); } if(temp==0){ //没找到学生信息 printf("没有此学生的信息\n"); system("pause"); } s *k; p=head->next; while(p!=NULL){ //清空链表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; printf("三秒后返回主菜单"); Sleep(3000); menu();}void query(s *head){ //查询函数 s *p; //p用来遍历查找的内容 in(head); p=head->next; system("cls"); int i,sui,ban,temp=0; //temp用来标记是否找到信息 char ch; char xuehao[15],ming[20],xingbie,youxiang[20],haoma[20]; //用来输入查找的信息 printf("1.学号\n"); printf("2.姓名\n"); printf("3.年龄\n"); printf("4.班级\n"); printf("5.邮箱\n"); printf("6.电话号码\n"); printf("7.显示所有学生的信息\n"); printf("0.退出\n"); for(i=1;i<=50;i++){ printf("-"); //分割线 } printf("\n"); printf("请选择输入要查询的信息编号:\n"); getchar(); ch=getchar(); if(ch=='1'){ getchar(); printf("请输入要查找的信息内容:\n"); scanf("%s",xuehao); temp=1; while(p){ if(strcmp(xuehao,p->data.num)==0){ //找到的话输出 printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='2'){ getchar(); printf("请输入要查找的信息内容:\n"); scanf("%s",ming); temp=1; while(p){ if(strcmp(ming,p->data.name)==0){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='3'){ getchar(); printf("请输入要查找的信息内容:\n"); scanf("%c",&xingbie); temp=1; while(p){ if(xingbie==p->data.sex){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='4'){ getchar(); printf("请输入要查找的信息内容:\n"); scanf("%d",&sui); temp=1; while(p){ if(sui==p->data.age){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='5'){ getchar(); printf("请输入要查找的信息内容:\n"); scanf("%d",&ban); temp=1; while(p){ if(ban==p->data.clas){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='6'){ getchar(); printf("请输入要查找的信息内容:\n"); scanf("%s",youxiang); temp=1; while(p){ if(strcmp(youxiang,p->data.name)==0){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='7'){ getchar(); printf("请输入要修查找的信息内容:\n"); scanf("%s",haoma); temp=1; while(p){ if(strcmp(haoma,p->data.name)==0){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); } p=p->next; } } if(ch=='8'){ getchar(); temp=1; while(p){ printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number); system("pause"); p=p->next; } } if(temp==0) { printf("没有找到此学生的信息\n"); printf("三秒后返回主菜单"); Sleep(3000); menu(); } s *k; p=head->next; while(p!=NULL){ //清空链表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; printf("查询完毕\n"); printf("三秒后返回主菜单"); Sleep(3000); menu();}void sort(s *head){ //排序函数 system("cls"); //清空屏幕 s *p,*q; in(head); q=head; p=head->next; s *w; w=head->next; char ch; printf("请输入要排序的内容(1是学号、2是年龄):\n"); getchar(); scanf("%c", &ch); if (ch == '1'){ s *temp = (s*)malloc(sizeof(s)); while (p != NULL) { while (p->next != NULL) //按照学号大小排序 { if (strcmp(p->data.num, p->next->data.num)<0) { temp->data = p->data; p->data = p->next->data; p->next->data = temp->data; } p = p->next; } p = q->next; q = p; } } else{ s *temp = (s*)malloc(sizeof(s)); while (p != NULL) { while (p->next != NULL) //按照年龄大小排序 { if (p->data.age < p->next->data.age) { temp->data = p->data; p->data = p->next->data; p->next->data = temp->data; } p = p->next; } p = q->next; q = p; } } printf("\n排序后的信息如下:\n"); while (w != NULL){ //将排序后的链表输出 printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",w->data.num,w->data.name,w->data.sex,w->data.age,w->data.clas,w->data.mail,w->data.number); w = w->next; }system("pause"); out(head); s *k; p=head->next; while(p!=NULL){ //清空链表,只剩head,方便之后的操作 k=p->next; free(p); p=k; } head->next=NULL; printf("三秒后返回主菜单"); Sleep(3000); menu();}void account(){ int n; char date[25]; char item[40]; char s1[45]; char count[12]; FILE *fp; if((fp=fopen("account.txt","at"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } printf("请输入次数"); scanf("%d",&n); while(n) { printf("请输入姓名\n"); scanf("%s",&s1); fputs(s1,fp); printf("请输入日期\n"); scanf("%s",&date); fputs(date,fp); printf("请输入名称\n"); scanf("%s",&item); fputs(item,fp); printf("请输入金额"); scanf("%s",&count); fputs(count,fp); n--; } fclose(fp); printf("三秒后返回主菜单"); Sleep(3000); menu();}void print(){ //打印所有财务数据 char str[10000]; FILE *fp; int qq; if((fp=fopen("account.txt","rt"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); } fgets(str,1000,fp); //获取文件内容 printf("%s",str); //打印内容 printf("\n"); printf("1返回主菜单");fclose(fp); //关闭文件 scanf("%d",&qq); if(qq==1) { menu(); } } void printall(){ //打印所有是学生信息函数 char str[1000]; FILE *fp; int qq; if((fp=fopen("student.txt","rt"))==NULL) { printf("Cannot open file strike any key exit!"); getch(); exit(1); //找不到文件退出程序 } while((fgets(str,1024,fp))!=NULL) { printf(str); } //打印内容 fclose(fp); //关闭文件 printf("1返回主菜单"); scanf("%d",&qq); if(qq==1) { menu(); }}void first(){ //读取文件 FILE *fp,*fp1; /*定义文件指针*/ char s[9],s1[9],s2[9],s3[9],ch,n; int i; ch='_'; if((fp=fopen("file.txt","r"))==NULL) { printf("\n 请进行初始化操作!\n"); for(i=1;i<=50;i++)/*用来做分割线*/ printf("%c",ch); getch(); /*是输入一个字符,但不显示在屏幕上*/ do{ printf("\n 设置密码,不得超过八位数 \n"); for(i=0;i<8&&((s[i]=getch())!=13);i++) /*13代表的是回车*/ putch('*'); /*显示字符*/ printf("\n 再确认一次密码 \n"); for(i=0;i<8&&((s1[i]=getch())!=13);i++) putch('*'); s[i]='\0'; s1[i]='\0'; if(strcmp(s,s1)!=0) /*判断两次密码输入是否一致*/ printf("\n 两次密码输入不一致,请重新输入 \n"); else break; } while(1); /*当括号里是1时表示无限循环*/ if((fp1=fopen("file.txt","w"))==NULL){ printf("\n 系统创建失败,请按任意键退出 \n"); /*打开文件,把密码存进去*/ getch(); exit(1); } for(i=0;s[i]!='\0';i++) putw(s[i],fp1); /*将数组元素(即密码)放入文件中*/ fclose(fp1); /*关闭文件*/ printf("\n 系统初始化成功,按任意键退出后,再重新进入 \n"); getch(); exit(1); } else{ i=0; while(!feof(fp)&&i<8) s2[i++]=getw(fp); /*从文件读出字符赋给数组*/ s2[i]='\0'; strcpy(password,s2); /*将数组s2的字符复制给password*/// enroll(); } if((fp=fopen("file2.txt","r"))==NULL) { printf("\n 请进行初始化操作!\n"); for(i=1;i<=50;i++)/*用来做分割线*/ printf("%c",ch); getch(); /*是输入一个字符,但不显示在屏幕上*/ do{ printf("\n 设置密码,不得超过八位数 \n"); for(i=0;i<8&&((s[i]=getch())!=13);i++) /*13代表的是回车*/ putch('*'); /*显示字符*/ printf("\n 再确认一次密码 \n"); for(i=0;i<8&&((s1[i]=getch())!=13);i++) putch('*'); s[i]='\0'; s1[i]='\0'; if(strcmp(s,s1)!=0) /*判断两次密码输入是否一致*/ printf("\n 两次密码输入不一致,请重新输入 \n"); else break; } while(1); /*当括号里是1时表示无限循环*/ if((fp1=fopen("file2.txt","w"))==NULL){ printf("\n 系统创建失败,请按任意键退出 \n"); /*打开文件,把密码存进去*/ getch(); exit(1); } for(i=0;s[i]!='\0';i++) putw(s[i],fp1); /*将数组元素(即密码)放入文件中*/ fclose(fp1); /*关闭文件*/ printf("\n 系统初始化成功,按任意键退出后,再重新进入 \n"); getch(); exit(1); } else{ i=0; while(!feof(fp)&&i<8) s3[i++]=getw(fp); /*从文件读出字符赋给数组*/ s2[i]='\0'; strcpy(password2,s3); /*将数组s2的字符复制给password*/ }// enroll(); }void enroll(){ //登录函数 int flag=0; int i,n=5; char str[9]; printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf(" ---------------------------------------------------------------- \n"); printf(" | 欢迎使用财务管理系统 | \n"); printf(" | | \n"); printf(" | 请选择登录方式:1管理员登录 2班级成员登录 | \n"); printf(" ---------------------------------------------------------------- \n"); if(getch()=='1') { log=1; }else { log=2; } switch(log) { case 1: printf("请输入账号\n"); scanf("%d",&ac); while(n) { printf("\n"); printf("请输入密码"); for(i=0;i<8&&((str[i]=getch())!=13);i++) putch(str[i]); //获取键盘输入的内容 str[i]='\0'; for(int j=0;j 关于"C语言如何实现财务管理系统"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
输入
信息
密码
文件
学生
内容
函数
学号
系统
财务
班级
菜单
登录
字符
年龄
排序
号码
姓名
数组
邮箱
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全民警评语
数据库的实现与信息安全
数据库有必要建立关系吗
王牌战争服务器名称怎么取
本地映射修改数据库数据
方舟生存进化连接服务器没有响应
局域网内部的代理服务器
山东省高院网络安全平台
软件开发售后维护承诺
网络安全责任追究制度单位
scum服务器连接商城
怀旧服副本有几个服务器
mysql数据库无法登陆
网络安全法第二十七条第三款
宏大软件开发
人工智能编程与软件开发
来哥网络技术交流群
酒店缺乏网络技术人才
软件开发自学哪个学校好
软件开发行业研发费用比例
wegame铁甲雄兵换服务器
游戏软件开发公司架构
北京第五纬度网络技术有限公司
承载网络技术支撑工程师题库
奇益爷爷互联网科技有限公司
创建企业级数据库英文
邯郸网络技术费用
四川出口外贸软件开发
拓斯达软件开发工资
软件开发速成班