栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 资讯 > 高等教育 > 院校资讯

三分钟学编程③| 控制台信息管理系统

三分钟学编程③| 控制台信息管理系统

控制台信息管理程序

Foreword

经过了前几篇文章的图形化学习,不知道各位小伙伴是否有所收获?见识了C++五彩斑斓的世界,接下来,咋们可又得回到控制台窗口了;这次本文将带来一个学生信息的管理程序,但是,考验各位小伙伴的时候到了,不知道各位小伙伴是否有能力将本文的信息管理程序也图形化?

评论留言:图形化,说不定下一篇文章就有你想要的答案!

运行截图展示

项目浅析

有头链表就是通过一个头部指针来操作整个的数据,然后又通过指针互相连接,串在一起;大家可以联想老鹰捉小鸡时,母鸡和小鸡排在一起用手拉着对方的情形;

有头链表可参考下图1.1;

结构体嵌套可参考下图1.2;

1

参考图(1.1)

2

参考图(1.2)

3

结构体初始化

p_Node initNode(){  p_Node pN = (p_Node)malloc(sizeof(Node));  if (!pN)exit(OVERFLOW);    //exit(OVERFLOW)是强行退出程序    //这里就是如果指针内存分配失败,强行退出程序  pN->age = 0;  pN->number = 0;   //指针通过动态内存申请可变为变量,SIZE是我定义的宏  pN->name = (char*)malloc(sizeof(char) * SIZE);  if (!pN->name)exit(OVERFLOW);  return pN;}

4

将节点变为数据

p_Data createData(p_Node Node){  p_Data p_NewData = (p_Data)malloc(sizeof(Data));  if (!p_NewData)exit(OVERFLOW);  p_NewData->next = NULL;  p_NewData->node = initNode();    //字符串不能直接赋值,要进行拷贝  int strLeng = strlen(Node->name) + 1;  //strlen计算的长度中没有算'/0',终止符,所以要加1;  strcpy_s(p_NewData->node->name, strLeng, Node->name);  p_NewData->node->age = Node->age;  p_NewData->node->number = Node->number;  return p_NewData;}

5

写入文件一般步骤

创建写文件流对象 ->打开文件 -> 判断文件是否打开 -> 写入文件 -> 关闭文件;(具体如下示例代码)这里 ios::app 是以追加的方式写文件,否则会覆盖原有文件;由于读写文件步骤一致,便不再叙述读文件的步骤。

1.3

保存数据示例代码

int saveFile(p_Data p_Head){  ofstream ofs;  ofs.open(FILENAME, ios::binary | ios::out | ios::app);  if (!ofs.is_open())  {    cout << "保存文件时,打开文件失败..." << endl;    return Error;  }  p_Data pMove = p_Head->next;  if (pMove == NULL)  {    cout << "未保存,链表没有数据..." << endl;    ofs.close();    return Error;  }  while (pMove != NULL)  {    ofs << pMove->node->name<<" "<< pMove->node->age<<" "      << pMove->node->number << endl;    pMove = pMove->next;  }  ofs.close();  cout << "保存成功..." << endl;  return Ok;}

1.4

读取数据示例代码

int readFile(p_Data p_Head){      p_Data curData = p_Head->next;  if (curData != NULL)  {    free(curData);    curData = NULL;  }  p_Head->next = NULL;    //至于上面这里这样写的作用,大家可以注释后感受一下    //注释快捷键(vs2019中):ctrl+k+c  ifstream ifs;  ifs.open(FILENAME, ios::binary | ios::in);  if (!ifs.is_open())  {    cout << "读文件时打开失败..." << endl;    return Error;  }  p_Node Node = initNode();  //int num = 0;调试作用  while (ifs >> Node->name >> Node->age >> Node->number)  {    insertHead(p_Head, Node);    //num++;调试作用  }  //这里是我调试的时候写的    ifs.close();  cout << "成功读入文件..." << endl;  return Ok;}

6

判断用户的输入类型

因为用户选择功能的方式是输入Int类型的数字,如果不对用户的输入做判断,当用户char类型或其他类型数据时,系统会崩掉或者陷入无线循环,所以最好判断一下输入;cin.fail()判断输入的类型和定义的类型是否一致,一致返回true,否则返回false;

1.5

保存数据示例代码

int select;cin >> select;if (!cin.fail()){}

关于该项目的大致解析就到这儿结束了,各位小伙伴赶紧自己试一试吧!如果各位小伙伴有不清楚的地方,欢迎评论区留言讨论;如果想获取项目完整代码,评论区留言:我想要代码,即可获取完整的项目源代码!咋们下一期再见......

下一期我们再见

策划:贵州大学科技学院工学部团总支 · 学生会

责编:任兴武

初审:陈珊 任兴武

编审:兰令

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/news/1447442.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号