C程序设计作业课程设计报告 成绩管理

合集下载

c语言课程设计报告书--学生成绩管理

c语言课程设计报告书--学生成绩管理

C 语言程序设计报告课题:学生成绩管理时间:一、需求分析任务要求:自学C语言中有关链表及外部文件的内容,设计出学生成绩管理。

具体要求如下:1.主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单系统功能需求分析:1、定义一个结构体类型,成员包括学期、班级、各科成绩、建立链表,定义该结构体类型的指针,用于指向各结点;2、分别建立具有添输入、修改、查询、总分及平均分、排序等功能的子函数,完成相应功能,对程序实现模块化。

二、概要设计系统总体设计框架:对程序进行模块化,建立输入、修改、查询、查找和显示功能的子函数,各子函数中运用链表存储数据。

系统功能模块图:三、详细设计主要功能模块的算法设计思路如下:1、输入信息函数(1)定义指向结构体变量的指针; (2)移动指针,找到插入结点; (3)在要插入的结点输入信息; (4)返回头指针。

2、修改信息(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,出现报错,然后要求重新输入; (3)根据要修改的编号查找对应结点; (4)修改信息;(5)修改成功。

3、排序函数(1)定义所要排序的班级和链表的头指针为形参;(2)调用排序函数,把班级和链表的头指针赋给形参;(3)在子函数中进行排序;(4)输出排序结果。

4、显示学生成绩信息(void Disp(Link l))(1)选择想要查询的项目(学生各科成绩、不及格科目、班级成员);(2)用指针检验是否有记录;(3)若无记录,输出提示信息,返回主函数;若有记录,移动指针,依次输出记录;5、查询班级成绩信息(void Find(Link l))(1)选择所要查询的班级;(2)输入班级:(3)在链表中寻找相应结点;(4)输出结点信息。

以上各个函数的流程图如下:子函数排序:求和:求平均数:四、主要源程序代码#include <stdio.h>#include <malloc.h>#include <string.h>#define NULL 0#define LEN sizeof (struct student)#define PRINT printf("======================main menu=======================\n")#define PRIN printf("Please chose the number:\n")#define PRI printf("Sorry,the number you chose is error,please chose again\n")struct student \*定义一个结构体*\{int term; \*学期*\int class; \*班级*\char name[20]; \*姓名*\int score_1; \*科目一*\int score_2; \*科目二*\int score_3; \*科目三*\float ave; \*平均分*\int sum; \*总分*\struct student *next;};int n;struct student *creat(void) \*创建信息链表*\{struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN);printf("Please input the student information:\n");printf("Term Class Name Score_1 Score_2 Score_3\n");scanf("%d%d%s%d%d%d",&p1->term,&p1->class,p1->name,&p1->score_1,&p1->score_2,&p1-> score_3);head=NULL;while(p1->term!=0){n=n+1;if(n==1) head=p1;else p2->next=p1;p2=p1;p1=(struct student *) malloc(LEN);scanf("%d%d%s%d%d%d",&p1->term,&p1->class,p1->name,&p1->score_1,&p1->score_2,&p1-> score_3);}p2->next=NULL;return(head);}void sort(struct student *p,int f) \*排序(形参为链表的头指针和想要排序的班级)*\ {int a,b,c,e;float d;char z[20];struct student *r,*s;while(f!=p->class) \*判断是否是想要排序的班级*\p=p->next;for(r=p;f==p->class&&r;r=r->next)for(s=p;s->next&&f==s->next->class;s=s->next)if(s->ave<(s->next)->ave){ \*交换结构体各个成员*\d=s->ave; s->ave=s->next->ave; s->next->ave=d;a=s->score_1; s->score_1=s->next->score_1; s->next->score_1=a;b=s->score_2; s->score_2=s->next->score_2; s->next->score_2=b;c=s->score_3; s->score_3=s->next->score_3; s->next->score_3=c;e=s->sum; s->sum=s->next->sum; s->next->sum=e;strcpy(z,s->name); strcpy(s->name,s->next->name); strcpy(s->next->name,z);}}int add(int i,struct student *p) \*求和(形参为想要求和的班级和链表的头指针)*\ {int sum;if(i==p->class)sum=p->score_1+p->score_2+p->score_3;return(sum);}float average(int i,struct student *p) \*求平均分(形参为想要求和的班级和链表的头指针)*\ {float ave;int sum;sum=add(i,p); \*调用add函数求和*\ave=sum/3.0;return(ave);}void main() \*主函数*\{int i,m;struct student *p,*q;printf("================Now begin to set up===================\n");p=creat(); \*调用creat函数,并创建一个信息链表*\q=p;do{PRINT;printf(" 1:correct the student information\n"); \*修改学生信息*\printf(" 2:calculate the students' score and then sort\n"); \*统计学生成绩并排序*\ printf(" 3:search the students' information\n"); \*查找学生信息*\ printf(" 4:output the score of student\n"); \*输出学生成绩*\ PRIN;doscanf("%d",&i);if(i!=1&&i!=2&&i!=3&&i!=4) PRI; \*报错功能*\}while(i!=1&&i!=2&&i!=3&&i!=4);if(i==1){char x[20];printf("Please input the name of student you want to correct:");do{scanf("%s",x); \*输入你要修改学生成绩的姓名*\ for(p=q;p!=NULL;p=p->next){if(strcmp(x, p->name)==0) \*查找学生*\{printf("Now,please input the new score of the student:\n"); \*输入新的成绩*\printf("Score_1 Score_2 Score_3\n");scanf("%d%d%d",&p->score_1,&p->score_2,&p->score_3);printf("Information correct succeed\n");printf("Now,%s's score is %-6d%-6d%-6d\n",x,p->score_1,p->score_2,p->score_3);break;}}if(p==NULL)printf("Can't find the student,please input again:"); \* 报错功能*\}while(p==NULL);p=q;}if(i==2){int j;printf("Please input which class you want to count:");scanf("%d",&j); \*输入你想要统计的班级*\printf("The score information of %d class is:\n",j);printf("Name Score_1 Score_2 Score_3 Average Sum\n");for(p=q;p!=NULL;p=p->next){p->sum=add(j,p); \* 调用函数add并赋值给结构体*\p->ave=average(j,p); \*调用函数average并赋值给结构体*\}printf("Before sorted,the student score is:\n");for(p=q;p!=NULL;p=p->next)if(j==p->class)printf("%-9s%-9d%-9d%-9d%-9.2f%-9d\n",p->name,p->score_1,p->score_2,p->score_3,p->ave,p->sum); \*输出排序前的学生成绩*\ p=q;sort(p,j); \*调用函数sort*\printf("After sorted,the student score is:\n");for(p=q;p!=NULL;p=p->next)if(j==p->class)printf("%-9s%-9d%-9d%-9d%-9.2f%-9d\n",p->name,p->score_1,p->score_2,p->score_3,p->ave,p->sum); \*输出排序后的成绩*\ p=q;}if(i==3){int a;char y[20];PRINT;printf(" 1:search the score of student\n"); \*查询学生的各科分数*\printf(" 2:search the score of fail lesson\n"); \*查询不及格科目*\printf(" 3:search the name of student\n"); \*查询每个班级的成员*\printf("What's do you want to do?"); PRIN;scanf("%d",&a); \*输入你想要执行的操作的序号*\ if(a==1){printf("Please input the student name:");do{scanf("%s",y); \*输入你想要查询的学生的姓名*\for(p=q;p!=NULL;p=p->next){if(strcmp(y,p->name)==0) \*查找学生*\{printf("%s's score is %d %d %d\n",p->name,p->score_1,p->score_2,p->score_3);break; \*输出学生的成绩*\}}if(p==NULL)printf("Can't find the student,please input again:"); \*报错功能*\}while(p==NULL);p=q;}else if(a==2){for(p=q;p!=NULL;p=p->next){if(p->score_1<60)printf("%s's lesson 1 is failed and the score is %d\n",p->name,p->score_1);if(p->score_2<60)printf("%s's lesson 2 is failed and the score is %d\n",p->name,p->score_2);if(p->score_3<60)printf("%s's lesson 3 is failed and the score is %d\n",p->name,p->score_3);}p=q;}else if(a==3){int c;printf("Please input the number of class:\n");scanf("%d",&c); \*输入你想要输出成绩的班级*\ printf("The %d class have these student:\n",c);for(p=q;p!=NULL;p=p->next)if(c==p->class)printf("%-10s",p->name);printf("\n");p=q;}}if(i==4){int b;printf("Please input which class:\n"); \*输入你想要输出成绩的班级*\ scanf("%d",&b);printf("Now,the score of the student of %d class is:\n",b);printf("Name Score_1 Score_2 Score_3\n");for(p=q;p!=NULL;p=p->next)if(b==p->class)printf("%-12s%-12d%-12d%-12d\n",p->name,p->score_1,p->score_2,p->score_3);} 输出成绩PRINT;printf("Do you want to going on?\n"); \*是否想要继续操作*\ printf(" 1:YES 2:NO \n");scanf("%d",&m);}while(m!=2);}五、调试分析过程描述运行情况如下:输入学生的基本信息:修改指定学生的成绩:统计并排序一班成绩:统计并排序二班的成绩:查询指定学生的成绩:查询学生不及格的成绩:查询班级成员:输出一班的成绩:输出二班的成绩:调试过程中的主要问题及解决方法:1、执行排序函数时出错,指针指向不确定。

C语言课程设计报告学生成绩管理系统(广工)

C语言课程设计报告学生成绩管理系统(广工)

一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。

对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。

三、概要设计程序要有的功能:1。

输入记录2。

用指定格式显示全部记录3。

根据姓名查找记录4。

根据姓名删除记录5. 保存记录到文件6。

按序号显示记录7。

按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。

对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。

再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。

在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。

最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。

与及格成绩作比较,输出及格人数等相关信息。

流程图:四、详细设计源程序:#include ”stdio。

h”#include "stdlib.h”#include "string。

h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。

学生成绩管理系统c语言课程设计报告

学生成绩管理系统c语言课程设计报告

学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。

通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。

本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。

二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。

2. 成绩信息管理:包括成绩的录入、修改和删除。

3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。

4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。

三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。

通过菜单选择,可以实现学生信息的录入、修改和删除功能。

2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。

通过菜单选择,可以实现成绩信息的录入、修改和删除功能。

3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。

4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。

四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。

2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。

3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。

五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。

2. 根据测试结果优化程序代码,提高系统性能和用户体验。

3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。

六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。

该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。

C学生成绩管理系统课程设计报告

C学生成绩管理系统课程设计报告

C学生成绩管理系统课程设计报告The document was prepared on January 2, 2021一.目的与要求通过本课程设计的实践,全面总结C++课程学习中的的数据类型、程序结构、数组、函数、指针、结构体、链表等基本概念,掌握其使用方法。

掌握面向对象程序设计中有关类、对象、继承、重载、多态性、输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。

培养使用面向对象的程序设计方法编写计算机程序的能力。

通过设计一个《学生成绩统计管理》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。

了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。

程序设计是一门实践性很强的课程,必须十分重视实践环节。

许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。

一、设计内容学生成绩管理系统1.基本功能:这个程序的主要功能是输入学生姓名、成绩,学号,并可以对学生的成绩按学号进行查询。

该系统具有存贮学生数据,按学号按需要修改学生成绩,列出学生成绩和统计功能。

2.扩展功能:学生数据的添加、修改、与删除—R二、过程与结果主要内容如下:1.关键类的设计,继承层次关系,代码:首先,创建了一个student类. Student类的声明如下:class Student{public:int Class,num;char name[8];float cpp,math,eng,ave;int order;Student *next;public:Student() {}Student(int c1,int n1,char*n,float e1,float c2,float m,float e2,float s,float p,float a,int o,Student *next=NULL){Class=c1;num=n1;strcpy(name,n);cpp=c2;math=m;eng=e2;ave=a;order=o;this->next=next;}主要功能函数的设计:1.创建学生数据,对学生的成绩的录入。

C语言程序设计学生成绩管理系统实验报告

C语言程序设计学生成绩管理系统实验报告

移通学院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",&num;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;}}。

C语言程序设计课程设计报告

C语言程序设计课程设计报告

C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。

3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。

提高编写程序解决实际问题的能力、调试程序的技术。

三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。

主程序:新建:输入记录(遇#号时停止输入)。

插入:在指定位置插入记录。

显示:列出所有记录。

查询:一、按学号查询;二、按名字排序。

删除:一、按学号删除;二、按名字删除;3、删除所有记录。

排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。

保留:保留为任意名字,系统自动加后缀名为.txt。

读取:读取程序目录下的后缀名为.txt的文件。

退出:退出程序。

五、各功能模块的具体实现,用图表表示。

输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。

STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。

c语言程序设计课程设计报告学生成绩管理系统

c语言程序设计课程设计报告学生成绩管理系统

C语言程序设计课程设计报告设计题目:学生成绩管理系统学号班级姓名完成方式:(单选)自我评分:(单选)●独立完成●优秀○参考他人工作的基础上完成○良好○在他人的帮助下完成○中等○完整拷贝他人成果○及格○不及格2011年5月11日一、总体设计1.程序的总体设计程序总框架2. 数据结构结构体数组struct student /*定义结构体变量student*/{int num;char name[10];int gen;int ch,en,math,tot;};Struct student Stu[100];3. 函数原型声明的说明(功能,参数,返回值)1).输出不及格名单:void failsbj(int n,struct student stu[]) /*输出不及格的名单,只要有一科不及格即进入名单*/2).计算平均分void sumup(int *n,struct student (*stu)[]) /*计算每个人各科平均分的函数*/3).打印所有数据void display(int n,struct student stu[]) /*输出所有数据*/ 4).检索void search(int n,struct student stu[]) /*依照名字或者数字搜索条目*/5).排序void assort(int n,struct student (*stu)[]) /*排序模块*/ 6).增加条目void add(int *n,struct student (*stu)[]) /*加入条目模块*/ 7).删除条目void del(int *n,struct student (*stu)[]) /*删除条目模块*/ 8).编辑条目void edit(int *n,struct student (*stu)[]) /*编辑条目模块*/ 9).导出列表void save(int *n,struct student (*stu)[]) /*将结果另存为*/ 10).统计分析void anlz(int *n,struct student (*stu)[]) /*统计全班成绩,包括求出各分数段人数,各科班平均分*/ 4. 流程图二、详细设计1.主程序如上图。

