c语言课程设计题目,C语言课程设计
c语言课程设计题目,C语言课程设计详细介绍
本文目录一览: C语言课程设计题目
例:学生管理系统设计 设计内容: 详见视频,要求数据结构用链表,数据存储使用文件。
计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时) A、教师信息处理 (1) 输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。 (2) 插入(修改)教师授课教学信息: (3) 删除教师授课教学信息: (4) 浏览教师授课教学信息: B、教师工作量数据处理: (1) 计算单个教学任务总课时。计算原则如下表:
(2) 计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。 (3)教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 C、教师综合信息输出 提示:输出教师信息到屏幕。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
该系统是一个进行选择题测试的考试系统,具有测试、练习功能,具有系统设置功能,具有查分和帮助功能。 一、功能要求: 1、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案) 2、试题录入:可随时增加试题到试题库中 3、试题抽取:每次从试题库中可以随机抽出N道题及每题的得分K(N、K由键盘输入)。 4、可以设置考试时间。 5、用户可以选择“考试”和“练习”两种方式。 5、答题:用户可实现输入自己的答案,“考试”时系统不能显示答案。“练习”时每一题都可以通过查看“按钮”显示标准答案。可以用“上一题”、“下一题”翻页。选择“交卷”按钮则显示得分; 6、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。 7、考试开始系统显示倒计时。时间为零自动交卷。 二、其它要求: 1、源程序要有适当的注释,使程序容易阅读 2、至少采用文本菜单界面(如果能采用图形菜单界面更好) 3、学生可自动增加新功能模块(视情况可另外加分) 4、写出课程设计报告,具体要求见相关说明文档
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 设计一个简单的英语字典,输入英语单词,显示中文含义,设计要求:
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等)。该学生通信录电话簿管理程序具有加入、删除、显示和查询等功能。 设计要求: 1、 能建立、修改和增删学生通讯录 2、 具有群组工能,可以增加群组和记录。 3、 删除可以删除一条、一个群组、全部记录。 4、 查询包含模糊查询。 5、 显示可以以页面和列表方式显示。 6、 有自动排序的功能。 7、 要求:界面友好,易于操作,采用文件存储数据。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
[设计内容] 实现一个完整的小型音像店对录像带进行管理的系统。 [设计要求] 系统要求具有以下功能: (1) 管理音像店中的所有录像带,包括新录像带入库、录像带出租、录像带的返还、所有录像带清单的显示、根据指定条件进行查找删除录像带等各种基本操作。 (2) 客户数据维护,可以将客户分为不同等级,可以根据指定客户显示其所借录像带详细信息。 (3) 租金管理,根据所借日期自动计算所需交纳的租金。 (4) 系统要求界面美观,菜单设计合理,操作方便。 [实验提示] 音像店有两个主要的组成部分:录像带和客户。可以构造3个链表存储以下数据: (1) 商店中所有录像带的链表; (2) 商店所有客户的链表; (3) 当前已出租的录像带链表;
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
[设计内容] 航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。设计一个航空订票系统实现上述功能。 [设计要求] (1) 将每条航线的有关信息存入计算机,如:终点站名、航班号、飞机号、飞行周日(星期几)、时间、乘员定额、余票量、票价,已定票客户名单和等候替补客户名单(包括姓名,所需票数); (2) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞、最近一天航班的日期和余票量。 (3) 订票:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; (4) 退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他候补客户。 发挥想像,增加新的功能,完善系统。 系统要求界面美观,菜单设计合理,操作方便。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
[设计内容] 某旅馆有n个等级的房间,第I等级有 个房间,每个等级的房间有 个床位(1≤i≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。 [设计要求] (1) 旅客登记,即为旅客分配床位。输入旅客姓名、年龄、性别、到达日期和所需房间等级。分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。 (2) 旅客离开时,即进行床位回收。输入房间等级、房间号和床位号。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。 设计要求: 1、系统以菜单方式工作 2、职工信息录入功能(职工信息用文件保存)--输入 3、职工信息浏览功能--输出 4、职工信息查询功能--算法 查询方式 按学历查询等 按职工号查询等 5、职工信息删除、修改功能(可选项) 6、按工号排序
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 图书信息包括:书号、书名、作者名、分类号、出版社、出版时间、价格等。 设计功能: 1、系统以菜单方式工作 2、图书信息录入功能(图书信息用文件保存)--输入 3、图书信息的编辑功能(插入、删除、修改) 4、图书信息浏览功能(按书号、书名、出版时间、价格等排序输出)。 5、图书信息查询功能(按书号、书名、作者名、出版社查询,提供模糊查询的功能)
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。 设计功能: 1、能够完成对设备的录入和修改 2、对设备进行分类统计 3、设备的破损耗费和遗损处理 4、设备的查询 要求:采用文件方式存储数据,系统以菜单方式工作
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 设计一个学生选修课程系统,假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。 设计功能: 1、系统以菜单方式工作 2、课程信息录入功能(课程信息用文件保存)--输入 3、课程信息的编辑功能(插入、删除、修改) 4、课程信息浏览功能(按课程编号、课程名称、总学时、学分等排序输出)。 5、课程信息查询功能(按课程编号、课程名称、课程性质、开课学期等查询,提供模糊查询的功能) 6、学生选修课程 7、学生选课信息查询
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴1张便条。试设计一个便条管理系统。 设计功能: 1、系统以菜单方式工作 2、便条信息录入功能(便条信息用文件保存)--输入 3、收集到了上个月的所有便条后,读取销售情况 1)计算每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项)
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
设计内容: 设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 设计功能: (1)查看功能:选择此功能时,列出下列三类选择。 A.办公类 B.个人类 C.商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据 一个结点包括:姓名、电话号码、分类(A 办公类 B 个人类 C 商务类)、电子邮件)。 例如: 杨春 13800 商务类 chuny@126.com 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能: 能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能: 选中某个人的姓名时,可对此人的相应数据进行修改 (5)删除功能: 选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。 A、教师信息处理 (1) 输入教师信息 (2) 插入(修改)教师信息: (3) 删除教师信息: (4) 浏览教师信息: 提示:具体功能及操作参考题1。 B、教师数据处理: (1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。 (2) 教师实发工资、应发工资、合计扣款计算。 提示:计算规则如题目。 (3) 教师数据管理 提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件 (4) 教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 (5) 教师综合信息输出 提示:输出教师信息到屏幕。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
C语言课程设计
struct persons
{
char name[16];
char sex[6];
char age[3];
char bir[5];
char phnum[18];
char addr[20];
}persons[100];
/**********************************************************************************/
typedef struct lnode
{
char name[16]; /*姓名*/
char sex[6]; /*性别:以man代表男性,woman代表女性*/
char age[3]; /*年龄*/
char bir[5]; /*生日,其中前两位数字代表月份,后两位数字代表日期*/
char phnum[18]; /*电话*/
char addr[20]; /*地址*/
struct lnode *next;
}listnode,*linklist;
/*********************************************************************************/
linklist head=NULL,r=NULL;
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
int i;
char name1[16],phnum1[18],addr1[20],ch,a,b;
char s1[20];
FILE *fp;
//以上为stuct.h
#include
#include
#include
#include
#include"struct.h"
/************************************************************************/
void creat() /*将文件的信息读入结构体数组,再转存入链表中*/
{
int j;
long k;
fp=fopen("TXL.txt","r+"); /*如果这个文件存在,那么打开这个文件*/
if(fp!=NULL)
{
for(i=1;i<100;i++)
{
j=fgetc(fp);
if(j==EOF)
return;
k=i-1;
fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/
fread(&persons[i],sizeof(struct persons),1,fp);
s=(linklist)malloc(sizeof(listnode)); /*存到链表中*/
strcpy(s->name,persons[i].name);
strcpy(s->sex,persons[i].sex);
strcpy(s->age,persons[i].age);
strcpy(s->bir,persons[i].bir);
strcpy(s->phnum,persons[i].phnum);
strcpy(s->addr,persons[i].addr);
if(head==NULL)
head=s;
else
r->next=s;
r=s;}
}
else
{ fp=fopen("TXL.txt","w+");/*如果这个文件不存在,那么为读写创建一个默认文件TXL.txt*/
i=1;
}
}
/************************************************************************/
void Show()/*显示默认文件里面的所有信息*/
{ p1=head;
if(p1==NULL)
{ printf("\n\n\t\t There is nothing in the addr-book!");
printf("\n\n\t\t Please insert!");
}/*如果文件为空,则给出提示*/
while(p1!=NULL)
{
printf("\n\tName:%s ",p1->name);
printf("Sex:%s ",p1->sex);
printf("Age:%s ",p1->age);
printf("Bir:%s ",p1->bir);
printf("Phnum:%s ",p1->phnum);
printf("Addr:%s\n",p1->addr);
p1=p1->next;
}
}
/*****************************************************************/
void Delete_1() /*定义按姓名删除的函数*/
{
void menu();
printf("\n\n\t\tPlease input the name:");
gets(name1); /*输入要删除人的姓名*/
p4=head;
while(strcmp(name1,p4->name)!=0&&p4!=NULL)
p4=p4->next;
if(p4==NULL)
{
printf("\n\n\t\tIt is not found in the TXL!");
menu();
}/*如果找不到该人,则返回主菜单*/
else
{ printf("\t\tThe information have been deleted is that:");
printf("\n\t\tname:%s ",p4->name);
printf("sex:%s ",p4->sex);
printf("age:%s ",p4->age);
printf("bir:%s ",p4->bir);
printf("phnum:%s ",p4->phnum);
printf("addr:%s\n",p4->addr);
}
p4=head;
if(strcmp(p4->name,name1)==0)
{
p4=p4->next;
head=p4;
}
else
{
while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
}
}
/*****************************************************************/
void Delete_2() /*定义按电话号码删除的函数*/
{
void menu();
printf("\n\n\t\tPlease input the phnum:");
gets(phnum1); /*输入要删除的人的电话号码*/
p6=head;
while(strcmp(phnum1,p6->phnum)!=0&&p6!=NULL)
p6=p6->next;
if(p6==NULL)
{
printf("\n\n\t\tIt is not found in the TXL!");
menu();
}/*如果找不到该电话号码,则返回主菜单*/
else
{ printf("\t\tThe information have been deleted is that:");
printf("\n\t\tname:%s ",p6->name);
printf("sex:%s ",p6->sex);
printf("age:%s ",p6->age);
printf("bir:%s ",p6->bir);
printf("phnum:%s ",p6->phnum);
printf("addr:%s\n",p6->addr);
}
p6=head;
if(strcmp(p6->phnum,phnum1)==0)
{
p6=p6->next;
head=p6;
}
else
{
while(strcmp(p6->next->phnum,phnum1)!=0)
p6=p6->next;
p7=p6->next;
p6->next=p7->next;
free(p7);
}
}
/******************************************************************/
void Delete()/*在Delete()函数中按需要选择用不同的删除方式*/
{
printf("\n\t\tPlease make a choice below:\n");
printf("\t\t1.Delete by name.\n");
printf("\t\t2.Delete by phnum.\n");
printf("\t\tPlease insert your choice:");
a=getche();
switch(a)
{
case '1':Delete_1();
break;
case '2':Delete_2();
break;
default:
printf("\n\t\t**********************************\n");
printf("\n\t\t The number should 1-2!!! \n");
printf("\n\t\t**********************************");
break;
}
}
/*****************************************************************/
void Search_1() /*按姓名查找的函数定义*/
{
printf("\n\n\t\tPlease input the name:");
p8=head;
gets(name1); /*输入要查找的人的姓名*/
while(strcmp(name1,p8->name)!=0&&p8!=NULL)
p8=p8->next;
if(p8==NULL)
printf("\n\n\t\tIt is not found in the TXL!");
else
{
printf("\n\t\tname:%s ",p8->name);
printf("sex:%s ",p8->sex);
printf("age:%s ",p8->age);
printf("bir:%s ",p8->bir);
printf("phnum:%s ",p8->phnum);
printf("addr:%s\n",p8->addr);
}
}
/****************************************************************/
void Search_2()/*按电话号码查找的函数定义*/
{
printf("\n\n\t\tPlease input the phnum:");
p9=head;
gets(phnum1);/*输入要查找的人的电话号码*/
while(strcmp(phnum1,p9->phnum)!=0&&p9!=NULL)
p9=p9->next;
if(p9==NULL)
printf("\n\n\t\tIt is not found in the TXL!");
else
{
printf("\n\t\tname:%s ",p9->name);
printf("sex:%s ",p9->sex);
printf("age:%s ",p9->age);
printf("bir:%s ",p9->bir);
printf("phnum:%s ",p9->phnum);
printf("addr:%s\n",p9->addr);
}
}
/***************************************************************/
void Search_3()/*定义按宿舍(地址)查找的函数*/
{
printf("\n\n\t\tPlease input the addr:");
p0=head;
gets(addr1);/*输入要查到的人的宿舍(地址)*/
while(strcmp(addr1,p0->addr)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
printf("\n\n\t\tIt is not found in the TXL!");
else
{
printf("\n\t\tname:%s ",p0->name);
printf("sex:%s ",p0->sex);
printf("age:%s ",p0->age);
printf("bir:%s ",p0->bir);
printf("phnum:%s ",p0->phnum);
printf("addr:%s\n",p0->addr);
}
}
/*************************************************************************/
void Search()/*在Search中按需要调用不同的查找方式*/
{
printf("\n\t\tPlease make a choice below:\n");
printf("\t\t1.Search by name.\n");
printf("\t\t2.Search by phnum.\n");
printf("\t\t3.Search by addr.\n");
printf("\t\tPlease insert your choice:");
b=getche();
switch(b)
{
case '1':Search_1();
break;
case '2':Search_2();
break;
case '3':Search_3();
break;
default:
printf("\n\t\t**********************************\n");
printf("\n\t\t The number should 1-3!!! \n");
printf("\n\t\t**********************************");
break;
}
}
/************************************************************************/
void Insert() /*向文件插入一组的信息*/
{
s=(linklist)malloc(sizeof(listnode));
printf("\n\t\tPlease insert the someone's information:");
printf("\n\t\tName:");
scanf("%s",s->name);
printf("\t\tSex:");
scanf("%s",s->sex);
printf("\t\tAge:");
scanf("%s",s->age);
printf("\t\tBir:");
scanf("%s",s->bir);
printf("\t\tPhnum:");
scanf("%s",s->phnum);
printf("\t\tAddr:");
scanf("%s",s->addr);
if(head==NULL)
head=s;
else
r->next=s;
r=s;
}
/***********************************************************************/
void Save() /*将信息保存在默认文件里面*/
{ int j;
fp=fopen("TXL.txt","w");
for(p2=head,j=0;p2!=NULL;j++,p2=p2->next)
{
strcpy(persons[j].name,p2->name);
strcpy(persons[j].sex,p2->sex);
strcpy(persons[j].age,p2->age);
strcpy(persons[j].bir,p2->bir);
strcpy(persons[j].phnum,p2->phnum);
strcpy(persons[j].addr,p2->addr);
fwrite(&persons[j],sizeof(struct persons),1,fp);
}
}
/************************************************************************/
void menu ()/*显示主菜单*/
{
do
{
printf("\n\n\n\n\n");
printf("\n\t\t ************************************");
printf("\n\t\t * Please make a choice below: *");
printf("\n\t\t * 1.Show all the information *");
printf("\n\t\t * 2.Delete a piece of information *");
printf("\n\t\t * 3.Search a piece of information *");
printf("\n\t\t * 4.Insert a piece of information *");
printf("\n\t\t * 5.Save and Exit *");
printf("\n\t\t * 6.Exit and Without Save *");
printf("\n\t\t * Input Your Choice: *");
printf("\n\t\t ************************************");
ch=getche();
switch(ch)
{
case '1': Show();
break;
case '2': Delete();
break;
case '3': Search();
break;
case '4': Insert();
break;
case '5': Save();fclose(fp);exit(0);
case '6':fclose(fp);exit(0);
break;
default:
printf("\n\t\t**********************************\n");
printf("\n\t\t The number should 1-6!!! \n");
printf("\n\t\t**********************************");
break;
}
}
while(1);
}
/**********************************************************************/
void main()
{
creat();
menu();
}
字数受限, #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "mem.h" #include "ctype.h" /#include "alloc.h" #define N 3 typedef struct z1
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
STUDENT *init();
STUDENT *create();
STUDENT *delete(STUDENT *h);
void print(STUDENT *h); /* 显示所有记录*/
void search(STUDENT *h); /*查找*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*读入记录*/
void computer(STUDENT *h); /*计算总分和均分*/
STUDENT *insert(STUDENT *h); /*插入记录*/
void append(); /*追加记录*/
void copy(); /*复制文件*/
STUDENT *sort(STUDENT *h); /*排序*/
STUDENT *index(STUDENT *h); /*索引*/
void total(STUDENT *h); /*分类合计*/
int menu_select(); /*菜单函数*/
/******主函数开始*******/
main()
{
int i;
STUDENT *head; /*链表定义头指针*/
head=init(); /*初始化链表*/
clrscr(); /*清屏*/
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{ /*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();break;
case 1:head=create();break;
case 2:head=delete(head);break;
case 3:print(head);break; /*显示全部记录*/
case 4:search(head);break; /*查找记录*/
case 5:save(head);break; /*保存文件*/
case 6:head=load(); break; /*读文件*/
case 7:computer(head);break; /*计算总分和均分*/
case 8:head=insert(head); break; /*插入记录*/
case 9:copy();break; /*复制文件*/
case 10:head=sort(head);break; /*排序*/
case 11:append();break; /*追加记录*/
case 12:head=index(head);break; /*索引*/
case 13:total(head);break; /*分类合计*/
case 14:exit(0); /*如菜单返回值为14程序结束*/
}
}
}
/*菜单函数,返回值为整数*/
menu_select()
{
char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/
" 0. init list", /*初始化*/
" 1. Enter list", /*输入记录*/
" 2. Delete a record from list", /*从表中删除记录*/
" 3. print list ", /*显示单链表中所有记录*/
" 4. Search record on name", /*按照姓名查找记录*/
" 5. Save the file", /*将单链表中记录保存到文件中*/
" 6. Load the file", /*从文件中读入记录*/
" 7. compute the score", /*计算所有学生的总分和均分*/
" 8. insert record to list ", /*插入记录到表中*/
" 9. copy the file to new file", /*复制文件*/
" 10. sort to make new file", /*排序*/
" 11. append record to file", /*追加记录到文件中*/
" 12. index on nomber", /*索引*/
" 13. total on nomber", /*分类合计*/
" 14. Quit"}; /*退出*/
char s[3]; /*以字符形式保存选择号*/
int c,i; /*定义整形变量*/
gotoxy(1,25); /*移动光标*/
printf("press any key enter menu......\n"); /*压任一键进入主菜单*/
getch(); /*输入任一键*/
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
gotoxy(10,2); /*移动光标*/
putch(0xc9); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xcd); /*输出上边框水平线*/
putch(0xbb); /*输出右上角边框 ┓*/
for(i=3;i<20;i++)
{
gotoxy(10,i);putch(0xba); /*输出左垂直线*/
gotoxy(54,i);putch(0xba);
} /*输出右垂直线*/
gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xcd); /*输出下边框水平线*/
putch(0xbc); /*输出右下角边框┛*/
window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr(); /*清屏*/
for(i=0;i<16;i++) /*输出主菜单数组*/
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
gotoxy(10,21); /*移动光标*/
do{
printf("\n Enter you choice(0~14):"); /*在菜单窗口外显示提示信息*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整形数*/
}while(c<0||c>14); /*选择项不在0~14之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
STUDENT *init()
{
return NULL;
}
/*创建链表*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info) /*如果指针info为空*/
{
printf("\nout of memory"); /*输出内存溢出*/
return NULL; /*返回空指针*/
}
inputs("enter no:",info->no,11); /*输入学号并校验*/
if(info->no[0]=='@') break; /*如果学号首字符为@则结束输入*/
inputs("enter name:",info->name,15); /*输入姓名,并进行校验*/
printf("please input %d score \n",N); /*提示开始输入成绩*/
s=0; /*计算每个学生的总分,初值为0*/
for(i=0;i
<n;i++) *n门课程循环n次*
{
do{
printf("score%d:",i+1); /*提示输入第几门课程*/
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i];
}
info->sum=s;
info->average=(float)s/N;
info->order=0;
info->next=h;
h=info; }
return(h); /*返回头指针*/
}
/*输入字符串,并进行长度验证*/
inputs(char *prompt, char *s, int count)
{
char p[255];
do{
printf(prompt); /*显示提示信息*/
scanf("%s",p); if(strlen(p)>count)printf("\n too long! \n"); }while(strlen(p)>count);
strcpy(s,p); }
void print(STUDENT *h)
{
int i=0; /* 统计记录条数*/
STUDENT *p; /*移动指针*/
clrscr(); /*清屏*/
p=h; /*初值为头指针*/
printf("\n\n\n****************************STUDENT********************************\n");
printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],
p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("**********************************end*********************************\n");
}
/*删除记录*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/
char s[11]; /*存放学号*/
clrscr(); /*清屏*/
printf("please deleted no\n"); /*显示提示信息*/
scanf("%s",s); /*输入要删除记录的学号*/
q=p=h; /*给q和p赋初值头指针*/
while(strcmp(p->no,s)&&p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/
{
q=p; /*将p指针值赋给q作为p的前驱指针*/
p=p->next; /*将p指针指向下一条记录*/
}
if(p==NULL) /*如果p为空,说明链表中没有该结点*/
printf("\nlist no %s student\n",s);
else /*p不为空,显示找到的记录信息*/
{
printf("*****************************have found***************************\n");
printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,
p->average,p->order);
printf("********************************end*******************************\n");
getch(); /*压任一键后,开始删除*/
if(p==h) /*如果p==h,说明被删结点是头结点*/
h=p->next; /*修改头指针指向下一条记录*/
else
q->next=p->next; /*不是头指针,将p的后继结点作为q的后继结点*/
free(p); /*释放p所指结点空间*/
printf("\n have deleted No %s student\n",s);
printf("Don't forget save\n");/*提示删除后不要忘记保存文件*/
}
return(h); /*返回头指针*/
}
/*查找记录*/
void search(STUDENT *h)
{
STUDENT *p; char s[15]; clrscr();
printf("please enter name for search\n");
scanf("%s",s); /*输入姓名*/
p=h; /*将头指针赋给p*/
while(strcmp(p->name,s)&&p!=NULL) /*当记录的姓名不是要找的,或指针不为空时*/
p=p->next; /*移动指针,指向下一结点*/
if(p==NULL) /*如果指针为空*/
printf("\nlist no %s student\n",s); /*显示没有该学生*/
else /*显示找到的记录信息*/
{
printf("\n\n*****************************havefound***************************\n");
printf("|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("********************************end*******************************\n");
}
}
/*插入记录*/
STUDENT *insert(STUDENT *h)
{
STUDENT *p,*q,*info; /*p指向插入位置,q是其前驱,info指新插入记录*/
char s[11]; /*保存插入点位置的学号*/
int s1,i;
printf("please enter location before the no\n");
scanf("%s",s); /*输入插入点学号*/
printf("\nplease new record\n"); /*提示输入记录信息*/
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info)
{
printf("\nout of memory"); /*如没有申请到,内存溢出*/
return NULL; /*返回空指针*/
}
inputs("enter no:",info->no,11); /*输入学号*/
inputs("enter name:",info->name,15); /*输入姓名*/
printf("please input %d score \n",N); /*提示输入分数*/
s1=0; /*保存新记录的总分,初值为0*/
for(i=0;i
<n;i++) *n门课程循环n次输入成绩*
{
do{ /*对数据进行验证,保证在0~100之间*/
printf("score%d:",i+1);
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0);
s1=s1+info->score[i]; /*计算总分*/
}
info->sum=s1; /*将总分存入新记录中*/
info->average=(float)s1/N; /*计算均分*/
info->order=0; /*名次赋值0*/
info->next=NULL; /*设后继指针为空*/
p=h; /*将指针赋值给p*/
q=h; /*将指针赋值给q*/
while(strcmp(p->no,s)&&p!=NULL) /*查找插入位置*/
{
q=p; /*保存指针p,作为下一个p的前驱*/
p=p->next; /*将指针p后移*/
}
if(p==NULL) /*如果p指针为空,说明没有指定结点*/
if(p==h) /*同时p等于h,说明链表为空*/
h=info; /*新记录则为头结点*/
else
q->next=info; else
if(p==h) {
info->next=p; h=info; }
else
{
info->next=p; q->next=info;
}
printf("\n ----have inserted %s student----\n",info->name); printf("---Don't forget save---\n"); /*提示存盘*/
return(h); /*返回头指针*/
}
/*保存数据到文件*/
void save(STUDENT *h)
{
FILE *fp; /*定义指向文件的指针*/
STUDENT *p; /* 定义移动指针*/
char outfile[10]; /*保存输出文件名*/
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示文件名格式信息*/
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,如没有则建立*/
{
printf("can not open file\n");
exit(1);
}
printf("\nSaving file......\n"); /*打开文件,提示正在保存*/
p=h; /*移动指针从头指针开始*/
while(p!=NULL) /*如p不为空*/
{
fwrite(p,sizeof(STUDENT),1,fp);/*写入一条记录*/
p=p->next; /*指针后移*/
}
fclose(fp); /*关闭文件*/
printf("-----save success!!-----\n"); /*显示保存成功*/
}
/* 从文件读数据*/
STUDENT *load()
{
STUDENT *p,*q,*h=NULL; /*定义记录指针变量*/
FILE *fp; /* 定义指向文件的指针*/
char infile[10]; /*保存文件名*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/
if((fp=fopen(infile,"rb"))==NULL) /*打开一个二进制文件,为读方式*/
{
printf("can not open file\n"); /*如不能打开,则结束程序*/
exit(1);
}
printf("\n -----Loading file!-----\n");
p=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!p)
{
printf("out of memory!\n"); /*如没有申请到,则内存溢出*/
return h; /*返回空头指针*/
}
h=p; /*申请到空间,将其作为头指针*/
while(!feof(fp)) /*循环读数据直到文件尾结束*/
{
if(1!=fread(p,sizeof(STUDENT),1,fp))
break; /*如果没读到数据,跳出循环*/
p->next=(STUDENT *)malloc(sizeof(STUDENT)); /*为下一个结点申请空间*/
if(!p->next)
{
printf("out of memory!\n"); return h;
}
q=p; p=p->next; }
q->next=NULL; /*最后一个结点的后继指针为空*/
fclose(fp); /*关闭文件*/
printf("---You have success read data from file!!!---\n");
return h; /*返回头指针*/
}
/*追加记录到文件*/
void append()
{
FILE *fp; /*定义指向文件的指针*/
STUDENT *info; /*新记录指针*/
int s1,i;
char infile[10]; /*保存文件名*/
printf("\nplease new record\n");
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info)
{
printf("\nout of memory"); /*没有申请到,内存溢出本函数结束*/
return ;
}
inputs("enter no:",info->no,11); /*调用inputs输入学号*/
inputs("enter name:",info->name,15); /*调用inputs输入姓名*/
printf("please input %d score \n",N); /*提示输入成绩*/
s1=0;
for(i=0;i
<n;i++)
{
do{
printf("score%d:",i+1);
scanf("%d",&info->score[i]); /*输入成绩*/
if(info->score[i]>100||info->score[i]<0)printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0); /*成绩数据验证*/
s1=s1+info->score[i]; /*求总分*/
}
info->sum=s1; /*保存总分*/
info->average=(float)s1/N; /*求均分*/
info->order=0; /*名次初始值为0*/
info->next=NULL; /*将新记录后继指针赋值为空*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/
if((fp=fopen(infile,"ab"))==NULL) /*向二进制文件尾增加数据方式打开文件*/
{
printf("can not open file\n"); /*显示不能打开*/
exit(1); /*退出程序*/
}
printf("\n -----Appending record!-----\n");
if(1!=fwrite(info,sizeof(STUDENT),1,fp)) /*写文件操作*/
{
printf("-----file write error!-----\n");
return; /*返回*/
}
printf("-----append sucess!!----\n");
fclose(fp); /*关闭文件*/
}
/*文件拷贝*/
void copy()
{
char outfile[10],infile[10];
FILE *sfp,*tfp; /*源和目标文件指针*/
STUDENT *p=NULL; /*移动指针*/
clrscr(); /*清屏*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n");
scanf("%s",infile); /*输入源文件名*/
if((sfp=fopen(infile,"rb"))==NULL) /*二进制读方式打开源文件*/
{
printf("can not open input file\n");
exit(0);
}
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示输入目标文件名*/
scanf("%s",outfile); /*输入目标文件名*/
if((tfp=fopen(outfile,"wb"))==NULL) /*二进制写方式打开目标文件*/
{
printf("can not open output file \n");
exit(0);
}
while(!feof(sfp)) /*读文件直到文件尾*/
{
if(1!=fread(p,sizeof(STUDENT),1,sfp))
break; /*块读*/
fwrite(p,sizeof(STUDENT),1,tfp); /*块写*/
}
fclose(sfp); /*关闭源文件*/
fclose(tfp); /*关闭目标文件*/
printf("you have success copy file!!!\n"); /*显示成功拷贝*/
}
/*排序*/
STUDENT *sort(STUDENT *h)
{
int i=0; /*保存名次*/
STUDENT *p,*q,*t,*h1; /*定义临时指针*/
h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/
h->next=NULL; /*第一个结点为新表的头结点*/
while(h1!=NULL) /*当原表不为空时,进行排序*/
{
t=h1; /*取原表的头结点*/
h1=h1->next; /*原表头结点指针后移*/
p=h; /*设定移动指针p,从头指针开始*/
q=h; /*设定移动指针q做为p的前驱,初值为头指针*/
while(t->sum
sum&&p!=NULL) /*作总分比较*/
{
q=p; /*待排序点值小,则新表指针后移*/
p=p->next;
}
if(p==q) /*p==q,说明待排序点值大,应排在首位*/
{
t->next=p; /*待排序点的后继为p*/
h=t; /*新头结点为待排序点*/
}
else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/
{
t->next=p; /*t的后继是p*/
q->next=t; /*q的后继是t*/
}
}
p=h; /*已排好序的头指针赋给p,准备填写名次*/
while(p!=NULL) /*当p不为空时,进行下列操作*/
{
i++; /*结点序号*/
p->order=i; /*将名次赋值*/
p=p->next; /*指针后移*/
}
printf("sort sucess!!!\n"); /*排序成功*/
return h; /*返回头指针*/
}
/*计算总分和均值*/
void computer(STUDENT *h)
{
STUDENT *p; /*定义移动指针*/
int i=0; /*保存记录条数初值为0*/
long s=0; /*总分初值为0*/
float average=0; /*均分初值为0*/
p=h; /*从头指针开始*/
while(p!=NULL) /*当p不为空时处理*/
{
s+=p->sum; /*累加总分*/
i++; /*统计记录条数*/
p=p->next; /*指针后移*/
}
average=(float)s/i;/* 求均分,均分为浮点数,总分为整数,所以做类型转换*/
printf("\n--All students sum score is:%ld average is %5.2f\n",s,average);
}
/*索引*/
STUDENT *index(STUDENT *h)
{
STUDENT *p,*q,*t,*h1; /*定义临时指针*/
h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/
h->next=NULL; /*第一个结点为新表的头结点*/
while(h1!=NULL) /*当原表不为空时,进行排序*/
{
t=h1; /*取原表的头结点*/
h1=h1->next; /*原表头结点指针后移*/
p=h; /*设定移动指针p,从头指针开始*/
q=h; /*设定移动指针q做为p的前驱,初值为头指针*/
while(strcmp(t->no,p->no)>0&&p!=NULL) /*作学号比较*/
{
q=p; p=p->next;
}
if(p==q) /*p==q, {
t->next=p; h=t; }
else {
t->next=p; /*t的后继是p*/
q->next=t; /*q的后继是t*/
}
}
printf("index sucess!!!\n"); /*索引排序成功*/
return h; /*返回头指针*/
}
/*分类合计*/
void total(STUDENT *h)
{
STUDENT *p,*q; /*定义临时指针变量*/
char sno[9],qno[9],*ptr; /*保存班级号的*/
float s1,ave; /*保存总分和均分*/
int i; clrscr(); /*清屏*/
printf("\n\n *******************Total*****************\n");
printf("---class---------sum--------------average----\n");
p=h; while(p!=NULL)
{
memcpy(sno,p->no,8); /*从学号中取出班级号*/
sno[8]='\0'; /*做字符串结束标记*/
q=p->next; /*将指针指向待比较的记录*/
s1=p->sum; /*当前班级的总分初值为该班级的第一条记录总分*/
ave=p->average; /*当前班级的均分初值为该班级的第一条记录均分*/
i=1; /*统计当前班级人数*/
while(q!=NULL) /*内循环开始*/
{
memcpy(qno,q->no,8); /*读取班级号*/
qno[8]='\0'; /*做字符串结束标记*/
if(strcmp(qno,sno)==0) /*比较班级号*/
{
s1+=q->sum; /*累加总分*/
ave+=q->average; /*累加均分*/
i++; /*累加班级人数*/
q=q->next; /*指针指向下一条记录*/
}
else
break; }
printf("%s %10.2f %5.2f\n",sno,s1,ave/i);
if(q==NULL)
break; else
p=q; }
printf("---------------------------------------------\n");
}
</n;i++)
C语言课程设计
给你一个简单的吧
#include
#include
#include
int main(int argc, char* argv[])
{
int u;
int count=0;
int n;
srand((unsigned)time(NULL));
u=1+rand()%10;
printf("系统产生了一个1~10之间的整数,猜猜它是几?\n");
printf("请输入一个1~10之间的整数:");
for(int i=0;i<10;i++)
{
scanf("%d",&n);
if(n>u)
printf("输入你输入的数大了,再猜:");
count++;
if(n
<u)
printf("输入你输入的数小了,再猜:");
count++;
if(n==u)
{
if(count<=4)
{
printf("恭喜你,猜对了!你真牛");
break;
}
if(count>4&&count<=6)
{
printf("猜对了!只是次数有点多哈哈");
break;
}
if(count>6)
{
printf("笨笨,这么多次才猜对");
break;
}
}
}
return 0;
}
程序如下:
/*
课题:猜数游戏
功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。
*/
#include
#include
#include
void main()
{
int u,n;
int count=0;
clock_t start,finish;
double elapsed_time;
srand((unsigned)time(NULL));
u=1+rand()%10;
printf("系统产生了一个1~10之间的整数,猜猜它是几?\n\n");
start=clock();
printf("请输入一个1~10之间的整数:");
scanf("%d",&n);
while(n!=u)
{
if(n>u)
{
printf("输入你输入的数大了,再猜:");
count++;
}
else if(n
<u)
{
printf("输入你输入的数小了,再猜:");
count++;
}
scanf("%d",&n);
}
finish=clock();
elapsed_time=finish-start;
if(count<=4)printf("恭喜你,猜对了!你真棒!!\n用时%.2f毫秒.\n",elapsed_time);
else if(count>4&&count<=6)printf("猜对了!只是次数有点多哈哈.\n用时%.2f毫秒\n",elapsed_time);
else printf("笨笨,猜这么多次才对!!\n用时%.2f毫秒\n",elapsed_time);
}
运行结果:
系统产生了一个1~10之间的整数,猜猜它是几?
请输入一个1~10之间的整数:8
输入你输入的数大了,再猜:7
输入你输入的数大了,再猜:6
输入你输入的数大了,再猜:5
输入你输入的数大了,再猜:4
输入你输入的数大了,再猜:3
猜对了!只是次数有点多哈哈.
用时9734.00毫秒
Press any key to continue
//我以前的作业
游戏说明
1.开始游戏
1)系统随机产生一位不重复的N位数字。N的大小与等级有关。
初级:N=3 中级:N=4 高级:N=5
2)游戏者输入所猜的不重复数字,并按回车提交。提交的数据
数应与N的大小一致,当数据位数大于N时,只取前N位。
3)系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式。其中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。如:1A3B表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
4)游戏者有限定次数的猜测机会,在规定次数内完成,则游戏成功,否则,游戏失败。其中,猜测次数与等级有关:
初级:10次 中级:9次 高级:8次。
5)按完成游戏所用的时间和次数计算游戏者所得分数,游戏等级越高,猜测所用的次数越少,得分越高!若游戏者得分比系统已经保存的分数的高,将提示要求输入游戏者信息,并且保存在最佳排行之中。
2.等级设置
6)游戏者可以自行设置游戏等级:初级,中级和高级。
3.最佳排行
在最佳排行中,游戏者可以查看当前游戏的最佳排行。
4.游戏说明
在游戏说明中,游戏者可以查看游戏规则。
三.总体设计
本课程设计对模块设计的要求如下:
(1)要求使用多文件方式实现设计;
(2)要求在各个文件内实现结构化设计;
(3)每个模块作为一个单独的C文件,每个文件内的函数如表所示,表中给出了各个函数的功能说明。
(4)宏和数据结构等放在头文件中,并使用条件编译。
(1)文件及函数组成
源文件 函数名或其他成分 功能
record.h
ASK 宏定义
结构声明 结构声明
库函数及函数原型声明
game_ control.c Game_rank 设置游戏等级
Game_explain 输出游戏说明
game_ register.c Tiptop_record 记录最高分
Tiptop_output 输出最佳排行
game.c Game_main 开始游戏中心
Build_number 获取系统随机数字
Game_in_out 获取游戏者数据和输出结果
Time_command 时间控制
Game_result 游戏结果处理输出
record.c main 主函数
Menu_select 选择菜单
manage_menu 处理菜单
(2)函数设计
1.头部文件
文件名称:record.h
功 能:声明函数原型,包含文件及自定义宏和数据结构。
要 求:报告是否能正常打开文件执行操作。
2. 设置游戏等级函数
函数原型:void Game_rank(void)
功 能:可由游戏者自行设置游戏等级
参 数:void
返 回 值:void
要 求:如果游戏者没有进行等级设定,则默认初级进行游戏。
3. 输出游戏说明函数
函数原型:void Game_ explain()
功 能:输出游戏规则说明
参 数:void
返 回 值:void
要 求:说明游戏相应的按键,保证游戏者按照说明。
4. 记录最高分函数:
函数原型:void Tiptop_register(int)
功 能:把从Get_player函数得到的游戏者信息和游戏的积分信息一同保存到指定路径的Tiptop_register.dat文件中
参 数:int S;S为游戏积分
返 回 值:void
要 求:要求把Tiptop1.txt(初级最高分) Tiptop2.txt(中级最高分) Tiptop3.txt(高
级最高分)原来有的信息替换为现在的信息,并且只有积分大于原有信息的第
十名,才会被以替换的方式记录;并且是降序的方式排列的。
5. 输出最佳排行函数:
函数原型:void Tiptop_out()
功 能:输出最佳排行信息
参 数:void
返 回 值:void
要 求:没有信息的时候输出提示,有信息时按降序排列输出全部信息。
6. 开始游戏中心函数
函数原型:void Game_main()
功 能:调用Time_ control 、Build_number等函数,进行游戏的整体控制
参 数:void
返 回 值:void
要 求:注意函数的完整性,保证游戏顺利进行,注意没有设置等级时候,默认C=1!
7. 获取系统随机数字函数
函数原型:int *Build_number()
功 能:系统调用
文件,利用srand((unsigned) time(&)产生1个N位随机数字,供游戏者猜测
参 数:void
返 回 值:int 8=*i:指向产生的随机数字构成的数组的指针
要 求:产生的数字是随机的,并且是不重复的,总共产生N(依据游戏等级而定)位数字,组成数组[初级为3个数字]。
8. 获取游戏者游戏数据和输出游戏进程结果函数
函数原型:void Course_in_out()
功 能:把游戏者猜的数据读入内存,并且分析得出结果,并输出结果
参 数:void
返 回 值:void
要 求:用A或B的代码表示本次的结果,其中A表示数值对位置也对,B表示数值对,但位置错了!每次得到游戏者的猜测数据都要分析得出结果并输出结果,以便游戏者的下一次猜测。
9. 时间控制函数
函数原型:int Time_ control()
功 能:利用
和
文件,得到玩游戏的总时间,计算游戏积分。
参 数:void
返 回 值:int Time:游戏前后的时间差异
要 求:得到的时间是以秒为单位,数据是整型数据。
10. 游戏结果处理输出函数
函数原型:void Game_result(int m )
功 能:计算,得出最后游戏积分
参 数:int m:整个游戏的时间
返 回 值:void
要 求:按照游戏等级,设置不同的游戏积分方式。
11. 主函数:
函数原型:void main()
功 能:调用各个子函数,实现整体程序的运行
参 数:void
返 回 值: void
要 求:控制整个游戏的顺利进行。
12. 选择菜单函数:
函数原型:void Menu_select()
功 能:得到Handle_menu的返回值,由一个switch语句选择开始,等级,最佳排行,游戏说明,结束等菜单操作。
参 数:void
返 回 值:void
要 求:由Handle_menu得到数据可循环得到,直到得到数字5时,选择退出菜单,方可退出游戏,否则一直循环程序!
13. 处理菜单函数:
函数原型:int Handle_menu()
功 能:输出菜单选择提示,并由cin语句实现游戏者的输入,输入选择相应菜单对应的菜单序号,并把相应的值传给Menu_select函数
参 数:void
返 回 值:int n:选择相应菜单的菜单序号
要 求:输入的值不是相应的菜单的序号时返回0值,否则返回游戏者的输入值,以选择相应菜单。
四.程序代码
1. record.h
#include"time.h"
#include
#include
#include
#include
//结构体
#define MAXSIZE 20
typedef long int ElemType; //定义结构体tiptop,存放游戏者的最高分等信息
typedef struct tiptop
{
ElemType data;
char name[MAXSIZE];
char grade[MAXSIZE];
int year;
int month;
int day;
char week[MAXSIZE];
int hour;
int minute;
int second;
}tiptop;
//全局变量
int C; //C为等级设置变量
//函数声明
void Menu_select(); //选择菜单函数
int manage_menu(); //处理菜单函数
void Tiptop_record(int); //记录最高分函数
void Tiptop_output(); //输出最佳排行函数
void Game_rank(); //设置游戏等级函数
void Game_explain(); //输出游戏说明函数
void Game_main(); //开始游戏中心函数
int *Build_number(); //获取系统随机数字函数
void Game_in_out(); //获取游戏数据和输出游戏进程结果函数
int Time_command(); //时间控制函数
void Game_result(int); //游戏结果处理输出函数
2. game_ control.c
#include"record.h"
//**********************
// 设置游戏等级函数
//**********************
void Game_rank()
{
FILE *fp;
printf("\t******************************\n");
printf("\t************1:初级************\n");
printf("\t************2:中级************\n");
printf("\t************3:高级************\n");
printf("\t******************************\n");
printf("\t请选择游戏等级:\t");
loop:
scanf("%d",&C);
if(C<1||C>3)
{
printf("\t输入有误!请重新输入:\t");
goto loop;
}
if((fp=fopen("C.txt","w"))==NULL)
{
printf("打开C.txt文件失败!");
exit(1);
}
fwrite(&C,sizeof(int),1,fp);
fclose(fp);
if(C==1)
printf("\t等级设置为初级!\n");
if(C==2)
printf("\t等级设置为中级!\n");
if(C==3)
printf("\t等级设置为高级!\n");
printf("\n");
}
//****************
//输出游戏说明函数
//****************
void Game_explain()
{
printf("游戏说明:\n");
printf("\t**********************************************************\n");
printf("\t**********************************************************\n");
printf("\t①:游戏开始,系统随机产生一位不重复的N位数字。N的大小与等级\n");
printf("\t有关:\n");
printf("\t初级:N=3\t中级:N=4\t高级:N=5\t\n");
printf("\t②:游戏者输入所猜的不重复数字,并按回车提交。\n");
printf("\t提交的数据位数应与N的大小一致,当数据位数大于N时,只取前N位;\n");
printf("\t③:系统将提交的数与它自动产生的数进行比较,输出结果\n");
printf("\t“*A*B”形式。其中A代表数字正确相应位置也正确,B代\n");
printf("\t表数字正确但位置不正确。如:1A3B表示游戏者有1个数字的位置\n");
printf("\t正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不\n");
printf("\t对,即游戏者已经猜出4位数据,但有3个数据位置不对!\n");
printf("\t④:游戏者有限定次数的猜测机会,在规定次数内完成,\n");
printf("\t则游戏成功。否则,游戏失败。其中,猜测次\n");
printf("\t数与等级有关:\n");
printf("\t初级:10次\t中级:9次\t高级:8次。\t\n");
printf("\t⑤:按完成游戏所用的时间和次数计算游戏者所得分数,\n");
printf("\t游戏等级越高,猜测所用的次数越少,得分越高!\n");
printf("\t若游戏者得分比系统已经保存的分数的高,将提示要求\n");
printf("\t输入游戏者信息,并且保存在最佳排行之中。\n");
printf("\t⑥:游戏者可以自行设置等级!\n");
printf("\t**********************************************************\n");
printf("\t**********************************************************\n");
printf("\n");
}
3. game_ register.c
#include"record.h"
//**************
//记录最高分函数
//**************
void Tiptop_record(int S)
{
FILE *fp;
tiptop n;
char *week[]={"星期天","星期一","星期二","星期三","星期四","星期五",
"星期六"};
time_t timep;
struct tm *t;
printf("\t恭喜您!\n");
printf("\t您获得本游戏的最高分!\n");
//获取名字
printf("\t请输入您的姓名:");
printf("\t");
scanf("%s",n.name);
//获取时间
time(&timep);
t=gmtime(&timep);
t->tm_year=1900+t->tm_year;
t->tm_mon=1+t->tm_mon;
t->tm_hour=8+t->tm_hour;
n.year=t->tm_year;
n.month=t->tm_mon;
n.day=t->tm_mday;
strcpy(n.week,week[t->tm_wday]);
n.hour=t->tm_hour;
n.minute=t->tm_min;
n.second=t->tm_sec;
//获取等级
if(C==1)
strcpy(n.grade,"初级");
if(C==2)
strcpy(n.grade,"中级");
if(C==3)
strcpy(n.grade,"高级");
//获取分数
n.data=S;
if(C==1)
{
if((fp=fopen("tiptop1.txt","w"))==NULL)
{
printf("\t打开tiptop1.txt文件失败!");
exit(1);
}
fwrite(&n,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==2)
{
if((fp=fopen("tiptop2.txt","w"))==NULL)
{
printf("\t打开tiptop2.txt文件失败!");
exit(1);
}
fwrite(&n,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==3)
{
if((fp=fopen("tiptop3.txt","w"))==NULL)
{
printf("\t打开tiptop3.txt文件失败!");
exit(1);
}
fwrite(&n,sizeof(struct tiptop),1,fp);
fclose(fp);
}
}
//****************
//输出最佳排行函数
//****************
void Tiptop_output()
{
int i;
FILE *fp;
tiptop p,q,r;
if((fp=fopen("tiptop1.txt","r"))==NULL)
{
printf("还没有最佳排行!");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop2.txt","r"))==NULL)
{
printf("还没有最佳排行!");
exit(1);
}
fread(&q,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop3.txt","r"))==NULL)
{
printf("还没有最佳排行!");
exit(1);
}
fread(&r,sizeof(struct tiptop),1,fp);
fclose(fp);
if(p.data==0&&q.data==0&&r.data==0)
{
printf("\t暂无最高分信息!");
printf("\n");
printf("\t是否直接进入游戏?刷新最佳排行信息?\n");
printf("\t1:是\t2:否\n");
printf("\t");
i=0;
scanf("%d",&i);
if(i==1)
{
printf("\t请设置游戏等级: \n");
Game_rank();
Game_main();
}
else
Menu_select();
}
else
{
printf("\t最佳排行:\n");
printf("\t等级\t姓名\t分数\t游戏时间\n");
if(p.data!=0)
{
printf("\t%s\t%s\t%d\t",p.grade,p.name,p.data);
printf("%d—%d—%d\t",p.year,p.month,p.day);
printf("%s\t%d:%d:%d\n",p.week,p.hour,p.minute,p.second);
}
if(q.data!=0)
{
printf("\t%s\t%s\t%d\t",q.grade,q.name,q.data);
printf("%d—%d—%d\t",q.year,q.month,q.day);
printf("%s\t%d:%d:%d\n",q.week,q.hour,q.minute,q.second);
}
if(r.data!=0)
{
printf("\t%s\t%s\t%d\t",r.grade,r.name,r.data);
printf("%d—%d—%d\t",r.year,r.month,r.day);
printf("%s\t%d:%d:%d\n",r.week,r.hour,r.minute,r.second);
}
if(p.data==0)
printf("\t初级暂无最高分信息!\n");
if(q.data==0)
printf("\t中级暂无最高分信息!\n");
if(r.data==0)
printf("\t高级暂无最高分信息!\n");
//重置最佳排行榜
if(p.data!=0&&q.data!=0&&r.data!=0)
{
printf("\t是否重置最佳排行?\n");
printf("\t1:是\t2:否\t");
i=0;
scanf("%d",&i);
if(i==1)
{
p.data=0;
q.data=0;
r.data=0;
if((fp=fopen("tiptop1.txt","w"))==NULL)
{
printf("打开tiptop1.txt文件失败!");
exit(1);
}
fwrite(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop2.txt","w"))==NULL)
{
printf("打开tiptop2.txt文件失败!");
exit(1);
}
fwrite(&q,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop3.txt","w"))==NULL)
{
printf("打开tiptop3.txt文件失败!");
exit(1);
}
fwrite(&r,sizeof(struct tiptop),1,fp);
fclose(fp);
}
}
}
}
4.game.c
#include"record.h"
//全局变量
int *c1; //产生的数保存在指针c中
int A,B; // AB均为游戏重要参数
int N; //NUM为需要猜测的数据个数
int TIME; //TIME为猜数字共有的次数
long int S; //S为游戏积分
//****************
//开始游戏中心函数
//****************
void Game_main()
{
FILE *fp;
int time;
if((fp=fopen("C.txt","r"))==NULL)
{
printf("打开C.txt文件失败!");
printf("\n");
exit(1);
}
fread(&C,sizeof(int),1,fp);
N=C+2;
TIME=11-C;
if(C==1)
{
printf("\t游戏等级为:初级!\n");
}
if(C==2)
{
printf("\t游戏等级为:中级!\n");
}
if(C==3)
{
printf("\t游戏等级为:高级!\n");
}
printf("\t需要猜测的数字位数数为:%d,共有%d次猜测机会!",N,TIME);
printf("\n");
time=Time_command();
Game_result(time);
}
//********************
//获取系统随机数字函数
//********************
int *Build_number()
{
int i,j,m;
time_t t;
c1=(int *)malloc(N*sizeof(int));
if(c1==NULL)
{
printf("分配内存错误!\n");
printf("\n");
exit(1);
}
srand((unsigned) time(&t));
for(i=0;i
<n;i++)
{
m=rand()%10; //产生一个数字
if(i==0)
*c1=m;
else
{
for(j=0;j
<i;j++)
{
if(m==*(c1+j)//若原有数据之中已经有了与m相同的数字,则重新产生数字
{
i--;
break;
}
*(c1+i)=m;
}
}
}
printf("\t系统产生的数据为:");
for(i=0;i
<n;i++)
printf("*");
printf("\n");
printf("\t您可以开始游戏! 计时开始...\n");
printf("\t不能有重复的数字!\n");
printf("\t数字中间用空格隔开\n");
return c1;
}
//****************************************
//获取游戏者游戏数据和输出游戏进程结果函数
//****************************************
void Game_in_out()
{
int i,j,m;
int n; //游戏者猜测的数字
int a[5]; //游戏者猜测的数据构成的数组
int c[5];
int *p;
p=Build_number();
for(i=0;i
<n;i++)
{
c[i]=*(p+i);
}
for(m=0;m
<time;m++)
{
if(m==(TIME-1))
{
printf("\t**请注意:**\n");
printf("\t**仅剩下一次机会了!**\n");
printf("\t**努力!加油!**\n");
}
printf("\t请输入第%d次猜测的数字:\t",m+1);
for(j=0;j
<n;j++)
{
scanf("%d",&n);
a[j]=n;
}
A=0;
B=0;
for(i=0;i
<n;i++)
{
if(a[i]==c[i])
A++;
}
for(i=0;i
<n;i++)
{
for(j=0;j
<n;j++)
{
if(a[i]==c[j]&&i!=j)
B++;
}
}
printf("\t您本次猜测的结果为:\t");
printf("%d A %d B",A,B);
printf("\n");
//游戏成功控制退出猜测程序
if(A==N)
{
m=TIME;
}
}
//TIME改变,记录游戏总次数的数据
TIME=i;
free(c1);
}
//************
//时间控制函数
//************
int Time_command()
{
int a; //游戏时间
time_t first, second;
first=time(NULL); //获取系统时间
Game_in_out();
second=time(NULL); //再次获取系统时间
a=(int)difftime(second,first);
return a;
}
//********************
//游戏结果处理输出函数
//********************
void Game_result(int m)
{
FILE *fp;
tiptop p;
time_t t;
int S;
int n;
int i=0;
int minute,second;
if(A!=N)
{
S=0;
printf("\tGame over!\n");
printf("\t您本次游戏的积分为:\t%d",S);
printf("\t继续努力!\n");
printf("\t是否继续游戏?\n");
printf("\t1:是\t\t\t2:否");
printf("\n");
scanf("%d",&i);
if(i==1)
Game_main();
else
Menu_select();
}
else
{
printf("\t恭喜您游戏成功!");
printf("\n");
minute=m/60;
second=m%60;
printf("\t您本次游戏所用时间为:");
printf("%d分钟%d秒\n",minute,second);
printf("\n");
//积分
if(C==1)
{
n=11-TIME;
S=n*n*n*10-m;
}
if(C==2)
{
n=10-TIME;
S=n*n*n*n*10-m;
}
if(C==3)
{
n=9-TIME;
S=n*n*n*n*n*10-m;
}
if(S<10)
{
srand((unsigned) time(&t));
S=rand()%100;
}
printf("\t您本次游戏的积分为:\t%d",S);
printf("\n");
}
//判断是否符合最高分条件
if(C==1)
{
if((fp=fopen("tiptop1.txt","r"))==NULL)
{
printf("打开tiptop1.txt文件失败!");
printf("\n");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==2)
{
if((fp=fopen("tiptop2.txt","r"))==NULL)
{
printf("打开tiptop2.txt文件失败!");
printf("\n");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==3)
{
if((fp=fopen("tiptop3.txt","r"))==NULL)
{
printf("打开tiptop3.txt文件失败!");
printf("\n");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(S>=(p.data))
Tiptop_record(S);
//提示跳转
if(C==1)
{
printf("\t您本次游戏等级是初级,是否要进入中级?\n");
printf("\t1:是\t\t\t2:否");
printf("\n\t");
i=0;
scanf("%d",&i);
if(i==1)
{
C=2;
if((fp=fopen("C.txt","w"))==NULL)
{
printf("打开C.txt文件失败!");
exit(1);
}
fwrite(&C,sizeof(int),1,fp);
fclose(fp);
Game_main();
}
else
Menu_select();
}
if(C==2)
{
printf("\t您本次是中级游戏,是否要进入高级游戏呢?\n");
printf("\t1:是\t\t\t2:否");
printf("\n\t");
i=0;
scanf("%d",&i);
if(i==1)
{
C=3;
if((fp=fopen("C.txt","w"))==NULL)
{
printf("打开C.txt文件失败!");
exit(1);
}
fwrite(&C,sizeof(int),1,fp);
fclose(fp);
Game_main();
}
else
Menu_select();
}
}
5.record.c
#include"record.h"
//******
//主函数
//******
void main()
{
printf("\n");
printf("********************************************\n");
printf("********************************************\n");
printf(" 欢迎进入猜数字游戏 \n");
printf("\n");
printf("\t设计者: \n");
printf("********************************************\n");
printf("********************************************\n");
printf("\n");
Menu_select();
}
//************
//选择菜单函数
//************
void Menu_select()
{
while(1)
{
switch(manage_menu())
{
case 0:
printf("输入有误,请重新输入!\n");
break;
case 1:
Game_main();
break;
case 2:
Game_rank();
break;
case 3:
Tiptop_output();
break;
case 4:
Game_explain();
break;
case 5:
printf("\n");
printf("\n");
printf("*************** ** ** **** ** ** ** ** *** \n");
printf("*************** ** ** ** ** **** ** ** ** ***** \n");
printf(" ** ** ** ** ** ** ** ** ** ** ******* \n");
printf(" ** ** ** ** ** ** ** ** ** ** ******* \n");
printf(" ** *********** ************* ** ** ** **** ***** \n");
printf(" ** *********** ************* ** ** ** **** ***** \n");
printf(" ** ** ** ** ** ** ** ** ** ** ***** \n");
printf(" ** ** ** ** ** ** ** ** ** ** *** \n");
printf(" ** ** ** ** ** ** **** ** ** *** \n");
printf(" ** ** ** ** ** ** ** ** ** *** \n");
printf("\n");
printf("Goodbye!\n");
exit(1);
}
}
}
//************
//处理菜单函数
//************
int manage_menu()
{
int n;
printf("\t**************************\n");
printf("\t**\t1:开始游戏\t**\n");
printf("\t**\t2:等级设置\t**\n");
printf("\t**\t3:最佳排行\t**\n");
printf("\t**\t4:游戏说明\t**\n");
printf("\t**\t5:退出游戏\t**\n");
printf("\t**************************\n");
printf("\t请输入相应序号选择相应菜单:");
printf("\t");
scanf("%d",&n);
printf("\n");
if(n<1||n>5)
n=0;
return n;
}
</n;j++)
</n;i++)
</n;i++)
</n;j++)
</time;m++)
</n;i++)
</n;i++)
</i;j++)
</n;i++)
</u)
</u)
C语言课程设计:计算机设备管理系统(非常着急 恳请各位帮忙 超高悬赏)
这个行不?
#define N 100
#include
#include
#include
/*声明*/
void myprint();
int mycreat(struct shebei_type*p,int n);
void mydisplay(struct shebei_type*p,int n);
void mysearch(struct shebei_type*p,int n);
void mymodify(struct shebei_type*p,int n);
int myadd(struct shebei_type*p,int n);
int mydelete(struct shebei_type*p,int n);
void mysort(struct shebei_type*p,int n);
void sch_num(struct shebei_type*p,int n);
void sch_name(struct shebei_type*p,int n);
void mystatic(struct shebei_type*p,int n);
int loadinfo(struct shebei_type*p,int n);
int saveinfo(struct shebei_type*p,int n);
struct date
{ int year;
int month;
int date;
};
struct shebei_type
{int num;
char name[10];
char kind[10];
int price;
struct date time;
char lab[10];
int amount;
}
/*主程序*/
main()
{char choose,yes_no;
struct shebei_type record[N];
int total=0,flag;
total=loadinfo(record,N);
do
{
myprint();
printf(" 请选择: ");
choose=getche();
switch(choose)
{
case 1: mycreat(record,total);break;
case 2: mydisplay(record,total);break;
case 3: mysearch(record,total);break;
case 4: mymodify(record,total);break;
case 5: myadd(record,total);break;
case 6: mydelete(record,total);break;
case 7: mysort(record,total);break;
case 8: flag=saveinfo(record,total);
if( flag == 1 )
{
printf( "\n保存成功!\n" );
}
else
{
printf( "\n保存失败\n" );
}
break;
case 9:mystatic(record,total);break;
case 0:break;
default:
printf("\n %c为非法选项!\n",choose);
}
if(choose=='0')break;
printf("\n 要继续选择吗(Y/N)?");
do
{
yes_no=getche();
}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}
while(yes_no!='Y'||yes_no!='y');
}
/*界面*/
void myprint();
{
printf("\n");
printf("************************");
printf(" 实验室设备管理系统 ");
printf("***********************");
printf(" 请输入选项编号(0--7) \n");
printf(" 1--创建设备信息 \n");
printf(" 2--显示设备信息 \n");
printf(" 3--查询设备信息 \n");
printf(" 4--修改设备信息 \n");
printf(" 5--添加设备信息 \n");
printf(" 6--删除设备信息 \n");
printf(" 7--排序设备信息 \n");
printf(" 8--保存设备信息 \n");
printf(" 9--统计设备信息 \n");
printf(" 0--退出 \n");
}
/*载入信息*/
int loadinfo(struct shebei_type*p,int n)
{
FILE *fp;
int i,all=0;
char filename[30]="tx1.dat";
fp=fopen(filename, "r");
if ( fp == NULL )
{
return 0;
}
fscanf(fp,"%d\n",&all);
for( i = 0; i < all; i++ )
{
fscanf( fp,"%s%s%f%f%f%f\n",p[i].num ,p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i]kind );
}
fclose(fp);
return all;
}
/*保存信息*/
int saveinfo(struct shebei_type*p,int n)
{
FILE *fp;
int i; int all=0;
char filename[30]="tx1.dat";
fp = fopen ( filename,"w");
if ( fp == NULL)
{
printf( "\n***不能建立或打开文件%s!", filename );
return 0;
}
fprintf( fp, "%d\n", n );
for ( i = 0; i < n; i++ )
{
fprintf( fp, "%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].kind ,p[i].price ,p[i].time ,p[i].lab );
}
fclose(fp);
return 1;
}
/*显示信息*/
void mydisplay(struct shebei_type*p,int n)
{
int i = 0;
printf("\n");
printf("-----------------------------------------------\n");
printf(" 编号 分类 名称 价格 购买时间 所属实验室\n");
while( i < n )
{
printf("%8s%8s%8.2f%8.2f%8.2f\n", p->num , p->kind , p->name , p->price , p->time , p->lab);
p++;
i++;
}
}
/*输入信息*/
int mycreat(struct shebei_type*p,int n)
{
int i;
int m;
printf("\n请输入要输入设备的个数(<%d): ",N);
scanf("%d",&m);
i=0;
while(i
<m)
{
printf("\n");
printf("请输入第%d个记录:\n",i+1);
printf("编号:");
do
{
scanf( "%s",p->num);
}
while(strcmp(p->num,"")==0);
printf("名称:");
scanf( "%s",p->name );
printf("类别:");
scanf( "%f", &p->kind );
printf( "购买时间:" );
scanf( "%f", &p->time );
printf("所属实验室:");
scanf( "%f", &p->lab );
rintf("购买价格:");
scanf( "%f", &p->price );
i++;
p++;
}
return m+n;
}
/*查找*/
void mysearch(struct shebei_type*p,int n)
{
char c;
mydisplay(p,n);
printf("\n按不编号查询(h),还是按名称查询(m)?");
c=getche();
if(c=='h'||c=='H')
sch_num(p,n);
else if(c=='m'||c=='M')
sch_name(p,n);
else
printf("\n非法字符!\n");
}
/*按编号查找*/
void sch_num(struct shebei_type*p,int n)
{
int i,flag=0;
char nm[10];
printf("\n请输入要查设备的编号:");
gets(nm);
for(i=0;i
<n;i++)
if(strcmp(nm,p[i].num)==0)
{
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
printf("%8s%8s%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab , p[i].kind);
flag=1;
}
if(flag==0)
printf("无此设备!\n");
}
/*按名称查询*/
void sch_name(struct shebei_type*p,int n)
{
int i,flag=0;
char nam[10];
printf("\n请输入要查设备的名称:");
gets(nam);
for(i=0;i
<n;i++)
if(strcmp(nam,p[i].name)==0)
{
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
printf("%8s%8s%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind);
flag=1;
}
if(flag==0)
printf("无此设备!\n");
}
/*修改信息*/
void mymodify(struct shebei_type*p,int n)
{
int i;
char nam[10];
mydisplay(p,n);
printf("\n 请输入要修改的名称:");
gets(nam);
for(i=0;i
<n;i++,p++)
{
if(strcmp(nam,p->name)==0)break;
}
if(i==n)
printf("无此设备!\n");
else
{
printf("请输入正确的编号:");
do
{
scanf( "%s",p->num);
}
while(strcmp(p->num,"")==0);
printf("请输入正确的名称:");
scanf( "%s",p->name );
printf("请输入正确的价格:");
scanf( "%f", &p->price );
printf( "请输入正确的购买时间:" );
scanf( "%f", &p->time );
printf("请输入正确的所属实验室:");
scanf( "%f", &p->lab );
printf("请输入正确的类别:");
scanf( "%f", &p->kind );
}
}
/*增加信息*/
int myadd(struct shebei_type*p,int n)
{
int i=0;
char c;
struct shebei_type t,*q;
/*clscr();*/
printf("添加前的记录: \n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
i=0;
q=p;
/*显示原有记录信息*/
while(i
<n)
{
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n", q->num , q->name , q->price , q->time , q->lab , q->kind );
i++;
q++;
}
do
{
printf("请输入新记录的编号: \n");
do
{
scanf( "%s",t.num );
}
while(strcmp(p->num,"")==0);
/*不能为空*/
printf("请输入新记录的名称: ");
scanf( "%s",t.name );
printf("请输入新记录的价格:");
scanf( "%f", &t.price );
printf( "请输入新记录的购买时间:" );
scanf( "%f", &t.time );
printf("请输入新记录的所属实验室:");
scanf( "%f", &t.lab );
printf("请输入新记录的类别:");
scanf( "%f", &t.kind );
for(i=0;i
<n;i++)
if(strcmp(t.num,(p+i)->num)==0)
{
printf("编号重复,要重新输入吗(Y/N)?");
c=getche();
putchar('\n');
break;
}
/*找到最后没有重复*/
if(i==n)
{
*(p+i)=t;
printf("添加后的纪录:\n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n+1;i++)
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
break;
}
}
while(c=='y'||c=='Y');
return n+1;
}
/*删除信息*/
int mydelete(struct shebei_type*p,int n)
{
int i,x;
char c,nm[10],nam[10];
printf("\n删除前的记录: \n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n;i++)
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
printf("按编号删除(h),还是按名称删除(m)?");
c=getche();
if(c=='h'||c=='H')
{
printf("\n请输入要删除记录的编号: ");
gets(nm);
for(x=0;x
<n;x++)
if(strcmp(nm,p[x].num)==0)
{
return n-1;
break;
}
if(x
<n)
{
for
(i=x;i
<n;i++)
{
p[i]=p[i+1];
}
printf("删除后的记录: \n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n-1;i++)
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
}
else
printf("无此设备\n");
}
else
if(c=='m'||c=='M')
{
printf("\n请输入要删除记录的名称: ");
gets(nam);
for(x=0;x
<n;x++)
if(strcmp(nam,p[x].name)==0)
{
return n-1;
break;
}
if(x
<n)
{
for(i=x;i
<n-1;i++)
{
p[i]=p[i+1];
}
printf("删除后的记录: \n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n-1;i++)
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
}
else
printf("无此设备\n");
}
else
{
printf("\n非法字符\n");
return n;
}
}
/*排序*/
void mysort(struct shebei_type*p,int n)
{
int j,i,k;
char c1,c2;
struct lab temp;
/*clrscr()*/
printf("排序前的记录:\n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n;i++);
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
printf("按价格排序(c),按时间排序(m),按类别排序(e),按编号排序(k),按实验室排序(a)?");
c1=getche();
/*按价格排序*/
if(c1=='c'||c1=='C')
{
for(i=0;i
<n-1;i++)
{
k=i;
for(j=i;j
<n;j++)
if( p[k].price >p[j].price )
k=j;
temp=p[k];
p[k]=p[i];
p[i]=temp;
}
printf("\n排序后的记录:\n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n;i++)
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
}
/*按时间排序*/
else if(c1=='m'||c1=='M')
{
for(i=0;i
<n-1;i++)
{
k=i;
for(j=i;j
<n;j++)
if( p[k].time > p[j].time )
k=j;
temp=p[k];
p[k]=p[i];
p[i]=temp;
}
printf("\n排序后的记录:\n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n;i++)
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
}
/*按类别排序*/
else if(c1=='e'||c1=='E')
{
for(i=0;i
<n-1;i++)
{
k=i;
for(j=i;j
<n;j++)
if( p[k].kind > p[j].kind )
k=j;
temp=p[k];
p[k]=p[i];
p[i]=temp;
}
printf("\n排序后的记录:\n");
printf("编号 名称 价格 够买时间 所属实验室 类别\n");
for(i=0;i
<n;i++)
printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,
p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );
}
/*统计信息*/
sort_amount()
{ struct shebei_type *p,*q[MAX];
int i,j,k;
clrscr();
printf("\n 库存排行\n");
printf("---------------------------------------------------------------------\n");
printf("\n 排名 设备号 设备名称 设备类别 设备价格 设备购买时间 设备所属实验室\n");
p=shebei;
for(i=0;i
<sum;i++)
q[i]=p++;
for(i=0;i
<sum;i++)
{ k=i;
for(j=i+1;j
<sum;j++)
if(q[k]->amount
amount) k=j;
if (k!=i)
{ p=q[i];q[i]=q[k];q[k]=p;}
}
for(i=0;i
<sum;i++)
printf("\n%4d %6d %8s %11s %4d %d-%d-%d %4s\n",
i+1,q[i]->num,q[i]->name,q[i]->kind,q[i]->price,q[i]->time,q[i]->lab);
bioskey(0);
}
/*排序函数*/
void mystatic(struct shebei_type*p,int n)()
{int choice;
do
{ clrscr();
printf("\n\n\n **********设备排行信息**********\n\n");
printf(" 1.库存排行\n\n");
printf(" 0.返回主菜单\n\n");
printf(" 请选择(0-1):");
scanf("%d",&choice);
switch(choice)
{ case 1:sort_amount();break;
case 0:break;
}
}while(choice!=0);
}
}
C语言课程设计
#include
#include
#include
#include
#include
typedef struct linknode
{
long number; /* 编号 */
char name[51]; /* 名称 */
double price; /* 价格 */
long amount; /* 数量 */
double money; /* 总价 */
char producer[21]; /* 生产商 */
struct linknode *next;
} linknode;
linknode *head, *tail;
int NODSIZE;
void error(const char *errmsg);
void init();
void eatenter();
void input(linknode *node);
void insert();
void locate(linknode **pprev, linknode **pnext);
void remove();
void modify();
void output(linknode *node);
void search();
void cleanup();
void display();
void error(const char *errmsg)
{
puts(errmsg);
cleanup();
exit(1);
}
void init()
{
NODSIZE = sizeof(linknode);
head = tail = (linknode *)malloc(NODSIZE);
if (head == NULL)
error("无法分配内存!");
memset(head, 0, sizeof(linknode));
printf("欢迎使用简单货物信息管理系统\n");
}
void eatenter()
{
while (getchar() != '\n');
}
void input(linknode *node)
{
printf("商品名称: ");
scanf("%50[^\n]", node->name);
eatenter();
printf("商品价格: ");
scanf("%lf", &node->price);
eatenter();
printf("商品数量: ");
scanf("%ld", &node->amount);
eatenter();
printf("商品生产商: ");
scanf("%20[^\n]", node->producer);
eatenter();
node->money = node->price * node->amount;
}
/* 添加信息 */
void insert()
{
linknode *node;
long num;
printf("\n请根据提示输入商品信息(编号0结束)\n");
while (1)
{
printf("商品编号: ");
scanf("%ld", &num);
eatenter();
if (num == 0)
break;
node = (linknode *)malloc(NODSIZE);
if (node == NULL)
error("无法分配内存!");
node->number = num;
input(node);
tail->next = node;
tail = node;
tail->next = NULL;
}
}
void locate(linknode **pprev, linknode **pnext)
{
char choice, nm[51];
long num;
int invalid;
printf("请选择查找方式:\n");
printf("1: 名称 2: 编号\n");
do
{
invalid = 0;
choice = getchar();
eatenter();
if (choice != '1' && choice != '2')
{
printf("无效选项!请重新输入。\n");
invalid = 1;
}
}
while (invalid);
if (choice == '1')
{
printf("货物名称: ");
scanf("%50[^\n]", nm);
}
else
{
printf("货物编号: ");
scanf("%ld", &num);
}
eatenter();
printf("\n");
*pprev = head, *pnext = head->next;
invalid = 0;
while (*pnext)
{
if (choice == '1' && !strcmp((*pnext)->name, nm))
{
invalid = 1;
}
else if ((*pnext)->number == num)
{
invalid = 1;
}
if (invalid)
break;
(*pprev) = (*pnext);
(*pnext) = (*pnext)->next;
}
}
/* 删除信息 */
void remove()
{
linknode *prev, *cursor;
locate(&prev, &cursor);
if (cursor)
{
printf("成功删除记录\n");
prev->next = cursor->next;
if (cursor == tail)
tail = prev;
free(cursor);
}
else
{
printf("无法找到记录\n");
}
printf("按任何键返回上层菜单...\n");
getch();
}
/* 修改信息 */
void modify()
{
linknode *prev, *cursor;
locate(&prev, &cursor);
if (cursor)
{
printf("货物编号: ");
scanf("%ld", &cursor->number);
eatenter();
input(cursor);
printf("成功更新记录\n");
}
else
{
printf("无法找到记录\n");
}
printf("按任何键返回上层菜单...\n");
getch();
}
void output(linknode *node)
{
printf("商品编号: %ld\n", node->number);
printf("商品名称: %s\n", node->name);
printf("商品价格: %.2f\n", node->price);
printf("商品数量: %ld\n", node->amount);
printf("商品生产商: %s\n", node->producer);
printf("商品总价: %.2f\n\n", node->money);
}
void search()
{
linknode *prev, *cursor;
locate(&prev, &cursor);
if (cursor)
{
output(cursor);
}
else
{
printf("无法找到记录\n");
}
printf("按任何键返回上层菜单...\n");
getch();
}
void cleanup()
{
linknode *cursor = head;
while (cursor)
{
head = head->next;
free(cursor);
cursor = head;
}
}
void display()
{
linknode *cursor = head->next;
while (cursor)
{
output(cursor);
cursor = cursor->next;
}
printf("按任何键返回上层菜单...\n");
getch();
}
void main()
{
char choice;
printf("欢迎使用简单商品管理系统\n");
init();
while (1)
{
printf("请选择相关操作:\n");
printf("1: 添加记录\t2: 删除记录\t");
printf("3: 查询记录\n4: 修改记录\t");
printf("5: 显示记录\t6: 退出程序\n");
choice = getchar();
eatenter();
switch ( choice )
{
case '1':
insert();
break;
case '2':
remove();
break;
case '3':
search();
break;
case '4':
modify();
break;
case '5':
display();
break;
case '6':
cleanup();
exit(0);
}
system("cls");
}
}
靠,邮箱都不留怎么给
http://dl2.csdn.net/fd.php?i=66692153085104&s=70e20097d3f4106c6160e2123b9b4545
这是csdn上的一个下载地址,要是不能用我就传给你
发给你了
要许多时间来编啊
/*计算上个月每个人每种产品的销售额。
1)按销售额对销售员进行排序,输出排序结果(销售员代号)
2)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
3)输出统计报表如下:*/
#include
#include
#include
#include
#define Z 5
#define R 4 /*定义宏常量便于程序的一般化*/ /*R表示销售员个数*/
typedef struct /*缩短结构体变量名*/
{
int shangpin[Z]; /*定义结构体便于信息的存储和读写,辨别*/ /*R是表示商品的种类,最后一个为该销售员商品总和*/
}data;
void menu()
{ printf(" *******************************************************\n");
printf(" 0.结束操作\n");
printf(" 1.计算上个月每个人每种产品的销售额\n");
printf(" 2.按销售额对销售员进行排序,输出排序结果\n");
printf(" 3.统计每种产品的总销售额,输出排序结果\n");
printf(" 4.输出统计报表\n");
printf(" ******************************************************\n");
}
void data_read(data *x) /*读入函数使程序简洁*/
{
FILE *fp;
char fname[10];
int i;
printf("您想查询哪个月?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");/*连接文件属性*/
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
{
printf("can not open the file\n");
exit(0);
}
for(i=0;i
<r;i++) *读出信息*
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!\n");
}
void data_count(data *x) /*计算上个月每个人每种产品的销售额*/
{
FILE *fp;
char fname[10];
int j,t; /*用于控制循环*/
int i,k,s; /*用于定义职工序号,产品序号,产品数量*/
system("cls");
printf("您想计算哪个月?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息写入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"wb"))==NULL) /*打开文件*/
{
printf("can not open the file\n");
exit(0);
}
for(j=0;j
<r;j++) *对商品数量清零*
for(t=0;t
<z;t++)
(x+j)->shangpin[t]=0;
printf("please put the information about the 职工编号,产品编号,销售数量\n"); /*写入信息*/
for(j=0;;j++)
{
scanf("%d%d%d",&i,&k,&s);
if(i==0) /*输入职工为0时结束信息输入*/
break;
if(i>R||i<0||k>Z||k<0)
{
printf("the information error!\n"); /*避免输入信息出错*/
continue;
}
else
(x+i-1)->shangpin[k-1]=(x+i-1)->shangpin[k-1]+s;/*统计各个人的各种产品的数量,-1为了和数组中的序号相匹配*/
}
for(j=0;j
<r;j++)
if(fwrite((x+j),sizeof(data),1,fp)!=1) /*把信息写入文件中便有以后调用*/
printf("write error!\n");
fclose(fp); /*关闭文件避免信息遗漏*/
}
void range_sxy(data *x) /*按销售额对销售员进行排序,输出排序结果*/
{
FILE *fp;
char fname[10];
int i,k,j,t,bianhao[R]={0},z;
system("cls");
printf("你要哪个月的?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
{
printf("can not open the file\n");
exit(0);
}
for(i=0;i
<r;i++) *读出信息*
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!"); /*读入信息提示*/
for(i=0;i
<r;) *用于存储职工编号*
bianhao[i]=i++;
printf("请输入按何种产品排序\n");
scanf("%d",&k);
k=k-1; /*便于与结构体中的数组值对应*/
for(i=0;i
<r;i++) *按k种产品对销售员排序,选择法排序*
{
t=i;
for(j=i+1;j
<r;j++)
if((x+bianhao[t])->shangpin[k]<(x+bianhao[j])->shangpin[k])/*调用职工各自对应的结构体内的产品数量*/
t=j;
if(t!=i)
{
z=bianhao[i];
bianhao[i]=bianhao[t];
bianhao[t]=z;
}
}
printf("按%d产品对销售员排序为:\n",k+1);
for(i=0;i
<r;i++)
printf("%5d",bianhao[i]+1);
getch();
fclose(fp);
}
void range_shangpin(data *x) /*统计每种产品的总销售额,输出排序结果*/
{
FILE *fp;
char fname[10];
int i,j,sum[Z]={0},bianhao[Z]={0},z,t,k;
system("cls");
printf("您想计算哪个月的?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
{
printf("can not open the file\n");
exit(0);
}
for(i=0;i
<r;i++) *读出信息*
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!");
for(i=0;i
<z;i++) *对各种商品求和*
for(j=0;j
<r;j++)
sum[i]=sum[i]+(x+j)->shangpin[i];
for(i=0;i
<z;) *用于存储商品编号*
bianhao[i]=i++;
for(i=0;i
<z;i++)
printf("%3d",bianhao[i]);
for(i=0;i
<z;i++) *对产品从高到低排序,选择法排序*
{
t=i;
for(j=i+1;j
<z;j++) *产品变化时,产品编号也随之变化,便于输出*
if(sum[t]
<sum[j])
t=j;
if(t!=i)
{
k=sum[i];
sum[i]=sum[t];
sum[t]=k;
z=bianhao[i];
bianhao[i]=bianhao[t];
bianhao[t]=z;
}
}
printf("输出产品排序\n");
printf("产品编号 数量\n");
for(i=0;i
<z;i++)
printf("%-10d%-10d\n",bianhao[i]+1,sum[i]);
getch();
fclose(fp);
}
void data_out(data *x) /*输出统计报表*/
{
FILE *fp;
char fname[10];
int i,j,sum[Z+1]={0};
system("cls");
printf("您想计算哪个月?\n");
printf("请输入月份:"); /*输入文件名,这样可以进行各个月份信息读入*/
scanf("%s",fname);
strcat(fname,".txt");
if((fp=fopen(fname,"rb"))==NULL) /*打开文件*/
{
printf("can not open the file\n");
exit(0);
}
for(i=0;i
<r;i++) *读出信息*
if(fread(x+i,sizeof(data),1,fp)!=1)
printf("读入信息出错!");
for(i=0;i
<z;i++) *对各种商品求和*
for(j=0;j
<r;j++)
sum[i]=sum[i]+(x+j)->shangpin[i];
for(i=0;i
<z;i++) *求商品总和*
sum[Z]=sum[Z]+sum[i];
printf("输出统计报表如下:\n"); /*按要求输出统计表*/
printf("产品代号 销售之和 销售员代号\n");
for(i=0;i
<r;i++)
for(j=0;j
<z;j++)
printf("%-10d%-10d%-10d\n",j+1,(x+i)->shangpin[j],i+1);
printf("***********************************\n");
for(i=0;i
<z;i++)
{
if(i==0)
printf("%d产品之和 %-10d 总和 %-10d\n",i+1,sum[i],sum[Z]);
else
printf("%d产品之和 %-10d\n",i+1,sum[i]);
}
getch();
}
void main()
{
int i,choice;
data sxy[R]; /*R表示职工的个数,前面的宏常量*/
for(i=0;;i++)
{
system("cls"); /*清频命令*/
menu(); /*菜单函数提示用户怎样选择*/
printf("你想做什么?\n");
printf("请选择:"); /*输入要进行的操作*/
scanf("%d",&choice);
if(choice==0) /*退出程序*/
break;
else
switch(choice)
{
case 1 : data_count(sxy);break; /*计算上个月每个人每种产品的销售额*/
case 2 : range_sxy(sxy);break; /*按销售额对销售员进行排序,输出排序结果*/
case 3 : range_shangpin(sxy);break; /*统计每种产品的总销售额,输出排序结果*/
case 4 : data_out(sxy);break; /*输出统计报表*/
}
}
}
</z;i++)
</z;j++)
</r;i++)
</r;j++)
</z;i++)
</z;i++)
</r;j++)
</r;i++)
</r;j++)
</r;j++)
</z;t++)
C语言课程设计-万年历
1.系统封面设计
内容:题目名称(中英文)、进入(中英文)、作者:***、时间:****-**-**
2.输入界面
内容:(1)密码口令输入及容错(3次)
(2)年份的输入及容错(3次)
3.日历计算设计
(1)求某月某日实行奇迹的函数(邱每月一号的星期数)。算法:(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+c 得出S (y为年份,c为某月某日是这一年的第几天,S为总的天数)
(2)邱某月某日至这一年第几天的函数(求c) 闰年的算法: y/400==0 ?或y/400==0&&y/100!=0
根据(1)(2)求出每个月的日期
4、日历格式显示设计
要求:每屏显示4个月。
-------------------------------
c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包括三个成
#include
#include
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号;*/
float score[3]; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
};
/*排序用一个函数来实现*/
void SortScore(student *stu,int n)
{
student stud;
for(int i = 0; i < n-1; i++)
for(int j = i+1 ; j < n; j++)
{
if(stu[i].total < stu[j].total)
{
stud = stu[i];
stu[i] = stu[j];
stu[j] = stud;
}
}
}
int main( )
{
student stu[STU_NUM]; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/
/*输入这十个学生的相关信息*/
for(int i = 0; i
<stu_num; i++)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",&stu[i].stu_id);
printf("输入第%d个学生的数学成绩:",i+1);
scanf("%f",&stu[i].score[0]);
printf("输入第%d个学生的英语成绩:",i+1);
scanf("%f",&stu[i].score[1]);
printf("输入第%d个学生的计算机成绩:",i+1);
scanf("%f",&stu[i].score[2]);
stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].aver = stu[i].total/3;
}
printf("\n");
SortScore(stu,STU_NUM);/*调用排序函数*/
/*输出排序后的各学生的成绩*/
for(i = 0 ; i < STU_NUM; i++)
{
printf("序号: %d\t",i);
printf("学号:%s\t",stu[i].stu_id);
printf("数学:%f\t",stu[i].score[0]);
printf("英语:%f\t",stu[i].score[1]);
printf("计算机:%f\t",stu[i].score[2]);
printf("平均成绩:%f\t",stu[i].aver);
printf("总分:%f\t",stu[i].total);
printf("\n\n");
}
return 0;
}
注:(源程序中主要标识符含义说明)
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号;*/
float score[3]; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
}
c语言课程设计题目 医院排队看病系统
这个题目够大。
#include
#include
typedef int queuetype;queuetype num=1;typedef struct qnode{ queuetype data; struct qnode *next;} QNode; //链队结点类型typedef struct { QNode *front,*rear;} QuType;
void initlqueue(QuType *L){ L->front=L->rear=NULL;}
void pushlqueue(QuType *L,queuetype e){ QNode *p=(QNode*)malloc(sizeof(QNode)); p->data=e; p->next=NULL; if(!L->front) { L->front=p; } if(L->rear) L->rear->next=p; L->rear=p; num++;}void deletlqueue(QuType *L){ if(L->front) { QNode *p; p=L->front; printf("第%d位选手已经就诊!\n",p->data); L->front=p->next; if(!p) L->rear=NULL; else free(p); } else { num=0; printf("所有的病人都已就诊完毕!\n"); }}
void showqueueperson(QuType *L){ QNode *p=L->front; printf("输出所有排队者的序号:\n"); while(p) { printf(" %d\n",p->data); p=p->next; } if(!L->front) printf("病人都已经看病完成!\n");}
void quikSee(QuType*L,queuetype e){ QNode *p=L->front,*q,*t; while(p&&p->data!=e) { t=p; p=p->next; } if(p->data==e) { printf("find!%d号即可进行诊疗!\n",p->data); q=t->next; if(q->next) t->next=q->next;
if(t->next==L->rear) t->next=L->rear=NULL; free(q); } else printf("队列中无此人!无需删除操作!\n");
}
//链队类型void SeeDoctor(){ int sel,flag=1; QuType *qu=(QuType*)malloc(sizeof(QuType)); queuetype quik=0; initlqueue(qu);//创建空队 while (flag==1) //循环执行 { printf("1:排队 2:就诊 3:查看排队 4.不再排队,余下依次就诊 5:下班 请选择:"); scanf("%d",&sel); switch(sel) { //排队,入队 case 1: pushlqueue(qu,num); printf("\n挂号成功!\n"); break; case 2: deletlqueue(qu); printf("\n");break; //就诊,出队 case 3: showqueueperson(qu); break; //显示排队病人 case 4: { printf("若您需要马上就诊,请输入您的号:"); scanf("%d",&quik); quikSee(qu,quik); printf("\n"); } break; //任意顺序就诊 case 5: { printf("抱歉!已下班,请排队的病人明天再来就诊!\n\n");//下班,明天就医! flag=0; //退出 break; } default : printf("输入错误,请从新输入!\n\n"); continue; } }}void main(){ SeeDoctor();}
病人的姓名等信息就在结构体里加几个成员就行了!主要功能已经实现了!
我截张图给你吧!
C语言课程设计
本课程旨在培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的培养学生的实际工作能力专门的培训和考察过程中的重要组成部分。日清日科学和技术差异的发展,今天的计算机在生活中的应用,可以把它无处不在。因此,作为二十一世纪大学的主计算机开发的技术是非常重要的。
我演讲的题目是文章处理系统的设计,这是一个很大的考验,我们的新手,我问自己,一千遍一万遍,如何找到所学到的知识在课堂上和实际应用中的最良好的结合点?如何使自己的简单程序的长度,在使用丰富的价值呢?如何使自己的业余的专业呢?如何使他们的计划更加有序,没有繁忙的一个吗?机会是一名教师,学校,教育工作者以及无数代,而对自己的能力,耐心是需要的。经过琢磨,听师姐,年长的学生的建议,但也获得了大量的书籍,和它做了一个不错的主意,不知道的真实意图 - 培养自学能力,一个良好的习惯开发一个程序来编辑C语言课程设计。我从来不相信车到山前必有路,他说,只是懒惰找借口偷懒的,我想是积极的,要把握一定要努力。
课程设计审查以来,到目前为止,我仍然感觉了很多,事实上,整个程序完成了从理论到实践的主体,在未来的日子了足足半学期,你可以学到很多事情,不仅可以巩固以前所学的知识,学到了很多的书,没有学过的知识。我理解的理论和实际操作相结合是非常重要的,只有理论知识是不够的,只有理论知识与实践相结合,从理论上讲,通过课程设计,并得出结论,真正的社会服务,从而提高自己的实践能力和独立思考的能力。在设计过程中遇到的问题,我们可以说,它是非常困难的,而这,毕竟是第一次做,这是不可避免的遇到的各种设计自己的不足,在这个过程中发现的问题,缺乏例如,以前学过的知识,而不是强大到足以大师的深刻理解,结构...通过设计的这个过程中,一些以前学过的知识重新温故。
课程设计,终于成功地完成,和大量的编程设计中遇到的问题,并最终努力郭老师的指导下,终于参观逆解。郭老师,我学到了很多实用的知识,有时我感谢!我帮同学及同系讲师,再次表示衷心的感谢!
在课程设计过程中,我学到了很多人生的哲理,知道如何规划,如何实施这项计划,并在实施过程中掌握的,如何克服不良的心理情绪夜晚过去了,我们收获的曙光。在实践中,给我印象最深刻的文件删除程序编译过程,首先我的子程序被编辑的,所以这个最终方案将是我成功的关键。上帝不会让我太顺利了,他在这最后的时刻设置障碍,以测试自己的能力,和他想杀了我吗?一个解决这个问题的,我打了退堂鼓,我不能忍受很长一段时间,对时间是花我的意志没有成功。是没有出路的一天,那么我可以说,经受住了考验?谢谢老师的一句话,她说:“然而,人类,有些并没有精神的人是不能打败下来。我的勇气,并要求各地到处找信息,黄天不负有心人,终于看到文章中,我特别要求的功能,我的组合是关键理论。不得不说,这是一个胜利的精神,永不放弃的精神,我的计划败露。谢谢你给了我帮助的老师。
6个月,我们的课程设计,但它留给我的印象是不可磨灭的。不管是什么我稍后会参与编译的C语言程序,我想我已经掌握了至少一个研究方法,我们的研究目的是使用,我们使用这种方法,会有很多我最后要感谢的课程设计,它真的教了我很多。
另外,在虚拟机超低价团购,
/ / SaleFish.cpp
/ / N数的类型,也就是,有多少次出售的标题,n为5,以解决上述问题,运行n个 / / K是总数的鱼
/ /如果输出的K是不是在没有找到的数字小于1000(即鱼数)中的n倍卖根据上述销售计划出售/ /最后的输出结果为K = 59
#包括
#包括的
使用命名空间std;
无效的主要(){ BR />双K = 11.0;
双I,J;
双IJ;
= 1;
J = 2;
廉政n 内部温度= 0;
双tempk = K;
法院<<“请输入n:”;
CIN >> N;
(1)
{
K = tempk;
(J <= N && tempk <1000){
IJ = I / J;
(厂((九* K-(1 IJ))-11)<1E-6 &&?= N)
{法院<<“K是:”<< endl << tempk温度+ = 1;打破;}
其他{K = IJ * K-(1-IJ);我+ = 1; + = 1;}
} J = 2; i = 1;
(临时)休息;
>(厂(tempk-1000)<1E-6){cout <<“请K是\ n”;}
tempk + = 1;
}
不中。 cout <<“请结束... \ n按任意键退出...”;
getchar函数();
getchar函数();
}
该〇二〇一〇]亲希望采用。
开始与人的生命,为了防止十条法则要记住,一旦灾害,一些及时应用心。地震地震逃生的第一个表在床底下找到了差距,靠在角落里弯曲的身体,抓住机会逃脱。
去年,我写了一个报告,课程设计,我有我写这个送给你,你可以参考一下,我也设计一个烟花不告诉你,所以不要拿我的源代码到您的
课程设计这门课程是很实际的,很锻炼人,,也很让人头疼,但如果你想有所成就还是自己写吧,可以找一些资料,完了之后,你会受益匪浅的。
/******头文件(.h)***********/
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*标准库函数*/
#include "string.h"/*字符串函数*/
#include "ctype.h" /*字符操作函数*/
#include "conio.h" /*控制台输入输出函数 */
#define M 50 /*定义常数表示记录数*/
typedef struct /*定义数据结构*/
{
char name[20]; /*姓名*/
char units[30]; /*单位*/
char tele[20]; /*电话*/
char m_ph[20]; //手机
char rela[20]; //关系
char email[50]; //邮箱
char qq[20]; //qq
}ADDRESS;
/******以下是函数原型*******/
int enter(ADDRESS t[]); /*输入记录*/
void list(ADDRESS t[],int n); /*显示记录*/
void search(ADDRESS t[],int n); /*按姓名查找显示记录*/
int Delete(ADDRESS t[],int n); /*删除记录*/
int add(ADDRESS t[],int n); /*插入记录*/
void save(ADDRESS t[],int n); /*记录保存为文件*/
int load(ADDRESS t[]); /*从文件中读记录*/
void display(ADDRESS t[]); /*按序号查找显示记录*/
void sort(ADDRESS t[],int n); /*按姓名排序*/
void qseek(ADDRESS t[],int n); /*快速查找记录*/
void print(ADDRESS temp); /*显示单条记录*/
int find(ADDRESS t[],int n,char *s) ; /*查找函数*/
int menu_select(); /*主菜单函数*/
/******主函数开始*******/
main()
{
system("color 37");//背景色为浅绿,前景色为白色
printf(" 欢迎使用通讯录管理系统\n");//欢迎界面
int i;
ADDRESS adr[M]; /*定义结构体数组*/
int length; /*保存记录长度*/
for(;;)/*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{
case 0:length=enter(adr);break;/*输入记录*/
case 1:list(adr,length);break; /*显示全部记录*/
case 2:search(adr,length);break; /*查找记录*/
case 3:length=Delete(adr,length);break; /*删除记录*/
case 4:length=add(adr,length); break; /*插入记录*/
case 5:save(adr,length);break; /*保存文件*/
case 6:length=load(adr); break; /*读文件*/
case 7:display(adr);break; /*按序号显示记录*/
case 8:sort(adr,length);break; /*按姓名排序*/
case 9:qseek(adr,length);break; /*快速查找记录*/
case 10:exit(0); /*如返回值为10则程序结束*/
}
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
int menu_select()
{
char s[80];
int c;
printf("按任意键进入菜单......\n");/*提示按任意键继续*/
getch(); /*读入任意字符*/
system("cls"); /*清屏*/
printf(" ********************菜单***********************\n\n");
printf(" 0. 输入记录\n");
printf(" 1. 显示所有记录\n");
printf(" 2. 按姓名查找记录\n");
printf(" 3. 删除记录\n");
printf(" 4. 添加记录\n");
printf(" 5. 保存文件\n");
printf(" 6. 载入文件\n");
printf(" 7. 按序号显示记录\n");
printf(" 8. 记录排序\n");
printf(" 9. 查找记录\n");
printf(" 10. 退出\n");
printf(" ***********************************************\n");
do
{
printf("\n 请输入选项(0~10):"); /*提示输入选项*/
scanf("%d",&c);/*输入选择项*/
fflush(stdin);
}while(c<0 || c>10);/*选择项不在0~10之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
int enter(ADDRESS t[])
{
int i,n;
char num[30];
system("cls"); /*清屏*/
int flag=1;
for(;;)
{
flag = 1;
system("cls"); /*清屏*/
printf("\n请输入记录数:\n"); /*提示信息*/
scanf("%s", &num); /*输入记录数*/
fflush(stdin);
for(int nima = 0; num[nima]; nima++)
{
if (num[nima] < 48 || num[nima] > 57)
{
flag = 0;
break;
}
}
if(flag==1)
break;
}
n=atoi(num);
printf("请输入记录:\n"); /*提示输入记录*/
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
for(i=0;i
<n;i++)
{
scanf("%s%s%s%s%s%s%s",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq); /*输入记录*/
fflush(stdin);
for(int k=0;k<=19;k++)
{
if((t[i].tele[k]>='a' && t[i].tele[k]<='z' )|| (t[i].tele[k]>='A' && t[i].tele[k]<='Z'))
{
printf("电话输入错误!请重新输入联系人信息\n");
i--;
break;
}
if((t[i].m_ph[k]>='a' && t[i].m_ph[k]<='z' )|| (t[i].m_ph[k]>='A' && t[i].m_ph[k]<='Z'))
{
printf("手机输入错误!请重新输入联系人信息\n");
i--;
break;
}
if((t[i].qq[k]>='a' && t[i].qq[k]<='z' )|| (t[i].qq[k]>='A' && t[i].qq[k]<='Z'))
{
printf("QQ输入错误!请重新输入联系人信息\n");
i--;
break;
}
}
printf("--------------------------------------------------------------------------\n");
}
return n; /*返回记录条数*/
}
/*显示记录,参数为记录数组和记录条数*/
void list(ADDRESS t[],int n)
{
int i;
system("cls"); /*清屏*/
printf("\n\n************************************************************************\n");
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
for(i=0;i
<n;i++)
printf("%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq);
if((i+1)%10==0) /*判断输出是否达到10条记录*/
{
printf("按任意键显示下一页\n"); /*提示信息*/
getch(); /*按任意键继续*/
}
printf("*********************************结束***********************************\n");
}
/*查找记录*/
void search(ADDRESS t[],int n)
{
char s[20]; /*保存待查找姓名字符串*/
int i; /*保存查找到结点的序号*/
system("cls"); /*清屏*/
printf("请输入待查找姓名:\n");
scanf("%s",s); /*输入待查找姓名*/
i=find(t,n,s); /*调用find函数,得到一个整数*/
if(i>n-1) /*如果整数i值大于n-1,说明没找到*/
{
printf("未找到!!!\n");
getch();
}
else
print(t[i]); /*找到,调用显示函数显示记录*/
}
/*显示指定的一条记录*/
void print(ADDRESS temp)
{
system("cls"); /*清屏*/
printf("\n\n************************************************************************\n");
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
printf("%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq);
printf("*********************************结束***********************************\n");
getchar();
}
/*查找函数,参数为记录数组和记录条数以及姓名s */
int find(ADDRESS t[],int n,char *s)
{
int i;
system("cls"); /*清屏*/
for(i=0;i
<n;i++) *从第一条记录开始,直到最后一条*
{
if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/
return i; /*相等,则返回该记录的下标号,程序提前结结束*/
}
return i; /*返回i值*/
getch();
}
/*删除函数,参数为记录数组和记录条数*/
int Delete(ADDRESS t[],int n)
{
char s[20]; /*要删除记录的姓名*/
char ch;
int i,j;
system("cls"); /*清屏*/
printf("请输入待删除的姓名:\n"); /*提示信息*/
scanf("%s",s);/*输入姓名*/
i=find(t,n,s); /*调用find函数*/
if(i>n-1) /*如果i>n-1超过了数组的长度*/
printf("未找到!!!\n"); /*显示没找到要删除的记录*/
else
{
print(t[i]); /*调用输出函数显示该条记录信息*/
printf("确定删除?(Y/N)\n"); /*确认是否要删除*/
scanf("%c",&ch); /*输入一个整数0或1*/
if(ch=='y' || ch=='Y') /*如果确认删除输入y*/
{
for(j=i+1;j
<n;j++) *删除该记录,实际后续记录前移*
{
strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/
strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/
strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/
strcpy(t[j-1].m_ph,t[j].m_ph); /*将后一条记录的手机拷贝到前一条*/
strcpy(t[j-1].rela,t[j].rela); /*将后一条记录的关系拷贝到前一条*/
strcpy(t[j-1].email,t[j].email); /*将后一条记录的邮箱拷贝到前一条*/
strcpy(t[j-1].qq,t[j].qq); /*将后一条记录的qq拷贝到前一条*/
}
printf("删除成功!\n");
n--; /*记录数减1*/
}
}
getch();
return n; /*返回记录数*/
}
/*插入记录函数,参数为结构体数组和记录数*/
int add(ADDRESS t[],int n)/*插入函数,参数为结构体数组和记录数*/
{
ADDRESS temp; /*新插入记录信息*/
int i,j,flag;
char s[30]; /*确定插入在哪个记录之前*/
system("cls"); /*清屏*/
printf("请输入记录:\n");
printf("************************************************************************\n");
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
scanf("%s%s%s%s%s%s%s",temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq); /*输入插入信息*/
fflush(stdin);
printf("请输入插入位置的姓名: \n");
scanf("%s",s); /*输入插入位置的姓名*/
i=find(t,n,s); /*调用find,确定插入位置*/
for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/
{
strcpy(t[j+1].name,t[j].name); /*当前记录的姓名拷贝到后一条*/
strcpy(t[j+1].units,t[j].units); /*当前记录的单位拷贝到后一条*/
strcpy(t[j+1].tele,t[j].tele); /*当前记录的电话拷贝到后一条*/
strcpy(t[j+1].m_ph,t[j].m_ph); /*当前记录的手机拷贝到后一条*/
strcpy(t[j+1].rela,t[j].rela); /*当前记录的关系拷贝到后一条*/
strcpy(t[j+1].email,t[j].email); /*当前记录的邮箱拷贝到后一条*/
strcpy(t[j+1].qq,t[j].qq); /*当前记录的qq拷贝到后一条*/
}
strcpy(t[i].name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/
strcpy(t[i].units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/
strcpy(t[i].tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/
strcpy(t[i].m_ph,temp.m_ph); /*将新插入记录的手机拷贝到第i个位置*/
strcpy(t[i].rela,temp.rela); /*将新插入记录的关系拷贝到第i个位置*/
strcpy(t[i].email,temp.email); /*将新插入记录的邮箱拷贝到第i个位置*/
strcpy(t[i].qq,temp.qq); /*将新插入记录的qq拷贝到第i个位置*/
n++; /*记录数加1*/
printf("添加成功!!!\n");
getch();
return n; /*返回记录数*/
}
/*保存函数,参数为结构体数组和记录数*/
void save(ADDRESS t[],int n)
{
int i;
char outfile[30];
FILE *fp; /*指向文件的指针*/
system("cls"); /*清屏*/
printf("请输入待保存的文件名:\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判断打开是否正常*/
{
printf("无法打开文件!\n");/*无法打开*/
exit(1); /*退出*/
}
printf("\n保存文件...\n"); /*输出提示信息*/
fprintf(fp,"%d",n); /*将记录数写入文件*/
fprintf(fp,"\r\n"); /*将换行符号写入文件*/
for(i=0;i
<n;i++)
{
fprintf(fp,"%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq);/*格式写入记录*/
fprintf(fp,"\r\n"); /*将换行符号写入文件*/
}
fclose(fp);/*关闭文件*/
printf("****保存成功!****\n"); /*显示保存成功*/
getch();
}
/*载入函数,参数为结构体数组*/
int load(ADDRESS t[])
{
int i,n;
char outfile[30];
FILE *fp; /*指向文件的指针*/
system("cls"); /*清屏*/
printf("请输入待载入的文件名:\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/
{
printf("无法打开文件!\n"); /*不能打开*/
exit(1); /*退出*/
}
fscanf(fp,"%d",&n); /*读入记录数*/
for(i=0;i
<n;i++)
fscanf(fp,"%10s%14s%12s%12s%10s%12s%14s",t[i].name,t[i].units,t[i].tele,
t[i].m_ph,t[i].rela,t[i].email,t[i].qq); /*按格式读入记录*/
fclose(fp); /*关闭文件*/
printf("从文件读入数据成功!!!\n"); /*显示保存成功*/
getch();
return n; /*返回记录数*/
}
/*按序号显示记录函数*/
void display(ADDRESS t[])
{
int id,n;
char outfile[30];
FILE *fp; /*指向文件的指针*/
system("cls"); /*清屏*/
printf("请输入待载入的文件名:");
scanf("%s",outfile);
if((fp=fopen(outfile,"rb"))==NULL) /*打开文件*/
{
printf("无法打开文件!\n"); /*不能打开文件*/
exit(1); /*退出*/
}
printf("请输入记录序号:\n"); /*显示信息*/
scanf("%d",&id); /*输入序号*/
fscanf(fp,"%d",&n); /*从文件读入记录数*/
if(id>=0&&id
<n) *判断序号是否在记录范围内*
{
fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/
print(t[id]); /*调用输出函数显示该记录*/
printf("\r\n");
}
else
{
printf(" %d号记录不存在!!!\n ",id); /*如果序号不合理显示信息*/
getch();
}
fclose(fp); /*关闭文件*/
}
/*排序函数,参数为结构体数组和记录数*/
void sort(ADDRESS t[],int n)
{
int i,j,flag;
system("cls"); /*清屏*/
ADDRESS temp; /*临时变量做交换数据用*/
for(i=0;i
<n;i++)
{
flag=0; /*设标志判断是否发生过交换*/
for(j=0;j
<n-1;j++)
if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/
{
flag=1;
strcpy(temp.name,t[j].name); /*交换记录*/
strcpy(temp.units,t[j].units);
strcpy(temp.tele,t[j].tele);
strcpy(temp.m_ph,t[j].m_ph);
strcpy(temp.rela,t[j].rela);
strcpy(temp.email,t[j].email);
strcpy(temp.qq,t[j].qq);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].units,t[j+1].units);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j].m_ph,t[j+1].m_ph);
strcpy(t[j].rela,t[j+1].rela);
strcpy(t[j].email,t[j+1].email);
strcpy(t[j].qq,t[j+1].qq);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].units,temp.units);
strcpy(t[j+1].tele,temp.tele);
strcpy(t[j+1].m_ph,temp.m_ph);
strcpy(t[j+1].rela,temp.rela);
strcpy(t[j+1].email,temp.email);
strcpy(t[j+1].qq,temp.qq);
}
if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/
}
printf("排序成功!!!\n"); /*显示排序成功*/
}
/*快速查找,参数为结构体数组和记录数*/
void qseek(ADDRESS t[],int n)
{
char s[20];
int l,r,m;
system("cls"); /*清屏*/
printf("\n请在查找前排序!\n"); /*提示确认在查找之前,记录是否已排序*/
printf("请输入待查找的姓名:\n"); /*提示输入*/
scanf("%s",s); /*输入待查找的姓名*/
l=0;r=n-1; /*设置左边界与右边界的初值*/
while(l<=r) /*当左边界<=右边界时*/
{
m=(l+r)/2; /*计算中间位置*/
if(strcmp(t[m].name,s)==0) /*与中间结点姓名字段做比较判是否相等*/
{
print(t[m]); /*如果相等,则调用print函数显示记录信息*/
return ; /*返回*/
}
if(strcmp(t[m].name,s)<0) /*如果中间结点小*/
l=m+1; /*修改左边界*/
else
r=m-1; /*否则,中间结点大,修改右边界*/
}
if(l>r) /*如果左边界大于右边界时*/
printf("未找到!\n"); /*显示没找到*/
getch();
}
</n-1;j++)
</n;i++)
</n;i++)
</n;i++)
</n;i++)
</n;i++)