最新C程序设计基础课程设计设计报告-链表建立学生成绩管理系统
- 格式:doc
- 大小:104.00 KB
- 文档页数:22
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
《C语言程序设计实训2》报告设计题目:基于链表的学生信息管理系统学院名称:信息科学技术学院专业:网络工程班级:二班姓名:学号:指导教师:提交日期:一、 实验内容:编写并调试程序,实现学校各专业班级学生信息的管理。
要求一个工程下多个文件。
main 函数以单独的文件main.cpp 存放。
在头文件student.h 中定义学生信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩;和符号常量N (学生数)。
(同一班级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)。
全局类型的定义如下:二、实验要求:(1) main 函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。
(2) 定义函数STU *CreateList (char * filename ):从二进制文件“studentInfo.dat ”中依次读取12个学生的数据(在文件中学生信息按学号由低到高依次存放),建立带头结点(特殊结点,不放学生信息)的、有序的单链表(链表中各学生信息按学号由低到高依次存放), 返回表头指针。
每次从文件中读一个学生的信息,并将该学生信息插入到链表的表尾。
设置头结点的目的:在链表中第一个学生结点之前插入或者是删除第一个学生结点的时候不必做特殊处理)更灵活的方法:从文件中循环读数据时,根据当前学生信息的next成员的值,决定是否进行下次循环,如果next==NULL,则表明读到最后一个学生信息,循环结束。
(3)定义函数void Output (STU *head):以指向链表头结点的指针为参数,将链表中所有学生的信息表格化输出。
定义函数void OutOneNode(STU *p): 输出参数所指的链表中一个结点的信息。
(4)STU *Max(STU *head):查找总成绩最高的学生,返回指向该学生结点的指针。
考虑特殊情况,找到两个及以上相同最高分同学的情况,如何处理?(5)定义函数STU *Search_num(STU * head ,char *num ):查找指定的学生,返回指向该学生结点的指针。
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
#include <stdio.h> #include <stdlib.h>#include <string.h>#include <conio.h>#include <windows.h>#include <ctype.h>#define YES 1#define NO 0typedef struct{int num;float math_score;float engl_score;float chin_score;float phy_score;float chem_score;double aver_score;double sum_score;char sex;}StudentDate;//学生基本信息typedef struct student{char name[20];//学生姓名StudentDate one;//学生其他信息int rank;//成绩排名struct student *next;}Student, *List;Student *startCheck(void);//开始检查Student *createListHead(void);//创建链表的头void menu(void);//主菜单void sortList(Student *pHead);//排序链表void readListWithFile(Student *pHead, char *file_name);//从文件中读取数据,并保存在链表中void sorttList(Student *pHead);//排序链表int userChioce(Student *pHead);//用户选择int sortMenu(void);//打印选择菜单void passwordCheck(void);//密码检测void correctWord(void);//修改密码void addStudentInfo(Student *pHead);//向链表的末尾添加数据int scanMenu(void);//浏览菜单void findStudentInfo(Student *pHead);//查找学生信息void delStudentInfo(Student *pHead);//删除某一个学生信息void alterStudentInfo(Student *pHead);//修改学生信息void saveList(Student *pHead);//将链表保存在文件里void printList(Student *pHead);//打印链表void statisStudentInfo(Student *pHead);//查看学生信息int statisMenu(void);//查看菜单void gotoxy(int x, int y);//改变光标位置函数void inputData(Student *pHead, Student *node);//输入信息,并检测是否合法int main(void){Student *pHead;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//得到窗口句柄SMALL_RECT rc = { 0, 0, 94 - 1, 30 - 1 }; //{Y位置,X位置,宽,高} SetConsoleWindowInfo(hOut, true, &rc);// 重置窗口位置和大小system("color 5B");//设置控制台颜色pHead = startCheck();//读取信息while (1){if (9 == userChioce(pHead)) //按9时退出系统{break;}}return 0;}void menu(void){system("CLS");//清屏printf("\n\n\n\t\t\t\t┌─────────────────┐\n"); printf("\t\t\t\t│学生成绩统计系统│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 1 增加学生记录│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 2 删除学生记录│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 3 修改学生记录│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 4 查找学生信息│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 5 统计学生成绩│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 6 查看学生成绩│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│7 修改登陆密码│\n");printf("\t\t\t\t├─────────────────┤\n"); printf("\t\t\t\t│8 关于│\n");printf("\t\t\t\t├─────────────────┤\n"); printf("\t\t\t\t│9 退出系统│\n");printf("\t\t\t\t└─────────────────┘\n"); }void gotoxy(int x, int y)//x为列坐标,y为行坐标{COORD pos = { x, y };HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut, pos);}Student *startCheck(void){Student *pHead;FILE *fp1;char password[20] = "123456";int i;if ((fp1 = fopen("password.dat", "rb")) == NULL)//若密码文件不存在,新建密码文件{fp1 = fopen("password.dat", "wb");fwrite(password, 20, 1, fp1);fclose(fp1);printf("密码初始化完成!(默认密码为:123456)");passwordCheck();}else{passwordCheck();}//读条system("CLS");system("title 学生成绩统计系统-载入中");//将标题栏命名为“学生成绩统计系统”printf("\n\n\t\t\t欢迎进入本系统!正在载入.....");printf("\n\n\n\n\t\t\t┏━━━━━━━━━━┓\n"); printf("\t\t\t┃┃\n");printf("\t\t\t┗━━━━━━━━━━┛\n");gotoxy(26, 7);for ( i = 0; i < 10; i++){printf("█");Sleep(100);}pHead = createListHead();readListWithFile(pHead, "stud.dat");return pHead;}Student *createListHead(void){Student *pHead;pHead = (List)malloc(sizeof(Student));pHead->next = NULL;return pHead;}void readListWithFile(Student *pHead, char *file_name) { FILE *fp;Student *p1, *p2;int count, rank = 0;StudentDate dat;char stu_name[20];fp = fopen(file_name, "r");if (fp == NULL){fp = fopen(file_name, "w");fclose(fp);return;}fseek(fp, 0L, 2);count = ftell(fp);p1 = pHead;fp = fopen(file_name, "r");while (!feof(fp)){p2 = (List)malloc(sizeof(Student));fscanf(fp, "%d%s %c%f%f%f%f%f\n", &p2->one.num, p2->name, &p2->one.sex, &p2->one.chin_score,&p2->one.math_score, &p2->one.engl_score, &p2->one.chem_score, &p2->one.phy_score);p2->one.sum_score = (double)(p2->one.chin_score + p2->one.chin_score + p2->one.engl_score +p2->one.chem_score + p2->one.phy_score);p2->one.aver_score = p2->one.sum_score / 5;p2->next = NULL;p1->next = p2;p1 = p2;if (ftell(fp) == count){break;}}//将链表排序,并初始化排名for (p1 = pHead->next; p1 != NULL; p1 = p1->next) {for (p2 = p1->next; p2 != NULL; p2 = p2->next) {if (p2->one.aver_score > p1->one.aver_score){dat = p2->one;strcpy(stu_name, p2->name);p2->one = p1->one;strcpy(p2->name, p1->name);p1->one = dat;strcpy(p1->name, stu_name);}}p1->rank = ++rank;}fclose(fp);}void sortList(Student *pHead) {Student *p1, *p2; StudentDate dat;char stu_name[20];int bum, count = 0, rank;。
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
c语言程序设计学生成绩管理系统报告C语言程序设计学生成绩管理系统报告一、引言随着计算机技术的不断发展,计算机在教育领域中的应用也越来越广泛。
学生成绩管理系统是一种基于计算机技术的教育管理工具,可以方便、快捷地管理学生的成绩信息。
本报告介绍了一种基于C语言的学生成绩管理系统的设计与实现。
二、系统设计1.需求分析学生成绩管理系统需要实现以下功能:(1)录入学生信息:包括学生姓名、学号、性别、年龄等基本信息。
(2)录入学生成绩:包括语文、数学、英语等科目的成绩。
(3)查询学生成绩:可以按照学号、姓名等条件查询学生成绩。
(4)修改学生成绩:可以修改学生的成绩信息。
(5)删除学生成绩:可以删除学生的成绩信息。
2.系统设计(1)数据结构设计本系统采用结构体来存储学生信息和成绩信息。
结构体的定义如下:typedef struct student{char name[20]; //姓名char id[20]; //学号char sex[10]; //性别int age; //年龄float chinese; //语文成绩float math; //数学成绩float english; //英语成绩}STUDENT;(2)界面设计本系统采用命令行界面,用户可以通过输入数字选择相应的功能。
(3)功能实现本系统实现了录入学生信息、录入学生成绩、查询学生成绩、修改学生成绩和删除学生成绩等功能。
具体实现方法如下:① 录入学生信息用户输入学生的基本信息,程序将信息存储到结构体中。
② 录入学生成绩用户输入学生的学号,程序查找该学生的信息并录入成绩。
③ 查询学生成绩用户输入学号或姓名,程序查找学生的信息并输出成绩。
④ 修改学生成绩用户输入学号,程序查找该学生的信息并修改成绩。
⑤ 删除学生成绩用户输入学号,程序查找该学生的信息并删除成绩。
三、系统实现本系统采用C语言编写,具体实现方法如下:(1)定义结构体typedef struct student{char name[20]; //姓名char id[20]; //学号char sex[10]; //性别int age; //年龄float chinese; //语文成绩float math; //数学成绩float english; //英语成绩}STUDENT;(2)录入学生信息void input_student(STUDENT *stu) {printf("请输入学生姓名:");scanf("%s", stu->name);printf("请输入学生学号:");scanf("%s", stu->id);printf("请输入学生性别:");scanf("%s", stu->sex);printf("请输入学生年龄:");scanf("%d", &stu->age);}(3)录入学生成绩void input_score(STUDENT *stu) {printf("请输入学生学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){printf("请输入语文成绩:");scanf("%f", &stu->chinese);printf("请输入数学成绩:");scanf("%f", &stu->math);printf("请输入英语成绩:");scanf("%f", &stu->english);}}(4)查询学生成绩void search_score(STUDENT *stu){printf("请输入学号或姓名:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0 || strcmp(stu->name, id) == 0){printf("姓名:%s 学号:%s 性别:%s 年龄:%d 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f\n", stu->name, stu->id, stu->sex, stu->age, stu->chinese, stu->math, stu->english);}}(5)修改学生成绩void modify_score(STUDENT *stu) {printf("请输入学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){printf("请输入语文成绩:"); scanf("%f", &stu->chinese); printf("请输入数学成绩:"); scanf("%f", &stu->math);printf("请输入英语成绩:"); scanf("%f", &stu->english); }}(6)删除学生成绩void delete_score(STUDENT *stu) {printf("请输入学号:");char id[20];scanf("%s", id);if(strcmp(stu->id, id) == 0){stu->chinese = 0;stu->math = 0;stu->english = 0;}}四、系统测试本系统经过测试,能够正常运行,并且实现了所有功能。
c学生成绩管理系统课程设计报告一、教学目标本课程的教学目标是使学生掌握学生成绩管理系统的核心知识,包括系统的设计、实现和应用。
具体来说,知识目标要求学生了解成绩管理系统的原理、结构和常用技术;技能目标要求学生能够使用相关工具和语言进行成绩管理系统的开发和维护;情感态度价值观目标要求学生认识到成绩管理系统在教育领域的重要性,培养学生的责任感和使命感。
二、教学内容根据课程目标,教学内容主要包括成绩管理系统的原理、结构、设计和实现。
具体来说,教材的章节安排如下:1.第一章:成绩管理系统的概述,介绍成绩管理系统的定义、功能和应用场景。
2.第二章:成绩管理系统的结构与原理,讲解成绩管理系统的组成部分、工作原理和关键技术。
3.第三章:成绩管理系统的需求分析,引导学生学习如何进行需求分析,并编写需求说明书。
4.第四章:成绩管理系统的系统设计,教授系统设计的方法和技巧,包括数据库设计、界面设计和模块划分。
5.第五章:成绩管理系统的实现与测试,指导学生进行系统编码、调试和测试,确保系统功能的正确性和稳定性。
三、教学方法为了实现课程目标,我们将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法。
具体来说:1.讲授法:用于讲解成绩管理系统的理论知识,帮助学生建立系统性的知识体系。
2.讨论法:鼓励学生就实际问题进行讨论,培养学生的思考能力和团队协作精神。
3.案例分析法:通过分析典型成绩管理系统案例,使学生更好地理解并应用所学知识。
4.实验法:让学生动手实践,亲身体验成绩管理系统的开发和应用过程,提高学生的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统性的知识学习。
2.参考书:提供丰富的参考资料,帮助学生拓展视野,深入理解成绩管理系统。
3.多媒体资料:制作课件、教学视频等多媒体资料,增强课堂教学的趣味性和互动性。
4.实验设备:配置必要的实验设备,确保学生能够进行实际操作,提高实践能力。
一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
三、实践任务1.欢迎画面2.学生成绩管理系统(自己设计界面)3.异或加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。
如:设原文为ab1234,密钥为56,则有ab1234565656按二进制进行异或操作即可得到密文(乱码)。
4.移位加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容(限于英文字母)以字符形式读出,根据密钥k(用户从键盘输入)将对应字符进行移位操作即可,解密时移动方向相反。
如:设原文为abcdef,密钥为5,则有abcdef 每个字母按字母表向后移动位(注:z后接a)fghijkl 可得到密文(乱码)。
5.辅助运算(1)整数N模m的乘法逆t要求:输入整数N和m,求出t,若t不存在,给出信息。
提示:这三个数满足:N*t%m=1,使用穷举法。
例如:当N为11,m为26时,由于(11×19)%26=1,所以11模26的乘法逆为19。
(2)统计字母个数要求:输入一段英文字母,统计各个字母的个数,并按个数从大到小排序输出。
提示:字母大小写等价。
输出格式为:字母:个数。
(3)OTP加密要求:输入同等长度的原文x和密钥k(英文字母),根据公式c=(x+k) %26 得到密文,并输出。
提示:将26个字母按0~25编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。
c语言课程设计报告学生成绩管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法和编程技巧,通过实现一个学生成绩管理系统,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、控制结构、函数等基本语法。
–理解结构体和文件操作等相关知识。
2.技能目标:–能够运用C语言编写简单的程序。
–学会使用C语言实现数据的输入、输出和处理。
–掌握使用结构体创建学生成绩数据结构,并实现对成绩的增删改查等操作。
3.情感态度价值观目标:–培养学生对编程的兴趣,增强自信心。
–培养学生的团队协作能力和解决问题的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、文件操作等。
具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制结构、函数等。
2.数据结构:结构体、数组、指针等。
3.文件操作:文件的打开、关闭、读写等。
4.学生成绩管理系统:实现一个学生成绩管理系统,包括学生的增删改查、成绩的排序、统计等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生学会运用C语言解决实际问题。
3.实验法:让学生动手实践,编写程序,培养实际编程能力。
四、教学资源1.教材:《C程序设计语言》或《C语言入门教程》。
2.参考书:《C Primer Plus》、《C语言编程思想》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
评估方式应客观、公正,能够全面反映学生的学习成果。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程作业等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节进行教学,确保在有限的时间内完成教学任务。
学生成绩管理系统设计报告一、需求分析:用数组或链表数据结构完成一个学生成绩管理系统,此系统的具体功能要求如下:(1)学生信息录入功能1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治、程序设计基础、物理五门课成绩。
2)可插入一个或多个学生信息到当前编辑的班级数据中。
3) 可删除一个或多个学生信息。
(2)文件保存功能1)学生信息每一班存为一个数据文件,数据文件可在程序中打开、编辑和重新保存。
2)用户输入学生信息可随时保存数据文件。
(3)文件打开功能1)程序只能对当前打开的数据文件进行编辑。
(4)查询功能1)浏览所有学生信息;2)按学号查询学生信息;3)按姓名查询学生信息;4) 查询一个班总成绩和平均成绩;5) 查询一个班某一门课总成绩和平均成绩;6)查询某一门课分数段(<60,60-69,70-79,80-89,>90)学生数。
(5)报表输出功能1) 按学号输出一个班学生信息:学号、姓名、性别、数学、英语、政治、程序设计基础、物理成绩和总成绩,到屏幕和文件。
2) 按总成绩输出从高到低输出学号、姓名信息。
注:以上功能以菜单形式供用户使用,并有一定的容错功能。
二、概要设计整体框架:整个学生成绩管理系统采用链表作为基本数据结构,创建一个类student用于保存学生的数据且是链表中的一个节点。
类list作为保存整个链表之用。
主函数通过switch语句来根据用户的需要连接各个模块,以实现用户的需要。
模块基本介绍:1.用户输入模块在此模块中,用户将根据菜单提示结合自己的需求输入一个0~11的值,来实现一定的功能。
2.学生信息录入模块此模块可以让用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治、程序设计基础、物理五门课成绩。
用户可插入一个或多个学生信息到当前编辑的班级数据中。
用户可删除一个或多个学生信息。
3.文件保存功能模块用户在确定以录入的成绩无误之后,可以将学生信息以每一班为单位存为一个数据文件。
设计题目:班级:姓名:学号:完成日期:目录目录 (1)1.课程设计目的和要求 (1)1.1课程设计《学生成绩管理系统》的题目要求 (1)2.课程设计任务内容 (2)2.1《学生成绩管理系统》主要功能实现方式 (2)2.1.1链表处理数据 (2)2.1.2文件读写存储学生信息 (2)2.2创建数据库管理系统(DBMS) (2)3.详细设计说明 (3)3.1题目设计分析 (3)3.1.1需求分析 (3)3.1.2解题思路分析 (3)3.2设计过程 (3)3.2.1链表(结构体)定义 (3)3.2.2函数编写 (3)3.2.3编译与调试 (5)4.软件使用说明 (6)4.1主界面介绍 (6)4.2创建学生信息数据表 (6)4.3增加数据信息 (6)4.4删除数据信息 (6)4.5修改信息 (6)4.6查找信息 (6)4.7统计功能 (7)5.课程设计心得与体会 (7)5.1概述 (7)5.2心得与体会 (7)5.2.1数据库管理系统——链表+文件读写 (7)5.2.2指针与内存 (7)6.参考文献 (8)7.附录:部分程序清单 (8)1.课程设计目的和要求1.1课程设计《学生成绩管理系统》的题目要求学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。
系统的主要功能包括:1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。
2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。
3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。
5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。
(1) 按学号查询,输入一个学号,输出对应的学生信息。
(2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。
(3) 按学院查询,输入学院名称,输出该学院的全部学生的信息。
(4) 按班级查询,输入班级名称,输出该班级的全部学生的信息。
6. 按不同条件对学生成绩进行统计工作。
(两个表)(1) 按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。
(2) 按平均分统计各个分数段的学生人数(n)(不及格,60-69,70-79,80-89,90-100)。
(3) 分别找出3门课程成绩最高的学生,并输出他们的信息。
(4) 分别统计出3门课程的不及格率(n/N),并输出。
2.课程设计任务内容2.1《学生成绩管理系统》主要功能实现方式2.1.1链表处理数据学生作为某一对象,其自身包含不同属性,而每个属性的类型并不完全相同,因而,我们必须通过创建结构体类型的变量来定义学生信息。
而用户在输入学生信息时,并不一定指定学生人数,因此,需要系统动态分配内存给节点,从而达到随时增删的目的。
但,结构体仅能记录单个学生的信息,并不能是所有信息产生联系,故,必须通过定义结构体指针变量,来将全部的学生信息串连在一起。
2.1.2文件读写存储学生信息在《学生成绩管理系统》中输入的学生信息只暂时存储于内存中,当《学生成绩管理系统》关闭时,内存会自动清除已输入的信息,从而使学生信息丢失。
所以,必须将学生信息存入指定文件中才能实现数据的存储。
2.2创建数据库管理系统(DBMS)《学生成绩管理系统》的实质即简易的数据库管理系统,通过对数据的增删改查,而创建出特定的数据处理仓库。
数据库管理系统(DBSM)可以对存入的数据进行统一的管理和控制,具有数据的完整性,数据的安全性,并发控制,和数据库的恢复等功能。
利用关系模型和关系数据库系统,使数据以二维表的形式表示,数据结构简单清晰,易学易用。
3.详细设计说明3.1题目设计分析3.1.1需求分析《学生成绩管理系统》是应用于学生考试成绩存储的简易系统。
通过该系统可以创建、增加、删除、查询学生的个人信息,统计学生考试情况,并可以存储到指定目录的文件中,以达到创建数据库管理系统的目的。
3.1.2解题思路分析首先,分析《学生成绩管理系统》的主要功能模块。
该系统组要分为两大模块:一是,对数据信息的增删改查;二是,对已有信息的统计。
其次,分析该系统的实现方式。
该系统为链表的具体应用,需要熟练掌握链表及文件读写的相关知识。
另外,需要将每个具体功能编写为单一的被调函数,主函数实现输入输出功能,以达到优化程序的目的。
最后,运行并调试程序,更改程序错误,优化程序功能。
3.2设计过程3.2.1链表(结构体)定义struct node{ int num;char nam[N];char col[N];char cla[N];float math;float eng;float clan;float sum;float ave;struct node *next;};3.2.2函数编写●主函数void main()主函数void main()实现各功能的选择,分为创建、增加、删除、修改、查询,以及统计等功能,而各功能分别编写为被调函数。
利用while循环实现用户的人性化操作,以达到结束程序或继续运行程序的目的。
创建、增加、删除、修改、查询、统计等被调函数,都须写于主函数之上;利用switch()函数实现各功能的选择。
对数据的增、删、改操作,必须返回结构退指针,而查找功能只需要输出即可。
●创建链表struct node *creat(void)创建新链表函数,返回链表头指针。
定义结构体指针变量“struct node *h=NULL, *p,*q,*r;”。
h为头指针,及数据表的表头;动态分配内存给p,令其始终指向新节点;而q,r而中间辅助指针,是链表按要求链接。
在创建链表的过程中,动态分配内存给指针p,分别输入学生信息,并进行数据计算与赋值。
在节点连接的过程中,通过对输入学号大小的比较while((p->num>q->num)&&(q->next!=NULL)),按学号排序连接节点,使学号以升序排列。
在输入玩一个信息之后,会有提示信息询问是否继续。
●增加新节点struct node *insert(struct node *h)增加过程与创建过程大致相同,唯一不同的是,增加过程需要得到形参继续增加学生信息。
●删除节点struct node *del(struct node *h,int n)删除节点实质就是,将链表指针所指向的地址在内存中擦除。
主要分为两种情况:删除头指针所指向的节点地址和删除中间或结尾的节点地址。
首先,需要判断所删除节点的地址“while((p->num!=n)&&(p!=NULL))”,然后,进行逻辑判断,是否存在该学号的节点,以及判断是否为头指针,并将p的内存空间释放掉:“if(p==h) h=p->next;elseq->next=p->next;free(p); M--;printf("M:%d\n",M);puts("Delete!");”。
●修改节点struct node *modify(struct node *h)即删除和增加过成功地结合。
进行●查找节点查找节点,即根据所查询的信息查找记录,需要定义结构体指针变量p,进行逻辑判断即可。
while((strcmp(p->nam,nam)!=0)&&(p->next!=NULL)) p=p->next; if(strcmp(p->nam,nam)==0)●统计平均分分数段需要根据创建(或增加)时计算出的平均分各分数段的个数,来统计。
分为A,B,C,D,E五个分数段,若链表中的平均分满足判断条件,如if((p->ave>=90)&&(p->ave<=100)),则该分数段统计个数加一a[0]++;。
●查找最高成绩的学生与查找节点的算法相似,但是逻辑判断必须满足while(p!=NULL),if(p->sum==max),这样即使是相同分数的学生也可以同时输出到屏幕上。
●统计不及格率需要定义全局变量M,然后根据各科不及格的人数n计算出不及格率:“printf("The RATE of %c-Failer:%.2f%c\n",c,(a[2]/(float)M)*100,37);”●按最高分排序按最高分排序需要建立新的链表。
然后根据总分成绩进行排序。
struct node *h1=NULL,*p,*a=NULL,*b,*c=NULL; struct node *sta_sor(struct node *h){ struct node *h1=NULL,*p,*a=NULL,*b,*c=NULL;if(h==NULL) {return NULL; } //creat new link point //h1 : a,b,c;//b is the latest copied information p=h; //start to copy&compare theinformation constantly while(p != NULL) { b = copyasta(p);if(c==NULL){h1 = b;//if h1 is null,insert b // printf("insert %d before h1\n",b->num); }else{ if(a == NULL && b->sum >= c->sum) { b->next = c; h1 = b;// printf("2在最前面插入%d\n",b->num); c = h1;a=NULL; p=p->next;continue; } a=h1; c=a->next; do{ if(c==NULL) { a->next=b; break; } //compareif(b->sum >= c->sum){ b->next = c; a->next = b; break; }a = c;c = c->next; } while(c != NULL); } c = h1;a = NULL; p=p->next; } return h1;}3.2.3编译与调试在VC++6.0的编译环境下,当程序编写完运行时,须先按F7,检查语法错误,之后按CTRL+F5运行程序,再根据程序运行结果进行调试,以优化程序。