C语言信息管理系统

目录

前言

一、注意事项

二、代码内容

1.建立链表

2.主函数

3.判断函数

4.菜单函数

5.函数:录入数据

6.函数:保存数据

7.函数:读取数据

8.函数:输出数据

9.函数:查询数据

10.函数:删除数据

11.函数:修改数据

12.函数:排序

13.函数:区间查找

三、总结


前言

在翻弄文件夹的时候突然发现大一时候用C语言写的信息管理系统,总共960多行,当地时学的并不深入,只包含C语言和数据结构的一些内容非常容易理解,代码注释不全,语言不够高级,还望多多包涵。


一、注意事项

这是一个游戏玩家信息管理系统,内部包含庄园等级、采集、制作、战斗等级等内容,其中账号文件保存在了C:\\file\\account.data,游戏数据内容保存在了C:\\file\\practice.data,有需要的话可以在代码中自行修改。本系统运用了C语言、数据结构一些浅知识。包括文件的修改、链表、循环、数组、函数等等。

二、代码内容

1.建立链表

代码如下(示例):


//建立链表//VSSTUDIOtypedef struct player//     玩家信息 数组     {char name[20];       //昵称int house;       //进入时间int fight;       //战斗等级 int make;        //制作等级 int collect;     //采集等级 } player;typedef  struct point//链表     大链表   {player er;     //上面的链表struct point *next;}point; point *head= NULL;
首先建立一个链表,里面包含本系统所需要的数据,集合起来便于访问。

2.主函数

代码如下:

 int main()    //主函数开始 {void first();       //声明函数 int judge(int a, int b);void save();void input();void choice(int z);void print();void read();point* find();void sort();int  part_sort();void delet();void change();void findnum();  //全部声明完成printf("1.我有管理员账号   ");//主程序开始 往下用于登录系统选择登录方式printf("2.我没有账号");printf("\n");printf("(初始密码为123456)");    //避免忘记,管理员再此显示,如有必要可删去本行printf("\n");int b;int acc = 0;int pass = 0;scanf("%d", &b);if (b == 1){printf("请输入管理员密码");printf("\n");int pass;scanf("%d", &pass);while (pass !=123456)    //在此可以修改管理员密码{printf("密码错误请重试");printf("\n");scanf("%d", &pass);}}else if (b == 2)   //没有账号的情况,需要注册,并且写入account.data文件里{FILE* fp;if ((fp = fopen("C:\\file\\account.data", "r")) == NULL)//确定是否有历史账号{fp = fopen("C:\\file\\account.data", "w");    //判断是否存在账号文件fclose(fp);}system("cls");           //刷屏fp = fopen("C:\\file\\account.data", "a");while (1){printf("请注册账号\n\n");printf("请输入账号\n");     //注册账号 printf("\n");scanf("%d", &acc);printf("请输入密码\n");scanf("%d", &pass);//密码不同的情况int passa;printf("请再次输入密码\n");scanf("%d", &passa);if (pass == passa){fprintf(fp, "%d %d\n", acc, pass);printf("注册成功!\n");fclose(fp);break;}else{printf("两次密码输入不同,请重新注册\n");  //两次密码不一致}}while (1)       //准备登入系统{printf("==========欢迎您管理员!!==========");printf("\n");printf("请输入账号\n");scanf("%d", &acc);printf("请输入密码\n");scanf("%d", &pass);if (judge(acc, pass) == 1){printf("======登录成功======");}if (judge(acc, pass) == -1) //judge是判断函数{printf("密码错误");}if (judge(acc, pass) == 0){printf("此用户不存在!");}break;}}else{printf("something is wrong");  //登入失败printf("\n");return 0;}system("pause");system("cls");while (1)//欢迎函数调用,包含菜单选项,无限循环。{first();     //主程序内容正式开始 int flag;scanf("%d", &flag);if (flag >= 0 && flag < 10)   //假如输入了正确数字{//选项========================================对应菜单函数switch (flag){case 0:     //录入游戏信息input();break;case 1:    //保存游戏信息save();break;case 2:   //删除游戏信息delet();break;case 3:   //查找游戏信息这个代码较简单,没有写作函数而是直接写在了下方{ point* q;q = find();if (q == NULL){printf("没有找到这个玩家!");printf("\n");}else{printf("以下为本玩家信息:");printf("\n");printf("玩家昵称:%s     庄园等级:%d     战斗等级:%d      制作等级:%d      采集等级:%d\n", q->er.name, q->er.house, q->er.fight, q->er.make, q->er.collect);}system("pause");system("cls");//清屏break; }case 4:  //修改游戏信息change();break;case 5:  //排序游戏信息sort();break;case 6:return 0;//退出管理系统break;case 7:     //读取游戏信息read();break;case 8:   //打印游戏信息print();break;case 9:findnum();//查找区间break;}}else{printf("输入错误,请重新输入");  //输入了错误的数字system("pause");system("cls");}}return 0;}       //此处主函数结束 

