C语言课程设计报告_学生成绩简单管理程序_第1页
C语言课程设计报告_学生成绩简单管理程序_第2页
C语言课程设计报告_学生成绩简单管理程序_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 系统菜单的主要功能(1) 输入若干条记录(2) 显示全部记录(3) 按学号排序(4) 插入一条记录(5) 按姓名查找,删除一条记录(6) 查找并显示一条记录(7) 输出统计信息 (新增)(8) 从正文中添加数据到结构体数组中(9) 将全部数据写入文件中(0)退出程序2. 题目分析该题主要考察同学对结构体,指针,文件的操作,以及c 语言算法的把握,所以完成此道题目要求较强的设计力量,尤其是要有一种大局观的意识。如何调程序也格外重要,通过这个程序可以学习到以前调试短程序没有的的阅历。菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了全部 c 语言学过的技巧,下面就各个子程序中的功能进

2、行说明:功能 1 和 4 的算法相像,输入一条记录到结构体中去,其中有一部很关键,就是通过 gets 将全部的多余的字符,回车读去,否则就会出错。功能 2 是显示全部的记录,通过循环输出,格式也比较重要。功能 3 为按学号排序,由于学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到 strcmp,strcpy 等函数。功能 5 为按姓名删除记录,先输入姓名,再一一比较,假如没有则返回失败信息,假如找到就将此记录都向前移一位,返回 n-1。16功能 6 的算法在 5 中就已经体现了,输入姓名,一一比较。功能 7 为新增的功能,由于考虑到原来给出的函数中竟然没有对同学成果的统计功能

3、,因此新增此功能,可以得出全部的记录个数,最高、最低、平均分,并输出相关的同学信息等。功能 8 和 9 是对文件的操作,提前预备好数据。3. 感受学了将近一个学期的 c 语言了,说实话,挺疲乏的,特别是最终的课设,调得好烦。但现在想想收获也不小,以前高中学 vb 的时候,始终觉得计算机语言挺简洁的,现在看来当时根本没有接触到计算机语言的精髓。看到了自己做出的这个小程序,挺骄傲的,以前始终以为做出一个软件一样的程序是遥不行及的事情。我选择的是其次个程序,由于自我觉得它涉及面更广,把以前学过的算法几乎都过了一遍。以后在遇到像等级考试这样的事情我就再也不怕了。感谢藏洌老师的热忱指导。恭维的话就不多说

4、了,感受或许就这么多吧。4. 程序正文部分#include<stdio.h>/*引用库函数*/ #include<stdlib.h>#include<ctype.h> #include<string.h>typedef struct/*定义结构体数组*/char num10;/*学号*/char name20;/*姓名*/ int score;/*成果*/student;student stu80;/*结构体数组变量*/int menu_select()/*菜单函数*/char c; dosystem(“cls“);/*运行前清屏*/printf

5、(“tt*students” grade management system*n“);/*菜单选择*/printf(“tt| 1. input records|n“);printf(“tt| 2. display all records|n“);printf(“tt| 3. sort|n“);printf(“tt| 4. insert a record|n“); printf(“tt| 5. delete a record|n“); printf(“tt| 6. query|n“);printf(“tt| 7. statistic|n“); printf(“tt| 8. add records

6、 from a text file|n“);printf(“tt| 9. write to a text file|n“);printf(“tt| 0. quit|n“);printf(“tt*n“); printf(“tttgive your choice(0-9):“);c=getchar();/*读入选择*/while(c<”0”|c>”9”);return(c-”0”);/*返回选择*/int input(student stud,int n)/*输入若干条记录*/int i=0;char sign,x10;/*x10为清除多余的数据所用*/ while(sign!=”n”

7、&&sign!=”n”)/*推断*/printf(“tttstudent”s num:“);/*交互输入*/ scanf(“ttt%s“,studn+i.num);printf(“tttstudent”s name:“); scanf(“ttt%s“,studn+); printf(“tttstudent”s score:“); scanf(“ttt%d“,&studn+i.score); gets(x);/*清除多余的输入*/ printf(“tttany more records?(y/n)“);scanf(“ttt%c“,&sign);/*输入

8、推断*/ i+;return(n+i);void display(student stud,int n)/*显示全部记录*/int i;printf(“ttt-n“);/*格式头*/ printf(“tttnumbernamescoren“);printf(“tttn“);for(i=1;i<n+1;i+)/*循环输入*/printf(“ttt%-16s%-15s%dn“,studi-1.num,,studi-1.score); if(i>1&&i%10=0)/*每十个暂停*/printf(“ttt-n“);/*格式*/ printf(“tt

9、t“);system(“pause“);printf(“tttn“);printf(“ttt“); system(“pause“);void sort_by_num(student stud,int n)/*按学号排序*/int i,j,*p,*q,s; char t10;for(i=0;i<n-1;i+)/*冒泡法排序*/ for(j=0;j<n-1-i;j+)if(strcmp(studj.num,studj+1.num)>0)strcpy(t,studj+1.num); strcpy(studj+1.num,studj.num); strcpy(studj.num,t)