原创c语言成绩管理系统课程设计报告

原创c语言成绩管理系统课程设计报告

原创C语言成绩管理系统课程设计报告一、引言本文档旨在介绍一种基于C语言开发的成绩管理系统的设计与实现。

该系统旨在帮助教师管理学生的成绩信息,提高成绩管理的效率和准确性。

本课程设计报告将从需求分析、系统设计、系统实现以及系统测试等方面进行阐述和讨论。

二、需求分析成绩管理系统的主要需求如下:1.存储学生信息:系统需要能够记录学生的基本信息,包括学号、姓名、性别等。

2.成绩录入和查询:系统需要实现成绩的录入和查询功能,教师可以根据学号或姓名查询学生的成绩。

3.成绩统计和分析:系统需要具备成绩统计和分析功能,例如计算学生的平均成绩、最高成绩、最低成绩等。

4.成绩排序:系统需要能够按照成绩进行排序,方便教师进行排名比较。

5.成绩报表生成:系统需要能够生成成绩报表,通过打印或保存成文件的方式输出结果。

6.用户权限管理:系统需要具备用户权限管理功能,不同的用户拥有不同的操作权限。

三、系统设计3.1 系统结构成绩管理系统采用模块化设计结构,主要包括以下几个模块:•用户管理模块:负责用户登录和权限管理。

•学生信息管理模块:负责学生信息的录入、查询、修改和删除。

•成绩管理模块:负责成绩的录入、查询、统计和分析。

•报表生成模块:负责生成成绩报表。

•排序模块:负责成绩排序功能的实现。

3.2 数据结构设计系统使用链表数据结构来存储学生信息和成绩信息,在链表的每个节点中存储学生的基本信息和成绩信息。

3.3 界面设计系统的界面采用命令行交互方式,通过菜单选择来进行操作。

四、系统实现系统的实现主要基于C语言,采用模块化编程的方式。

具体实现步骤如下:•定义结构体:定义学生和成绩信息的结构体。

•用户登录和权限管理:实现用户登录和用户权限管理功能,不同用户登录后只能操作有权限的功能。

•学生信息管理模块:实现学生信息的录入、查询、修改和删除功能,通过链表数据结构来管理学生信息。

•成绩管理模块:实现成绩的录入、查询、统计和分析功能,通过链表数据结构来管理成绩信息。

c学生成绩管理系统课程设计报告

c学生成绩管理系统课程设计报告

c学生成绩管理系统课程设计报告一、教学目标本课程的教学目标是使学生掌握学生成绩管理系统的核心知识,包括系统的设计、实现和应用。

具体来说,知识目标要求学生了解成绩管理系统的原理、结构和常用技术;技能目标要求学生能够使用相关工具和语言进行成绩管理系统的开发和维护;情感态度价值观目标要求学生认识到成绩管理系统在教育领域的重要性,培养学生的责任感和使命感。

二、教学内容根据课程目标,教学内容主要包括成绩管理系统的原理、结构、设计和实现。

具体来说,教材的章节安排如下:1.第一章:成绩管理系统的概述,介绍成绩管理系统的定义、功能和应用场景。

2.第二章:成绩管理系统的结构与原理,讲解成绩管理系统的组成部分、工作原理和关键技术。

3.第三章:成绩管理系统的需求分析,引导学生学习如何进行需求分析,并编写需求说明书。

4.第四章:成绩管理系统的系统设计,教授系统设计的方法和技巧,包括数据库设计、界面设计和模块划分。

5.第五章:成绩管理系统的实现与测试,指导学生进行系统编码、调试和测试,确保系统功能的正确性和稳定性。

三、教学方法为了实现课程目标,我们将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法。

具体来说:1.讲授法:用于讲解成绩管理系统的理论知识,帮助学生建立系统性的知识体系。

2.讨论法:鼓励学生就实际问题进行讨论,培养学生的思考能力和团队协作精神。

3.案例分析法:通过分析典型成绩管理系统案例,使学生更好地理解并应用所学知识。

4.实验法:让学生动手实践,亲身体验成绩管理系统的开发和应用过程,提高学生的实际操作能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统性的知识学习。