主函数是来调用所有函数,根据输入的数字不同来运行不同的函数

3.判断函数

代码如下:

//判断函数
int judge(int f,int e)  //有返回值,在主函数中再做判断
//匹配数据库中的账号密码
{FILE* fp;int n = 0, i = 0;int zhanghao;int  password;if ((fp = fopen("C:\\file\\account.data", "r")) == NULL)//不存在读者文件{printf("\n 还未存在用户!请新建账户");}fp = fopen("C:\\file\\account.data", "r");for (; !feof(fp);)  //循环读取判断{fscanf(fp, "%d %d", &zhanghao, &password);if (f == zhanghao){if (e == password)  //判断正确{fclose(fp);return 1;}else         //密码错误{fclose(fp);return -1;}}}fclose(fp);return 0;
}

函数用于判断输入的账号和密码是否匹配,判断是否能进入菜单界面,返回值有0、1、-1分别对应三种情况

4.菜单函数

//菜单函数
void first(){printf("==========================================================\n");printf("===========欢迎使用游戏玩家等级信息管理系统=================\n");printf("=========0.录入游戏信息      1.保存游戏信息============\n\n");printf("=========2.删除游戏信息      3.查找游戏信息============\n\n");printf("=========4.修改游戏信息      5.排序游戏信息============\n\n");printf("=========6.退出管理系统      7.读取管理信息============\n\n");  printf("=========8.打印管理信息      9.查询庄园等级区间========\n\n");printf("=======================================================\n");}

表示的内容和主函数里的数字相对应,分别代表10个功能,也对应后面的十个函数。

5.函数:录入数据

//录入函数
void input() //录入信息    {point* p1 = (point*)malloc(sizeof(point));p1->next = NULL;if (head == NULL)//头插法输入(链表的一种插入方式){head = p1;}else{p1->next = head;head = p1;}printf("输入玩家昵称:\n");   //输入各种信息scanf("%s", p1->er.name);printf("输入玩家庄园等级:\n");scanf("%d", &p1->er.house);printf("输入玩家战斗等级:\n");scanf("%d", &p1->er.fight);printf("输入玩家制作等级:\n");scanf("%d", &p1->er.make);printf("输入玩家采集等级:\n");scanf("%d", &p1->er.collect);printf(" 玩家信息录入成功\n");system("pause");//暂停 (使界面更简洁)system("cls");//清屏
}

录入函数仅仅是通过手动输入把数据录入的链表之中,而不是放入文件,这样可以使录入更加高效、便捷。

6.函数:保存数据

//保存数据函数 只是保存文件,意思是把数组里的内容保存到文件中
void save() {FILE* fp = fopen("C:\\file\\practice.data","w");//文件                          if (fp==NULL){printf("打开文件失败");printf("\n");//磁盘损坏、储存已满的情况return ;}//遍历链表point* p=head;fp= fopen("C:\\file\\practice.data", "a");while(p!=NULL){/* char name[20];       //名字int house;       //庄园等级int fight;       //战斗等级 int make;        //制作等级 int collect;     //采集等级 */fprintf(fp, "%s %d %d %d %d\n", p->er.name, p->er.house, p->er.fight, p->er.make, p->er.collect);p=p->next;} fclose(fp);printf("保存成功"); //保存文件 printf("\n");system("pause");system("cls");
}

保存函数使录入函数的后一步,即把链表里的数据写入文件中。之所以把他俩分开是为了提高效率,在录入函数之后可以对链表进行操作,可以在得到最终结果的时候写入文件,而不是频繁的读取文件,造成时间和性能资源的浪费。

7.函数:读取数据

