程序设计综合题 C语言

程序设计综合题 C语言,第1张

第一个

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

int shoudsave=0/* */

struct student

{

char num[10]/* 学号 */

char name[20]

char sex[4]

char yuan

int ban

char neartime[10]/* 最近更新时间 */

}

typedef struct node

{

struct student data

struct node *next

}Node,*Link

void menu()

{

printf("********************************************************************************")

printf("\t1登记学生资料\t\t\t\t\t2删除学生资料\n")

printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n")

printf("\t5保存学生资料\t\t\t\t\t0退出系统\n")

printf("********************************************************************************\n")

}

void printstart()

{

printf("-----------------------------------------------------------------------\n")

}

void Wrong()

{

printf("\n=====>提示:输入错误!\n")

}

void Nofind()

{

printf("\n=====>提示:没有找到该学生!\n")

}

void printc() /* 本函数用于输出中文 */

{

printf("学号\t 姓名性别 学院 班级\n")

}

void printe(Node *p)/* 本函数用于输出英文 */

{

printf("%-12s%s\t%s\t%c\t%d\n",p->data.num,p->data.name,p->data.sex,p->data.yuan,p->data.ban)

}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */

{

Node *r

if(strcmp(nameornum,"num")==0) /* 按学号查询 */

{

r=l->next

while(r!=NULL)

{

if(strcmp(r->data.num,findmess)==0)

return r

r=r->next

}

}

else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */

{

r=l->next

while(r!=NULL)

{

if(strcmp(r->data.name,findmess)==0)

return r

r=r->next

}

}

return 0

}

void Add(Link l) /* 增加学生 */

{

Node *p,*r,*s

char num[10]

r=l

s=l->next

while(r->next!=NULL)

r=r->next/* 将指针置于最末尾 */

while(1)

{

printf("请你输入学号(以'0'返回上一级菜单:)")

scanf("%s",num)

if(strcmp(num,"0")==0)

break

while(s)

{

if(strcmp(s->data.num,num)==0)

{

printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num)

printstart()

printc()

printe(s)

printstart()

printf("\n")

return

}

s=s->next

}

p=(Node *)malloc(sizeof(Node))

strcpy(p->data.num,num)

printf("请你输入姓名:")

scanf("%s",p->data.name)

getchar()

printf("请你输入性别:")

scanf("%s",p->data.sex)

getchar()

printf("请你输入学院:")

scanf("%c",&p->data.yuan)

getchar()

printf("请你输入班级:")

scanf("%d",&p->data.ban)

getchar()

/* 信息输入已经完成 */

p->next=NULL

r->next=p

r=p

shoudsave=1 }

}

void Qur(Link l) /* 查询学生 */

{

int sel

char findmess[20]

Node *p

if(!l->next)

{

printf("\n=====>提示:没有资料可以查询!\n")

return

}

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()

}

else if(sel==2) /* 姓名 */

{

printf("请你输入要查找的姓名:")

scanf("%s",findmess)

p=Locate(l,findmess,"name")

if(p)

{

printf("\t\t\t\t查找结果\n")

printstart()

printc()

printe(p)

printstart()

}

else

Nofind()

}

else

Wrong()

}

void Del(Link l) /* 删除 */

{

int sel

Node *p,*r

char findmess[20]

if(!l->next)

{

printf("\n=====>提示:没有资料可以删除!\n")

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

Nofind()

}

else if(sel==2)

{

printf("请你输入要删除的姓名:")

scanf("%s",findmess)

p=Locate(l,findmess,"name")

if(p)

{

r=l

while(r->next!=p)

r=r->next

r->next=p->next

free(p)

printf("\n=====>提示:该学生已经成功删除!\n")

shoudsave=1

}

else

Nofind()

}

else

Wrong()

}

void Modify(Link l)

{

Node *p

char findmess[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->data.name)

scanf("%s",p->data.name)

getchar()

printf("请你输入新性别(原来是%s):",p->data.sex)

scanf("%s",p->data.sex)

printf("请你输入新的学院:",p->data.yuan)

scanf("%c",&p->data.yuan)

getchar()

printf("请你输入新的班级(原来是%d):",p->data.ban)

scanf("%d",&p->data.ban)

getchar()

printf("\n=====>提示:资料修改成功!\n")

shoudsave=1

}

else

Nofind()

}

void Save(Link l)

{

FILE* fp

Node *p

int flag=1,count=0

fp=fopen("c:\\student","wb")

if(fp==NULL)

{

printf("\n=====>提示:重新打开文件时发生错误!\n")

exit(1)

}

p=l->next

while(p)

{

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)

}

void main()