2.参考书:提供丰富的参考资料,帮助学生拓展视野,深入理解成绩管理系统。

3.多媒体资料:制作课件、教学视频等多媒体资料,增强课堂教学的趣味性和互动性。

4.实验设备:配置必要的实验设备,确保学生能够进行实际操作,提高实践能力。

C语言学生成绩学习管理系统课程设计报告总结计划

C语言学生成绩学习管理系统课程设计报告总结计划

C语言课程设计报告一.问题描述:题目七:学生成绩管理系统设计学生成绩信息包含:学期,学号,班别,姓名,xx课程成绩(语文、数学、英语和计算机)等。

主要功能:(1)能按学期、按班级完成对学生成绩的录入、更正(2)能按班级统计学生的成绩,修业生的总分及均匀分(3)能盘问学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式储存数据,系统以菜单方式工作学生成绩信息包含:学期,学号,班别,姓名,xx课程成绩(语文、数学、英语和计算机)等。

要求使用二进制文件方式储存数据,系统以菜单方式工作,实现对学生成绩的录入,更正,统计,排序,盘问,输出等功能。

二.设计目的设计“学生成绩管理系统”使其拥有以下功能:(1)能完成对学生成绩的录入(2)能按班级统计学生的成绩,修业生的总分及均匀分,排序(3)能按班级,学期输出学生的成绩单和不及格科目及学生名单(4)能盘问单个学生成绩(5)能更正单个学生信息三.要求系统以菜单方式工作四.功能1输入功能:可以一次完成无数条信息的输入。

2输出功能:能按班级输出学生的成绩单。

3更正功能:完成对单个学生成绩的更正。

4查找功能:完成对单个学生信息查找,并显示。

5排序功能:按学生成绩进行排序,并显示。

6有一个清楚雅观界面来调用各个功能五.模块图结构数组structstudent学期intterm班级intclasses姓名charname[10] 学号intnum成绩intscore[4]信息录入学号stu[i].num、班级stu[i].classes,姓名主流voidinputstu[i].name、四门课成绩stu[i].score程按班级统计学生的成绩,修业生的总成绩统计voidsort分及均匀分,排序成绩输出能按班级,学期输出学生成绩单和不及格voidprint盘问科目及学生名单voidsearch能按学号盘问单个学生成绩更正更正单个学生信息voidmonify六.详细内容整个系统除了主函数外,别的还有5个函数,实现六大功能:输入功能、输出功能、更正功能,查找并显示功能、排序并显示功能。

c语言成绩管理系统课程设计报告

c语言成绩管理系统课程设计报告

C语言成绩管理系统课程设计报告1. 背景成绩管理是学校管理和评估学生学习成果的重要环节。

随着学生数量的增加和课程的多样化,传统的手工管理已经无法满足需求。

因此,我们需要一个高效、准确、可靠的成绩管理系统来处理这些数据。

本课程设计旨在开发一个C语言成绩管理系统,通过计算机技术和数据库管理优化成绩管理过程,提高教学效率和数据准确性。

2. 分析2.1 功能需求本系统需满足以下功能需求:•学生信息管理:包括学号、姓名、班级等基本信息的录入、修改、查询和删除功能。

•成绩录入和修改:能够录入每个学生每门科目的成绩,允许后续修改。

•成绩查询:可以根据学号或姓名查询学生的成绩,支持按科目、总分排序查询。

•成绩统计:能够计算学生的平均分、最高分、最低分等统计数据。

•成绩分析:根据成绩数据生成可视化分析报告,帮助教师和学生分析成绩情况。

2.2 数据库设计为了方便管理学生信息和成绩数据,我们需要设计一个适合存储这些数据的数据库。

考虑到成绩比较简单,我们选择关系型数据库。

数据库中需要包含以下表:•学生表:包括学生ID、姓名、班级等字段。

•科目表:包括科目ID、科目名称等字段。

•成绩表:包括成绩ID、学生ID、科目ID、成绩等字段。

2.3 界面设计为了使用户能够方便地使用该系统,我们需要设计一个简洁明了的界面。

主界面应包括以下功能:•学生信息管理:提供学生信息的录入、修改、查询和删除功能。

•成绩录入和修改:提供成绩的录入和修改功能。

•成绩查询:提供根据学号或姓名查询学生成绩,并支持按科目和总分排序的功能。

•成绩统计:显示学生的平均分、最高分、最低分等统计数据。

•成绩分析:生成可视化分析报告,帮助教师和学生进行成绩分析。

3. 结果经过设计和实现,我们成功开发了一个C语言成绩管理系统。

该系统具备以下特点:•功能齐全:能够满足学生信息管理、成绩录入和修改、成绩查询、成绩统计和成绩分析等功能需求。

•数据准确性:通过数据库管理成绩数据,确保数据的准确性和一致性。

成绩管理系统c语言程序设计报告(一)

成绩管理系统c语言程序设计报告(一)

成绩管理系统c语言程序设计报告(一)成绩管理系统C语言程序设计报告项目概述•本项目是一个成绩管理系统的C语言程序设计。

•旨在提供一个简单而高效的成绩管理系统。

•使用C语言编写,具备基本的成绩录入、查询、修改和删除功能。

功能设计1.成绩录入功能–提供用户输入学生的姓名、学号和成绩。

–将录入的成绩保存在文件中。

2.成绩查询功能–用户可以通过学号或姓名查询某个学生的成绩。

–显示学生的成绩信息。

3.成绩修改功能–用户可以通过学号或姓名定位到某个学生的成绩。

–允许用户修改学生的成绩。

4.成绩删除功能–用户可以通过学号或姓名定位到某个学生的成绩。

–允许用户删除学生的成绩。

技术实现•使用C语言作为主要开发语言,具备良好的跨平台性。

•采用文件输入输出方式进行成绩的长期保存。

•使用结构体来管理学生的相关信息,包括姓名、学号和成绩。

•通过循环和条件判断来实现各个功能模块。

流程图以下为成绩管理系统的流程图:graph LRA[开始] --> B{选择功能}B --> C{输入学生信息}C --> D[保存学生信息]C --> BB --> E{查询成绩}E --> F[显示成绩信息]E --> BB --> G{修改成绩}G --> H[定位学生信息]H --> I[修改成绩]H --> GG --> BB --> J{删除成绩}J --> K[定位学生信息]K --> L[删除成绩]K --> JJ --> BB --> M[结束]后续优化•增加用户名和密码的身份验证功能,确保只有授权用户可以使用系统。

•支持更多的查询方式,例如成绩范围查询、按照科目查询等。

•增加对数据的备份和恢复功能,保证数据的安全性。

•提供简洁友好的用户界面,方便用户的操作和理解。

结论本成绩管理系统通过C语言程序设计实现了基本的成绩录入、查询、修改和删除功能。

C语言课程设计报告 学生成绩管理系统

C语言课程设计报告 学生成绩管理系统

C语言课程设计报告院系:机械与电子信息学院姓名:王鹏飞班号:07310126学号:20101003558指导教师:龚文引日期:2011年7月学生成绩管理系统一、题目要求设计一个学生成绩管理程序,对在校某班学生几门课程的考试成绩进行统一管理。

每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。

(1)一个文件按以班为单位存储学生记录.(2)将允许的操作分为四种,以A、B、C、D、E、F为标志(若设置菜单操作更佳):A:插入一个新的学生记录(录入学生信息);B:修改学生记录;C:删除一个学生记录;D:登记成绩;E:修改成绩;F:浏览全班成绩。

(3)计算学生的总成绩。

(4)按学号排序输出全班成绩表。

二、需求分析根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览学生的信息,应提供添加、修改、删除、排序等操作;另外还应提供键盘式选择菜单实现功能选择。

三、总体设计根据上面的需求分析,可以将这个系统的设计分为8个模块,数据输入,添加数据,修改数据,删除数据,修改成绩,学号排序,浏览成绩,退出模块。

四。

