




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言综合应用实例一、学生信息管理系统#include<>/*I/O函数*/#include<>/*其它说明*/#include<>/*字符串函数*/#defineBUFLEN100/*缓冲区最大字符数*/#defineLEN15/*学号和姓名最大字符数,实际请更改*/#defineN100/*最大学生人数,实际请更改*/structrecord/*结构体*/(charcode[LEN+1];/*学号*/charname[LEN+1];/*姓名*/intage;/*年龄*/charsex[3];/*性别*/chartime[LEN+1];/*出生年月*/charadd[30];/*家庭地址*/chartel[LEN+1];/*电话号码*/charmail[30];/*电子邮件地址charmail[30];/*电子邮件地址*/}stu[N];}stu[N];intk=1,n,m;/*定义全局变量*/voidreadfile();/*intk=1,n,m;/*定义全局变量*/voidreadfile();/*函数声明*/voidseek();voidmodify();voidinsert();voiddel();voiddisplay();voidsave();voidmenu();intmain()while(k)menu();system("pause");return0;)voidhelp()(printf("\n0.欢迎使用系统帮助!\n");printf("\n1.进入系统后,先刷新学生信息,再查询;\n");printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.增加学生信息后,切记保存按7;\n");printf("\n4.谢谢您的使用!\n");)voidreadfile()/*建立信息*/(char*p="”;FILE*fp;inti=0;if((fp=fopen("",'T"))==NULL)(printf("Openfile%serror!Strikeanykeytoexit!",p);system("pause");exit(0);}while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].code,stu[i].name,&stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)(i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");voidseek()/*查找*/(inti,item,flag;chars1[21];/*以姓名和学号最长长度+1为准*/printf("\n");printf("——1.按学号查询——\n");printf("—---2.按姓名查询--——\n");printf("---—3.退出本菜单---—\n");printf("\n");while(1)(printf("请选择子菜单编号:");scanf("%d”,&item);flag=0;switch(item)printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0)(flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("\n");printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该学号不存在!\n");break;printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0)(flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("\n");printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该姓名不存在!\n");break;case3:return;default:printf("请在1-3之间选择\n");))voidmodify()/*修改信息*/(inti,item,num;charsex1[3],s1[LEN+1],s2[LEN+1];/*以姓名和学号最长长度+1为准*/printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0)/*比较字符串是否相等*/num=i;printf("\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改电话号码\n");printf("7.修改E-mail地址\n");printf("8.退出本菜单\n");printf("\n");while(1){printf("请选择子菜单编号:");scanf("%d”,&item);switch(item){printf("请输入新的姓名:\n");scanf("%s",s2);strcpy(stu[num].name,s2);break;printf("请输入新的年龄:\n");scanf("%d",&stu[num].age);break;printf("请输入新的性别:\n");scanf("%s",sex1);strcpy(stu[num].sex,sex1);break;printf("请输入新的出生年月:\n");scanf("%s",s2);strcpy(stu[num].time,s2);break;printf("请输入新的地址:\n");scanf("%s",s2);strcpy(stu[num].add,s2);break;printf("请输入新的电话号码:\n");scanf("%s",s2);strcpy(stu[num].tel,s2);break;printf("请输入新的E-mail地址:\n");scanf("%s",s2);strcpy(stu[num].mail,s2);break;case8:return;default:printf("请在1-8之间选择\n");}}}voidsort()/*按学号排序*/{inti,j,*p,*q,s;chartemp[10];for(i=0;i<n-1;i++)(for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0)(strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code);strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name);strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time);strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add);strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail);strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;p=s;)voidinsert()/*插入函数*/(inti=n,j,flag;printf("请输入待增加的学生数:\n");scanf("%d",&m);do(flag=1;while(flag)(flag=0;printf("请输入第%d个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0)(printf("已有该学号,请检查后重新录入!\n");flag=1;break;/*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第%d个学生的姓名:\n",i+1);scanf("%s”,stu[i].name);printf("请输入第%d个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第%d个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第%d个学生的出生年月:(格式:年.月)\n-,i+1);scanf("%s",stu[i].time);printf("请输入第%d个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第%d个学生的电话:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第%d个学生的E-mail:\n",i+1);scanf("%s",stu[i].mail);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();voiddel()(inti,j,flag=0;chars1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0)(flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该学号不存在!\n");if(flag==1)printf("删除成功,显示结果请选择菜单6\n");n--;))voiddisplay()(inti;printf("所有学生的信息为:\n");电话printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("\n");for(i=0;i<n;i++)(printf("%6s%7s%5d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);)voidsave()(inti;FILE*fp;fp=fopen("","w");/*写入*/for(i=0;i<n;i++)(fprintf(fp,"%s%s%d%s%s%s%s%s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);)fclose(fp);)voidmenu()/*界面*/intnum;printf("\n\n学生信息管理系统\n\n");printf("*****************\n\n");printf("*制作人:*\n\n");printf("*****************\n\n");printf('I*********************系统功能菜单************************printf("*****************\n\n");printf('I*********************系统功能菜单************************\n");printf("友情提醒:查询前请先刷新系统!\n");printf("\n");printf("*********************************************\n");printf("*********************************************\n");printf("*0.系统帮助及说明**1.刷新学生信息*\n");printf("*********************************************\n");printf("*********************************************\n");printf("*2.查询学生信息**3.修改学生信息*\n");printf("*********************************************\n");printf("*********************************************\n");printf("*4.增加学生信息**5.按学号删除信息*\n");printf("*********************************************\n");printf("*********************************************\n");printf("*6.显示当前信息printf("*6.显示当前信息**7.保存当前学生信息*\n");printf("********************************************\n");printf("*8.退出系统*\n");printf("********************************************\n");printf("*8.退出系统*\n");printf("**********************\n");printf("\n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case0:help();break;case1:readfile();break;case2:seek();break;case3:modify();break;case4:insert();break;case5:del();break;case6:display();break;case7:save();break;case8:k=0;break;default:printf("请在0-8之间选择\n");))二、学生成绩管理编写一个菜单驱动的学生成绩管理程序。要求如下:能输入并显示n个学生的m门考试科目的成绩、总分和平均分按总分由高到低进行排序。任意输入一个学号,能显示该学生的姓名、各门功课的成绩。#include<>#include<>#include<>#include<>#defineSTU_NUM40/*最多的学生人数*/#defineCOURSE_NUM10/*最多的考试科目*/structstudent
intnumber;charintnumber;charname[10];intscore[COURSE_NUM];intsum;floataverage;};typedefstructstudentSTU;/*函数功能:函数参数:结构体指针整型变量n,整型变量m,函数返回值:无/*每个学生的学号*//*每个学生的姓名*//*每个学生M门功课的成绩*//*每个学生的总成绩*//*每个学生的平均成绩*/向链表的末尾添加从键盘输入学生的学号、姓名和成绩等信息head,指向存储学生信息的结构体数组的首地址表示学生人数表示考试科目*/voidAppendScore(STU*head,intn,intm)j;{j;int
STUP;STUP;for(p=head;p<head+n;p++)(printf("\nInputnumber:");scanf("%d",&p->number);printf("Inputname:");scanf("%s",p->name);for(j=0;j<m;j++)printf("Inputscore%d:",j+1);scanf("%d",p->score+j);}/*函数功能:打印n个学生的学号、姓名和成绩等信息函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址整型变量n,表示学生人数整型变量m,表示考试科目函数返回值:无*/voidPrintScore(STU*head,intn,intm)(STU*p;inti;charstr[100]={'\0'},temp[3];strcat(str,"NumberName");for(i=1;i<=m;i++){strcat(str,"Score");itoa(i,temp,10);strcat(str,temp);strcat(str,"");strcat(str,"sumaverage");printf("%s",str);/*打印表头*/for(p=head;p<head+n;p++)/*打印n个学生的信息*/(printf("\nNo.%3d%8s",p->number,p->name);for(i=0;i<m;i++)(printf("%7d",p->score[i]);)printf("%11d%\n",p->sum,p->average);))/*函数功能:计算每个学生的m门功课的总成绩和平均成绩函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址整型变量n,表示学生人数整型变量m,表示考试科目函数返回值:无*/voidTotalScore(STU*head,intn,intm)(STU*p;inti;for(p=head;p<head+n;p++)(p->sum=0;for(i=0;i<m;i++)(p->sum=p->sum+p->score[i];}p->average=(float)p->sum/m;/*函数功能:用选择法按总成绩由高到低排序函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址整型变量n,表示学生人数函数返回值:无*/voidSortScore(STU*head,intn)(inti,j,k;STUtemp;for(i=0;i<n-1;i++)(k=i;for(j=i;j<n;j++)if((head+j)->sum>(head+k)->sum)k=j;))if(k!=i)(temp=*(head+k);*(head+k)=*(head+i);*(head+i)=temp;)))/*函数功能:查找学生的学号函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址整型变量num表示要查找的学号整型变量n,表示学生人数函数返回值:如果找到学号,则返回它在结构体数组中的位置,否则返回-1*/intSearchNum(STU*head,intnum,intn)(inti;for(i=0;i<n;i++)(if((head+i)->number==num)returni;}return-1;}/*函数功能:按学号查找学生成绩并显示查找结果函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址整型变量n,表示学生人数整型变量m,表示考试科目函数返回值:无*/voidSearchScore(STU*head,intn,intm)(intnumber,findNo;printf("PleaseInputthenumberyouwanttosearch:");scanf("%d",&number);findNo=SearchNum(head,number,n);if(findNo==-1)(printf("\nNotfound!\n");}else(PrintScore(head+findNo,1,m);}/*函数功能:显示菜单并获得用户键盘输入的选项函数参数:无函数返回值:用户输入的选项*/charMenu(void)(charch;printf("\nManagementforStudents'scores\n");printf("record\n");printf("record\n");printf("record\n");printf("record\n");printf("\n");printf("PleaseInputyourchoice:");scanf("%c",&ch);/*在%疝■面加一个空格,将存于缓冲区中的回车符读入*/returnch;
main()(charch;intm,n;STUstu[STU_NUM];printf("Inputstudentnumberandcoursenumber(n<40,m<10):");scanf("%d,%d",&n,&m);while(1)*/(*/ch=Menu();/*显示菜单,并读取用户输入switch(ch)(case'1':AppendScore(stu,n,m);/*调用成绩添加模块*/TotalScore(stu,n,m);break;case'2':PrintScore(stu,n,m);/*调用成绩显示模块*/break;case'3':SearchScore(stu,n,m);/*调用按学号查找模块*/break;case'4':SortScore(stu,n);/*调用成绩排序模块*/printf("\nSortedresult'n");PrintScore(stu,n,m);/*显示成绩排序结果*/break;case'0':exit(0);/*退出程序*/printf("Endofprogram!");break;default:printf("Inputerror!");break;学生成绩管理系统#include""#include""#include""intshoudsave=0;/**/intpassword()(charpassword[10];intflag,i=1;do(printf("password?\n");scanf("%s”,password);if(strcmp(password,"123")){flag=0;i++;else{flag=1;break;)}while(i<=3);returnflag;}structstudent{charnum[10];/*学号*/charname[20];charsex[4];intcgrade;intmgrade;integrade;
inttotle;intave;charneartime[10];/*最近更新时间*/);typedefstructnode(structstudentdata;structnode*next;}Node,*Link;voidmenu()(printf("I**********************************************************************printf("**********");printf("\t1登记学生资料\t\t\t\t\t2删除学生资料\n");printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");printf("\t5保存学生资料\t\t\t\t\t6排序学生资料\n");printf("\t9帮助信息\t\t\t\t\t0退出系统\n");printf('I**********************************************************************printf('**\n");)voidprintstart()(printf("-\n");)voidWrong()(printf("\n=====>提示:输入错误!\n");)voidNofind()printf("\n=====>提示:没有找到该学生!\n");)voidprintc()/*本函数用于输出中文*/(printf("学号\t姓名性别英语成绩数学成绩C语言成绩总分平均分\n");)voidprinte(Node*p)/*本函数用于输出英文*/(printf("%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\n",p->,p->,p->,p->,p->,p->,p->,p->;)Node*Locate(Linkl,charfindmess口,charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/(Node*r;if(strcmp(nameornum,"num")==0)/*按学号查询*/r=l->next;while(r!=NULL)(if(strcmp(r->,findmess)==0)returnr;r=r->next;}}elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/(r=l->next;while(r!=NULL)(if(strcmp(r->,findmess)==0)returnr;r=r->next;)return0;)voidAdd(Linkl)/*增加学生*/(Node*p,*r,*s;charnum[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;/*将指针置于最末尾*/while(1)(printf("请你输入学号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0)break;while(s)(if(strcmp(s->,num)==0)(printf("=====>提示:学号为%s'的学生已经存在,若要修改请你选择'4修改’!\n",num);printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;p=(Node*)malloc(sizeof(Node));strcpy(p->,num);printf("请你输入姓名:");scanf("%s",p->;getchar();printf("请你输入性别:");scanf("%s",p->;getchar();printf("请你输入c语言成绩:");scanf("%d”,&p->;getchar();printf("请你输入数学成绩:");scanf("%d",&p->;getcha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 被告拒绝和解协议书
- 门店管理运营协议书
- 出租车司机购车协议书
- 邻居建房占地协议书
- 运输月结合同协议书
- 酒吧公司保密协议书
- 解除房屋转租协议书
- 酒店销售团队协议书
- 黄金现货买卖协议书
- 车载空调安装协议书
- 10kV供配电系统电气运行规程
- 印章交接表(可编辑)
- 火灾事故应急演练桌面推演
- 图书馆藏书出入库管理制度
- 国家开放大学《统计与数据分析基础》形考任务1-5答案
- 2025年中考历史复习试题分类汇编:中国古代史之大题(学生版)
- 乐山大佛完整版本
- 校长在班主任培训会上的讲话范文
- 北京市海淀区2023-2024学年五年级上学期数学期末试卷
- GB/T 19609-2024卷烟用常规分析用吸烟机测定总粒相物和焦油
- 建筑工程一切险保险单
评论
0/150
提交评论