学校要求写学生信息管理系统,写完顺便水一篇博客
数据结构是双向链表,Ptial指针永远指向尾节点,head指针永远指向头节点(有一个链表头)
要注意的地方:学生成绩我是用了一个,其他我没有用,有文件保存和文件读取,但是保存值针对第一次保存,再次保存的话会出现BUG,保存的txt,第一个信息是学生的数量。排序是选择排序是从大到小排序(可以直接跑,但是诸位要修改许多才能实现直接的功能,希望能帮到各位)
学校任务要求
1、目的和要求:
(1)设计一个主函数和多个子函数,每个子函数完成一个相对独立的子功能。
(2)程序运行时,首先进行口令检查,再显示菜单。并能根据菜单调用相应的函数功能。
口令程序段的功能要求:
1)提示用户输入一个口令。
2)用户输入口令后,若口令对,则提示用户通过,可执行后续程序;否则不通过。
3)可对用户的口令输入进行次数限制(如:重复输入3次都不对),则自动退出系统。
(3)显示数据时,一页显示不下,可分页显示。
数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。
2、主要内容:
具有以下功能:
(1)添加、删除任意个记录。
(2)修改任意个记录。
(3)显示、保存记录。
(4)排序功能:打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小),存盘并显示这两个文件的全部记录。
(5)查询功能:打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。
登录密码是:qwerty
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{
int Student_number;
char Student_name[10];
int Student_grade;
char Student_major[10];
int Student_score_1;
int Student_score_2;
int Student_score_3;
int Student_average_score;
int Student_Sum_average;
struct student* pre;
struct student* next;
}Student;
typedef struct student_message
{
int Student_Num;
Student* p;
Student* head;
}Student_Message;
void save_file(Student_Message* Stu);
void show_student(Student_Message* Stu);
void add_student(Student_Message* Stu);
Student* search_student(Student_Message* Stu);
int delete_student(Student_Message* Stu);
int change_student(Student_Message* Stu);
void Search_Student(Student_Message* Stu);
void clean_student();
void land();
void keydowm(Student_Message* Stu);
void sort(Student_Message*Stu);
void readstudent(Student_Message*Stu);
void save_file(Student_Message*Stu)
{
Student* temp = Stu->head;
FILE* fp= NULL;
fp = fopen("学生信息.txt", "w+");
if (fp == NULL)
return;
//fprintf(fp, "学生学号 学生年级 学生年级 学生专业 学生成绩\n");
fprintf(fp, "%d ", Stu->Student_Num);
while (temp->next)
{
fprintf(fp, "%d\t%d\t%s\t%s\t%d\t", temp->Student_number, temp->Student_grade,
temp->Student_name, temp->Student_major, temp->Student_score_1);
temp = temp