详细设计1、主函数【分析】将各个功能模块设置为菜单选项,方便调用,且执行完每部分功能模块后能够方便返回到系统界面.【流程图】:【程序代码】:menu() /*主界面*/{int w1;char n; /*。

变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/do{puts(”\t\t***************菜单****************\n\n”);puts(”\t\t\t\tA。

录入学生信息”);puts(”\t\t\t\tB.修改学生记录”);puts(”\t\t\t\tC。

删除一个学生记录”);puts(”\t\t\t\tD.登记成绩”);puts("\t\t\t\tE。

修改成绩");puts("\t\t\t\tF。

学生成绩管理系统(c语言)课程设计报告

学生成绩管理系统(c语言)课程设计报告

http://www.ut365.com/cyuyan/10.html学生成绩管理系统(c语言)课程设计报告学生成绩管理系统要求是这样的1、用c语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。

ﻫ2、具体要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,例如:(1):信息输入(INPUT)ﻫ (2):总分统计(COUNT)ﻫ(3):总分排序(SORT)ﻫ(4):查询(QUERY)ﻫ其中:ﻫ (1):对4个学生的信息进行输入;(2):对每个学生的3门课程统计总分;ﻫ(3):对4个学生的总分按降序排序并显示出来;(4):查询输入一个学号后,显示出该学生的有关信息;............ﻫ偶先写了个...ﻫ#i nclude<iostream.h>#i nclude<stdlib.h>struct student{intnum;char name[20];ﻫint foxscore;ﻫintcscore;ﻫintenglishscore;ﻫstruct student *next;ﻫ};ﻫvoid menu(){cout<<" welecome to my student grade management system"<<endl;cout<<" please follow everyone step in the menu"<<endl;ﻫcout<<" 1.in put information"<<endl;ﻫcout<<" 2.total scores"<<endl;ﻫcout<<" 3.sort"<<endl;cout<<" 4.query"<<endl;cout<<" ***************************************************"<<endl;ﻫ}struct student *creat(struct student*head)//函数返回的是与节点相同类型的指针ﻫ{ﻫstruct student *p1,*p2;p1=p2=(struct student*) malloc(sizeof(structstudent)); // 申请新节点ﻫ cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore; // 输入节点的值ﻫp1-> next = NULL; // 将新节点的指针置为空while(p1->num>0){ﻫif (head==NULL) head=p1; //空表,接入表头ﻫ e lse p2->next=p1; // 非空表,接到表尾ﻫ p2 = p1;p1=(struct student *)malloc(sizeof(struct student)); //申请下一个新节点ﻫcin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishsco re;//输入节点的值ﻫ }return head; //返回链表的头指针ﻫ}void count(struct student *head){struct student *temp;temp=head; //取得链表的头指针{ﻫint m;ﻫm=temp->foxscore+temp->cscore+temp->engliwhile(temp!==NULL)ﻫshscore;ﻫcout<<m<<endl;//输出链表节点的值temp=temp->next; //跟踪链表增长}}ﻫvoid sort(struct student *head)ﻫ{struct student *tp;tp=head;int a[4];//定义总分数组ﻫint i,j,k;while(temp!==NULL)ﻫ{a[i]=tp->foxscore+tp->cscore+tp->englishscore;ﻫtp=tp->next;i=i+1;ﻫ}ﻫfor(j=1;j<=3;j++)//冒泡法排序for(k=1;k<=4-j;k++){ﻫint t=a[k];a[k]=a[k+1];a[k+1]=t;ﻫ} if(a[k]<a[k+1])ﻫfor(i=1;i<5;i++)cout<<a[i]<<endl;}voidquery(struct student *head)ﻫ{ﻫstruct student *temper;temper=head;int number;ﻫcin>>number;ﻫfor(int i=1;i<=4;i++){{ﻫcout<<" nameis:"<<tempeif(number==temper->num)ﻫr->name<<endl;cout<<" foxscore is:"<<temper->foxscore<<endl;cout<<" c score is:"<<temper->cscore<<endl;ﻫcout<<" English scoreis:"<<temper->englishscore<<endl;ﻫcout<<"congratulation,syetem have found what you want to search"<<en dl;ﻫ}temper=temper->next;ﻫ}}ﻫvoidmain(){ﻫmenu();cout<<" firstly,please input information:"<<endl;struct student *head;head=NULL; /* 建一个空表*/ﻫhead=creat(head); /*创建单链表*/cout<<" secondly,count the total score each student:"<<endl;ﻫcount(head);ﻫcout<<" thirdly,sortingthe totalscore:"<<endl;ﻫsort(head);ﻫcout<<" enter num thatyou can search eachshtudent's information"<<endl;ﻫquery(head);ﻫcout<<" thanks you forusemy student grade management system"<<endl;}ﻫ编译时候都没有错....ﻫdebug输入时候出现了错误....ﻫ调试运行后发现原来是while循环出了问题啊ﻫ修改后.........#i nclude<iostream.h>ﻫ#include<stdlib.h>ﻫstruct studentﻫ{ﻫint num;char name[20];ﻫint foxscore;ﻫintcscore;int englishscore;struct student *next;};void menu()ﻫ{ﻫcout<<"welecome tomy studentgrade managementsystem"<<endl;ﻫcout<<" please follow everyone step in the menu"<<endl;cout<<"1.input information"<<endl;cout<<" 2.total scores"<<endl;cout<<" 3.sort"<<endl;ﻫcout<<" 4.query"<<endl;cout<<" ***************************************************"<<endl;ﻫ}struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针ﻫ{ﻫ struct student *p1,*p2;p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore; // 输入节点的值ﻫp1-> next = NULL; // 将新节点的指针置为空for(inti=1;i<=4;i++){if (head==NULL) head=p1; //空表,接入表头ﻫelse p2->next=p1; // 非空表,接到表尾ﻫ p2 = p1;p1=(structstudent *)malloc(sizeof(structstudent)); //申请下一个新节点if(i<=3){cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore;ﻫ} //输入节点的值ﻫ}returnhead; //返回链表的头指针ﻫ}void count(struct student *head)ﻫ{struct student *temp;ﻫtemp=head; //取得链表的头指针for(int i=1;i<=4;i++) ﻫ{int m;ﻫm=temp->foxscore+temp->cscore+temp->englishscore;cout<<m<<endl;//输出链表节点的值ﻫtemp=temp->next; //跟踪链表增长ﻫ}}void sort(struct student *head){ﻫstruct student *tp;tp=head;ﻫint a[4];//定义总分数组ﻫint i,j,k;a[1]=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;ﻫa[2]=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;a[3]=tp->foxscore+tp->cscore+tp->englishscore;ﻫtp=tp->next;ﻫa[4]=tp->foxscore+tp->cscore+tp->englishscore;ﻫfor(j=1;j<=3;j++)//冒泡法排序for(k=1;k<=4-j;k++)ﻫif(a[k]<a[k+1]){ﻫint t=a[k];a[k]=a[k+1];a[k+1]=t;ﻫ}for(i=1;i<5;i++)ﻫcout<<a[i]<<endl;}ﻫvoid query(struct student*head){ﻫstruct student *temper;temper=head;ﻫint number;ﻫcin>>number;for(int i=1;i<=4;i++) ﻫ{if(number==temper->num){ﻫcout<<" name is:"<<temper->name<<endl;ﻫcout<<"fox score is:"<<temper->foxscore<<endl;cout<<" c scoreis:"<<temper->cscore<<endl;ﻫcout<<" English score is:"<<temper->englishscore<<endl;cout<<" congratulation,syetemhave found what you want to sear ch"<<endl;ﻫ}temper=temper->next;}ﻫ}ﻫvoid main(){ﻫmenu();cout<<" firstly,please input information:"<<endl;structstudent *head;head=NULL; /* 建一个空表*/head=creat(head); /* 创建单链表*/cout<<" secondly,count the total scoreeach student:"<<endl;ﻫcoun t(head);cout<<" thirdly,sorting the total score:"<<endl;ﻫsort(head);ﻫcout<<" enter num that you can search each shtudent'sinformation"<<endl;ﻫquery(head);cout<<" thanks you for use my studentgrade management system"<<endl;ﻫ}C语言课程设计_贪吃蛇代码#define N 200#include <graphics.h>ﻫ#include <stdlib.h>#include<dos.h>ﻫ#define LEFT 0x4b00ﻫ#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bﻫint i,key;int score=0;/*得分*/ﻫint gamespeed=50000;/*游戏速度自己调整*/ﻫstruct Foodﻫ{ﻫ int x;/*食物的横坐标*/int y;/*食物的纵坐标*/ﻫint yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/ﻫstruct Snakeﻫ{ﻫint x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/ﻫ int life;/* 蛇的生命,0活着,1死亡*/ﻫ}snake;ﻫvoid Init(void);/*图形驱动*/ﻫvoid Close(void);/*图形结束*/ﻫvoid DrawK(void);/*开始画面*/ﻫvoid GameOver(void);/*结束游戏*/ﻫvoid GamePlay(void);/*玩游戏具体过程*/ﻫvoid PrScore(void);/*输出成绩*//*主函数*/ﻫvoid main(void)ﻫ{Init();/*图形驱动*/DrawK();/*开始画面*/ﻫ GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/ﻫ}/*图形驱动*/ﻫvoid Init(void){ﻫint gd=DETECT,gm;ﻫinitgraph(&gd,&gm,"c:\\tc");ﻫ cleardevice();ﻫ}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ﻫvoid DrawK(void)ﻫ{ /*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i<=600;i+=10)/*画围墙*/ﻫ{ﻫ rectangle(i,40,i+10,49); /*上边*/}ﻫ for(i=40;i<=450;i+=10) rectangle(i,451,i+10,460);/*下边*/ﻫ{ﻫ rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}ﻫ}ﻫ/*玩游戏具体过程*/ﻫvoid GamePlay(void)ﻫ{randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ﻫ snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/ﻫ snake.x[1]=110;snake.y[1]=100;snake.node=2;/*节数*/ﻫPrScore();/*输出得分*/ﻫ while(1)/*可以重复玩游戏,压ESC键结束*/ﻫ{ﻫwhile(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/ﻫ {food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ﻫfood.x++;while(food.y%10!=0)ﻫfood.y++;food.yes=0;/*画面上有食物了*/}ﻫif(food.yes==0)/*画面上有食物了就要显示*/ﻫ{ﻫ setcolor(GREEN);ﻫrectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/{snake.x[i]=snake.x[i-1];ﻫsnake.y[i]=snake.y[i-1];ﻫ }ﻫ/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/switch(snake.direction){ﻫcase 1:snake.x[0]+=10;break;ﻫ case 2: snake.x[0]-=10;break;ﻫ case 3: snake.y[0]-=10;break;case 4: snake.y[0]+=10;break;ﻫ}for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ﻫ{ﻫ if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){ﻫGameOver();/*显示失败*/ﻫ snake.life=1;ﻫ break;}}if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||ﻫsnake.y[0]>455)/*蛇是否撞到墙壁*/ﻫ{GameOver();/*本次游戏结束*/snake.life=1; /*蛇死*/}ﻫif(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ﻫbreak;ﻫif(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);ﻫsnake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ﻫsnake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10;ﻫPrScore();/*输出新得分*/ﻫ}setcolor(4);/*画出蛇*/for(i=0;i<snake.node;i++)ﻫrectangle(snake.x[i],snake.y[i],snake.x[i]+10,ﻫ snake.y[i]-10);ﻫdelay(gamespeed);ﻫsetcolor(0);/*用黑色去除蛇的的最后一节*/rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);ﻫ } /*endwhile(!kbhit)*/if(snake.life==1)/*如果蛇死就跳出循环*/ﻫbreak;ﻫ key=bios key(0);/*接收按键*/if(key==ESC)/*按ESC键退出*/break;ﻫelseif(key==UP&&snake.direction!=4)/*判断是否往相反的方向移动*/snake.direction=3;ﻫelseﻫif(key==RIGHT&&snake.direction!=2)snake.direction=1;ﻫelseﻫif(key==LEFT&&snake.direction!=1) snake.direction=2;elseif(key==DOWN&&snake.direction!=3)ﻫsnake.direction=4;ﻫ }/*endwhile(1)*/ﻫ}/*游戏结束*/void GameOver(void){ﻫ cleardevice();ﻫ PrScore();ﻫsetcolor(RED);settextstyle(0,0,4);outtextxy(200,200,"GAMEOVER");ﻫgetch();ﻫ}/*输出成绩*/void PrScore(void){char str[10];ﻫsetfillstyle(SOLID_FILL,YELLOW);ﻫ bar(50,15,220,35);ﻫ setcolor(6);ﻫ settextstyle(0,0,2);ﻫ sprintf(str,"score:%d",score);ﻫ outtextxy(55,20,str);}ﻫ/*图形结束*/void Close(void){getch();closegraph();}ﻫC语言课程设计_贪吃蛇代码,不错啊c语言课程设计_计算器设计#include <dos.h> /*DOS接口函数*/ﻫ#include <math.h> /*数学函数的定义*/#include <conio.h> /*屏幕操作函数*/ﻫ#include <stdio.h> /*I/O函数*/ﻫ#include <stdlib.h> /*库函数*/ﻫ#include <stdarg.h> /*变量长度参数表*/ﻫ#include <graphics.h> /*图形函数*/#include <string.h> /*字符串函数*/#include <ctype.h> /*字符操作函数*/#defineUP 0x48/*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/ﻫ#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/struct palettetype palette; /*使用调色板信息*/ﻫint GraphDriver; /* 图形设备驱动*/ﻫint GraphMode; /* 图形模式值*/ﻫintErrorCode; /* 错误代码*/int MaxColors; /* 可用颜色的最大数值*/int MaxX, MaxY; /*屏幕的最大分辨率*/ﻫdouble AspectRatio; /* 屏幕的像素比*/void drawboder(void); /*画边框函数*/ﻫvoid initialize(void); /*初始化函数*/ﻫvoidcomputer(void); /*计算器计算函数*/ﻫvoid changetextstyle(int font, int direction,int charsize); /*改变文本样式函数*/ﻫvoid mwindow(char *header); /*窗口函数*/int specialkey(void) ; /*获取特殊键函数*/int arrow(); /*设置箭头光标函数*/ﻫ/*主函数*/int main()ﻫ{initialize();/* 设置系统进入图形模式*/computer(); /*运行计算器*/ﻫ closegraph();/*系统关闭图形模式返回文本模式*/ﻫ return(0); /*结束程序*/ﻫ}ﻫ/* 设置系统进入图形模式*/void initialize(void)ﻫ{int xasp, yasp;/* 用于读x和y方向纵横比*/GraphDriver = DETECT; /* 自动检测显示器*/initgraph( &GraphDriver, &GraphMode, "" );ﻫ/*初始化图形系统*/ ErrorCode = graphresult(); /*读初始化结果*/if(ErrorCode != grOk ) /*如果初始化时出现错误*/{ﻫprintf("Graphics System Error: %s\n",ﻫgrapherror msg( ErrorCode ) ); /*显示错误代码*/ﻫexit( 1 ); /*退出*/ﻫ } getpalette( &palette ); /* 读面板信息*/MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/MaxX= getmaxx(); /* 读屏幕尺寸*/MaxY = getmaxy(); /* 读屏幕尺寸*/ﻫ getaspectratio( &xasp, &yasp ); /*拷贝纵横比到变量中*/ﻫAspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/}/*计算器函数*/ﻫvoid computer(void)ﻫ{ﻫstruct viewporttype vp; /*定义视口类型变量*/int color, height, width;intx, y,x0,y0, i, j,v,m,n,act,flag=1;ﻫfloat num1=0,num2=0,result; /*操作数和计算结果变量*/char cnum[5],str2[20]={""},c,temp[20]={""};char str1[]="1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号*/mwindow( "Calculator" );/*显示主窗口*/ﻫcolor =7; /*设置灰颜色值*/ﻫgetviewsettings( &vp );/* 读取当前窗口的大小*/ﻫ width=(vp.right+1)/10; /* 设置按钮宽度 */ﻫ height=(v p.bottom-10)/10 ; /*设置按钮高度 */ﻫx = width/2; /*设置x的坐标值*/y = height/2; /*设置y的坐标值*/ﻫ setfillstyle(SOLID_FILL, color+3);ﻫbar( x+width*2, y, x+7*width, y+height );ﻫ/*画一个二维矩形条显示运算数和结果*/setcolor( color+3 );/*设置淡绿颜色边框线*/rectangle( x+width*2,y, x+7*width, y+height );ﻫ/*画一个矩形边框线*/ﻫ setcolor(RED); /*设置颜色为红色*/outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/ﻫx =2*wi dth-width/2; /*设置x的坐标值*/ﻫy =2*height+height/2; /*设置y的坐标值*/ﻫ for( j=0 ; j<4; ++j ) /*画按钮*/{for( i=0 ; i<5 ; ++i )ﻫ {setfillstyle(SOLID_FILL, color);ﻫ setcolor(R ED);bar( x, y, x+width, y+height ); /*画一个矩形条*/rectangle( x, y, x+width, y+height );ﻫsprintf(str2,"%c",str1[j*5+i]);ﻫ/*将字符保存到str2中*/ﻫouttextxy(x+(width/2), y+height/2, str2);x =x+width+ (width /2) ; /*移动列坐标*/}ﻫ y +=(height/2)*3;/* 移动行坐标*/ﻫx =2*width-width/2; /*复位列坐标*/ﻫ }x0=2*width;y0=3*height;ﻫ x=x0;y=y0;ﻫgotoxy(x,y); /*移动光标到x,y位置*/ﻫarrow(); /*显示光标*/putimage(x,y,rar,XOR_PUT);ﻫ m=0;ﻫ n=0;strcpy(str2,""); /*设置str2为空串*/while((v=specialkey())!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/ {while((v=specialkey())!=ENTER) /*当压下键不是回车时*/{putimage(x,y,rar,XOR_PUT); /*显示光标图象*/ﻫif(v==RIGHT) /*右移箭头时新位置计算*/ﻫif(x>=x0+6*width)/*如果右移,移到尾,则移动到最左边字符位置*/ﻫ{x=x0;m=0;ﻫ}ﻫelseﻫ{ﻫx=x+width+width/2;ﻫm++;ﻫ } /*否则,右移到下一个字符位置*/ﻫ if(v==LEFT) /*左移箭头时新位置计算*/if(x<=x0)ﻫ{ﻫ x=x0+6*width;ﻫm=4;ﻫ } /*如果移到头,再左移,则移动到最右边字符位置*/elseﻫ{x=x-width-width/2;ﻫm--;ﻫ}/*否则,左移到前一个字符位置*/ﻫif(v==UP)/*上移箭头时新位置计算*/ﻫif(y<=y0)ﻫ{ﻫy=y0+4*height+height/2;n=3;} /*如果移到头,再上移,则移动到最下边字符位置*/else{y=y-height-height/2;ﻫn--;ﻫ} /*否则,移到上边一个字符位置*/if(v==DOWN) /*下移箭头时新位置计算*/if(y>=7*height)ﻫ{y=y0;n=0;} /*如果移到尾,再下移,则移动到最上边字符位置*/elseﻫ {y=y+height+height/2;n++;} /*否则,移到下边一个字符位置*/putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ﻫ }ﻫc=str1[n*5+m];/*将字符保存到变量c中*/ﻫ if(is digit(c)||c=='.') /*判断是否是数字或小数点*/ﻫ{if(flag==-1) /*如果标志为-1,表明为负数*/ﻫ{ﻫ strcpy(str2,"-");/*将负号连接到字符串中*/flag=1;} /*将标志值恢复为1*/sprintf(temp,"%c",c); /*将字符保存到字符串变量temp中*/strcat(str2,temp); /*将temp中的字符串连接到str2中*/ﻫ setfillst yle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);ﻫ outtextxy(5*width,height,str2);/*显示字符串*/}ﻫif(c=='+')ﻫ {num1=atof(str2); /*将第一个操作数转换为浮点数*/ﻫstrcpy(str2,""); /*将str2清空*/ﻫact=1; /*做计算加法标志值*/setfillstyle(SOLID_FILL,color+3);ﻫbar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/ﻫ}if(c=='-'){if(strcmp(str2,"")==0)/*如果str2为空,说明是负号,而不是减号*/flag=-1; /*设置负数标志*/else{num1=atof(str2); /*将第二个操作数转换为浮点数*/ﻫstrcpy(str2,""); /*将str2清空*/ﻫact=2;/*做计算减法标志值*/ﻫsetfillstyle(SOLID_FILL,color+3);ﻫbar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ﻫouttextxy(5*width,height,"0."); /*显示字符串*/}}ﻫif(c=='*')ﻫ{num1=atof(str2); /*将第二个操作数转换为浮点数*/ﻫstrcpy(str2,"");/*将str2清空*/ act=3;/*做计算乘法标志值*/ﻫsetfillstyle(SOLID_FILL,color+3); bar(2*w idth+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/ﻫ}if(c=='/'){num1=atof(str2);/*将第二个操作数转换为浮点数*/strcpy(str2,"");/*将str2清空*/ﻫact=4;/*做计算除法标志值*/ﻫsetfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);}ﻫif(c=='^')outtextxy(5*width,height,"0."); /*显示字符串*/ﻫ{num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=5; /*做计算乘方标志值*/ﻫsetfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ﻫouttextxy(5*widt}ﻫif(c=='%')h,height,"0."); /*显示字符串*/ﻫ{ﻫnum1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/ﻫact=6; /*做计算模运算乘方标志值*/ﻫsetfillstyle(SOLID_FILL,color+3);/*设置用淡绿色实体填充*/ﻫbar(2*width+width/2,height/2,15*widt h/2,3*height/2); /*画矩形*/outtextxy(5*width,height,"0.");/*显示字符串*/}ﻫif(c=='=')ﻫ{num2=atof(str2);/*将第二个操作数转换为浮点数*/ﻫswitch(act) /*根据运算符号计算*/ﻫ{ﻫcase 1:result=num1+num2;break; /*做加法*/case 2:result=num1-num2;break; /*做减法*/ﻫcase 3:result=num1*num2;break; /*做乘法*/ﻫcase4:result=num1/num2;break; /*做除法*/ﻫcase 5:result=pow(num1,num 2);break;/*做x的y次方*/ﻫcase6:result=fmod(num1,num2);break; /*做模运算*/ﻫ}ﻫsetfillstyle(SOLID_FILL,color+3);/*设置用淡绿色实体填充*/ﻫbar(2*width +width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/ﻫsprintf(temp,"%f",re sult); /*将结果保存到temp中*/ﻫouttextxy(5*width,height,temp); /*显示结果*/ﻫ}if(c=='c')ﻫ{num1=0;/*将两个操作数复位0,符号标志为1*/ﻫnum2=0;flag=1;ﻫstrcpy(str2,"");/*将str2清空*/ﻫsetfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/ﻫbar(2*width+width/2,height/2,15*width/2,3*height/2);/*覆盖结果区*/ﻫouttextxy(5*width,height,"0.");/*显示字符串*/}if(c=='Q')exit(0); /*如果选择了q回车,结束计算程序*/ﻫ}ﻫputimage(x,y,rar,XOR_P UT);/*在退出之前消去光标箭头*/ﻫreturn; /*返回*/ﻫ}ﻫ/*窗口函数*/void mwindow(char*header )ﻫ{int height;cleardevice(); /* 清除图形屏幕 */setcolor(MaxColors -1); /*设置当前颜色为白色*/ﻫsetviewport( 20,20, MaxX/2,MaxY/2, 1 ); /*设置视口大小*/height=textheight( "H"); /*读取基本文本大小*/ﻫsettextstyle( DEFAULT _FONT, HORIZ_DIR, 1 );/*设置文本样式*/settextjustify(CENTER_TEXT, TOP_TEXT );/*设置字符排列方式*/outtextxy(MaxX/4, 2,header ); /*输出标题*/setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1); /*设置视口大小*/ﻫdrawboder();/*画边框*/}ﻫvoid drawboder(void) /*画边框*/ﻫ{ﻫstruct viewporttype vp; /*定义视口类型变量*/ﻫsetcolor(MaxColors- 1 ); /*设置当前颜色为白色*/ﻫsetlinestyle( SOLID_LINE, 0, NORM_WIDTH);/*设置画线方式*/ﻫgetviewsettings( &vp );/*将当前视口信息装入vp所指的结构中*/rectangle( 0, 0,vp.right-vp.left, vp.bottom-vp.top); /*画矩形边框*/}ﻫ/*设计鼠标图形函数*/ﻫint arrow()ﻫ{int size;ﻫintraw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*定义多边形坐标*/setfillstyle(SOLID_FILL,2);/*设置填充模式*/fillpoly(8,raw); /*画出一光标箭头*/size=imagesize(4,4,16,16); /*测试图象大小*/ﻫrar=malloc(size); /*分配内存区域*/ﻫgetimage(4,4,16,16,rar); /*存放光标箭头图象*/ﻫputimage(4,4,rar,XOR_PUT);/*消去光标箭头图象*/ﻫreturn 0;}ﻫ/*按键函数*/int specialkey(void)ﻫ{ﻫint key;while(bioskey(1)==0); /*等待键盘输入*/ﻫkey=bioskey(0); /*键盘输入*/key=key&0xff?key&0xff:key>>8; /*只取特殊键的扫描值,其余为0*/ﻫreturn(key); /*返回键值*/}c语言课程设计_计算器设计进程调度代码ﻫﻫ#include "stdio.h"#include "stdlib.h"#include "string.h"ﻫtypedef struct nodeﻫ{charname[10]; /*进程标识符*/int prio; /*进程优先数*/int round; /*进程时间轮转时间片*/int cputime; /*进程占用CPU时间*/ﻫint needtime; /*进程到完成还要的时间*/int count; /*计数器*/ﻫchar state; /*进程的状态*/struct node *next; /*链指针*/ﻫ}PCB;ﻫPCB *finish,*ready,*tail,*run; /*队列指针*/ﻫint N; /*进程数*//*将就绪队列中的第一个进程投入运行*/firstin(){ﻫrun=ready;/*就绪队列头指针赋值给运行头指针*/run->state='R'; /*进程状态变为运行态*/ﻫready=ready->next; /*就绪对列头指针后移到下一进程*/ﻫ}ﻫ/*标题输出函数*/voidprt1(char a){ﻫif(toupper(a)=='P') /*优先数法*/printf("namecputime needtime priority state\n");ﻫelseﻫprintf(" name cputime needtimecount roundstate\n");ﻫ}ﻫ/*进程PCB输出*/ﻫvoid prt2(chara,PCB *q){ﻫif(toupper(a)=='P') /*优先数法的输出*/printf(" %-10s%-10d%-10d%-10d %c\n",q->name,q->cputime,q->needtime,q->prio,q->state);else/*轮转法的输出*/printf("%-10s%-10d%-10d%-10d%-10d %-c\n",q->name,q->cputime,q->needtime,q->count,q->round,q->state);}ﻫ/*输出函数*/voidprt(char algo){PCB *p;prt1(algo);/*输出标题*/ﻫif(run!=NULL) /*如果运行指针不空*/ﻫprt2(algo,run); /*输出当前正在运行的PCB*/p=ready; /*输出就绪队列PCB*/ﻫwhile(p!=NULL)ﻫ{prt2(algo,p);ﻫp=p->next;}p=finish; /*输出完成队列的PCB*/while(p!=NULL)ﻫ{ﻫprt2(algo,p);p=p->next;}getch(); /*压任意键继续*/}/*优先数的插入算法*/insert1(PCB *q){ﻫPCB *p1,*s,*r;ﻫint b;s=q; /*待插入的PCB指针*/p1=ready; /*就绪队列头指针*/r=p1; /*r做p1的前驱指针*/b=1;while((p1!=NULL)&&b) /*根据优先数确定插入位置*/if(p1->prio>=s->prio){ﻫr=p1;ﻫp1=p1->next;ﻫ}elseb=0;if(r!=p1)/*如果条件成立说明插入在r与p1之间*/ﻫ{r->next=s;s->next=p1;}elseﻫ{s->next=p1; /*否则插入在就绪队列的头*/ready=s;}ﻫ}ﻫ/*轮转法插入函数*/insert2(PCB *p2)ﻫ{tail->next=p2; /*将新的PCB插入在当前就绪队列的尾*/ﻫtail=p2;p2->next=NULL;ﻫ}ﻫ/*优先数创建初始PCB信息*/ﻫvoid create1(charalg){PCB *p;ﻫint i,time;ﻫchar na[10];ﻫready=NULL; /*就绪队列头指针*/finish=NULL; /*完成队列头指针*/ﻫrun=NULL; /*运行队列指针*/printf("Enter name and time of process\n"); /*输入进程标识和所需时间创建PCB*/ﻫfor(i=1;i<=N;i++)ﻫ{ﻫp=malloc(sizeof(PCB));ﻫscanf("%s",na);ﻫscanf("%d",&time);strcpy(p->name,na);p->cputime=0;p->needtime=time;ﻫp->state='w';p->prio=50-time;ﻫif(ready!=NULL)/*就绪队列不空调用插入函数插入*/insert1(p);ﻫelse{p->next=ready; /*创建就绪队列的第一个PCB*/ready=p;ﻫ}}ﻫclrscr();printf(" output of priority:\n");ﻫprintf("************************************************\n");ﻫprt(alg); /*输出进程PCB信息*/ﻫrun=ready; /*将就绪队列的第一个进程投入运行*/ﻫready=ready->next;ﻫrun->state='R';}ﻫ/*轮转法创建进程PCB*/void create2(char alg){PCB *p;inti,time;char na[10];ﻫready=NULL;finish=NULL;run=NULL;ﻫprintf("Enter name and time of round process\n");ﻫfor(i=1;i<=N;i++) {ﻫp=malloc(sizeof(PCB));scanf("%s",na);ﻫscanf("%d",&time);ﻫstrcpy(p->name,na);p->cputime=0;ﻫp->needtime=time;ﻫp->count=0; /*计数器*/ﻫp->st ate='w';ﻫp->round=2;/*时间片*/if(ready!=NULL)ﻫinsert2(p);else{ﻫp->next=ready;ﻫready=p;ﻫtail=p;}ﻫ}ﻫclrscr();printf(" output of round\n");printf("************************************************\n");ﻫprt(alg); /*输出进程PCB信息*/run=ready; /*将就绪队列的第一个进程投入运行*/ready=ready->next;ﻫrun->state='R';}/*优先数调度算法*/ﻫpriority(char alg){ﻫwhile(run!=NULL)/*当运行队列不空时,有进程正在运行*/{run->cputime=run->cputime+1;ﻫrun->needtime=run->needtime-1;ﻫrun ->prio=run->prio-3; /*每运行一次优先数降低3个单位*/ﻫif(run->needtime==0) /*如所需时间为0将其插入完成队列*/{run->next=finish;finish=run;ﻫrun->state='F'; /*置状态为完成态*/ﻫrun=NULL;/*运行队列头指针为空*/if(ready!=NULL) /*如就绪队列不空*/firstin(); /*将就绪对列的第一个进程投入运行*/ﻫ}ﻫelse /*没有运行完同时优先数不是最大,则将其变为就绪态插入到就绪队列*/if((ready!=NULL)&&(run->prio<ready->prio)){ﻫrun->state='W';ﻫinsert1(run);firstin(); /*将就绪队列的第一个进程投入运行*/ﻫ}ﻫprt(alg); /*输出进程PCB信息*/ﻫ}ﻫ}{ﻫrun->cputime=run-/*时间片轮转法*/ﻫroundrun(char alg)ﻫ{ﻫwhile(run!=NULL)ﻫ>cputime+1;ﻫrun->needtime=run->needtime-1;ﻫrun->count=run->count+1;ﻫif(run->needtime==0)/*运行完将其变为完成态,插入完成队列*/{ﻫrun->next=finish;finish=run;run->state='F';ﻫrun=NULL;ﻫif(ready!=NUL L)ﻫfirstin(); /*就绪对列不空,将第一个进程投入运行*/}ﻫelseﻫif(run->count==run->round)/*如果时间片到*/ﻫ{run->count=0; /*计数器置0*/ﻫif(ready!=NULL) /*如就绪队列不空*/{run->state='W'; /*将进程插入到就绪队列中等待轮转*/insert2(run);firstin();/*将就绪对列的第一个进程投入运行*/ﻫ}ﻫ}prt(alg); /*输出进程信息*/}ﻫ}/*主函数*/main()ﻫ{ﻫchar algo;/*算法标记*/clrscr();printf("type the algorithm:P/R(priority/roundrobin)\n");ﻫscanf("%c",&algo); /*输入字符确定算法*/ﻫprintf("Enter process number\n");ﻫscanf("%d",&N); /*输入进程数*/ﻫif(algo=='P'||algo=='p') {ﻫcreate1(algo);/*优先数法*/priority(algo);}elseﻫif(algo=='R'||algo=='r'){ﻫcreate2(algo); /*轮转法*/roundrun(algo);ﻫ}}[C语言课程设计]通讯录代码ﻫﻫ#include "stdio.h" /*I/O函数*/ﻫ#include"stdlib.h"/*标准库函数*/ﻫ#include "string.h"/*字符串函数*/ﻫ#include"ctype.h" /*字符操作函数*/ﻫ#defineM50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/ﻫ{char name[20];/*姓名*/char units[30];/*单位*/ﻫ char tele[10]; /*电话*/}ADDRESS;/******以下是函数原型*******/ﻫintenter(ADDRESSt[]); /*输入记录*/void list(ADDRESS t[],int n);/*显示记录*/voidsearch(ADDRESS t[],int n); /*按姓名查找显示记录*/int delete(ADDRESS t[],intn);/*删除记录*/int add(ADDRESSt[],intn); /*插入记录*/voidsave(ADDRESS t[],int n); /*记录保存为文件*/int load(ADDRESS t[]); /*从文件中读记录*/ﻫvoid display(ADDRESSt[]);/*按序号查找显示记录*/void sort(ADDRESSt[],int n); /*按姓名排序*/ﻫvoid qseek(ADDRESS t[],int n);/*快速查找记录*/ﻫvoid copy(); /*文件复制*/void print(ADDRESS temp);/*显示单条记录*/ﻫint find(ADDRESSt[],int n,char*s);/*查找函数*/intmenu_select(); /*主菜单函数*//******主函数开始*******/main()ﻫ{inti;ﻫADDRESS adr[M]; /*定义结构体数组*/ﻫ intlength; /*保存记录长度*/ﻫ clrscr(); /*清屏*/ﻫfor(;;)/*无限循环*/{ﻫswitch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/{case0:length=enter(adr);break;/*输入记录*/ﻫ case 1:list(adr,length);break; /*显示全部记录*/case2:search(adr,length);break; /*查找记录*/ﻫ case3:length=delete(adr,length);break; /*删除记录*/case 4:length=add(adr,length); break; /*插入记录*/case 5:save(adr,length);break;/*保存文件*/ﻫcase 6:length=load(adr);break; /*读文件*/ case7:display(adr);break; /*按序号显示记录*/case8:sort(adr,length);break;/*按姓名排序*/case9:qseek(adr,length);break;/*快速查找记录*/case10:copy();break;/*复制文件*/case 11:exit(0); /*如返回值为11则程序结束*/ﻫ}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/ﻫmenu_select()ﻫ{ﻫ char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/ﻫprintf("pressany key enter menu......\n");/*提示压任意键继续*/ﻫ getch();/*读入任意字符*/ﻫ clrscr(); /*清屏*/ﻫ gotoxy(1,1);ﻫprintf("********************MENU*********************\n\n");printf(" 0. Enterrecord\n");ﻫ printf(" 1.List the file\n");printf(" 2.Searchrecord onname\n");printf(" 3. Delete arecord\n");ﻫ printf(" 4.addrecord\n");ﻫ printf(" 5. Savethe file\n");printf(" 6. Loadthefile\n");printf(" 7. display record on order\n");printf(" 8. sort tomake newfile\n");ﻫ printf(" 9.Quick seekrecord\n");ﻫprintf(" 10. copy the fileto new file\n");printf(" 11. Quit\n");ﻫ printf("***********************************************\n");do{printf("\n Enteryou choice(0~11):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s);/*将输入的字符串转化为整型数*/ﻫ }while(c<0||c>11); /*选择项不在0~11之间重输*/returnc; /*返回选择项,主程序根据该数调用相应的函数*/ﻫ}ﻫ/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ﻫint enter(ADDRESS t[])ﻫ{int i,n;char *s;clrscr(); /*清屏*/ﻫprintf("\nplease input num \n");/*提示信息*/ﻫ scanf("%d",&n);/*输入记录数*/printf("please input record\n");/*提示输入记录*/ﻫ printf("name unit tele phone\n");ﻫ printf("------------------------------------------------\n");for(i=0;i<n;i++)ﻫ {scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*输入记录*/ﻫprintf("----------------------------------------------\n");ﻫ }return n; /*返回记录条数*/}ﻫ/*显示记录,参数为记录数组和记录条数*/ﻫvoid list(ADDRESS t[],intn){ﻫint i;clrscr();ﻫ printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);ﻫ if((i+1)%10==0) /*判断输出是否达到10 {ﻫ printf("Press any keycontinue...\n"); /*提示信息*/条记录*/ﻫgetch(); /*压任意键继续*/}ﻫ printf("************************end*******************\n");}ﻫ/*查找记录*/void search(ADDRESS t[],int n)ﻫ{char s[20]; /*保存待查找姓名字符串*/ﻫ int i; /*保存查找到结点的序号*/clrscr(); /*清屏*/printf("please search name\n");ﻫscanf("%s",s); /*输入待查找姓名*/i=find(t,n,s);/*调用find函数,得到一个整数*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/ﻫ printf("not found\n");ﻫelseprint(t[i]);/*找到,调用显示函数显示记录*/}ﻫ/*显示指定的一条记录*/void print(ADDRESS temp){clrscr();ﻫ printf("\n\n********************************************\n");printf("name unit telephone\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);ﻫ printf("**********************end***********************\n");}/*查找函数,参数为记录数组和记录条数以及姓名s */intfind(ADDRESSt[],int n,char*s){inti;for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{ﻫ if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/return i; /*相等,则返回该记录的下标号,程序提前结结束*/ﻫ}return i; /*返回i值*/ﻫ}ﻫ/*删除函数,参数为记录数组和记录条数*/int delete(ADDRESS t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deletedname\n");/*提示信息*/scanf("%s",s);/*输入姓名*/ﻫ i=find(t,n,s); /*调用find函数*/ﻫ if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no foundnot deleted\n"); /*显示没找到要删除的记录*/else{print(t[i]); /*调用输出函数显示该条记录信息*/。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C程序设计作业课程设计报告单科课程成绩管理一:需求分析:1、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,平时成绩、期中成绩和期末成绩等等相关信息,并且通过cin函数来进行给当前学生输入初始信息.2、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。

