C++实现简单的信息管理系统

 更新时间:2016年04月15日 09:53:49   作者:仙桃李远航  
这篇文章主要为大家介绍了C++实现简单的信息管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家分享C++实现简单的信息管理系统,小编之前在学习的时候也要做一些管理系统,在网上查了许多资料,现在我把资料分享给大家,希望能够帮助到大家。

#include <stdio.h>
#include <stdlib.h>
#include "file.h"
 
 
 
void savaList(Node *head)/**把用户录入的数据存储到文件里面去方便下次读取*/
{
 FILE *fp=fopen("data\\data.txt" ,"w") ;
 Node *p ;
 for(p=head->next;p;p=p->next)
 {
   fwrite(&(p->data),sizeof(students),1,fp) ;
 }
 fclose(fp) ;
 
}
 
 
 
void duquLisr(Node *head)/**读取用户之前所录入的数据 */
{
 FILE *fp=fopen("data\\data.txt" ,"r") ;
 students e ;
  while( fread(&e,sizeof(students) ,1,fp ) )
  {
   insertList(head,e) ;
  }
  fclose(fp) ;
 
}
 
 
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "goods.h"
 
/**录入数据,函数目的返回一个goods类型的值*/  /**      char name[M] ;
                   char phone[M] ;
                   char street[M] ;
                   char city[M] ;
                   char youb[M] ; */
students lurushuju()
{
 students e ;
 
 
 printf("请输入学生的姓名 ") ;
 scanf("%s",e.name);
 
 printf("请输入学生的电话 ") ;
 scanf("%s",e.phone) ;
 
 printf("请输入学生的街道 ") ;
 scanf("%s",e.street) ;
 
 printf("请输入学生的城市信息 ") ;
 scanf("%s",e.city) ;
 
 printf("请输入学生的邮编 ") ;
 scanf("%s",e.youb) ;
 
 
 return e ;
 
}
void shuchushuju(students e)/**依次输出数据e*/
{
 printf("%15s%15s%15s%15s%15s\n" , e.name ,e.phone,e.street,e.city,e.youb) ;
 
}
void xiugaishuju(students *e)/**根据地址修改数据e里面的个别数据*/ /**通过选择序号选择想要修改的数据*/
{
 int score ;
 int count=1 ;
 printf("请输入想要修改的数据类型\n") ;
 do
 {
 printf("1.姓名;2.电话;3.街道信息;4.城市信息;5.邮编;6.退出\n");
 scanf("%d",&score) ;
 switch(score)
 {
 case 1:
  scanf("%s",e->name);
  break ;
 case 2:
  scanf("%s",e->phone) ;
  break;
 case 3:
  scanf("%s",e->street) ;
  break ;
 case 4:
  scanf("%s",e->city) ;
  break ;
 case 5:
  scanf("%s",e->youb) ;
  break ;
 default:
  count=0;
 }
 }while(count);
 
}
 
 
 
 
#include <stdio.h>
#include <string.h>
#include "list.h"
#include "goods.h"
 
void creatList(Node *head,int n)/**创建一个长度为n的链表*/
{
 int i ;
 students p ;
 for(i=1; i<=n ; i++)
 {
  p=lurushuju() ;
  insertList(head,p) ;
 }
 
}
void insertList(Node *head,students e) /**把e中的某一个值以一定的顺序插入到以head为头节点的链表上面去*/
{
 Node *p;
 Node *q;
 q=(Node*)malloc(sizeof(Node));
 q->data=e;
 for(p=head; p->next && strcmp( (p->next)->data.name,e.name)<0 ;p=p->next ) ;
 q->next=p->next;
 p->next=q;
}
 
int delList(Node *head,char e[])/**把链表姓名为e的一项删除,先找找到删除成功就返回1,否者返回0*/
{
 Node *p;
 for(p=head; p->next && strcmp(e,p->next->data.name) ;p=p->next) ;
 if(p->next ==0)
 {
  return 0 ;
 }
 else
 {
  Node *t;
  t=p->next;
  p->next=t->next;
  free(t);
  return 1 ;
 }
 
}
 
 
Node *searchList(Node *head,char e[])/**在链表中查找名字这一项找到返回这个节点的地址 否者返回null*/
{
 Node *p;
 for(p=head; p && strcmp(e,p->data.name) ; p=p->next ) ;
 return p ;
}
 
 
void disputList(Node *head)/**依次顺序输出head链表*/
{
 Node *p;
 for(p=head->next;p;p=p->next)
 shuchushuju(p->data);
 
 
}
 
void changeList(Node *head ,char e[]) /**修改链表中某一个节点的data值*/ /**该系统只能通过姓名查找 后续在完善*/
{
 Node *p ;
 p=searchList(head,e) ;
 if(!p)
 {
  printf("error\n");
 }
 else
 {
  xiugaishuju(&(p->data)) ;
 
 }
 
}
void destroy(Node *head)
{
 Node *p;
 for(p=head;p;p=p->next)
  free(p);
}
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"
#include "goods.h"
 
