《学生课程成绩管理系统学生成绩管理系统课程设计报告c》由会员分享,可在线阅读,更多相关《学生课程成绩管理系统学生成绩管理系统课程设计报告c(12页珍藏版)》请在金锄头文库上搜索。
1、学生课程成绩管理系统学生成绩管理系统课程设计报告C+学生成绩管理系统课程设计报告一、系统的设计需求1、整个系统均用c语言实现;2、利用指针.链表来实现学生成绩的数据结构设计;3、系统具有输入.显示.删除.排序.退出基本功能;4、系统的各个功能模块都用函数的形式来实现;5、可以将学生信息全部显示出来出来。二、系统的功能模块划分每一条记录包括一个学生的姓名、成绩。同时1、输入功能:一次可以完成一个学生成绩记录的输入。2、显示功能:完成全部学生记录的显示。3、删除功能:对指定学生的成绩进行删除。4、排序功能:按学生从大到小进行排序。5、修改功能:对学生的成绩进行修改。三、系统的整体设计1数据结构设计
2、:A、输入功能的设计: void insert_func(void)char s_temp4;ptr=(struct student *) malloc(sizeof(struct student);printf(" Student name : ");gets(ptr->name);/ gets从标准输入设备读取字符串/printf(" Student score: ");gets(s_temp);ptr->score = atoi(s_temp);把字符串转化为 整数B、删除功能的设计: void delete_func(void)/现在
3、进入删除操作char del_name20;printf(" Delete student name: &qnot;);gets(del_name);prev = head;current = head >next;while (current != NULL) &&(strcmp(current->name,del_name)!=0)用至U 了 strcmp比较字符串prev = current;current = current >next;if (current != NULL)pre v>next = current->next;
4、free(current);释放当前位置printf(&q not;studentrecorddeletedn&q uot;,del_name); 输出被删除的姓名elseprintf(" Student %s not foundn",del_name);否则此学生不存在C、排序功能的设计: void sort_fimc(void) /插入数据/ prev = head;/把头指针所指的值付给prev/ current = head>next;把头指针的下一个指针值付给当前指针所指的位置 while (current != NULL) &&(curre
5、nt>score > ptr->score)prev = current;current = current >next;ptr->next = current;prev>next = ptr;D、修改功能的设计:void modify_func(void)char n_temp20,s_temp4;/ 定义字符类型/ printf(" Modify student name: ");gets(n_temp);这样输入姓名current=head-&g t;next;& amp ;&while (current != NULL)
6、(strcmp(current->name,n_temp)!=0)prev = current;current = current->next;if (current != NULL)printf("*n");printf("Studentname : %sn",cuireiit>name);printf(&q uot;Studentscore: %dn";uirent>score);printf( * *n quot ) printf(" Please enter new score: ");gets(
7、s_temp);current->score = atoi(s_temp);printf(&qnot; %s student record modifiedn",n_temp);输出被修改的成绩/elseprintf(" Student %s not foimdn",n_temp);否则此学生不存在anykey_func();E、显示功能的设计:void display_func(void)定义显示/int count=0;system (&q uot;cls&q uot;);if(head->next = NULL)/如果头指针所指数为空 print
8、f(" No student recordn");则输出学生记录为空/else/否则输出学生姓名和成绩printf("NAMESCOREXn");printf("n");current=head >next;while(current != NULL)printf(&qnot; %-20s %3dn",current->name,current->score);count+;current=current->next;if(count % 20 = 0) getch();printf(&q not;p
9、rintf(" Total %d record(s) foundn", count);2功能模块的具体设计整个系统除了主函数外,另外还有8个函数,实现5大功能: 输入功能、显示功能、排序功能、删除功能、修改功能。各 个函数的详细设计说明分别如下:1、 主函数 main()利用while()循环和swithch()实现各函数的调用,系统根据 输入的数字选项来调用相应的函数。2、输入记录函数 getch(); insert_func();这是一个无参函数,用来执行第学生成绩记录的输入,当当 没有学生纪录时就开始进行输入操作。算法:先声明一个首节点head,并将head->
10、next设为 NULLo 然后用 if(fptr=fopen(“slist.dat等T,)=NULL)对程 序进行判断如果成立则进行输入,输入时运用getch()函数和 insert_func()主导来完成。最终效果图:3、显示记录函数 void display_func(void)这是一个不返回值的有参函数,负责对全部学生成绩记录的 输出,不足之处就是不能对学生成绩进行分页显示。算法:先用if语句对头指针的下一给位置进行判断看是否 为空如果为空则不显示如果不为空则输出学生姓名及成绩。算法:现将head->next赋 值给当前位置current然后再用while对current进行定义最 后输出。最终效果:4、删除记录函数void delete_func(void)这是一个有参函数, 先输入要删除的学生记录的姓名,找到后显示该学生信息, 等确认后便可进行删除。算法:从p指向的第一个结点开始,检查该结点中的num 值是否等于输入的要求删除的那个姓名。如果相等就将该结 点删除,如不相等,就将p后移一个结点,再如此进行下去, 直到遇到表尾为止。最终效果:5 排序函数 void sort_func(void)这是一个有参函数,按学生成绩的大小进行排百度搜索“就爱阅读3专业资料、生活学习,尽在就爱阅读网,您的在线图书馆!