综合应用_3.doc_第1页
综合应用_3.doc_第2页
综合应用_3.doc_第3页
综合应用_3.doc_第4页
综合应用_3.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

综合应用_3.c/* FileName : 综合应用_3.c Description: 综合应用示例-菜单及应用系统设计(2). 学习目标,掌握以下知识:数组用法;要求用指针改写综合应用_2.c并要求每个功能用单独的模块表示.示例程序中:1)void input(int a,int b ,int number);成绩输入2)int findStudentID(int StudentID,int findID,int Max);查找指定学号的学生3)void DisplayScore(int StudentID,int StudentScore,int Max);显示所有记录的信息4)void DispMainMenu();显示主菜单5)void DispQueryMenu();显示查询子菜单6)char choice();获取用户在菜单中的选择存在问题要求思考并加以解决:1)对用户输入的可能错误检查是否严格?程序的容错性如何?如学号重复,成绩不符合规定.2)如何实现插入(添加)、删除、排序等的一般处理功能?3)如何实现多门课程的处理?4)如何保存输入及修改结果?5)物理打印(在打印机上输出)?问题4)-5)将有后续章节加以解决. Copyright :苏州科技学院电子与信息工程系 Author :Embedded System Lab. Date :12-03-06 14:29 Version: 0.2*/#include #include #include /*控制台相关函数定义*/#include #defineMAX_NUM45/*最多学生人数*/void input(int *StudentID,int *StudentScore,int Max);int findStudentID(int StudentID,int findID,int Max);void DisplayScore(int *StudentID,int *StudentScore,int Max);void DispMainMenu();void DispQueryMenu();/*显示查询子菜单*/char choice();/*获取用户在菜单中的选择*/int ScoreInput(int *ID,int *Score);void QueryScore(int *ID,int *Score,int Max);void EditScore(int *ID,int *Score,int Max);/* Function :DispMainMenu Description:显示主菜单 Parameters :None Return :None Note :*/void DispMainMenu()printf(*学生成绩管理系统V1.0*n); printf(t1-成绩录入;t2-成绩修改n); printf(t3-成绩查询;t4-开心一刻n); printf(t0-退出.n); printf(*n); printf(请选择(0-4):);/*显示菜单信息*/* Function :DispQueryMenu Description:显示查询子菜单 Parameters :None Return :None Note :*/void DispQueryMenu() printf(*请选择查询方式*n); printf(t1-按学号查询;t2-查询全部记录n);printf(*n); printf(请选择(1-2):);/*显示菜单信息*/* Function :choice Description:取用户的对菜单的选择 Parameters :None Return :用户选择的对应字符键ASCII值 Note :*/char choice()char select;/while( !_kbhit();/*_kbhit()等待用户输入,非0有击键.适用Microsoft平台*/ elect=getche(); /*取用户用户输入,回显,getch()则不回显,适用Microsoft平台*/return (select);/* Function :DisplayScore Description:显示所有的学生成绩信息. Parameters:StudentID-保存学号的数组StudentScore-保存成绩的数组Max-已有记录的学生总人数 Return Value: None Note :*/void DisplayScore(int *StudentID,int *StudentScore,int Max)int i;printf(n序号t学号t成绩n);for(i=0;iMax;i+)printf(%dt%dt%dn,i+1,*(StudentID+i),*(StudentScore+i);printf(n);/* Function :input Description:输入学生的成绩信息 Parameters :StudentID-保存学号的数组StudentScore-保存成绩的数组Max-输入的学生人数 Return:None Note:没有考虑输入学号相同的情况,请改正.*/void input(int *StudentID,int *StudentScore,int Max)int i;for(i=0;iMax;i+)printf(n请输入第%d个学生的学号:t,i+1);scanf(%d,StudentID+i);printf(tt成绩:t);scanf(%d,StudentScore+i);printf(n您的输入信息是:n);DisplayScore(StudentID,StudentScore,Max);/* Function:findStudentID Description:查找指定学号的学生 Parameters :StudentID-保存学号的数组findId-被查找的学生学号Max-已记录的学生总人数 Return:如果成功,返回存放在StudentID中的位置索引,索引值从0开始.否则,返回-1. Note :从第一个元素开始遍历所有StudentID中的元素,查找满足其值=findId的元素.*/int findStudentID(int *StudentID,int findID,int Max)int i;for(i=0;iMax;i+)if(*(StudentID+i)=findID)break;if(iMax)/*找到? iMAX_NUM)printf(您输入的人数太多,大于 %d 人!n,MAX_NUM);return (0);input(ID,Score,number) ; /*number是局部变量*/return (number);/* Function:QueryScore Description:学生成绩查询 Parameters :ID-指向保存学号的数组的指针Score-指向保存成绩的数组的指针Max-当前记录的学生人数 Return :None Note:*/void QueryScore(int *ID,int *Score,int Max) char select; inti,findID; DispQueryMenu(); select=choice(); switch (select) case 1:printf(n按学号查询n请输入学生的学号: );scanf(%d,&findID);if (i=findStudentID(ID,findID,Max)!=-1)printf(n查找结果如下:n);printf(t学号t成绩n);printf(t%dt%dn,IDi,Scorei);else/*没有找到*/printf(您输入的学号不存在!n);break; case 2:printf(n查询全部学生信息!n);DisplayScore(ID,Score,Max);break; default :printf(选择错误!n); /* Function :EditScore Description:修改学生成绩 Parameters :ID-指向保存学号的数组的指针Score-指向保存成绩的数组的指针Max-当前记录的学生人数 Return :None Note :*/void EditScore(int *ID,int *Score,int Max)inti,findID;/*findID-要查找的学生的学号*/printf(n请输入学生的学号: );scanf(%d,&findID);if (i=findStudentID(ID,findID,Max)!=-1)printf(原成绩: %dn,*(Score+i);printf(请输入新成绩: );scanf(%d,Score+i);else/*没有找到*/printf(您输入的学号不存在!n);/*主函数*/int main(int argc, char *argv)char select;int IDMAX_NUM,ScoreMAX_NUM;/*保存学生学号及姓名的数组*/int current_number;/*number-本程序当前正在处理的学生人数*/char cmdLine=winmine.exe;/*WINDOWS应用程序名,并在系统的PATH中能找到,否则要指定路径,如C:WINDOWSSystem32winmine.exe*/select=0;while(select!=0) system(cls);/*执行DOS系统命令,括号内参数是系统命令名*/ DispMainMenu(); select=choice();/*取用户用户输入*/ switch(select) case 0: printf(n您选择的是退出测试!n); _beep(300,400); continue; case 1:printf(n您选择的是成绩录入!n);current_number=ScoreInput(ID,Score); break; case 2: printf(n您选择的是成绩修改!n);EditScore(ID,Score,current_number); break; case 3:printf(n您选择的是成绩查询!n);QueryScore(ID,Score,current_number); break; case 4: printf(n您选择的是开心一刻!哈哈.,可别贪玩,荒废了功课!n);WinExec(cmdLine,SW_SHOWDEFAULT); /*执行WINDOWS应用程序*/ break;default:printf(n选择错误!请重新选择!n);/*小于0,大于4*/system(PAUSE);/*用户的输入

温馨提示

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

评论

0/150

提交评论