C语言综合应用实例

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

精心整理
C语言综合应用实例
一、学生信息管理系统
#include<stdio.h>/*I/O函数*/
#include<stdlib.h>/*其它说明*/
#include<string.h>/*字符串函数*/
#defineBUFLEN100/*缓冲区最大字符数*/
{
{
menu();
system("pause");
return0;
}
voidhelp()
{
printf("\n0.欢迎使用系统帮助!\n");
printf("\n1.进入系统后,先刷新学生信息,再查询;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n3.增加学生信息后,切记保存按7;\n");
printf("\n4.谢谢您的使用!\n");
}
voidreadfile()/*建立信息*/
{
char*p="student.txt";
FILE*fp;
inti=0;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Openfile%serror!Strikeanykeytoexit!",p); system("pause");
}
{
i++;
i=i;
}
n=i;
}
{
{
flag=0;
switch(item)
{
case1:
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;
case2:
printf("请输入要查询的学生的姓名:\n");
scanf("%s",s1);
{
}
}
}
}
{
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)
{
case1:
printf("请输入新的姓名:\n"); scanf("%s",s2);
strcpy(stu[num].name,s2);break;
}
}
}
voidsort()/*按学号排序*/
{
inti,j,*p,*q,s;
chartemp[10];
for(i=0;i<n-1;i++)
{
{
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);
s=*q;
*p=s;
}
}
}
{
scanf("%d",&m);
do
{
flag=1;
while(flag)
{
flag=0;
printf("请输入第%d个学生的学号:\n",i+1); scanf("%s",stu[i].code);
{
printf("已有该学号,请检查后重新录入!\n");
flag=1;
break;/*如有重复立即退出该层循环,提高判断速度*/ }
}
printf("请输入第%d个学生的姓名:\n",i+1);
scanf("%s",stu[i].name);
printf("请输入第%d个学生的年龄:\n",i+1);
{
i=i;
i++;
}
}
}
{
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;
{
}
}
{
inti;
{
}
}
{
printf("\n\n学生信息管理系统\n\n");
printf("*****************\n\n");
printf("*制作人:*\n\n");
printf("*****************\n\n");
printf("*********************系统功能菜单************************\n"); printf("友情提醒:查询前请先刷新系统!\n");
printf("--------------------------------------------\n");
printf("*********************************************\n");
printf("*0.系统帮助及说明**1.刷新学生信息*\n");
printf("*********************************************\n");
printf("*2.查询学生信息**3.修改学生信息*\n");
printf("*********************************************\n");
printf("*4.增加学生信息**5.按学号删除信息*\n");
printf("*********************************************\n");
printf("*6.显示当前信息**7.保存当前学生信息*\n");
printf("********************************************\n");
printf("*8.退出系统*\n");
printf("**********************\n");
printf("--------------------------------------------\n");
printf("请选择菜单编号:");
{
}
}



#include<stdlib.h>
#defineSTU_NUM 40 /*最多的学生人数*/
#defineCOURSE_NUM 10 /*最多的考试科目*/ structstudent
{
int number; /*每个学生的学号*/
char name[10]; /*每个学生的姓名*/
int score[COURSE_NUM]; /*每个学生M门功课的成绩*/ int sum; /*每个学生的总成绩*/
float average; /*每个学生的平均成绩*/
};
typedefstructstudentSTU;
/*函数功能:向链表的末尾添加从键盘输入学生的学号、姓名和成绩等信息函数参数:结构体指针head,指向存储学生信息的结构体数组的首地址整型变量n,表示学生人数
整型变量m,表示考试科目
函数返回值:无
*/
voidAppendScore(STU*head,intn,intm)
{
int j;
{
}
}
/*
*/
{
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%9.2f\n",p->sum,p->average);
}
}
/*
*/
{
{
}
}
/*
*/
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;
}
}
}
/*
*/
{
{
}
}
/*
*/
{
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;
}
{
{
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"stdio.h"
#include"stdlib.h"
#include"string.h"
{
do
{
i++;
}
else
}
}
{
intcgrade;
intmgrade;
integrade;
inttotle;
intave;
charneartime[10];/*最近更新时间*/
};
typedefstructnode
{
structstudentdata;
structnode*next;
}Node,*Link;
voidmenu()
{
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("\t7统计学生资料\t\t\t\t\t8输出学生资料\n");
*\n");
}
{
}
{
}
{
}
{
}
{
}
Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/
{
Node*r;
if(strcmp(nameornum,"num")==0)/*按学号查询*/
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
returnr;
r=r->next;
}
}
elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/ {
r=l->next;
while(r!=NULL)
{
if(strcmp(r->,findmess)==0)
}
}
}
{
r=l;
{
{
{
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}
p=(Node*)malloc(sizeof(Node));
strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入c语言成绩:");
scanf("%d",&p->data.cgrade);
getchar();
/*
r=p;
}
}
{
{
}
printf("\n=====>1按学号查找\n=====>2按姓名查找\n"); scanf("%d",&sel);
if(sel==1)/*学号*/
{
printf("请你输入要查找的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
elseif(sel==2)/*姓名*/
{
if(p)
{
}
else
}
else
}
{
{
return;
}
printf("\n=====>1按学号删除\n=====>2按姓名删除\n"); scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n"); shoudsave=1;
}
else
}
{
if(p)
{
r=l;
}
else
}
else
}
{
Node*p;
charfindmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以修改!\n"); return;
}
printf("请你输入要修改的学生学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号(原来是%s):",p->data.num);
scanf("%s",p->data.num);
printf("请你输入新姓名(原来是%s):",p->);
scanf("%s",p->);
getchar();
printf("请你输入新性别(原来是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade);
}
else
}
{
if(!p)
{
}
printf("\t\t\t\t显示结果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}
voidTongji(Linkl)/*本函数用于统计分数*/
{
Node*pm,*pe,*pc,*pt,*pa;/*用于指向分数最高的接点*/ Node*r=l->next;
if(!r)
{
printf("\n=====>提示:没有资料可以统计!\n");
return;
}
{
pc=r;
pe=r;
pt=r;
pa=r;
}
}
{
Linkll;
Node*p,*rr,*s;
ll=(Link)malloc(sizeof(Node));/*用于做新的连表*/
ll->next=NULL;
if(l->next==NULL)
{
printf("\n=====>提示:没有资料可以排序!\n");
return;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/ s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL&&rr->next->data.totle>=p->data.totle) rr=rr->next;
if(rr->next==NULL)
else
{
}
}
}
{
{
}
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count); shoudsave=0;
}
fclose(fp);
}
voidmain()
{
r=l;
{
else
}
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp))/*将文件的内容放入接点中*/
{
p->next=NULL;
r->next=p;
r=p;/*将该接点挂入连中*/
count++;
}
}
fclose(fp);/*关闭文件*/
printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count); while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);
if(sel==0)
{
}
}
{
}
}
}。

相关文档
最新文档