c语言学生信息处理系统linux下Word格式文档下载.docx
《c语言学生信息处理系统linux下Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言学生信息处理系统linux下Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。
18externstudent_info*student_list;
//全局变量声明
19
20
21//初始化函数声明
22//初始化学生信息链表
23voidinit_student_info_list();
24//判断学生信息链表是否为空
25intstudent_list_empty();
26
27//操作函数声明
28//向学校信息表中添加学生信息记录
29intadd_student_info();
30//根据学号删除学生信息
31intdelete_student_info(intnum);
32//根据学号修改学生信息
33intmodify_student_info(intnum);
34//根据学号查找学生信息
35student_info*search_student_info(intnum);
36//输出每个学生的平均成绩
37voiddisplay_average();
38//显示所有学生信息
39voiddisplay_student_info();
40//将学生信息保存到文件
41intsave_file();
42//从文件中读取学生信息
43intread_file();
44#endif
student.c文件中是对student.h文件中声明的函数进行定义,给出具体的实现代码。
1#include"
student.h"
2#include<
stdio.h>
3#include<
string.h>
4#include<
malloc.h>
5
6//初始化学生信息链表
7voidinit_student_info_list()
8{
9//学生信息链表头结点
10student_list=(student_info*)malloc(sizeof(student_info));
11student_list->
next=NULL;
12}
13//判断学生信息链表是否为空
14intstudent_list_empty()
15{
16returnstudent_list->
next==NULL;
17}
18//操作函数实现
19//向学校信息表中添加学生信息记录
20intadd_student_info()
21{
22student_info*pstu=(student_info*)malloc(sizeof(student_info));
23if(pstu==NULL)
24{
25printf("
内存分配失败.\n"
);
26return0;
27}
28printf("
请按要求一次输入学生的信息.\n"
29printf("
请输入学号:
"
30scanf("
%d"
&
pstu->
num);
31//判断该学号是否已经存在
32if(search_student_info(pstu->
num)!
=NULL)
33{
34printf("
该学号已经存在学生信息表中.\n"
35return0;
36}
37printf("
请输入姓名:
38getchar();
39gets(pstu->
name);
40printf("
请输入性别:
41scanf("
%s"
pstu->
sex);
42printf("
请输入年龄:
43scanf("
age);
44printf("
请输入英语成绩:
45scanf("
english);
46printf("
请输入数学成绩:
47scanf("
math);
48printf("
请输入计算机成绩:
49scanf("
computer);
50pstu->
average=(pstu->
english+pstu->
math+pstu->
computer)/3;
51//每次从学生信息链表的头部插入;
52pstu->
next=student_list->
next;
53student_list->
next=pstu;
54return1;
55}
56//根据学号删除学生信息
57intdelete_student_info(intnum)
58{
59student_info*pstu;
60student_info*qstu;
61if(search_student_info(num)==NULL)
62{
63printf("
不存在该学好为%d的学生信息.\n"
num);
64return0;
65}
66pstu=student_list->
67qstu=student_list;
68while(pstu->
num!
=num)
69{
70qstu=pstu;
71pstu=pstu->
72}
73qstu->
next=pstu->
74free(pstu);
75return1;
76}
77//根据学号修改学生信息
78intmodify_student_info(intnum)
79{
80intchoice;
81student_info*pstu=search_student_info(num);
82if(pstu==NULL)
83{
84printf("
85return0;
86}
87printf("
1.姓名2.性别3.年龄4.英语成绩5.数学成绩6.计算机成绩.\n"
88printf("
请选择修改的信息:
89scanf("
choice);
90switch(choice)
91{
92case1:
93printf("
请输入新的姓名:
94getchar();
95gets(pstu->
96break;
97case2:
98printf("
请输入新的性别:
99scanf("
100break;
101case3:
102printf("
请输入新的年龄:
103scanf("
104break;
105case4:
106printf("
请输入新的英语成绩:
107scanf("
108break;
109case5:
110printf("
请输入新的数学成绩:
111scanf("
112break;
113case6:
114printf("
请输入新的计算机成绩:
115scanf("
116break;
117default:
118printf("
请按提示要求操作.\n"
119}
120return1;
121}
122//根据学号查找学生信息
123student_info*search_student_info(intnum)
124{
125student_info*pstu;
126pstu=student_list->
127while(pstu&
&
pstu->
128{
129
130pstu=pstu->
131}
132returnpstu;
133}
134//输出每个学生的平均成绩
135voiddisplay_average()
136{
137student_info*pstu;
138pstu=student_list->
139while(pstu)
140{
141printf("
学号为%d,姓名为%s的学生平均成绩为:
%d\n"
num,pstu->
name,pstu->
average);
142pstu=pstu->
143}
144}
145//显示所有学生信息
146voiddisplay_student_info()
147{
148student_info*pstu;
149pstu=student_list->
150printf("
所有学生信息如下所示.\n"
151printf("
学号\t姓名\t性别\t年龄\t英语\t数学\t计算机\t平均成绩.\n"
152while(pstu)
153{
154printf("
%d\t"
155printf("
%s\t"
156printf("
157printf("
%d\t"
158printf("
159printf("
160printf("
161printf("
%d\n"
162pstu=pstu->
163}
164}
165//将学生信息保存到文件
166intsave_file()
167{
168FILE*pfile;
169student_info*pstu;
170pfile=fopen("
student.txt"
"
w"
171if(pfile==NULL)
172{
173printf("
打开文件失败.\n"
174return0;
175}
176pstu=student_list->
177while(pstu)
178{
179fprintf(pfile,"
%5d%15s%9s%3d%4d%4d%4d%4d"
sex,pstu->
age,
180pstu->
english,pstu->
math,pstu->
computer,pstu->
181pstu=pstu->
182}
183fclose(pfile);
184return1;
185}
186
187//从文件中读取学生信息
188intread_file()
189{
190FILE*pfile;
191student_info*pstu;
192pfile=fopen("
r"
193if(pfile==NULL)
194{
195printf("
196return0;
197}
198while(!
feof(pfile))
199{
200pstu=(student_info*)malloc(sizeof(student_info));
201fscanf(pfile,"
%5d%15s%9s%4d%4d%4d%4d%4d"
sex,&
202&
english,&
math,&
computer,&
203pstu->
204//每次从学生信息链表的头部插入;
205pstu->
206student_list->
207}
208fclose(pfile);
209return1;
210}
主函数main.c文件进行测试调用,如下所示:
stdlib.h>
4
5voidmenu();
6
7//学生信息链表
8student_info*student_list;
9
10//用户可以选择1-7可以分别进行学生信息的查看、添加、删除,修改,计算平均成绩,保存,退出系统操作。
11intmain()
12{
13intchoice;
14intnum;
15printf("
**************************\n"
16printf("
欢迎使用学生信息管理系统\n"
17printf("
18printf("
-----------------------------\n"
19init_student_info_list();
20if(read_file())
21printf("
从文件中读取学生信息成功.\n"
22else
23printf("
从文字中读取学生信息失败.\n"
24printf("
25menu();
26while
(1)
27{
请选择操作:
29scanf("
30switch(choice)
31{
32case1:
33if(student_list_empty())
学生信息表为空,请先添加学生信息.\n"
35else
36display_student_info();
37break;
38case2:
39if(add_student_info())
添加学生信息成功.\n"
41else
添加学生信息失败.\n"
43break;
44case3:
45if(student_list_empty())
47else
48{
49printf("
请输入要删除学生信息的学号:
50scanf("
51if(delete_student_info(num))
52printf("
成功删除该学号对应的学生信息.\n"
53else
54printf("
删除失败.\n"
56break;
57case4:
58if(student_list_empty())
59printf("
60else
61{
62printf("
请输入要修改学生信息的学号:
63scanf("
64if(modify_student_info(num))
65printf("
成功修改该学号对应的学生信息.\n"
66else
67printf("
修改失败.\n"
68}
69break;
70case5:
71if(student_list_empty())
72printf("
73else
74display_average();
75break;
76case6:
77if(student_list_empty())
78printf("
79else
80if(save_file())
81printf("
保存学生信息成功.\n"
82else
83printf("
保存学生信息失败.\n"
84break;
85case0:
86printf("
欢迎下次使用,再见.\n"
87system("
pause"
88exit(0);
89break;
90default:
91printf("
输入错误,请重新选择操作.\n"
92}
93}
94system("
95return0;
96}
97
98voidmenu()
99{
100printf("
1.查看学生信息.\n"
101printf("
2.添加学生信息.\n"
3.删除学生信息.\n"
103printf("
4.修改学生信息.\n"
104printf("
5.输出平均成绩.\n"
105printf("
6.保存学生信息.\n"
0.退出系统操作.\n"
107}
程序执行结果如下所示:
(1)第一次执行没有学生信息,读取文件失败。
(2)以后执行先从文件中读取学生信息,然后进行操作。