//读取函数
void read() {FILE* fp = fopen("C:\\file\\practice.data", "r");if (fp == NULL){printf("读取文件失败\n");    //由于位置原因无法打开文件return;
}player p2;head = NULL;//临时补加for (; !feof(fp);){fscanf(fp, "%s%d%d%d%d\n",p2.name, &p2.house, &p2.fight, &p2.make, &p2.collect);//    注意此处!!!!//printf("%s %d %d %d %d\n", p2.name, p2.house, p2.fight, p2.make, p2.collect);对应关系,注意顺序不能乱point* p1 = (point*)malloc((sizeof(point)));p1->next = NULL;//转换位置point* p1_a;for (int i = 0; i < 20; i++)    //循环拷贝{p1->er.name[i] = p2.name[i];}p1->er.house = p2.house;p1->er.fight = p2.fight;p1->er.make = p2.make;p1->er.collect = p2.collect;  //把p2的数据拷贝到p1if (head == NULL)   //头插法插入数据{head = p1;p1->next = NULL;}else{p1->next = head;head = p1;}}fclose(fp);printf("加载数据成功\n");  //提示全部录入完毕system("pause");system("cls");}

读取函数是把文件里的内容完全读取到链表P1中,因为数据无法再辅存即文件里进行改变,只能读取到内存链表中才能进行后一步的操作。

8.函数:输出数据

//输出函数
void print() {printf("===========================================================\n");printf("  昵称    庄园等级    战斗等级    制作等级      采集等级   \n");printf("===========================================================\n");//遍历列表point* p1 =head;while(p1!=NULL)//循环输出,直到为空{printf("%-14s%-12d%-12d%-12d%-12d\n", p1->er.name, p1->er.house, p1->er.fight, p1->er.make, p1->er.collect);p1 = p1->next;}system("pause");system("cls");
}

输出函数即输出链表里的内容,显示在屏幕上。

9.函数:查询数据

//查找函数
point* find()
{char pname[20];printf("请输入要查找玩家的昵称\n");scanf("%s", pname);//遍历链表point* p1 = head;  //便利链表搜寻所要查找的名字(可能包括重名的)while (p1 != NULL){if (strcmp(p1->er.name, pname) == 0)return p1;p1 = p1->next;}return NULL;
}

查询函数,简单的遍历链表查询,搜索输入的玩家名字。

10.函数:删除数据

//删除函数)/*
/*int delet_a(char a[], char b[])  //可能是简单的删除函数,还没有测试XD
{for (int i = 0; i < 20; i++){if (a[i]!=b[i]){return 0;}}return 1;
}*/
void delet()//  正经的删除函数
{char pname[20];printf("请输入删除玩家的名字\n");scanf("%s",pname);//若为头节点point* p1;p1 = head;//备份头文件,防止头文件丢失 //printf("%d", strcmp(p1->er.name, pname));if (strcmp(p1->er.name, pname)==0){head = head->next;free(p1);printf("删除成功\n");}point* p7;//如果不是头节点while (p1->next->next!= NULL){//printf("%d", strcmp(p1->er.name, pname));if (strcmp(p1->next->er.name, pname) == 0){p7 = p1->next;//接着备份 p1->next = p1->next->next;free(p7);printf("\n删除成功\n");break;}p1 = p1->next;}//如果是尾节点if (p1 ->next->next== NULL){if (strcmp(p1->next->er.name, pname) == 0){p1->next = NULL;}printf("\n删除成功\n");}system("pause");printf("\n是否确认删除文件内容\n");printf("1.确认        0.取消\n");int flag;scanf("%d", &flag);if (flag==1){FILE* fp = fopen("C:\\file\\practice.data", "w");point* p = head;while (p != NULL){/*  char name[20];       //名字int house;       //庄园等级int fight;       //战斗等级int make;        //制作等级int collect;     //采集等级 */fprintf(fp, "%s %d %d %d %d\n", p->er.name, p->er.house, p->er.fight, p->er.make, p->er.collect);p = p->next;}fclose(fp);printf("文件删除成功"); //保存文件 printf("\n");system("pause");system("cls");}else{system("cls");}
}

删除函数比较麻烦它分了三种情况:头节点、中间节点和尾节点,删除方法也不同需要三种方式,所以代码很长。

11.函数:修改数据

//修改玩家信息  修改前需要读取数据
void change()
{char name2[20];printf("请输入需要修改玩家的昵称\n");  //输入需要修改的名字(名字默认不允许相同)scanf("%s", name2);point* p1_c = (point*)malloc((sizeof(point)));p1_c = head;while (p1_c != NULL)  //循环寻找此人{if (strcmp(p1_c->er.name, name2) == 0){printf("请输入修改后的玩家信息,依次为庄园等级,战斗等级,制作等级,采集等级\n");scanf("%d,%d,%d,%d", &p1_c->er.house, &p1_c->er.fight, &p1_c->er.make, &p1_c->er.collect);  //把修改后的数据计入链表printf("修改成功!\n");system("pause");system("cls");break;}p1_c = p1_c->next;}if (p1_c == NULL)  //没有找到相关名字{printf("未找到相关玩家");system("pause");}else  //找到之后直接把现在的链表存入数据{//存入文件system("pause");  //当时忘记上面写了保存函数,又在这傻傻的写了一遍printf("\n是否确认修改文件内容\n");printf("1.确认        0.取消\n");//最后判断是否输入到文件,因为输入到文件之后是不可逆的int flag;scanf("%d", &flag);if (flag == 1){FILE* fp = fopen("C:\\file\\practice.data", "w");point* p = head;while (p != NULL){fprintf(fp, "%s %d %d %d %d\n", p->er.name, p->er.house, p->er.fight, p->er.make, p->er.collect);//输入数据p = p->next;}fclose(fp);printf("修改成功"); //保存文件 printf("\n");system("pause");system("cls");}}
}

修改函数起初只是修改了链表内的内容,所以运行修改函数之前必须读取数据,以至于为何要分开,还是为了避免过多的文件文件读取,毕竟内存读取速度可以达到辅存读取速度的500倍。在修改完链表内容后会让你判断是否写入文件或者继续修改。大大节省了运行时间。

12.函数:排序

//部分排序函数
int  part_sort()
{printf("请输入需要排序的数据\n");printf("1.庄园等级            2.战斗等级\n");printf("3.制作等级            4.采集等级\n");int flag_1;scanf("%d", &flag_1);printf("请选择排序方式\n");printf("1.正序                2.倒序\n");int flag_2;scanf("%d", &flag_2);int flag_3;flag_3 = flag_1 * 10 + flag_2;return(flag_3);
}
//排序函数
void sort()
{int flag_1;int flag_2;int flag_3;flag_3 = part_sort();flag_1 = flag_3 / 10;flag_2 = flag_3 % 10;//此时需要提前读取信息//此时文本信息已经在链表内了point* p3 ;point* p4 ;//第一种选项=========================================if (flag_1 == 1 && flag_2 == 1){p3 = head;p4 = head->next;while (p3->next!=0){while (p4!=0){if (p3->er.house > p4->er.house){point* p5 = (point*)malloc((sizeof(point)));/*5->er.house = p3->er.house;p5->er.collect = p3->er.collect;p5->er.fight = p3->er.fight;p5->er.make = p3->er.make;p5->er.name[20] = p3->er.name[20];//比较麻烦但是简洁的替换方式p3->er.house = p4->er.house;p3->er.collect = p4->er.collect;p3->er.fight = p4->er.fight;p3->er.make = p4->er.make;p3->er.name[20] = p4->er.name[20];//第二遍p4->er.house = p5->er.house;p4->er.collect = p5->er.collect;p4->er.fight = p5->er.fight;p4->er.make = p5->er.make;p4->er.name[20] = p5->er.name[20];*/p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}

部分排序函数是用来判断想要查询的方法,即足足有八种情况,需要分别排序。(当时应该是为了完成作业凑字数,如果不需要的话留一种排序方法就行)

注释里是对排序的拆分,更加清晰如何变换数据(冒泡排序yyds),代码过于冗长,以上只放了第一种排序既庄园等级正序,便于观看。

以下是排序函数的剩余内容(剩余的7排序种方法)

//开始第二种情况if (flag_1 == 2 && flag_2 == 1){p3 = head;p4 = head->next;while (p3->next != NULL){while (p4 != NULL){if (p3->er.fight > p4->er.fight){point* p5 = (point*)malloc((sizeof(point)));p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}//开始第三种选项if (flag_1 == 3 && flag_2 == 1){p3 = head;p4 = head->next;while (p3->next != NULL){while (p4 != NULL){if (p3->er.make > p4->er.make){point* p5 = (point*)malloc((sizeof(point)));p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}//第四种选项if (flag_1 == 4 && flag_2 == 1){p3 = head;p4 = head->next;while (p3->next != NULL){while (p4 != NULL){if (p3->er.collect > p4->er.collect){point* p5 = (point*)malloc((sizeof(point)));p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}//第五种选项if (flag_1 == 1 && flag_2 == 2){p3 = head;p4 = head->next;while (p3->next != NULL){while (p4 != NULL){if (p3->er.house < p4->er.house){point* p5 = (point*)malloc((sizeof(point)));p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}//第六种选项if (flag_1 == 2 && flag_2 == 2){p3 = head;p4 = head->next;while (p3->next != NULL){while (p4 != NULL){if (p3->er.fight < p4->er.fight){point* p5 = (point*)malloc((sizeof(point)));p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}//第七种选项if (flag_1 == 3 && flag_2 == 2){p3 = head;p4 = head->next;while (p3->next != NULL){while (p4 != NULL){if (p3->er.make < p4->er.make){point* p5 = (point*)malloc((sizeof(point)));p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}//第八种选项if (flag_1 == 4 && flag_2 == 1){p3 = head;p4 = head->next;while (p3->next != NULL){while (p4 != NULL){if (p3->er.collect < p4->er.collect){point* p5 = (point*)malloc((sizeof(point)));p5->er = p3->er;p3->er = p4->er;p4->er = p5->er;//替换完成free(p5);}p4 = p4->next;//后进;}//继续后进p3 = p3->next;//   p4 = p3->next;}printf("排序成功!请输出!");printf("\n");system("pause");system("cls");}}

所用方法和第一种一样。没有做过多解释。

13.函数:区间查找

void findnum()//区间查找//只能进行庄园等级查找{int a, b;printf("请输入查询庄园等级的下限");scanf("%d", &a);printf("请输入查询庄园等级的上限");scanf("%d", &b);//需要提前遍历链表       一定要提前读取数据point* p1 = head;point* p2= (point*)malloc(sizeof(point));point* head_a=NULL;while (p1!=NULL){if (((p1->er.house)>a)&&((p1->er.house)<b))//判断是否在区间内{point* p3 = (point*)malloc(sizeof(point));p3->er = p1->er;p3->next = NULL;if (head_a == NULL)//头文件为空{head_a = p2;p2->er= p3->er;p2->next = NULL;printf("%d", p2->er.house);}else//头文件不为空{p2->next= p3;printf("%d", p2->er.house);}p2 = p2->next;}p1 = p1->next;}printf("区间提取成功\n");printf("按任意键输出\n");system("pause");point* p4 = head_a;if (head_a==NULL){printf("没有找到相关项");}while (p4 != NULL)  //输出在区间内的玩家信息{printf("===========================================================\n");printf("  昵称    庄园等级    战斗等级    制作等级      采集等级   \n");printf("===========================================================\n");printf("%-14s%-12d%-12d%-12d%-12d\n", p4->er.name, p4->er.house, p4->er.fight, p4->er.make, p4->er.collect);p4 = p4->next;}system("pause");system("cls");
}

区间查找前必须读取数据,因为只能查找链表里的数据,查找过后输入到P4链表并且输出。


三、总结

本章系统是玩家信息管理系统,可实现对玩家信息的各种修改,其中涉及到对数据修改或查找的务必要提前读取数据到链表,无法直接从文件中查找、修改信息。文中提到的两个文件在不存在的情况下会自动生成。其中排序函数过于繁琐,可以适当删去。把以上所有的代码按照顺序放在一起既可以运行。

内容有些过于简单,没有运行用高级代码,还望多多包涵;如有错误,还希望各位指正。

全代码文件https://download.csdn.net/download/weixin_52582099/85815994

非常简单的C语言 信息管理系统 (内含源代码)相关推荐

  1. c语言程序设计医院就医,C语言程序设计(医院信息管理系统)附源代码[精品].doc...

    C语言程序设计(医院信息管理系统)附源代码[精品] 专业设计报告 课程名称: C 语 言 程 序 设 计 课题名称: 医院信息管理系统 专业班别: 11本计算机科学与技术二班 姓 名: 学 号: 指导 ...

  2. 医院信息管理系统c语言代码大全,C语言程序设计医院信息管理系统附源代码.doc...

    实用文档 PAGE 文案大全 专业设计报告 课程名称: C 语 言 程 序 设 计 课题名称: 医院信息管理系统 专业班别: 11本计算机科学与技术二班 姓 名: 学 号: 指导教师: 设计日期: 2 ...

  3. c语言程序设计 医院,C语言程序设计(医院信息管理系统)附源代码(17页)-原创力文档...

    专 业 设 计 报 告 课程名称: C 语 言 程 序 设 计 课题名称: 医院信息管理系统 专业班别: 12 本计算机科学与技术二班 姓 名: 学 号: 指导教师: 设计日期: 2012-5-25 ...

  4. c语言程序设计 医院,C语言程序设计医院信息管理系统附源代码(47页)-原创力文档...

    专业设计报告 课程名称: C语言程序设计 课题名称:医院信息管理系统 专业班别:12本计算机科学与技术二班 姓名: 学号: 指导教师: 设计日期:2012-5-25 教师评语: 等级 项目 优 良 中 ...

  5. Jsp+Ssh+Mysql实现的简单的企业物资信息管理系统

    此篇给大家演示的是一款基于jsp+ssh(spring+struts2+mysql)实现的企业物资信息管理系统 实现了基本的管理员.操作员等用户管理.物品分类管理.物品管理.入库管理.出库管理.库存预 ...

  6. 物流公司管理列表html文档,jsp物流中心仓储信息管理系统(源代码及全套资料).doc...

    毕业设计材料清单 一.论文正文 ----------------2 二.指导教师评语(正文) ----------60 三.文献综述----------------61 四.指导教师评语及成绩(文献综 ...

  7. C++小学期作业,信息管理系统(源代码)

    这里写自定义目录标题 C++小学期作业,信息管理系统 关于代码介绍 主要包含的三个类 信息读取与存储 效果图 关于代码补充 C++小学期作业,信息管理系统 这是我学C++的时候完成的一个任务,写的一个 ...

  8. 人事信息管理系统的源代码

    一.人事信息管理系统 : 主要功能如下: 1. 添加功能: 添加一个职员的基本信息,包括姓名,工作证号,身份证号码,出生年月日,家庭住址,联系电话,薪水,性别: 2. 显示功能:显示所有职员的主要信息 ...

  9. 较简单的c语言航班管理系统

    头文件 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdlib.h> #include<stdio.h> #include<s ...

最新文章

  1. 文计笔记7:HTML与CSS
  2. LAUNCHPAD运行5110测试程序
  3. 田志刚:企业知识管理与用户创造内容(UGC)
  4. Linux学习之系统编程篇:互斥锁(pthread_mutex_init / lock / trylock / unlock / destroy)
  5. Python高级——多线程(threading)
  6. 一些推荐的深度学习、机器学习资料
  7. Android编程之Toast官方使用说明译文
  8. 解决centos6.4 启动dell omsa 失败
  9. 天锐绿盾加密软件支持域控吗?
  10. ENVI 5.3 下载及安装
  11. 机械优化设计c语言鲍威尔法,机械优化设计鲍威尔法
  12. 基于QT实现的钢琴软件 (MFC大作业)
  13. 远程登陆cisco防火墙
  14. matlab 添加多行注释
  15. Ubuntu中挂载使用nas服务器
  16. 渥太华大学计算机科学COOP,渥太华大学专业哪个好
  17. 微信公众号历史文章采集
  18. Tracy JS 小笔记 - 数据结构 栈,队列,链表,字典,集合,哈希表(散列表)
  19. 秦储一行拜访陕西省文联和陕西新华出版传媒集团
  20. Mac更新后NetKeeper用不了怎么办?

热门文章

  1. 20分钟,我用简单的Python代码创建了一个完整的区块链!想学吗?
  2. WindowsXP也能启动纯DOS
  3. LED流水灯多种点灯方式代码0基础讲解
  4. 开源塞尔达,支持打包华为鸿蒙OS!还有更牛逼的来了
  5. 【1170】计算2的N次方
  6. 查看python解释器位置
  7. 爬虫碰到谷歌验证码的一些解决思路
  8. U盘安装CenterOS 6.5
  9. Linux的ip设置
  10. 游戏软件的发展和特点