版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计课程设计名称: 高级语言程序设计 专 业 班 级 : 计专08级1班 学 生 姓 名 : 王 玉 攀 学 号 : 200838940116 指 导 教 师 : 阎 娟 课程设计时间: 计算机科应用技术 专业课程设计任务书学生姓名王玉攀专业班级计算机应用技术0801班学号200838940116题 目 08计算机班学生成绩管理系统课题性质工程设计课题来源自拟题目指导教师阎娟同组姓名无主要内容全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数、指针和文件的操作,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力。主要功能:1
2、、建立:录入学生信息包括:姓名,学号,各科成绩等。2、维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息3、统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60-70),统计出在此分数段的学生情况4、查询:查询时可实现按姓名查询、按学号查询5排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)任务要求1设计正确,方案合理,能实现相应功能。2界面友好,使用方便。3程序精炼,结构清晰。4上机演示。5提交材料: (1) 源
3、程序清单及程序框图(2)课程设计报告参考文献(1)C程序设计(第三版),谭浩强,北京,清华大学出版社,2007(2)C语言编程宝典,王大刚,第二版,机械工业出版社. (3) C语言程序设计 张磊 , 高等教育出版社(4)数据结构与算法面向对象的C设计模式(5)数据结构教程 李春葆 ,北京, 清华大学出版社审查意见指导教师签字:教研室主任签字: 年 月 日 1 需求分析1、 通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2、 通过课程设计,学会设计数据结构。其中包括对结构数组、链表和数据文件等知识的运用。3、 通过课程设计,提高程序开发功能,能运用合理的
4、控制流程编写清晰高效的程序。4、 通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。5、 通过课程设计,开发一个中小型系统,掌握系统研发全过程。6、 通话课程设计,培养分析问题、解决实际问题的能力。2 概要设计(1) 模块划分程序的模块组成: 主 函 数: int main() 新建函数:STUDENT *init() 输入函数 :STUDENT *create() 显示函数: void print(STUDENT *head) 删除函数: STUDENT *delete(STUDENT *head)保存函数: void save(STUDENT *head)修改函数: S
5、TUDENT *Modify(STUDENT *head,STUDENT *new)各个函数的主要功能: 输入函数: 随时输入数据。 菜单函数:显示系统主菜单。 显示函数: 显示所有学生的信息。 寻找函数: 方便查找学生信息。 删除函数: 删除某学生的信息。 插入函数: 可以插入新的信息。 保存函数: 保存好学生信息,以免丢失。(2) 程序总体框架 界面如下:+-+欢迎使用08级计算机班成绩管理系统+-+ 管理员初始用户名和密码均为wangyupan请输入用户名:wangyupan请输入密码:wangyupan运行结果如下: - + 学生成绩管理系统 + -+ 1-录入学生信息 + + 2-浏
6、览学生信息 + + 3-查询学生信息 + + 4-删除学生信息 + + 5-修改学生信息 + + 0-退出系统 + -请输入你的选择:如果选择1 录入学生信息 有以下需要输入:请输入学生学号:请输入学生姓名: 请输入学生成绩如果选择是2 浏览学生信息 即前面录入的学生信息就会显示出来。如果选择是3 查询学生信息 信息查询可以分为:学号查询和姓名查询,学号查询:输入学生学号就能查出该学生的信息;姓名查询:输入学生姓名就能查出该学生的信息;如果选择是4 删除学生信息 请输入你要删除学生的学号:即可完成对学生信息的删除,如果选择是5 修改学生信息请输入你要修改的学生学号,正确输入学号就能对该生进行信
7、息修改。如果选择是0 就是退出系统 按任意键即退出系统。3 运行环境(软、硬件环境)硬件环境:Cpu:P2.4GH DRR: 256MB WINDOWS XP/2000。软件环境:在Visual C 6.04 开发工具和编程语言C语言5 详细设计#include<stdio.h> /*引用库函数*/ #include<stdlib.h> #include<ctype.h> #include<string.h> typedef struct /*定义结构体数组*/ char num10; /*学号*/ char name20; /*姓名*/ int
8、 score; /*成绩*/ Student; Student stu80; /*结构体数组变量*/ int menu_select() /*菜单函数*/ char c; do system("cls"); /*运行前清屏*/ printf("tt*Students' Grade Management System*n"); /*菜单选择*/ printf("tt | 1. Input Records |n"); printf("tt | 2. Display All Records |n"); print
9、f("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 from a Text File|n"); printf("tt | 9. Write to a
10、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为清
11、除多余的数据所用*/ while(sign!='n'&&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("
12、ttt%d",&studn+i.score); gets(x); /*清除多余的输入*/ printf("tttany more records?(Y/N)"); scanf("ttt%c",&sign); /*输入判断*/ i+; return(n+i); void Display(Student stud,int n) /*显示所有记录*/ int i; printf("ttt-n"); /*格式头*/ printf("tttnumber name scoren"); printf(&
13、quot;ttt-n"); 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("ttt"); system("pause"); printf("ttt-n"); printf("ttt");
14、 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); strcpy(t,studj+1.name); strcpy
15、(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'
16、;s name:"); 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) /*按姓名查找,
17、删除一条记录*/ char s20; int i=0,j; printf("ttttell me his(her) name:"); /*交互式问寻*/ 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); st
18、rcpy(,studj+1.name); studj.score=studj+1.score; printf("tttDelete Successed!n"); /*返回成功信息*/ return(n-1); void Query_a_record(Student stud,int n) /*查找并显示一个记录*/ char s20; int i=0; printf("tttinput his(her) name:"); /*交互式输入*/ scanf("ttt%s",s); while(strcmp(studi.
19、name,s)!=0&&i<n) i+; /*查找判断*/ if(i=n) printf("tttnot find!n"); /*输入失败信息*/ return; printf("ttthis(her) number:%sn",studi.num); /*输出该学生信息*/ printf("ttthis(her) score:%dn",studi.score); void Statistic(Student stud,int n) /*新增功能,输出统计信息*/ int i,j=0,k=0,sum=0; floa
20、t 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); /*总共记录数*/ printf("tttthe hignest score:n"); /*最高分*/ printf("tttnumber:%s name:%s s
21、core:%dn",studj.num,,studj.score); printf("tttthe lowest score:n"); /*最低分*/ printf("tttnumber:%s name:%s score:%dn",studk.num,,studk.score); printf("tttthe average score is %5.2fn",aver); /*平均分*/ int AddfromText(Student stud,int n) /*从文件中读入数据*/
22、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("
23、;pause"); return(n); fscanf(fp,"%d",&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"); retu
24、rn(n); void WritetoText(Student stud,int n) /*将所有记录写入文件*/ int i=0; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf("tttWrite Records to a Text Filen"); /*输入文件名*/ printf("tttInput the filename:"); scanf("ttt%s",filename); if(fp=fopen(filename,"w")=NULL)
25、/*打开文件*/ printf("tttcann't open the filen"); system("pause"); return; fprintf(fp,"%dn",n); /*循环写入数据*/ while(i<n) fprintf(fp,"%-16s%-15s%dn",studi.num,,studi.score); i+; fclose(fp); /*关闭文件*/ printf("Successed!n"); /*返回成功信息*/ void main
26、() /*主函数*/ 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("tttSortn"); Sort_by_num(stu,n); /*按学号排序*/ printf
27、("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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建泉州丰泽区清源街道社区卫生服务中心招聘工作人员笔试参考试题及答案详解
- 2026年焦作市马村区街道办人员招聘考试参考题库及答案解析
- 2026内蒙古呼和浩特武川博物馆社会讲解员招募笔试备考题库及答案详解
- 2026年沈阳市于洪区幼儿园教师招聘笔试备考题库及答案解析
- 2026浙江丽水缙云县国投集团招聘2人笔试备考题库及答案详解
- 高二培优方案
- 2026天津津融国盛股权投资基金管理有限公司社会招聘1人笔试备考试题及答案详解
- 生肌促愈洗药熏洗:开启创面愈合的新征程-基于临床实效与作用机制的深度剖析
- 2026宁夏医科大学总医院招聘高层次工作人员49人笔试备考题库及答案详解
- 2026二季度中国人民财产保险股份有限公司红河州分公司社会招聘1人笔试备考试题及答案详解
- DB36-T 657-2023 棘胸蛙养殖技术规程
- 物料掩埋事故分析原因分析报告
- 某自来水厂施工组织设计完整方案
- 十年(14-23)高考物理真题分项汇编专题58 气体的等圧変化(含解析)
- 危险化学品-危险化学品的运输安全
- 2023建筑结构弹塑性分析技术规程
- 110kv变电站设计外文翻译
- 2023年中考数学压轴题专题22 二次函数与新定义综合问题【含答案】
- 毛主席诗词(132首)
- SB-2100流量积算仪说明书
- 【毕业论文撰写】开题报告、文献综述、文献检索
评论
0/150
提交评论