3、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。

4、输出全部学生信息和全部学生成绩。

5、退出系统.6、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。

二:概要设计:(一)、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)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)将所有数据写入文件中(0)退出程序(二)、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct /*定义结构体数组*/{char num[10]; /*学号*/char name[20]; /*姓名*/int score[3]; /*成绩*/int add; /*总分*/}Student;(三).程序设计中用到的函数:int menu_select() /*菜单函数*/int Input(Student stud[],int n) /*输入若干条记录*/void Display(Student stud[],int n) /*显示所有记录*/void Sort1_by_num(Student stud[],int n) /*按学号排序*/int Insert_a_record(Student stud[],int n) /*插入一条记录*/int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/ void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/ void Sort2_by_add(Student stud[],int n) /*按总分排序*/void Statistic(Student stu[],int n) /*输出各分数段人数*/void WritetoText(Student stud[],int n) /*将所有记录写入文件*/四:主要源程序代码:#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定义结构体数组*/{char num[10]; /*学号*/char name[20]; /*姓名*/int score[3]; /*成绩*/int add; /*总分*/}Student;Student stu[80]; /*结构体数组变量*/int menu_select() /*菜单函数*/{char c;do{system("cls"); /*运行前清屏*/printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/printf("\t\t | 1. Input Records |\n");printf("\t\t | 2. Display All Records |\n");printf("\t\t | 3. Sort1 |\n");printf("\t\t | 4. Insert a Record |\n");printf("\t\t | 5. Delete a Record |\n");printf("\t\t | 6. Query |\n");printf("\t\t | 7. Sort2 |\n");printf("\t\t | 8. Statistic |\n");printf("\t\t | 9. Write to a Text file |\n");printf("\t\t | 0. Quit |\n");printf("\t\t*****************************************\n");printf("\t\t\tGive your Choice(0-9):");c=getchar(); /*读入选择*/}while(c<'0'||c>'9');return(c-'0'); /*返回选择*/}int Input(Student stud[],int n) /*输入若干条记录*/{int i=0,j=0;char sign,x[10]; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{printf("\t\t\tstudent's num:"); /*交互输入*/scanf("\t\t\t%s",stud[n+i].num);printf("\t\t\tstudent's name:");scanf("\t\t\t%s",stud[n+i].name);printf("\t\t\tstudent's scores(平时成绩、期中成绩和期末成绩):"); scanf("\t\t\t%d,%d,%d",&stud[n+i].score[j],&stud[n+i].score[++j],&stud[n+i].score[++j]);stud[n+i].add=stud[n+i].score[j]*20/100+stud[n+i].score[++j]*20/100+stud[n+i].score[++j]*60/1 00;gets(x); /*清除多余的输入*/printf("\t\t\tany more records?(Y/N)");scanf("\t\t\t%c",&sign); /*输入判断*/i++;}return(n+i);}void Display(Student stud[],int n) /*显示所有记录*/{int i;printf("\t\t\t-----------------------------------------------\n"); /*格式头*/printf("\t\t\tnumber name scores add\n");printf("\t\t\t-----------------------------------------------\n");for(i=1;i<n+1;i++) /*循环输入*/{printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].scores,stud[i-1].add);if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t\t-----------------------------------\n");/*格式*/printf("\t\t\t");system("pause");printf("\t\t\t-----------------------------------\n");}}printf("\t\t\t");system("pause");}void Sort1_by_num(Student stud[],int n) /*按学号排序*/{int i,j,*p,*q,s;char t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){strcpy(t,stud[j+1].num);strcpy(stud[j+1].num,stud[j].num);strcpy(stud[j].num,t);strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);p=stud[j+1].score;q=stud[j].score;s=*p; *p=*q; *q=s;s=*(p+1); *(p+1)=*(q+1); *(q+1)=s;s=*(p+2); *(p+2)=*(q+2); *(q+2)=s;p=&stud[j+1].add;q=&stud[j].add;s=*p; *p=*q; *q=s;}}int Insert_a_record(Student stud[],int n) /*插入一条记录*/{char x[10],i=0; /*清除多余输入所用*/printf("\t\t\tstudent's num:"); /*交互式输入*/scanf("\t\t\t%s",stud[n].num);printf("\t\t\tstudent's name:");scanf("\t\t\t%s",stud[n].name);printf("\t\t\tstudent's scores:");scanf("\t\t\t%d,%d,%d",&stud[n].score[i],&stud[n].score[++i],&stud[n].score[++i]);stu[n].add=stud[n].score[i]*20/100+stud[n].score[++i]*20/100+stud[n].score[++i]*60/100;gets(x);n++;Sort_by_num(stud,n); /*调用排序函数*/printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/return(n);}int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/{char s[20];int i=0,j;printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/scanf("%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t\tnot find!\n"); /*返回失败信息*/return(n);}for(j=i;j<n-1;j++) /*删除操作*/{strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j].name,stud[j+1].name);for(n=0;n<3;n++)stud[j].score[n]=stud[j+1].score[n];stu[j].add=stu[j+1].add;}printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/return(n-1);}void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/{char s[20],j=0;int i=0;printf("\t\t\tinput his(her) name:"); /*交互式输入*/scanf("\t\t\t%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t\tnot find!\n"); /*输入失败信息*/return;}printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/printf("\t\t\this(her)scores:%d,%d,%d\n",stud[i].score[j],stud[i].score[++j],stud[i].score[++j]);printf("\t\t\this(her) add:%d",stu[i].add);}void Sort2_by_add(Student stud[],int n) /*按总分排序*/{int i,j,*p,*q,s;char t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].add,stud[j+1].add)>0){strcpy(t,stud[j+1].add);strcpy(stud[j+1].add,stud[j].add);strcpy(stud[j].add,t);strcpy(t,stud[j+1].num);strcpy(stud[j+1].num,stud[j].num);strcpy(stud[j].num,t);strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);p=stud[j+1].score;q=stud[j].score;s=*p; *p=*q; *q=s;s=*(p+1); *(p+1)=*(q+1); *(q+1)=s;s=*(p+2); *(p+2)=*(q+2); *(q+1)=s;}}void Statistic(Student stu[],int n) /*输出各分数段人数*/{int a=0,b=0,c=0,d=0,e=0;for(i=0;i<n;i++)if(stu[i].add<60) a++;if(stu[i].add>=60&&stu[i].add<70) b++;if(stu[i].add>=70&&stu[i].add<80) c++;if(stu[i].add>=80&&stu[i].add<90) d++;if(stu[i].add>=90&&stu[i].add<=100) e++;printf("add scores<60 %d\n60<=add scores<70 %d\n70<=add scores<80 %d\n80<=add scores<90 %d\n90<=add scores<100 %d\n",a,b,c,d,e);void WritetoText(Student stud[],int n) /*将所有记录写入文件*/{int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{printf("\t\t\tcann't open the file\n");system("pause");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].sco re[2],stu[i].add);i++;}fclose(fp); /*关闭文件*/printf("Successed!\n"); /*返回成功信息*/}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t\tInput Records\n"); /*输入若干条记录*/n=Input(stu,n);break;case 2:printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/Display(stu,n);break;case 3:printf("\t\t\tSort1\n");Sort1_by_num(stu,n); /*按学号排序*/printf("\t\t\tSort1 Suceessed!\n");printf("\t\t\t");system("pause");break;case 4:printf("\t\t\tInsert a Record\n");n=Insert_a_record(stu,n); /*插入一条记录*/printf("\t\t\t");system("pause");break;case 5:printf("\t\t\tDelete a Record\n");n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/printf("\t\t\t");system("pause");break;case 6:printf("\t\t\tQuery\n");Query_a_record(stu,n); /*查找并显示一个记录*/printf("\t\t\t");system("pause");break;case 7:printf("\t\t\tSort2\n");Sort2_by_add(stu,n); /*按总分排序*/printf("\t\t\t");system("pause");break;case 8:printf("\t\t\tStatistic\n");Statistic(stu,n);printf("\t\t\t");system("pause");break;case 9:printf("\t\t\tWrite to a Text file\n");WritetoText(stu,n); /*循环写入数据*/printf("\t\t\t");system("pause");break;case 0:printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/printf("\t\t\t");system("pause");exit(0);}}}五.设计测试流程1、进入界面2、输入选项1,回车;按提示输入数据:3、回到主菜单;输入选项7,回车;输入文件名:data.txt,回车;出现成功提示,则读入文件操作成功。

相关文档
最新文档