{

Link l/* 连表 */

FILE *fp/* 文件指针 */

int sel

char ch

char jian

int count=0

Node *p,*r

printf("\t\t\t\t学生成绩管理系统\n\t\t\t\t-------建筑电气及智能化0801\n")

l=(Node*)malloc(sizeof(Node))

l->next=NULL

r=l

fp=fopen("C:\\student","rb")

if(fp==NULL)

{

printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n")

scanf("%c",&jian)

if(jian=='y'||jian=='Y')

fp=fopen("C:\\student","wb")

else

exit(0)

}

printf("\n=====>提示:文件已经打开,正在导入记录......\n")

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)

{

if(shoudsave==1)

{ getchar()

printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?\n")

scanf("%c",&ch)

if(ch=='y'||ch=='Y')

Save(l)

}

printf("\n=====>提示:你已经退出系统,再见!\n")

break

}

switch(sel)

{

case 1:Add(l)break/* 增加学生 */

case 2:Del(l)break/* 删除学生 */

case 3:Qur(l)break/* 查询学生 */

case 4:Modify(l)break/* 修改学生 */

case 5:Save(l)break/* 保存学生 */

case 9:printf("\t\t\t==========帮助信息==========\n")break

default: Wrong()getchar()break

}

}

}

第二个:

#include<stdio.h>

//定义结构体

struct student

{

int number

char name[20]

float score1

float score2

float score3

float ave

}

//单个学员录入函数

void input(struct student *st)

{

printf("\n学号: ")

scanf("%d",&st->number)

printf("姓名: ")

fflush(stdin)

gets(st->name)

printf("三门课成绩:\n成绩1: ")

scanf("%f",&st->score1)

printf("成绩2: ")

scanf("%f",&st->score2)

printf("成绩3: ")

scanf("%f",&st->score3)

st->ave=(st->score1+st->score2+st->score3)/3

}

//显示学员信息函数

void display(struct student *st,int n)

{

int i

printf("\n\t学号\t姓名\t平均成绩\n")

for(i=0i<ni++)

{

printf("\t%d\t%s\t%5.2f\n",st->number,st->name,st->ave)

st++

}

}

//排序函数,大到小

void sorting(struct student stu[],int n)

{

struct student temp

int i,j

for(i=0i<n-1i++)

{

for(j=0j<n-i-1j++)

{

if(stu[j].ave<stu[j+1].ave)

{

temp=stu[j]

stu[j]=stu[j+1]

stu[j+1]=temp

}

}

}

}

//插入函数

void insertinfo(struct student stu[], struct student *st1, int n)

{

int i,j

for(i=0i<ni++)

{

if(stu[i].ave<st1->ave)

break

}

for(j=nj>ij--)

stu[j]=stu[j-1]

stu[i]=*st1

}

//删除学员信息函数

void deleteinfo(struct student stu[], int num, int n)

{

int i,j

for(i=0i<ni++)

{

if(stu[i].number==num)

break

}

for(j=ij<nj++)

stu[j]=stu[j+1]

}

void main()

{

struct student stu[50],stu1

char ch

int i=0,num

//通过调用函数录入学员的信息

printf(" 请输入学员信息: \n\n")

do

{

input(&stu[i++])

printf("是否继续(Y/N)? ")

fflush(stdin)

ch=getchar()

}while(ch=='Y'||ch=='y')

//显示学员信息

printf("\n排序前学员的信息如下: \n")

display(stu,i)

//排序函数

sorting(stu,i)

//显示学员信息

printf("\n排序后学员的信息如下: \n")

display(stu,i)

//插入函数

printf("\n是否要插入新学员(Y/N)? ")

fflush(stdin)

ch=getchar()

while(ch=='Y'||ch=='y')

{

printf("\n请输入要插入学员的信息: \n")

input(&stu1)

insertinfo(stu,&stu1,i)

i++

printf("\n是否继续插入新学员(Y/N)? ")

fflush(stdin)

ch=getchar()

}

//显示学员信息

printf("\n插入后学员的信息如下: \n")

display(stu,i)

//删除函数

printf("\n是否要删除某个学员(Y/N)? ")

fflush(stdin)

ch=getchar()

while(ch=='Y'||ch=='y')

{

printf("\n请输入要删除学员的学号: \n")

scanf("%d",&num)

deleteinfo(stu,num,i)

i--

printf("\n是否继续删除某个学员(Y/N)? ")

fflush(stdin)

ch=getchar()

}

//显示学员信息

printf("\n删除后学员的信息如下: \n")

display(stu,i)

}

IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。\x0d\x0a————补充解释————\x0d\x0a也就是说:1)框架本身一般不完整到可以解决特定问题;2)框架天生就是为扩展而设计的;3)框架里面可以为后续扩展的组件提供很多辅助性、支撑性的方便易用的实用工具(utilities),也就是说框架时常配套了一些帮助解决某类问题的库(libraries)或工具(tools)。\x0d\x0a约束性:针对解决特定问题的软件框架会首先定义问题的边界,进而将相关的软件组件约束在这个边界内,保持框架在解决问题方面上的内聚性。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12022389.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存