void mainmenu(Node *head)
{
 int scored ;
 int count=1 ;
 char e[100] ;
 int n;
 students p;
 do
 {
 printf("================****学生信息管理系统(公测版by李远航)****=====\n") ;
 printf("==========================开始===============================\n");
 printf("==1.录入数据 2.修改数据 3.显示数据 4.删除数据 5.插入数据=\n") ;
 printf("=======7.读取数据========6.存盘退出=======8.退出=============\n") ;
 printf("=======================**********============================\n") ;
  printf("请输入你想要做的事\n") ;
  scanf("%d",&scored);
 switch(scored)
 {
 case 1:
  printf("请输入你大约想保存的学生\n");
  scanf("%d",&n);
  creatList(head,n);
  break ;
 case 2:
  printf("请输入待改学生的姓名\n") ;
  scanf("%s",e);
  changeList(head , e) ;
  break ;
 case 3:
  printf("   姓名   电话  街道信息   城市信息  邮件信息 \n") ;
  disputList(head) ;
  break ;
 case 4:
  printf("请输入待删学生的姓名\n");
  scanf("%s",e);
  n=delList(head, e) ;
  if(n)
  {
   printf("删除成功\n");
  }
  else
  {
   printf("error\n") ;
  }
  break ;
 case 5:
  printf("请输入你想插入的信息\n");
  p=lurushuju();
  insertList(head, p);
  break ;
 case 6:
  savaList(head);
  count=0;
  break ;
 case 7:
  duquLisr(head);
  break ;
 default :
  count=0;
 }
 system("pause") ;
 system("cls") ;
 
 }while(count);
 printf("\n\n\n\n感谢您对本系统的支持,如果您在使用过程中遇到bug,请发送邮件到1277171561@qq.com\n\n\n\n\n\n\n") ;
 
 
}
 
 
 
int main()
{
 Node *head=(Node*)malloc(sizeof(Node));
 head->next=NULL ;
 mainmenu(head) ;
 destroy(head) ;
 return 0;
}
 
 
#ifndef FILE_H_INCLUDED
#define FILE_H_INCLUDED
#include "list.h"
 
void savaList(Node *head);/**把用户录入的数据存储到文件里面去方便下次读取*/
void duquLisr(Node *head);/**读取用户之前所录入的数据 */
 
 
 
#endif // FILE_H_INCLUDED
 
 
 
#ifndef GOODS_H_INCLUDED
#define GOODS_H_INCLUDED
 
typedef struct students /*定义学生信息*/
{
 char name[100] ;
 char phone[100] ;
 char street[100] ;
 char city[100] ;
 char youb[100] ;
 
}students;
 
students lurushuju();/**录入数据,函数目的返回一个goods类型的值*/
void shuchushuju(students e);/**依次输出数据e*/
void xiugaishuju(students *e);/**根据地址修改数据e里面的个别数据*/
 
 
 
 
 
#endif // GOODS_H_INCLUDED
 
 
 
 
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
#include "goods.h"
 
typedef struct Node /**链表结构体*/
{
 students data ;
 struct Node *next ;
}Node ;
 
void creatList(Node *head,int n);/**创建一个长度为n的链表*/
void insertList(Node *head,students e) ;/**把e中的某一个值以一定的顺序插入到以head为头节点的链表上面去*/
int delList(Node *head,char e[]) ;/**把链表姓名为e的一项删除,先找找到删除成功就返回1,否者返回0*/
Node *searchList(Node *head,char e[]) ; /**在链表中查找名字这一项*/
void disputList(Node *head);/**依次顺序输出head链表*/
void changeList(Node *head ,char e[]) ;/**修改链表中某一个节点的data值 */
void destroy(Node *head) ;/**摧毁一起链表数据*/
 
 
 
 
 
#endif // LIST_H_INCLUDED

以上就是C++信息管理系统的关键代码,供大家参考,下面再为大家分享一些其他管理系统:

C++实现简单的图书管理系统

C++实现简单的职工信息管理系统

C++基础学生管理系统

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • C语言 表、栈和队列详解及实例代码

    C语言 表、栈和队列详解及实例代码

    这篇文章主要介绍了C语言 表、栈和队列详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • C语言实现快速排序

    C语言实现快速排序

    这篇文章主要为大家详细介绍了C语言实现快速排序算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 浅析顺序结构存储的栈

    浅析顺序结构存储的栈

    这篇文章主要介绍了顺序结构存储的栈,有需要的朋友可以参考一下
    2014-01-01
  • C++:构造函数,析构函数详解

    C++:构造函数,析构函数详解

    今天小编就为大家分享一篇关于C++构造函数和析构函数的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-09-09
  • Qt编写地图之实现经纬度坐标纠偏

    Qt编写地图之实现经纬度坐标纠偏

    地图应用中都涉及到一个问题就是坐标纠偏的问题,这个问题的是因为根据地方规则保密性要求不允许地图厂商使用标准的GPS坐标,而是要用国家定义的偏移标准。本文将详细讲解如何在Qt中实现经纬度坐标纠偏,需要的可以参考一下
    2022-03-03
  • 解读堆排序算法及用C++实现基于最大堆的堆排序示例

    解读堆排序算法及用C++实现基于最大堆的堆排序示例

    把待排序的数组构造出最大堆是进行堆排序操作的基本方法,这里将带大家来解读堆排序算法及用C++实现基于最大堆的堆排序示例,首先从堆排序的概念开始:
    2016-06-06
  • C++根据传入的函数指针来解析需要的参数(推荐)

    C++根据传入的函数指针来解析需要的参数(推荐)

    C++可以根据传入的函数指针,获取自己需要的参数类型,然后根据参数源中获取需要的参数,具体实现方式大家参考下本文
    2018-05-05
  • C语言实现简单推箱子游戏

    C语言实现简单推箱子游戏

    这篇文章主要为大家详细介绍了C语言实现简单推箱子游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 深入理解C语言中使用频率较高的指针与数组

    深入理解C语言中使用频率较高的指针与数组

    在C语言中要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好就会有改不完的bug和通不完的宵,下面这篇文章主要给大家介绍了关于C语言中使用频率较高的指针与数组的相关资料,需要的朋友可以参考下
    2022-03-03
  • C++中四种加密算法之AES源代码

    C++中四种加密算法之AES源代码

    本篇文章主要介绍了C++中四种加密算法之AES源代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-11-11

最新评论