数据结构课程设计C语言 学生成绩管理系统
时间:2025-03-13
时间:2025-03-13
单链表作为该系统的存储结构,c语言为开发工具
#include"stdio.h"
#include"malloc.h"
#include"stdlib.h"
#include"string.h"
#include"ctype.h"
#define size sizeof(struct student)
#define ture 1
#define max 10
#define error 0
int index_counter = 0;////////执行次数
int count_student = 1;// 学生数目
typedef struct student *pointer;
///////
typedef struct student
{
int num;////学号
int n_sub;////科目的个数
char name[max];//学生姓名
char subject[max][2*max];////科目
float score[max];///科目对应的的成绩
pointer next;////下一个节点的指针
};/////节点数据类型
typedef pointer lklist;
pointer head1;///
pointer rear1 = NULL;
///////////////////函数的声明////////////////////////函数的声明////////////////////////
lklist input_one_new(lklist stud);////一个学生信息的输入
lklist show_one_stu_new(lklist y);////显示一个学生的信息
lklist creat_input_new();//创建链表,并从键盘输入
float cal_one_sum(lklist sum_one);////计算一个学生总成绩
float calcu_sum_hight(lklist sum_h);/////获取最高总成绩
int input_num();///输入要操作的学号
char inout_name();
char continue_run_order();/////操作是否继续执行的选择
void show_stu_mew(lklist stu);////显示所有学生信息
void calculate_sum(lklist p);//计算学生信息
void find_stu_new(lklist fi);////查询信息
void update_new(lklist up);/////修改信息
void save_stu_new_tofile(lklist student);/////保存信息
void creat_input_to_file_new(lklist st);//////从文件读取信息到链表
void clear_record(lklist clear);////////清除记录
void free_pointer_quit(lklist s);/////释放空间,,,退出系统
void screen_clear();////////清除 文本窗口
/////////////////主函数//////////////主函数////////////////主函数////////////主函数 ////
/////////////
void main()
{
rear1=head1= (struct student*)malloc(size);
int select = -1;
char ch2;/////是程序等待
while (ture)//打印主菜单供用户选则的内容
{
printf("\n\n\n");
printf(" /*******************学生成绩统计系统************************/\n");
printf(" 1 ****** 从键盘输入学生信息\n\n");
printf(" 2 ****** 计算学生成绩\n\n");
printf(" 3 ****** 修改学生信息\n\n");
printf(" 4 ****** 查询学生信息\n\n");
printf(" 5 ****** 显示学生信息\n\n");
printf(" 6 ****** 保存学生信息\n\n");
printf(" 7 ****** 从文件输入学生信息\n\n");
printf(" 8 ****** 清除文本窗口\n\n");
printf(" 9 ****** 释放空间和退出系统\n\n");
while (ture)
{
printf(" 输入选择 [ 1 2 3 4 5 6 7 8 9] \n 您的选择是 :");
scanf_s("
;%d", &select);
fflush(stdin); //清空缓冲区
if (select == 1)
{
creat_input_new();
break;
}
else if (select == 2)
{
calculate_sum(he
单链表作为该系统的存储结构,c语言为开发工具
ad1);
ch2 = getchar();
break;
}
else if (select == 3)
{
update_new(head1);
break;
}
else if (select == 4)
{
find_stu_new(head1);
break;
}
else if (select == 5)
{
show_stu_mew(head1);
ch2 = getchar();
break;
}
else if (select == 6)
{
save_stu_new_tofile(head1);
printf("信息已经保存!\n");
break;
}
else if (select == 7)
{
creat_input_to_file_new(rear1);
break;
}
else if (select == 8){
screen_clear();
break;
}
else
if (select == 9){
free_pointer_quit(head1);
break;
}
else
{
printf(" 输入错误,,请输入【0,1,2,3,4,5,6,7】中的一个");
break;
}
}
}
}
///////////函数实现//////////////////////////////函数实现///////////////////////函数实现//////////
lklist input_one_new(lklist stud){
int sub_c = 0;////////科目的个数
int cycle_index_counter = 0;///////控制WHILE循环的执行次数
printf("第【 %d 】个学生信息\n", count_student);
printf(" 学号 "); scanf_s("%d", &(stud->num)); fflush(stdin); //清空缓冲区
printf(" 姓名 "); scanf_s("%s", stud->name, max); fflush(stdin); //清空缓冲区
sub_c = 0;
while (cycle_index_counter != 1){
printf(" 科目【%d】 ", sub_c + 1); scanf_s("%s", stud->subject[sub_c], max); fflush(stdin); //清空缓冲区
printf(" 成绩【%d】 ", sub_c + 1); scanf_s("%f", &(stud->score[sub_c])); fflush(stdin); //清空缓冲区
printf(" 科目 【%d 】成绩输入是否继续?【输入 1 结束】\n", sub_c + 2);
scanf_s("%d", &cycle_index_counter); fflush(stdin); //清空缓冲区
sub_c++;
stud->n_sub = sub_c;
}
count_student++;
return stud;
}
lklist show_one_stu_new(lklist y){
printf(" 学号 %d \n", y->num);
printf(" 姓名 %s \n", y->name);
for (int i = 0; i <y->n_sub; i++){
printf(" 科目 %s \n", y->subject[i]);
printf(" 成绩 %6.2f \n", y->score[i]);
…… 此处隐藏:6409字,全部文档内容请下载后查看。喜欢就下载吧 ……