10、; strcpy(t,studj+1.name); strcpy(studj+1.name,); strcpy(,t); p=&studj+1.score; q=&studj.score;s=*p;*p=*q;*q=s;int insert_a_record(student stud,int n)/*插入一条记录*/char x10;/*清除多余输入所用*/printf(“tttstudent”s num:“);/*交互式输入*/ scanf(“ttt%s“,studn.num);printf(“tttstudent”s name:“);

11、 scanf(“ttt%s“,); printf(“tttstudent”s score:“); scanf(“ttt%d“,&studn.score); gets(x);n+;sort_by_num(stud,n);/*调用排序函数*/ printf(“tttinsert successed!n“);/*返回成功信息*/ return(n);int delete_a_record(student stud,int n)/*按姓名查找,删除一条记录*/char s20;int i=0,j;printf(“ttttell me his(her) name:“);/*交

12、互式问寻*/scanf(“%s“,s);while(strcmp(,s)!=0&&i<n) i+;/*查找推断*/if(i=n)printf(“tttnot find!n“);/*返回失败信息*/ return(n);for(j=i;j<n-1;j+)/*删除操作*/strcpy(studj.num,studj+1.num); strcpy(,studj+1.name); studj.score=studj+1.score;printf(“tttdelete successed!n“);/*返回成功信息*/return(n-1

13、);void query_a_record(student stud,int n)/*查找并显示一个记录*/char s20; int i=0;printf(“tttinput his(her) name:“);/*交互式输入*/ scanf(“ttt%s“,s);while(strcmp(,s)!=0&&i<n) i+;/*查找推断*/ if(i=n)printf(“tttnot find!n“);/*输入失败信息*/ return;printf(“ttthis(her) number:%sn“,studi.num);/*输出该同学信息*/ prin

14、tf(“ttthis(her) score:%dn“,studi.score);void statistic(student stud,int n)/*新增功能,输出统计信息*/int i,j=0,k=0,sum=0;float aver;/*成果平均值*/ for(i=0;i<n;i+)/*循环输入推断*/sum+=studi.score; if(studj.score>studi.score) j=i; if(studk.score<studi.score) k=i;aver=1.0*sum/n;printf(“tttthere are %d records.n“,n);

15、/*总共记录数*/ printf(“tttthe hignest score:n“);/*最高分*/printf(“tttnumber:%sname:%sscore:%dn“,studj.num,,studj.score); printf(“tttthe lowest score:n“);/*最低分*/printf(“tttnumber:%sname:%sscore:%dn“,studk.num,,studk.score); printf(“tttthe average score is %5.2fn“,aver);/*平均分*/int addfromt

16、ext(student stud,int n)/*从文件中读入数据*/int i=0,num;file *fp;/*定义文件指针*/char filename20;/*定义文件名*/ printf(“tttinput the filename:“); scanf(“ttt%s“,filename);/*输入文件名*/ if(fp=fopen(filename,“rb“)=null)/*打开文件*/printf(“tttcann”t open the filen“);/*打开失败信息*/ printf(“ttt“);system(“pause“); return(n);fscanf(fp,“%d

17、“,&num);/*读入总记录量*/ while(i<num)/*循环读入数据*/fscanf(fp,“%s%s%d“,studn+i.num,studn+,&studn+i.score); i+;n+=num;fclose(fp);/*关闭文件*/ printf(“tttsuccessed!n“); printf(“ttt“); system(“pause“);return(n);void writetotext(student stud,int n)/*将全部记录写入文件*/int i=0;file *fp;/*定义文件指针*/char filename2

18、0;/*定义文件名*/printf(“tttwrite records to a text filen“);/*输入文件名*/ printf(“tttinput the filename:“);scanf(“ttt%s“,filename); if(fp=fopen(filename,“w“)=null)/*打开文件*/printf(“tttcann”t open the filen“); system(“pause“);return;fprintf(fp,“%dn“,n);/*循环写入数据*/ while(i<n)fprintf(fp,“%-16s%-15s%dn“,studi.num

19、,,studi.score); i+;fclose(fp);/*关闭文件*/ printf(“successed!n“);/*返回成功信息*/void main()/*主函数*/int n=0;for(;)switch(menu_select()/*选择推断*/case 1:printf(“tttinput recordsn“);/*输入若干条记录*/ n=input(stu,n);break;case 2:printf(“tttdisplay all recordsn“);/*显示全部记录*/ display(stu,n);break;case 3:printf(“ttt

20、sortn“);sort_by_num(stu,n);/*按学号排序*/ printf(“tttsort suceessed!n“); printf(“ttt“);system(“pause“); break;case 4:printf(“tttinsert a recordn“); n=insert_a_record(stu,n);/*插入一条记录*/ printf(“ttt“);system(“pause“); break;case 5:printf(“tttdelete a recordn“);n=delete_a_record(stu,n);/*按姓名查找,删除一条记录*/printf(“ttt“); system(“pause“); break;case 6:printf(“tttqueryn“);query_a_record(stu,n);/*查找并显示一个记录*/ printf(“ttt“);system(“pause“); break;case 7:printf(“tttstatisticn“);statistic(stu,n);/*新

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论