C语言课程设计
}}贪吃蛇游戏的代码.
c++课程设计 plc课程设计
void Se(Pointer Head)
#define N 200
#include"graphics.h"
#include"stdlib.h"
#include"dos.h"
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define Esc 0x011b
int i,key;
int score=0;
int speed=50000;
struct Food
{int x;
iswitch(n)nt y;
int yes;
}food;
struct Snake
{int x[N];
int y[N];
int node;
int direction;
int life;
}snake;
void Init(void);
void Close(void);
void Drawk(void);
void GameOver(void);
void GamePlay(void);
void PrScore(void);
void main(void)
{Init();
Drawk();
GamePlay();
Close();
}void Init(void)
{int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardev();
}void Drawk(void)
{setbkcolor(LIGHTGREEN);
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;i<=600;i+=10)
{rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
}for(i=40;i<=450;i+=10)
{rectangle(50,i,59,i+10);
rectangle(601,i,610,i+10);
void GamePlay(void)
{randomize();
food.yes=1;
snake.life=0;
snake.x[0]=100;snake.y[0]=100;
snake.x[1]=110;snake.y[1]=100;
snake.node=2;
PrScore();
while(1)
{while(!kbhit())
{if(food.yes==1)
{food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;
}if(food.yes==0)
{setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}for(i=snake.node-1;i>0;i--)
{snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}switch(snake.direction)
{case 1:snake.x[0]+=10;break;
case 2:snake.x[0]-=10;break;
case 3:snake.y[0]-=10;break;
case 4:snake.y[0]+=10;break;
}for(i=3;i {if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]) {GamePlay(); snake.life=1; break; if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455) {GamePlay(); snake.life=1; }if(snake.life==1) break; if(snake.x[0]==food.x&&snake.y[0]==food.y) {setcolor(0); rectangle(food.x,food.y,food.x+10,food.y-10); snake.x[snake.node]=-20; snake.y[snake.node]=-20; snake.node++; food.yes=1; score+=10; PrScore(); }setcolor(4); for(i=0;i rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10); delay(speed); setcolor(0); rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10); }if(snake.life==1) break; key=bioskey(0); if(key==Esc) break; else if(key==UP&&snake.direction!=4) snake.direction=3; else if(key==RIGHT&&snake.direction!=2) else if(key==LEFT&&snake.direction!=1) snake.direction=2; else if(key==DOWN&&snake.direction!=3) snake.direction=4; void GameOver(void) {cleardev(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch(); }void PrScore(void) {char str[10]; setfillstyle(SOLID_LINE,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str); }void Close(void) {getch(); closegraph(); } #include"stdio.h" void scan(int a[][6w3=modify_data(k);],int n) {int i;printf("请输入第%d人成绩:\n",n+1); for(ivoid printf_face();=0;i<4;i++)scanf("%d",&a[n][i]);} void e(int a[][6],int n) {int i; for(i=0;i<4;i++)a[n][4]+=a[n][i]; a[n][5]=a[n][4]/4;} void print(int a[][6],int n) {printf("总分:%d,平均分:%d\n",a[n][4],a[n][5]);} void main() {int i,a[50][6]={0}; for(i=0;i<50;i++)scan(a,i); for(i=0;i<50;i++) {e(a,i);print(a,i);} } 刚为别人做了一个,和你这个很像,不过用的是单项链表方式而不是array. 自己修改下满足你的要求吧 #include #include #include struct StudentCard { int index; //学生号 char name[80]; //姓名 int age; //年龄 char [80]; //性别 int classroom; //班级 char school[80]; //学校 char birthday[80]; //出生年月 struct StudentCard next; //到下一个学生卡,链表 }; typedef struct StudentCard ELEMENT; //自定义符号 typedef ELEMENT LINK; LINK add(LINK head){ //加入一个新的学生信息,该函数将返回一个struct的指针 int index,age,classroom; char name[80],[80],school[80],birthday[80]; printf("Please input index number: "); scanf("%d",&index); printf("Please input name: "); scanf("%s",name); printf("Please input age: "); scanf("%d",&age); printf("Please input (nan or nv): "); scanf("%s",); printf("Please input classroom: "); scanf("%d",&classroom); printf("Please input school: "); scanf("%s",school); printf("Please input birthday :"); scanf("%s",birthday); if (!head){ //如果是头链表为空的情况,也就是输入个学生卡 head=malloc(sizeof(ELEMENT)); head->index=index; head->age=age; head->classroom=classroom; strcpy(head->name,name); strcpy(head->,); strcpy(head->school,school); strcpy(head->birthday,birthday); head->next=NULL; //下一个元素为NULL,空 printf("Successful!\n"); return head; //返回头链 }else{ LINK tail=head;//用一个哨兵指针指向头元素 while ((tail)&&(tail->index!=index)) //在tail为NULL并且tail的index不与用户输入的index相等之前,tail一直跳到下一个元素 tail=tail->next; if (tail) //如果存在这个tail printf("index has already existed! Failed!\n"); else{ tail=head;//再次初始化 while (tail->next) //当哨兵的下一个元素存在时,哨兵跳到哨兵下一个元素 tail=tail->next; //当上面这个循环结束后,此时tail的下一个元素必定为NULL tail->next=malloc(sizeof(ELEMENT));//创建新的元素 tail=tail->next; //跳转到下一个新创建的元素 tail->index=index; tail->age=age; tail->classroom=classroom; strcpy(tail->name,name); strcpy(tail->,); strcpy(tail->school,school); strcpy(tail->birthday,birthday); tail->next=NULL; printf("Successful!\n"); return strcpy(people[a].age,people[a+1].age);head; }void Print_ALL(LINK head){//该函数输出所有学生信息 LINK tail=head; if (!head) //如果头元素为NULL,就是链表无一个元素 printf("Empty List!\n"); else{ printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n"); while (tail){//知道哨兵为NULL之前,一直输出哨兵的内容 printf("%d\t%s\t",tail->index,tail->name); printf("%d\t%s\t%d\t",tail->age,tail->,tail->classroom); printf("%s\t%s\n",tail->school,tail->birthday); tail=tail->next; }; void Print_DEPEND_INDEX(LINK head){ //该函数输出指定的学生号的学生信息 int tem; LINK tail=head; printf("Please input the index number of student: "); scanf("%d",&tem); printf("Empty List!\n"); else{ while ((tail)&&(tail->index!=tem)) tail=tail->next; if (!tail) printf("student not existed!\n"); else{ printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n"); printf("%d\t%s\t",tail->index,tail->name); printf("%d\t%s\t%d\t",tail->age,tail->,tail->classroom); printf("%s\t%s\n",tail->school,tail->birthday); }void Print_DEPEND_CLASS(LINK head){ //该函数输出指定的班级的学生信息 int tem; LINK tail=head; printf("Please input classroom: "); scanf("%d",&tem); printf("Empty List!\n"); else{ while ((tail)&&(tail->classroom!=tem)) tail=tail->next; if (!tail) printf("No such classroom!\n"); else{ printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n"); while (tail){ if (tail->classroom==tem){ printf("%d\t%s\t",tail->index,tail->name); printf("%d\t%s\t%d\t",tail->age,tail->,tail->classroom); printf("%s\t%s\n",tail->school,tail->birthday); }tail=tail->next; void Print_DEPEND_SEX(LINK head){ //该函数输出男或女同学信息 char tem[80]; printf("please input (nan or nv): "); scanf("%s",tem); printf("Empty List!\n"); else{ LINK tail=head; while ((tail)&&(strcmp(tem,tail->)!=0)) //当不相等或者tail有效时,tail跳到下一个元素 tail=tail->next; if (!tail) printf("No %s student!\n",tem); else{ tail=head; printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n"); while (tail){ if (strcmp(tem,tail->)==0){ printf("%d\t%s\t",tail->index,tail->name); printf("%d\t%s\t%d\t",tail->age,tail->,tail->classroom); printf("%s\t%s\n",tail->school,tail->birthday); }tail=tail->next; LINK Edit(LINK head){ //该函数用来修改信息 int tem; LINK tail=head; printf("Please input index of student: "); scanf("%d",&tem); if (!head){ printf("Empty List!\n"); return NULL; }else{ while ((tail)&&(tail->index!=tem)) tail=tail->next; if (!tail){ printf("No such student!\n"); return head; }else{ printf("Please input name: "); scanf("%s",tail->name); printf("Please input age: "); scanf("%d",&tail->age); printf("Please input (nan or nv): "); scanf("%s",tail->); printf("Please input classroom: "); scanf("%d",&tail->classroom); printf("Please input school: "); scanf("%s",tail->school); printf("Please input birthday :"); scanf("%s",tail->birthday); printf("Edit successful!\n"); return head; }LINK DELETE(LINK head){ //该函数用来删除学生信息 int tem; LINK tail=head; printf("Please input index of student: "); scanf("%d",&tem); if (!head){ printf("Empty List!\n"); return NULL; }else if ((head->index==tem)&&(!head->next)){//当头元素满足并且链表只有一个元素 printf("Deleted!\n"); return NULL; }else if ((head->index==tem)&&(head->next)){//当头元素满足并且链表有许多元素 printf("Deleted!\n"); return head->next; }else{ //当满足条件的元素在链表中间或者结尾 while ((tail)&&(tail->index!=tem)) tail=tail->next; if (!tail){ printf("No such student!\n"); return head; }else{ if (!tail->next){//当满足条件的元素在链表结尾 LINK tail2=head;//新的哨兵 while (tail2->next!=tail) tail2->next=NULL; //直接指向为NULL,表示链表尾,跳过tail printf("Deleted!\n"); return head; }else{ //当满足条件的元素在链表中间 LINK tail2=head;//新的哨兵 while (tail2->next!=tail) tail2->next=tail->next; //跳过tail这个元素 printf("Deleted!\n"); return head; void Display_MENU(){ printf("\tstudentcard mament \n"); printf("\t1.Input student's rmations (add a student)\n"); printf("\t2.Print all students' rmations\n"); printf("\t3.Input index number,print selected student's rmation\n"); printf("\t4.Input classroom number,print rmations of those students\n"); printf("\t5.Input index number, modify rmation\n"); printf("\t6.Input index number, remove rmation\n"); printf("\t7.Print nan or nv rmations\n"); printf("\t8.Display Menu\n"); printf("\t9.Exit\n"); printf("\t\n"); }int main(){ LINK head=NULL; //链表头的初始化 int asker; Display_MENU(); while(1){ printf(">>"); scanf("%d",&asker); if (asker==1)//加入新学生信息 head=add(head); else if (asker==2)//输出所有学生信息 Print_ALL(head); else if (asker==3) //输入学生号,输出学生信息 Print_DEPEND_INDEX(head); else if (asker==4) //输入班级,输出学生信息 Print_DEPEND_CLASS(head); else if (asker==5) //输入学生号,修改学生信息 head=Edit(head); else if (asker==6) //输入学生号,删除学生信息 DELETE(head); else if (asker==7) //输入男或女,输出学生信息 Print_DEPEND_SEX(head); else if (asker==8) //显示菜单 Display_MENU(); else if (asker==9) //退出程序,也就是退出while(1)循环 break; else printf("please select correct number!\n"); }printf(" log-out!\n"); return 0; } // 职工信息2.cpp : Defines the entry point for the console application. // #include "StdAfx.h" #include #include #include #include #include #define N 100 struct people {char num[100]; char name[15]; char [20]; char age[20]; char xueli[20]; char gongzhi[20]; char address[20]; char ephone[20]; }people[N]; void input(int i); void enter(); void browse(); void add(); //void no_input(int i,int n) ; void search(); void modify(); void se(int n); int load(); int modify_data(int i); void printf_back(); void printf_one(int i); void menu(); void chack_No(int i); void chack_No(int i) {if(i>0) {for(int k=0;k {if(strcmp(people[k].num,people[i].num)==0) {cout<<"您输入的职工号已存在,请更换号码!"< cout<<"职工号:"; cin>>people[i].num; chack_No(i); break; void input(int i) {//no_input(i,i); printf("职工号:"); scanf("%s",people[i].num); chack_No(i); printf("姓名:"); scanf("%s", people[i].name) ; printf("性别:"); scanf("%s",people[i].); printf("年龄:"); scanf("%s",people[i].age); printf("学历:"); scanf("%s",people[i].xueli); printf("工资:"); scanf("%s",people[i].gongzhi); printf("住址:"); scanf("%s",people[i].address); printf("电话:"); scanf("%s",people[i].ephone); }void enter() {int i,n; printf("请输入人数(0-%d) :",N-1); scanf("%d",&n); printf("\n 录入信息\n"); for(i=0;i {printf("\n 请输入第%d个人的信息.",i+1); input(i); }if(i!=0)se(n); prstrcpy(people[a].,people[a+1].);intf_back(); }void browse() {int i,n; n=load(); printf_face(); for(i=0;i {if((i!=0)&&(i%10==0)) {printf("\n\n按任意键继续...."); getch(); puts("\n\n"); }printf_one(i) ; }printf("\t共有%d条记录.\n",n); printf("\n按任意键继续..."); getch(); menu(); }void add() {int i,n,m,k; FILEfp; n=load(); printf("你想添加的人数为(0-%d):",N-1-n); scanf("%d",&m); k=m+n; for(i=n;i {printcase 3:search();break;f("\n输入第%d个人的信息.",i-n+1 ); input(i); }if((fp=fopen("Pro.txt","ab"))==NULL) {printf("文件打开失败!\n"); }for(i=n;i if(fwrite(&people[i],sizeof(struct people),1,fp)!=1) printf("文件写入失败!\n"); fclose(fp); printf_back(); }void search() {int i,n,k,w1=1,w2,w3,w4,m,a; struct people p; n=load(); do {printf("\n选择你要查询的方式 \n\t1).按学历 2).按职工号 [ ]\b\b"); scanf("%d",&m); switch(m) {case 1: do {k=-1; printf("\n\n请输入你要查询的学历:"); scanf("%s",p.xueli); printf_face(); for(i=0;i if(strcmp(p.xueli,people[i].xueli)==0) {k=i; printf_one(k); break; }if(k==-1) {printf("\n\n你输入的学历不存在!"); printf("\n\n你想继续查询吗?\n\t 1).是 2).否 [ ]\b\b"); scanf("%d",&w1); if(w1==2) printf_back(); }}while(k==-1&&w1==1); break; case 2: do {k=-1; printf("\n\n请输入你要查询的职工号:"); scanf("%s",p.num); printf_face(); for(i=0;i {k=i; printf_one(k);break; }if(k==-1) {printf("\n\n你输入的职工号不存在!"); printf("\n\n你想继续查询吗?\n\t1).是 2).否 [ ]\b\b"); scanf("%d",&w1); if(w1==2) printf_back(); }}while(k==-1&&w1==1); break; }w4=0;w3=0; if(k!=-1) {printf("\n\n请选择你要进行的作:\n\t 1).查询 2).修改 3).删除 4).返回主菜单 [ ]\b\b"); scanf("%d",&w2); switch(w2) {case 2: break; case 3: printf("\n你确定要删除吗?\n\t 1).是 2).否 [ ]\b\b"); scanf("%d",&w4); if(w4==1) for(a=k;a {strcpy(people[a].num,people[a+1].num); strcpy(people[a].name,people[a+1].name); strcpy(people[a].xueli,people[a+1].xueli); strcpy(people[a].gongzhi,people[a+1].gongzhi); strcpy(people[a].address,people[a+1].address); strcpy(people[a].ephone,people[a+1].ephone); }break; }if(w3==1||w4==1) {se(n); printf("\n\n作成功! ^_^ "); printf("\n\n请输入你要进行的作: \n\t 1).继续查询 2).返回上一级 [ ]\b\b" ); scanf("%d",&w2); }while(w2==1); menu(); }void modify() {struct people p; int i,n,k,w0=1,w1,w2=0; n=load(); do {k=-1; printf_face(); for(i=0;i {if((i!=0)&&(i%10==0)) {printf("\n\n请记着你要修改的职工号。按任意键继续 ..."); getch(); puts("\n\n"); }printf_one(i); }do {printf("\n\n请输入你要修改的职工信息的职工号:"); scanf("%s",p.num); for(i=0;i {k=i; p=people[i]; }if(k==-1)printf("\n\n你的输入有误,请从新输入"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k); if(w1==1) {printf("\n作成功! ^_^.\n是否继续修改?\n\n\t 1).是 2).否\t[ ]\b\b"); scanf("%d",&w0); w2=1; }else {w0=0; people[k]=p; }if(w0!=1&&w2==1) se(n); }while(w0==1); menu(); }void se(int n) {FILE fp; int i; if((fp=fopen("Pro.txt","wb"))==NULL) {printf("\n文件打开失败!\n"); //return NULL; }for(i=0;i if(people[i].num!=0) if(fwrite(&people[i],sizeof(struct people),1,fp)!=1) printf("文件写入失败!\n"); fclose(fp); }int load() {FILE fp; int i; if((fp=fopen("Pro.txt","rb"))==NULL) {printf("\n文件打开失败!\n"); return NULL; fread(&people[i],sizeof(struct people),1,fp); fclose(fp); return(i-1); }int modify_data(int i) {int c,w1; do {puts("\n请选择你要修改的选项\n\n 1).职工号 2).姓名 3).性别 4).年龄 5).学历 6)工资 7)住址 8)电话 "); printf("您的选择是:[ ]\b\b"); scanf("%d",&c); if(c>8||c<1) {puts("\n输入错误,请重新输入!"); getchar(); }}while(c>8||c<1); do {switch(c) {case 1:printf("职工号:");scanf("%s",people[i].num);break; case 2:printf("姓名:");scanf("%s",people[i].name);break; case 3:printf("性别:");scanf("%s",people[i].);break; case 4:printf("年龄:");scanf("%s",people[i].age);break; case 5:printf("学历:");scanf("%s",people[i].xueli);break; case 6:printf("工资:");scanf("%s",people[i].gongzhi);break; case 7:printf("住址:");scanf("%s",people[i].address);break; case 8:printf("电话:");scanf("%s",people[i].ephone);break; }puts("\n现在信息:\n"); printf_face(); printf_one(i); printf("\n你确定吗\n\n\t 1).是 2).否 3).返回且不保存 [ ]\b\b"); scanf("%d",&w1); }while(w1==2); return w1; }/ void no_input(int i,int n) {int j,k,w1; do {w1=0; for(j=0;people[i].num[j]!='\0';j++) if(people[i].num[j]>'9') {puts("输入错误,请从新输入!\n"); w1=1;break; }if(w1!=1) for(k=0;k if(k!=i&&strcmp(people[k].num,people[i].num)==0) {puts("你输入的职工号已经存在了,请从新输入!\n"); while(w1==1); }/ void printf_face() {printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 \n"); }void printf_one(int i) {printf("%9s%9s%9s%9s%9s%9s%10s%12s\n",people[i].num,people[i].name,people[i].,people[i].age,people [i].xueli,people[i].gongzhi,people[i].address,people[i].ephone); }void printf_back() {int w; printf("\n\t作成功!.^_^\n\n"); printf("请选择:\n\n\t1).浏览所有信息 \t2).返回 : [ ]\b\b"); scanf("%d",&w); if(w==1) browse(); else menu(); }void menu() {int n,w1; do { ("cls");//清屛 printf("\n\t \n"); printf("\t 欢迎进入职工信息管理系统\n"); printf("\t \n"); printf("\t 1 录入职工信息 \n"); printf("\t 2 修改职工信息 \n"); printf("\t 3 查询职工信息(学历/职工号) \n"); printf("\t 4 浏览信息 \n"); printf("\t 5 添加信息 \n"); printf("\t \n"); printf("\t请选择(1-6):[ ]\b\b"); scanf("%d",&n); if(n<1||n>6) w1=1; else w1=0; }while(w1==1); {case 1:enter();break; case 2:modify();break; case 4:browse();break; case 5:add();break; case 6:exit(0); void main() {("color f0"); ("cls"); menu(); } #include #include #include #include struct record {char id[10]; char name[20]; char phone[20]; char adress[40]; char tcode[10]; char e_mail[30]; }student[500]; int num=0;//外部变量num为文件中的纪录数 void mainmenu();//主菜单 void newrecord();//新添纪录 void searchmenu();//查询菜单 void searchbyid();//按学号查询 void searchbyname();//按姓名查询 void searchbyphone();//按电话查询 void deletemenu();//删除菜单 void deleteall();//删除所有 void deleteone();//删除单个 void showall();//显示所有 void readfromfile();//读取文件 void writetofile();//写入文件 void deletebyid();//按学号删除 void deletebyname();//按姓名删除 void listbyid();//按学号排序 void listbyname();//按姓名排序 void listmenu();//排序菜单 void main() {readfromfile(); while (1) {mainmenu(); void readfromfile()//从文件导入 {if((fp=fopen("student.bin","rb"))==NULL) {printf("\n\t\t通讯录文件不存在"); if ((fp=fopen("student.bin","wb"))==NULL) {printf("\n\t\t建立失败"); exit(0); }else {printf("\n\t\t通讯录文件已建立"); printf("\n\t\t按任意键进入主菜单"); getch(); return; }exit(0); }fseek(fp,0,2); /文件位置指针移动到文件末尾/ if (fl(fp)>0) /文件不为空/ {rewind(fp); /文件位置指针移动到文件开始位置/ for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++); printf("\n\t\t文件导入成功"); printf("\n\t\t按任意键返回主菜单"); getch(); return; }printf("\n\t\t文件导入成功"); printf("\n\t\t通讯录文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; }void mainmenu()//主菜单 {char choic; ("cls"); printf("\n\t\t 主菜单 "); printf("\n\t\t 1-新添纪录 2-查询菜单 "); printf("\n\t\t 3-删除菜单 4-记录排序 "); printf("\n\t\t 5-保存退出 6-不保存退出"); printf("\n\t\t"); printf("\n\t\t请选择:"); choic=getch(); switch (choic) {case '1':newrecord();break; case '2':searchmenu();break; case '3':deletemenu();break; case '4':listmenu();break; case '5':writetofile();break; case '6':exit(0); default:mainmenu(); void searchmenu()//查询菜单 {char choic; ("cls"); printf("\n\t\t 查询菜单 "); printf("\n\t\t 1-显示所有 2-按学号查询 "); printf("\n\t\t 3-按姓名查询4-按电话查询 "); printf("\n\t\t 5-返回主菜单 "); printf("\n\t\t"); printf("\n\t\t请选择:"); choic=getch(); switch (choic) {case '1':showall();break; case '2':searchbyid();break; case '3':searchbyname();break; case '4':searchbyphone();break; case '5':mainmenu();break; void deletemenu()//删除菜单 {char choic; if(num==0) {printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; }("cls"); printf("\n\t\t 删除菜单 "); printf("\n\t\t 1-删除所有 2-删除单个 "); printf("\n\t\t 3-返回主菜单 "); printf("\n\t\t"); printf("\n\t\t请选择:"); choic=getch(); switch (choic) {case '1':deleteall();break; case '2':deleteone();break; case '3':mainmenu();break; default:mainmenu();break; {printf("\n\t\t确认删除?(y/n)"); if (getch()=='y') {fclose(fp); if ((fp=fopen("student.bin","wb"))==NULL) {printf("\n\t\t不能打开文件,删除失败"); readfromfile(); }num=0; printf("\n\t\t纪录已删除,按任意键返回主菜单"); getch(); return; }else return; }void deletebyname()//按姓名删除 {int a=0; int findmark=0; int j; int deletemark=0;}while ((strcmp(tmp.name,student[j].name)<0&&j>=0)); int i; char name[20]; printf("\n\t\t请输入要删除学生姓名:"); scanf("%s",name); for (i=a;i {if (strcmp(student[i].name,name)==NULL) {printf("\n\t\t以下是您要删除的学生纪录:"); findmark++; printf("\n\t\t________________________________"); printf("\n\t\t学号: %s",student[i].id); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\n\t\t________________________________"); printf("\n\t\t是否删除?(y/n)"); if (getch()=='y') {for (j=i;j student[j]=student[j+1]; num--; deletemark++; printf("\n\t\t删除成功"); if((i+1) if (getch()=='y') {a=i; continue; printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y') deletebyname(); return; }if((i+1) if (getch()=='y') {a=i; continue; }else continue; }if ((deletemark==0)&&(findmark==0)) {printf("\n\t\t没有该同学的纪录"); printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y') deletebyid(); return; return; }else if (findmark!=0) {printf("\n\t\t没有重名信息"); printf("\n\t\t没有该同学的纪录"); printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y') deletebyid(); return; return; void deletebyid()//按学号删除 {int i,j; int deletemark=0; char id[20]; printf("\n\t\t请输入要删除学生学号:"); scanf("%s",id); if(num==0) {printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; }for (i=0;i {if (strcmp(student[i].id,id)==NULL) {printf("\n\t\t以下是您要删除的学生纪录:"); printf("\n\t\t学号: %s",student[i].id); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\n\t\t是否删除?(y/n)"); if (getch()=='y') {for (j=i;j student[j]=student[j+1]; num--; deletemark++; printf("\n\t\t删除成功"); printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y') deletebyid(); return; }else return; }continue; }if (deletemark==0) {printf("\n\t\t没有该同学的纪录"); printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y') deletebyid(); return; void newrecord()//添加纪录 {printf("\n\t\t 请输入学生信息 \n"); printf("\n\t\t输入学号:"); scanf("%s",&student[num].id); printf("\n\t\t输入姓名:"); scanf("%s",&student[num].name); printf("\n\t\t输入电话号码:"); scanf("%s",&student[num].phone); printf("\n\t\t输入地址:"); scanf("%s",&student[num].adress); printf("\n\t\t输入邮编:"); scanf("%s",&student[num].tcode); printf("\n\t\t输入e-mail:"); scanf("%s",&student[num].e_mail); num++; printf("\n\t\t是否继续添加?(Y/N):"); if (getch()=='y') newrecord(); return; }void showall()//显示所有 {int i; ("cls"); if(num!=0) {printf("\n\t\t 以下为通讯录所有信息"); for (i=0;i {printf("\n\t\t学号: %s",student[i].id); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\t邮编: %s",student[i].tcode); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\t\t"); if (i+1 {printf("\n\t\t__________________________"); ("pause"); printf("\n\t\t"); }else printf("\n\t\t通讯录中无任何纪录"); printf("\n\t\t按任意键返回主菜单:"); getch(); return; }//按电话查询 void searchbyphone() {int mark=0; int i; printf("\n\t\t 按电话查找 "); char phone[10]; printf("\n\t\t请输入学号:"); scanf("%s",phone); for(i=0;i {if (strcmp(student[i].phone,phone)==0) {printf("\n\t\t 以下是您查找的学生信息 "); printf("\n\t\t学号: %s",student[i].id); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\n\t\t"); printf("\n\t\t按任意键返回主菜单:"); mark++; getch(); return; if (mark==0) {printf("\n\t\t没有改学生的信息"); printf("\n\t\t按任意键返回主菜单"); getch(); return; void searchbyname()//按姓名查询 {int mark=0; int i; printf("\n\t\t 按姓名查找 "); char name[20]; printf("\n\t\t请输入姓名:"); scanf("%s",name); for(i=a;i {if (strcmp(student[i].name,name)==0) {printf("\n\t\t 以下是您查找的学生信息 "); printf("\n\t\t学号: %s",student[i].id); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\n\t\t"); mark++; if ((i+1) {printf("\n\t\t是否继续查找相同名字的学生信息:(y/n)"); if (getch()=='y') {a=i; continue; }else return; }else {printf("\n\t\t按任意键返回主菜单"); getch(); return; }if(mark!=0) {printf("\n\t\t没有相同姓名的学生纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; }else {printf("\n\t\t没有相同姓名的学生纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; void searchbyid()//按学号查询 {int mark=0; int i; printf("\n\t\t 按学号查找 \n"); char id[10]; printf("\n\t\t请输入学号:"); scanf("%s",id); for(i=0;i {if (strcmp(student[i].id,id)==0) {printf("\n\t\t 以下是您查找的学生信息 "); printf("\n\t\t学号: %s",student[i].id); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\n\t\t"); printf("\n\t\t按任意键返回主菜单:"); mark++; getch(); return; if (mark==0) {printf("\n\t\t没有改学生的信息"); printf("\n\t\t按任意键返回主菜单"); getch(); return; void writetofile()//写入文件 {int i; if ((fp=fopen("student.bin","wb"))==NULL) {printf("\n\t\t文件打开失败"); }for (i=0;i {if (fwrite(&student[i],sizeof(struct record),1,fp)!=1) {printf("\n\t\t写入文件错误!\n"); fclose(fp); printf("\n\t\t通讯录文件已保存"); printf("\n\t\t按任意键退出程序\n\t\t"); exit(0); }void deleteone()//删除单个 {char choic; printf("\n\t\t1-按学号删除 2-按姓名删除"); printf("\n\t\t请选择:"); choic=getch(); switch (choic) {case '1':deletebyid();break; case '2':deletebyname();break; void listbyname()//按姓名排序 {int i,j; for (i=1;i {if(strcmp(student[i].name,student[i-1].name)<0) {tmp=student[i]; j=i-1; do {student[j+1]=student[j]; j--; student[j+1]=tmp; printf("\n\t\t排序成功,是否显示?(y/n)"); if (getch()=='y') showall(); return; }void listbyid()//按学号排序 {int i,j; for (i=1;i {tmp=student[i]; j=i-1; do {student[j+1]=student[j]; j--; }while ((strcmp(tmp.id,student[j].id)<0)&&j>=0); student[j+1]=tmp; printf("\n\t\t排序成功,是否显示?(y/n)"); if (getch()=='y') showall(); return; }void listmenu()//排序菜单 {char choic; if(num==0) {printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单"); getch(); return; }("cls"); printf("\n\t\t 排序菜单 "); printf("\n\t\t 1-按学号排序 2-按姓名排序 "); printf("\n\t\t 3-返回主菜单 "); printf("\n\t\t"); printf("\n\t\t请选择:"); choic=getch(); switch(choic) {case '1':listbyid();break; case '2':listbyname();break; case '3':mainmenu();break; default:mainmenu();break; 这样可以么? / Note:Your cho is C IDE / #include #include #include #include #define N 100 struct student {char num[10]; char name[10]; char [11]; }; / 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分 / void myprint(); void mycreate(); void mydisplay(); void mysearch(); / sch_num与sch_name函数被mysearch调用 / void sch_num(FILE fp); void sch_name(FILE fp); void mymodify(); void myadd(); void mydelete(); / del_num与del_name函数被mydelete调用 / void del_num(FILE fp); void del_name(FILE fp); void mysort(); / sort_num与sort_name函数被mysort调用 / void sort_name(); void main() {char choose,yes_no; do {myprint(); / 显示主菜单 / printf(" "); choose=getch(); switch(choose) {case '1': mycreate(); break; / 创建 / case '2': mydisplay(); break; / 显示 / case '3': mysearch(); break; / 查询 / case '5': myadd(); break; / 添加 / case '6': mydelete(); break; / 删除 / case '7': mysort(); break; / 排序 / case '0': break; default:printf("\n %c为非法选项!\n",choose); }if(choose=='0') break; printf("\n 要继续选择吗(Y/N)?\n"); do {yes_no=getch(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no!='Y'||yes_no!='y'); }void myprint() / 显示菜单界面 / {printf("\n\n\n\n\n\n\n\n"); printf(" |----------------------------|\n"); printf(" | 请输入选项编号(0-7): |\n"); printf(" |----------------------------|\n"); printf(" | 1--创建信息管理系统 |\n"); printf(" | 2--显示信息管理系统 |\n"); printf(" | 3--查询信息管理系统 |\n"); printf(" | 4--修改信息管理系统 |\n"); printf(" | 5--添加信息管理系统 |\n"); printf(" | 6--删除信息管理系统 |\n"); printf(" | 7--排序信息管理系统 |\n"); printf(" | 0--退出 |\n"); printf(" |----------------------------|\n"); }/ 定义创建信息管理系统的函数 / void mycreate() {int i=1; struct student temp; fp=fopen("d:\\lbh\\guanli.dat","w"); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }printf("\n 请输入第1个记录:\n"); printf(" 学号(用#结束输入):"); do {gets(temp.num); }while(strcmp(temp.num,"")==0); printf(" 姓名(用#结束输入):"); gets(temp.name); printf(" 电话号码(用#结束输入):"); gets(temp.); while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.[0]!='#') {fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.); i++; printf("\n 请输入第%d个记录:\n",i); printf(" 学号(用#结束输入):"); do {gets(temp.num); }while(strcmp(temp.num,"")==0); printf(" 姓名(用#结束输入):"); gets(temp.name); printf(" 电话号码(用#结束输入):"); gets(temp.); }fclose(fp); }/ 定义显示信息管理系统的函数 / void mydisplay() {int n=0; struct student temp; if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }// clrscr(); printf(" 学号 姓名 电话号码\n"); {fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.); printf("%23s%15s%15s\n",temp.num,temp.name,temp.); n++; }if(n==0) printf("\n 文件中无记录!\n"); else printf("\n 文件有%d个记录!\n",n); fclose(fp); }/ 定义查询信息管理系统的函数 / void mysearch() {char c; if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }printf("\n 按学号查询(h),还是按姓名查询(m)?"); c=getch(); if(c=='h'||c=='H') sch_num(fp); / 按学号查询 / if(c=='m'||c=='M') sch_name(fp); / 按姓名查询 / else printf("\n 非法字符!\n"); fclose(fp); }/ 定义按学号查询信息管理系统的函数 / void sch_num(FILE fp) {int flag=0,n=0; char tempnum[10]; struct student temp; printf("\n 请输入要查询记录的学号:"); gets(tempnum); {fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.); if(strcmp(tempnum,temp.num)==0) {if(flag==0) printf(" 学号 姓名 电话号码\n"); printf("%23s%15s%15s\n",temp.num,temp.name,temp.); flag=1; }n++; }if(n==0) printf("\n 文件中无记录!\n"); else if(flag==0) printf("\n 文件中无此人!\n"); }/ 定义按姓名查询信息管理系统的函数 / void sch_name(FILE fp) {int flag=0,n=0; char tempname[10]; struct student temp; printf("\n 请输入要查询记录的姓名:"); gets(tempname); {fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.); if(strcmp(tempname,temp.name)==0) {if(flag==0) printf(" 学号 姓名 电话号码\n"); printf("%23s%15s%15s\n",temp.num,temp.name,temp.); flag=1; }n++; }if(n==0) printf("\n 文件中无记录!\n"); else if(flag==0) printf("\n 文件中无此人!\n"); }/ 定义修改信息管理系统的函数 / void mymodify() {char c; int n=0; struct student find,temp,record[100],p; / 最多100个记录 / if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }p=record; p++; n++; }fclose(fp); if(n==0) {printf("\n 文件中无记录!\n"); return; gets(temp.num); for(p=record;p if(strcmp(temp.num,p->num)==0) {find=p; / find记住修改记录的位置 / break; }if(p==record+n) {printf("\n 无此人!\n"); return; }do {printf("\n 请输入正确的学号:"); do {gets(temp.num); }while(strcmp(temp.num,"")==0); printf(" 请输入正确的姓名:"); gets(temp.name); printf(" 请输入正确的电话号码:"); gets(temp.); for(p=record;p if((strcmp(temp.num,p->num)==0)&&(p!=find)) {printf("\n 学号重复,要重新输入吗(Y/N)?"); do {c=getch(); }while(c!='Y'&&c!='y'&&c!='N'&&c!='n'); putchar('\n'); break; }if(p==record+n) {find=temp; / find指向需要修改记录的位置 / break; }}while(c=='Y'||c=='y'); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }for(p=record;p fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->); fclose(fp); }/ 定义添加信息管理系统的函数 / void myadd() {char c; int n=0; struct student temp,record[N],p; if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }p=record; p++; n++; }fclose(fp); do {printf("\n 请输入新记录的学号:"); do {gets(temp.num); }while(strcmp(temp.num,"")==0); printf(" 请输入新记录的姓名:"); gets(temp.name); printf(" 请输入新记录的电话号码:"); gets(temp.); for(p=record;p if(strcmp(temp.num,p->num)==0) {printf("\n 学号重复,要重新输入吗(Y/N)?"); do {c=getch(); }while(c!='Y'&&c!='y'&&c!='N'&&c!='n'); putchar('\n'); break; }if(p==record+n) {p=temp; break; }}while(c=='Y'||c=='y'); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }for(p=record;p fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->); fclose(fp); }/ 定义删除信息管理系统的函数 / void mydelete() {char c; if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }printf("\n 按学号删除(h),还是按姓名删除(m)?"); c=getch(); if(c=='h'||c=='H') del_num(fp); / 按学号删除 / if(c=='m'||c=='M') del_name(fp); / 按姓名删 / else printf("\n 非法字符!\n"); fclose(fp); }/ 定义按学号删除信息管理系统的函数 / void del_num(FILE fp) {int n=0; char tempnum[10]; struct student record[N],p,k; p=record; p++; n++; }fclose(fp); printf("\n 请输入要删除记录的学号:"); gets(tempnum); for(k=record;k if(strcmp(tempnum,k->num)==0) break; / 找到要删记录结束循环 / if(k for(p=k;p p=(p+1); else printf("\n 无此人!\n"); fp=fopen("d:\\lbh\\guanli.dat","w"); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }for(p=record;p fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->); }/ 定义按姓名删除信息管理系统的函数 / void del_name(FILE fp) {int n=0; char tempname[10]; struct student record[N],p,k; p=record; p++; n++; }fclose(fp); printf("\n 请输入要删除记录的姓名:"); gets(tempname); for(k=record;k if(strcmp(tempname,k->name)==0) break; / 找到要删记录结束循环 / if(k for(p=k;p p=(p+1); else printf("\n 无此人!\n"); fp=fopen("d:\\lbh\\guanli.dat","w"); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }for(p=record;p fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->); }/ 定义排序信息管理系统的函数 / void mysort() {char c; if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }fclose(fp); printf("\n 按学号排序(h),还是按姓名排序(m)?"); c=getch(); if(c=='h'||c=='H') sort_num(); / 按学号排序 / if(c=='m'||c=='M') sort_name(); / 按姓名排序 / else printf("\n 非法字符!\n"); }/ 定义按学号排序信息管理系统的函数 / void sort_num() {int i,j,k,n=0; char c; struct student record[N],p,temp; fp=fopen("d:\\lbh\\guanli.dat","r"); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }p=record; p++; n++; }fclose(fp); printf("\n 按升序(s),还是按降序(j)?"); c=getch(); if(c=='s'||c=='S') / 按学号的升序排列 / for(i=0;i {k=i; for(j=i+1;j if(strcmp((p+k)->num,(p+j)->num)>0) k=j; temp=(p+k); (p+k)=(p+i); (p+i)=temp; }else if(c=='j'||c=='J') / 按学号的降序排列 / for(i=0;i {k=i; for(j=i+1;j if(strcmp((p+k)->num,(p+j)->num)<0) k=j; temp=(p+k); (p+k)=(p+i); (p+i)=temp; }else {printf("\n 非法字符!\n"); return; }fp=fopen("d:\\lbh\\guanli.dat","w"); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }for(p=record;p {fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->); printf("%23s%15s%15s\n",p->num,p->name,p->); }fclose(fp); }/ 定义按姓名排序信息管理系统的函数 / void sort_name() {int i,j,k,n=0; char c; struct student record[N],p,temp; if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }p=record; p++; n++; }fclose(fp); printf("\n 按升序(s),还是按降序(j)?"); c=getch(); if(c=='s'||c=='S') / 按姓名的升序排列 / for(i=0;i {k=i; for(j=i+1;j if(strcmp((p+k)->name,(p+j)->name)>0) k=j; temp=(p+k); (p+k)=(p+i); (p+i)=temp; }else if(c=='j'||c=='J') / 按姓名的降序排列 / for(i=0;i {k=i; for(j=i+1;j if(strcmp((p+k)->name,(p+j)->name)<0) k=j; temp=(p+k); (p+k)=(p+i); (p+i)=temp; }else {printf("\n 非法字符!\n"); return; }fp=fopen("d:\\lbh\\guanli.dat","w"); if(fp==NULL) {printf("\n 打开文件失败!\n"); return; }for(p=record;p fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->); fclose(fp); } 之前写过的,你可以拿去参考 #include #include #include typedef struct guest {int number; char name[10]; int sum; char time[5]; struct guest next; }GuestLink,Pointer; GuestLink stu[10]; int i,j,k; void Insert(Pointer Head); void Search(Pointer Head); void Update(Pointer Head); void Delete(Pointer Head); void Show(Pointer Head); void Sort(Pointer Head); void Se(Pointer Head); void Put(Pointer Head); int main() {Pointer Head=NULL; int i; do{ printf(" "); printf("1---增加订餐客户信息 "); printf("2---查询订餐客户信息 "); printf("3---修改订餐客户信息 "); printf("4---删除订餐客户信息 "); printf("5---浏览客户订餐信息 "); printf("6---按照用餐时间升序排序 "); printf("7---保存订餐信息到数据文件 "); printf("8---查看数据文件中的订餐信息 "); printf("9---退出 "); printf(" "); printf("请选择1--9:"); scanf("%d",&i); switch(i) {case 1:Insert(&Head); break; case 2:Search(Head); break; break; case 4:Delete(&Head); break; case 5:Show(Head); break; case 6:Sort(Head); break; case 7:Se(Head); break; case 8:Put(Head); break; case 9: break; default:printf("选择错误!请重新选择!"); break; }}while(i!=9); return 0; }void Insert(Pointer Head) {int in_number; Pointer p,q,r; printf("请输入编号: "); scanf("%d",&in_number); p=q=Head; while(p!=NULL) {if(p->number==in_number) {printf("已经有相同编号:"); return; }else {q=p;p=p->next; r=(Pointer)malloc(sizeof(GuestLink));//没有号 r->next=NULL; if(r==NULL) {printf("分配空间失败"); return; }if(q==NULL)//如果是空表,判断空表用q!!!! Head=r; else {q->next=r;} r->number=in_number; printf("请输入姓名: "); scanf("%s",r->name); printf("请输入人数: "); scanf("%d",&r->sum); printf("请输入时间: "); scanf("%s",r->time); }/ void Insert(Pointer Head) {int in_number; Pointer p,q,r; p=q=Head; printf("请输入号码:"); scanf("%d",&in_number); while(p!=NULL) {if(in_number==p->number) {printf("已存在号码!");} else {q=p;p=p->next;} }r=(Pointer)malloc(sizeof GuestLink); r->next=NULL; if(q==NULL) Head=r; else q->next=r; printf("请输入姓名:"); scanf("%s",r->name); printf("请输入人数"); scanf("%f",&r->sum); printf("请输入时间"); scanf("%s",r->time); }/ void Search(Pointer Head) {int flag=1; int number; Pointer p; printf("请输入要查询的编号:"); scanf("%d",&number); p=Headif (!head); while(p!=NULL&&flag) {if(p->number==number) { printf("编号\t姓名\t人数\t时间 "); printf("%s\t",p-void sort_num();>name); printf("%d\t",p->sum); printf("%s\t flag=0; }else p=p->next; }if(flag) printf("没有查询到!"); }/ void Search(Pointer Head) {int flag=0; int number; Pointer p; p=Head; printf("请输入您要查找的编号:"); scanf("%f",&number); while(p!=NULL&&flag) {if(p->number==number) {printf("已查询到您要的编号"); flag=0; }else {p=p->next; if(flag==1) {printf("姓名:%s",p->name); printf("编号:%f",p->number); printf("人数:%f",p->sum); printf("时间:%s",p->time); }else {printf("没有查询到您要查询的编号!");} }/ void Update(Pointer Head) {int flag=1; int number; Pointer p; printf("请输入要修改的编号:"); scanf("%d",&number); p=Head; while(p!=NULL&&flag) {if(p->number==number) {printf("请输入人数:"); scanf("%d",&p->sum); printf("请输入用餐时间:"); scanf("%s",p->time); flag=0; }else p=p->next; }if(flag) printf("没有找到要修改的记录!"); }//update与查询过程相似!!! void Delete(Pointer Head) {int flag=1; int number; Pointer p,q; printf("请输入要删除的数据编号:"); scanf("%d",&number); p=q=Head; while(p!=NULL&&flag) {if(p->number==number) {if(p==Head) {Head=p->next;free(p);//删除结点后要及时释放内存!!! }else {q->next=p->next;free(p);} flag=0; }else {q=p;p=p->next;} }if(flag) printf("没有找到可以删除的数据!!"); }/ void Delete(Pointer Head) {Pointer p,q; p=q=Head; int number; int flag=1; printf("请输入您要删除的结点:"); scanf("%d",&number); while(p!=NULL) {if(p->number==number) { if(p==Head) {Head=p->next;free(p); }else {q->next=p->next;free(p); }flag=0; }else {q=p;p=p->next; if(flag) {printf("没有找到要删除的数据!");} }/ void Show(Pointer Head) {Pointer p; p=Head; printf("编号\t姓名\t人数\t用餐时间 "); while(p!=NULL) {printf("%d\t",p->number); printf("%s\t",p->name); printf("%d\t",p->sum); printf("%s\t p=p->next; void Sort(Pointer Head) {//三个for循环,个赋给结构数组 第二个排序,第三个输出 Pointer p; p=Head; int count=0; GuestLink temp; for(i=0;p!=NULL;i++) {strcpy(stu[i].name,p->name); stu[i].number=p->number; stu[i].sum=p->sum; strcpy(stu[i].time,p->time); count++; p=p->next; }for(i=0;i {k=i; for(j=i+1;j if(strcmp(stu[j].time,stu[k].time)<0)k=j; if(k!=i) {temp=stu[i];stu[i]=stu[k];stu[k]=temp;}//一个字都不能改!!!! //{temp=stu[k];stu[k]=stu[i];stu[i]=temp;} }printf("编号\t姓名\t人数\t用餐时间 "); for(i=0;i {printf("%d\t",stu[i].number); printf("%s\t",stu[i].name); printf("%d\t",stu[i].sum); printf("%s\t ",stu[i].time); /Head=p=stu; while(p!=NULL) {printf("姓名:%-10s",p->name); printf("人数:%-10d",p->sum); printf("用餐时间:%-10s",p->time); printf("编号:%-10d ",p->number); p=p->next; }/ / void Sort(Pointer Head) {Pointer p; p=Head; GuestLink temp; count=0; while(p!=NULL) {p=p->next; count++; }p=Head; while(p!=NULL) {for(i=0;i {stu[i].number=p->number; strcpy(stu[i].name,p->name); stu[i].sum=p->sum; strcpy(stu[i].time,p->time); }p=p->next; }for(i=0;i {k=i; for(j=0;j {if(strcmp(stu[j].time,stu[k].time)<0)k=j; if(k!=i) {temp=stu[k];stu[k]=stu[i];temp=stu[i];} }/ {Pointer p; p=Head; for(i=0;p!=NULL;i++) {strcpy(p->name,stu[i].name); p->number=stu[i].number; p->sum=stu[i].sum; strcpy(p->time,stu[i].time); p=p->next; }if((fp=fopen("stud","w"))==NULL) {printf("can't open !");} p=Head; while(p!=NULL) {if(fwrite(p,sizeof(GuestLink),1,fp)!=1) printf("can't write! "); p=p->next; }fclose(fp); }/ {FILE fp; Pointer p; p=Head; for(i=0;p!=NULL;i++) {stu[i].number=p->number; strcpy(stu[i].name,p->name); stu[i].sum=p->sum; strcpy(stu[i].time,p->time); p=p->next; }p=Head; if((fp=fopen("stud","w"))==NULL) {printf("cam't open the file"); }for(i=0;i if(fwrite(p,sizeof(GuestLink),1,fp)!=1) {printf("cant write"); }fclose(fp); }/ void Put(Pointer Head) {FILE fp; Pointer p; p=Head; if((fp=fopen("stud","r"))==NULL) {printf("can't open the File ");} printf("编号\t姓名\t人数\t用餐时间 "); while(p!=NULL) {if(fread(p,sizeof(GuestLink),1,fp)!=1) {printf("can't read!");} printf("%d\t",p->number); printf("%s\t",p->name); printf("%d\t",p->sum); printf("%s\t p=p->next; }fclose(fp); }采纳哦~ 给你代码,你自己去研究吧 #include #define SIZE 10 typedef struct student {int num; char name[20]; int score[3]; float erage; }student; void indata(student stu) {int i; for (i = 0;case '4': mymodify(); break; / 修改 / i < SIZE; i++) {scanf("%d %s %d %d %d%c", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]); void outdata(student stu) {int i; for (i = 0; i < SIZE; i++) {printf("%d %s %d %d %d %f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].erage); int main() {student stu[SIZE]; int i, j; int t; student temp; printf("请输入信息:\n"); indata(stu); for (i = 0; i < SIZE; i++) //算平均分 {stu[i].erage = 0; for (j = 0; j < 3; j++) stu[i].erage += stu[i].score[j]; stu[i].erage /= 3; }for (i = 0; i < SIZE - 1; i++) //按平均分进行排序 {t = i; for (j = i + 1; j < SIZE; j++) {if (stu[t].erage > stu[j].erage) t = j; }if (t == i) continue; else {temp = stu[i]; stu[i] = stu[t]; stu[t] = temp; printf("排序后信息为:\n"); outdata(stu); return 0; } 发,消,息,给,你了 c语言课程设计 自己编了一个不是太符合要求,算法也很笨,但是勉强可以做出来 楼主可以看看= =注释我也写了 #include void main() {int year,month;//定义年月 int run,num,x,y,i;//辅助变量 int cun[4];//辅助数组,用来存储输入月份及其相邻月份相距1980.1的天数 char c; printf("please input a year number and month number:"); scanf("%d%c%d",&year,&c,&month);//输入请用题目上相同的输入方式 run=(year-1980)/4+1;//计算闰年个数 num=run366+(year-1980-run)365;//计算天数 if((year%4==0||year%400==0)&&year!=1980)//考虑闰年,因为发现1980在这里会多计算一次闰年,所以排除了 switch(month) {case 1:{cun[0]=num-31;cun[1]=num;cun[2]=num+31;cun[3]=num+60;break;} case 2:{cun[0]=num;cun[1]=num+31;cun[2]=num+60;cun[3]=num+;break;} case 3:{cun[0]=num+31;cun[1]=num+60;cun[2]=num+;cun[3]=num+121;break;} case 4:{cun[0]=num+60;cun[1]=num+;cun[2]=num+121;cun[3]=num+152;break;} case 5:{cun[0]=num+;cun[1]=num+121;cun[2]=num+152;cun[3]=num+182;break;} case 6:{cun[0]=num+121;cun[1]=num+152;cun[2]=num+182;cun[3]=num+213;break;} case 7:{cun[0]=num+152;cun[1]=num+182;cun[2]=num+213;cun[3]=num+244;break;} case 8:{cun[0]=num+182;cun[1]=num+213;cun[2]=num+244;cun[3]=num+274;break;} case 9:{cun[0]=num+213;cun[1]=num+244;cun[2]=num+274;cun[3]=num+305;break;} case 10:{cun[0]=num+244;cun[1]=num+274;cun[2]=num+305;cun[3]=num+335;break;} case 11:{cun[0]=num+274;cun[1]=num+305;cun[2]=num+335;cun[3]=num+366;break;} case 12:{cun[0]=num+305;cun[1]=num+335;cun[2]=num+366;cun[3]=num+397;} }else switch(month) {case 1:{cun[0]=num-31;cun[1]=num;cun[2]=num+31;cun[3]=num+59;break;} case 2:{cun[0]=num;cun[1]=num+31;cun[2]=num+59;cun[3]=num+90;break;} case 3:{cun[0]=num+31;cun[1]=num+59;cun[2]=num+90;cun[3]=num+120;break;} case 4:{cun[0]=num+59;cun[1]=num+90;cun[2]=num+120;cun[3]=num+151;break;} case 5:{cun[0]=num+90;cun[1]=num+120;cun[2]=num+151;cun[3]=num+181;break;} case 6:{cun[0]=num+120;cun[1]=num+151;cun[2]=num+181;cun[3]=num+212;break;} case 7:{cun[0]=num+151;cun[1]=num+181;cun[2]=num+212;cun[3]=num+243;break;} case 8:{cun[0]=num+181;cun[1]=num+212;cun[2]=num+243;cun[3]=num+273;break;} case 9:{cun[0]=num+212;cun[1]=num+243;cun[2]=num+273;cun[3]=num+304;break;} case 10:{cun[0]=num+243;cun[1]=num+273;cun[2]=num+304;cun[3]=num+334;break;} case 11:{cun[0]=num+273;cun[1]=num+304;cun[2]=num+334;cun[3]=num+365;break;} case 12:{cun[0]=num+304;cun[1]=num+334;cun[2]=num+365;cun[3]=num+396;} }//输出前一个月 x=month-1; y=year; if(x==0){y=year-1;x=12;} printf("%d.%d\n",y,x);//年月 printf("SU\tMO\tTU\tWE\tTH\tFR\tSA\n"); x=cun[1]-cun[0]; y=(cun[0]-5)%7; for(i=0;i for(i=1;i<=x;i++) {prinvoid deleteall()//删除所有tf("%d\t",i); if((i==7-y)||((i-(7-y))%7==0))printf("\n"); }printf("\n==================================\n"); //输出当月 x=month; y=year; printf("%d.%d\n",y,x);//年月 printf("SU\tMO\tTU\tWE\tTH\tFR\tSA\n"); x=cun[2]-cun[1]; y=(cun[1]-5)%7; for(i=0;i for(i=1;i<=x;i++) {printf("%d\t",i); if((i==7-y)||((i-(7-y))%7==0))printf("\n");//星期换行 }//输出之后的日期 printf("\n==================================\n"); //输出后一个月 x=month+1; y=year; if(x==13){y=year+1;x=1;} printf("%d.%d\n",y,x);//年月 printf("SU\tMO\tTU\tWE\tTH\tFR\tSA\n"); x=cun[3]-cun[2]; y=(cun[2]-5)%7; for(i=0;i for(i=1;i<=x;i++) {printf("%d\t",i); if((i==7-y)||((i-(7-y))%7==0))printf("\n"); }printf("\n==================================\n"); } 这个就行 #include int main() {int a[100][100]; int num=1;//起始数字 int i,j; int n=0;//矩阵行列数 printf("起始数字num="); scanf("%d",&num); printf("请输入行列数n="); scanf("%d",&n); for(i=0; i {int p; a[i][i]=num+i(i+1); p=a[i][i]; for(j=i-1; j>=0; j--)//行排列 {p+=1; a[i][j]=p; }p=a[i][i]; for(j=i-1; j>=0; j--)//列排列 {p-=1; a[j][i]=p; for(i=0; i {for(j=0; j {printf("%5d ",a[i][j]); }pstruct record tmp;rintf("\n"); 满意请采纳。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。C语言输入四名学生的三门考试成绩,及所有学生各科平均成绩
snake.direction=1;c语言课程设计
int a=0;C语言课程设计职工信息管理系统
{fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->);c语言课程设计
printf("\t 6 退出系统 \n");C语言课程设计《学生选课系统》的设计与实现
fp=fopen("d:\\lbh\\guanli.dat","r+");c语言课程设计?
{printf("\n\t\t是否继续删除相同姓名的同学信息?(y/n)");c语言程序课程设计
case 3:Update(Head);C语言课程设计
",p->time);C语言的课程设计
if(strcmp(p.num,people[i].num)==0)