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

640?wx_fmt=gif

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

640?wx_fmt=jpeg

#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

640?wx_fmt=png

640?wx_fmt=png

它,

不仅仅是一个码

扫码关注

C++资源免费送

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
修正了已发现的所有错误.欢迎大家下载试用.. 一、项目名称:学校学生信息管理系统。 二、项目目标:实现对学校学生的信息管理——信息的建立和维护、信息的检索。 三、主要功能: 1.信息的输入:建立学生档案文件。 2.信息维护: 添加:增加新学生; 修改:学生信息的改变; 删除:学生减少。 3.信息处理 按要求检索学生信息; 按要求统计信息。 四、界面系统 1.系统管理员进入 (请输入密码) 2.一级菜单 (1 信息维护 2 信息检索 3 信息统计 4 退出) 3. 二级菜单 信息维护 (1 建立学生成绩文件 2 添加学生记录 3 删除学生记录 4 修改学生记录 5 返回上级菜单) 信息检索 (1 按班级查找 2 返回上级菜单) 信息统计 (1 成绩统计 2 返回上级菜单) 五、主要功能说明: 1.用口令(密码)形式验证管理员身份(可输入三次),合法者可进入,否则程序结束。 2.有关功能说明 1)建立学生成绩表(模块a) 建立新的学生成绩文件; 建立若干学生记录,包括姓名、学号、班级、课程编号、成绩。 2)添加学生记录(模块b) 在已存在的学生成绩文件中添加新记录。 3)删除学生记录(模块c) 在学生成绩文件中删除有三门课程不及格的学生记录; 删除前,逐条显示符合删除条件的学生姓名、成绩,确认后再删除。 4)修改学生信息(模块d) 输入学生学号,在学生成绩文件中找出该学生记录; 在屏幕上逐条显示该学生的各条记录; 每显示一条,询问是否修改,如果“Y”,输入修改后数据, 将文件原记录删除,保存新的记录; 5)按姓名和班级查找(模块e) 输入姓名显示相应信息。 6)信息统计(模块f) 同时按照班级和课程统计每门课程、每个班级的平均成绩,最高分、最低分; 在屏幕上先依次显示各门课程,对应的各个班级的统计数据。 7)退出信息管理系统,返回操作系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值