学生成绩管理系统课程设计报告
前言
一、系统的设计需求
1、整个系统均用C语言实现;
2、利用指针、链表来实现学生成绩的数据结构设计; 3、系统具有输入、显示、删除、排序、退出基本功能; 4、系统的各个功能模块都用函数的形式来实现; 5、可以将学生信息全部显示出来出来。
二、系统的功能模块划分
每一条记录包括一个学生的姓名、成绩。同时
1、输入功能:一次可以完成一个学生成绩记录的输入。 2、显示功能:完成全部学生记录的显示。 3、删除功能:对指定学生的成绩进行删除。 4、排序功能:按学生从大到小进行排序。 5、修改功能:对学生的成绩进行修改。
三、系统的整体设计 1.数据结构设计: A、输入功能的设计:
void insert_func(void) {char s_temp[4];
ptr=(struct student *) malloc(sizeof(struct student)); printf(\
gets(ptr->name);// gets从标准输入设备读取字符串// printf(\gets(s_temp);
ptr->score = atoi(s_temp);//把字符串转化为 整数//
B、删除功能的设计:
void delete_func(void)//现在进入删除操作// {char del_name[20];
printf(\gets(del_name);
1 / 10
prev = head;
current = head->next;
while ((current != NULL) && (strcmp(current->name , del_name)!=0))//用到了strcmp 比较字符串 {prev = current;
current = current->next; }if (current != NULL)
{prev->next = current->next; free(current);//释放当前位置//
printf(\输出被删除的姓名// }else
printf(\否则此学生不存在//
C、排序功能的设计:
void sort_func(void) //插入数据// {prev = head;//把头指针所指的值付给prev//
current = head->next;//把头指针的下一个指针值付给当前指针所指的位置// while ((current != NULL) && (current->score > ptr->score)) {prev = current;
current = current->next; }ptr->next = current; prev->next = ptr;
D、修改功能的设计:
void modify_func(void)
{char n_temp[20],s_temp[4];//定义字符类型// printf(\gets(n_temp);//这样输入姓名 current=head->next;
while ((current != NULL) && (strcmp(current->name , n_temp)!=0)) {prev = current;
current = current->next; }if (current != NULL)
{printf(\printf(\ Student name : %s\\n\printf(\ Student score: %d\\n\printf(\printf(\gets(s_temp);
current->score = atoi(s_temp);
printf(\}//输出被修改的成绩// else
printf(\否则此学生不存在// anykey_func();
E、显示功能的设计:
2 / 10
void display_func(void)//定义显示// {int count=0; system(\
if(head->next == NULL)//如果头指针所指数为空// {printf(\则输出学生记录为空// }else//否则输出学生姓名和成绩//
{printf(\ NAME SCORE\\n\printf(\current=head->next; while(current != NULL)
{printf(\ %-20s =\\n\count++;
current=current->next;
if(count % 20 == 0) getch();
}printf(\
printf(\
2.功能模块的具体设计
整个系统除了主函数外,另外还有8个函数,实现5大功能:输入功能、显示功能、排序功能、删除功能、修改功能。各个函数的详细设计说明分别如下: 1、 主函数 main()
利用while()循环和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、 输入记录函数getch(); insert_func();
这是一个无参函数,用来执行第学生成绩记录的输入,当当没有学生纪录时就开始进行输入操作。
算法:先声明一个首节点head,并将head->next设为NULL。然后用 if((fptr=fopen(“slist.dat”,”r”))==NULL)对程序进行判断如果成立则进行输入,输入时运用getch()函数和insert_func()主导来完成。 最终效果图:
3、 显示记录函数 void display_func(void)
这是一个不返回值的有参函数,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。
算法: 先用if语句对头指针的下一给位置进行判断看是否为空如果为空则不显示如果不
3 / 10