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

时间:2022-03-11 13:07:19

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
#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++信息管理系统的关键代码,供大家参考,以上就是本文的全部内容,希望对大家的学习有所帮助。