1. 首页 > 科技 >

c++课程设计 plc课程设计

C语言课程设计

}}

贪吃蛇游戏的代码.

c++课程设计 plc课程设计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();

}

C语言输入四名学生的三门考试成绩,及所有学生各科平均成绩

snake.direction=1;

#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);}

}

c语言课程设计

int a=0;

刚为别人做了一个,和你这个很像,不过用的是单项链表方式而不是array.

{if(strcmp(student[i].id,student[i-1].id)<0)

自己修改下满足你的要求吧

#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;

}

C语言课程设计职工信息管理系统

{fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->);

// 职工信息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();

}

c语言课程设计

printf("\t 6 退出系统 \n");

#include if(w2==1)

#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;

这样可以么?

C语言课程设计《学生选课系统》的设计与实现

fp=fopen("d:\\lbh\\guanli.dat","r+");

/ Note:Your cho is C IDE /

}for(i=0;!feof(fp);i++)

#include }printf("\n 请输入要修改记录的学号:");

#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);

}

c语言课程设计?

{printf("\n\t\t是否继续删除相同姓名的同学信息?(y/n)");

之前写过的,你可以拿去参考

#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);

}采纳哦~

c语言程序课程设计

case 3:Update(Head);

给你代码,你自己去研究吧

tail2=tail2->next;

#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语言课程设计

C语言课程设计

",p->time);

自己编了一个不是太符合要求,算法也很笨,但是勉强可以做出来

FILE fp;

楼主可以看看= =注释我也写了

#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");

}

C语言的课程设计

if(strcmp(p.num,people[i].num)==0)

这个就行

while(feof(fp)==0)

#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 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息