c语言课程设计题目(大一C语言课程设计题目, 求急! 加100分)
本文目录
- 大一C语言课程设计题目, 求急! 加100分
- C语言课程设计题目
- 求高人解决一道C语言课程设计题
- C语言程序设计——课程设计——通讯录管理系统
- C语言课程设计
- c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包括三个成
- C语言课程设计 题目11:基于结构体数组的学生成绩管理系统
- c语言课程设计 图书管理系统
大一C语言课程设计题目, 求急! 加100分
#include《stdio.h》
#include《string.h》
#define N 100
typedef struct AA
{
char name;
char phone;
char e_mail;
char relation;
}AA;
/*1。输入新联系人2。删除指定的联系人(输入姓名,若找掉则删除该联系人的信息)
3。根据输入的与本人关系,显示联系信息4。显示所有联系人的信息设计菜单*/
int input__(AA * s)
{
int len = 0,i = 0,n;
printf("请输入要添加的联系人个数,上限为%d个\n",N);
scanf("%d",&n);
for(i=0;i《n;i++)
{
printf("请依次输入第%d联系人的姓名、电话、邮箱以及与本人的关系(中间使用空格隔开即可):\n",i);
scanf("%s%s%s%s",s.relation);
}
return n;
}
void delete__(AA *s,int *n)
{
int i = 0,j = 0,status = 0;
char ca = "";
printf("请输入要删除的联系人的姓名\n");
scanf("%s",ca);
for(i=0;i《*n;i++)
{
if(!strcmp(ca,s.name))
{
*n = *n-1;
status = 1;
for(j=i;j《*n;j++)
{
s;
}
break;
}
}
if(status == 0)
printf("没有找到要删除的人的信息\n");
else
printf("删除成功\n");
}
void show__relation(AA *s,int n)
{
int i = 0,status = 0;
printf("请输入与联系人的关系\n");
char ca = "";
scanf("%s",ca);
for(i=0;i《n;i++)
{
if(!strcmp(ca,s.relation))
{
printf("name:%15s\tphone:%15s\ne-mail:%15s\trelation:%15s\n",s.relation);
status = 1;
}
}
if(!status)
printf("没有找到相应的信息\n");
}
void show__all(AA *s,int n)
{
int i = 0;
for(i = 0 ; i 《n ; i++)
{
printf("name:%15s\tphone:%15s\ne-mail:%15s\trelation:%15s\n",s.relation);
}
}
int main(void)
{
AA a;
int n = 0;
int i;
while(1)
{
printf("0------退出系统\n1------输入联系人信息\n2------删除指定联系人信息\n");
printf("3------显示与本人关系相通的联系人信息\n4------显示所有联系人的信息\n");
scanf("%d",&i);
if(i == 0)
break;
switch(i)
{
case 1:n = input__(a); break;
case 2:
if(n == 0)
{
printf("你还没有添加信息,请先添加信息:\n");
break;
}
else
{
delete__(a,&n);
break;
}
case 3:
{
if(n == 0)
{
printf("你还没有添加信息,请先添加信息:\n");
break;
}
else
{
show__relation(a,n);
break;
}
}
case 4:
{
if(n == 0)
{
printf("你还没有添加信息,请先添加信息:\n");
break;
}
else
{
show__all(a,n);
break;
}
}
default:
printf("您的选择有误,请重新选择\n");
break;
}
}
return 0;
}
//看看~~~刚刚写完~
C语言课程设计题目
例:学生管理系统设计 设计内容: 详见视频,要求数据结构用链表,数据存储使用文件。
计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时) A、教师信息处理 (1) 输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。 (2) 插入(修改)教师授课教学信息: (3) 删除教师授课教学信息: (4) 浏览教师授课教学信息: B、教师工作量数据处理: (1) 计算单个教学任务总课时。计算原则如下表:
(2) 计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。 (3)教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 C、教师综合信息输出 提示:输出教师信息到屏幕。
***隐藏网址*** 提取码: 1111
该系统是一个进行选择题测试的考试系统,具有测试、练习功能,具有系统设置功能,具有查分和帮助功能。 一、功能要求: 1、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案) 2、试题录入:可随时增加试题到试题库中 3、试题抽取:每次从试题库中可以随机抽出N道题及每题的得分K(N、K由键盘输入)。 4、可以设置考试时间。 5、用户可以选择“考试”和“练习”两种方式。 5、答题:用户可实现输入自己的答案,“考试”时系统不能显示答案。“练习”时每一题都可以通过查看“按钮”显示标准答案。可以用“上一题”、“下一题”翻页。选择“交卷”按钮则显示得分; 6、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。 7、考试开始系统显示倒计时。时间为零自动交卷。 二、其它要求: 1、源程序要有适当的注释,使程序容易阅读 2、至少采用文本菜单界面(如果能采用图形菜单界面更好) 3、学生可自动增加新功能模块(视情况可另外加分) 4、写出课程设计报告,具体要求见相关说明文档
***隐藏网址*** 提取码: 1111
设计内容: 设计一个简单的英语字典,输入英语单词,显示中文含义,设计要求:
***隐藏网址*** 提取码: 1111
设计内容: 设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等)。该学生通信录电话簿管理程序具有加入、删除、显示和查询等功能。 设计要求: 1、 能建立、修改和增删学生通讯录 2、 具有群组工能,可以增加群组和记录。 3、 删除可以删除一条、一个群组、全部记录。 4、 查询包含模糊查询。 5、 显示可以以页面和列表方式显示。 6、 有自动排序的功能。 7、 要求:界面友好,易于操作,采用文件存储数据。
***隐藏网址*** 提取码: 1111
实现一个完整的小型音像店对录像带进行管理的系统。 系统要求具有以下功能: (1) 管理音像店中的所有录像带,包括新录像带入库、录像带出租、录像带的返还、所有录像带清单的显示、根据指定条件进行查找删除录像带等各种基本操作。 (2) 客户数据维护,可以将客户分为不同等级,可以根据指定客户显示其所借录像带详细信息。 (3) 租金管理,根据所借日期自动计算所需交纳的租金。 (4) 系统要求界面美观,菜单设计合理,操作方便。 音像店有两个主要的组成部分:录像带和客户。可以构造3个链表存储以下数据: (1) 商店中所有录像带的链表; (2) 商店所有客户的链表; (3) 当前已出租的录像带链表;
***隐藏网址*** 提取码: 1111
航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。设计一个航空订票系统实现上述功能。 (1) 将每条航线的有关信息存入计算机,如:终点站名、航班号、飞机号、飞行周日(星期几)、时间、乘员定额、余票量、票价,已定票客户名单和等候替补客户名单(包括姓名,所需票数); (2) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞、最近一天航班的日期和余票量。 (3) 订票:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; (4) 退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他候补客户。 发挥想像,增加新的功能,完善系统。 系统要求界面美观,菜单设计合理,操作方便。
***隐藏网址*** 提取码: 1111
某旅馆有n个等级的房间,第I等级有 个房间,每个等级的房间有 个床位(1≤i≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。 (1) 旅客登记,即为旅客分配床位。输入旅客姓名、年龄、性别、到达日期和所需房间等级。分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。 (2) 旅客离开时,即进行床位回收。输入房间等级、房间号和床位号。
***隐藏网址*** 提取码: 1111
设计内容: 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。 设计要求: 1、系统以菜单方式工作 2、职工信息录入功能(职工信息用文件保存)--输入 3、职工信息浏览功能--输出 4、职工信息查询功能--算法 查询方式 按学历查询等 按职工号查询等 5、职工信息删除、修改功能(可选项) 6、按工号排序
***隐藏网址*** 提取码: 1111
设计内容: 图书信息包括:书号、书名、作者名、分类号、出版社、出版时间、价格等。 设计功能: 1、系统以菜单方式工作 2、图书信息录入功能(图书信息用文件保存)--输入 3、图书信息的功能(插入、删除、修改) 4、图书信息浏览功能(按书号、书名、出版时间、价格等排序输出)。 5、图书信息查询功能(按书号、书名、作者名、出版社查询,提供模糊查询的功能)
***隐藏网址*** 提取码: 1111
设计内容: 实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。 设计功能: 1、能够完成对设备的录入和修改 2、对设备进行分类统计 3、设备的破损耗费和遗损处理 4、设备的查询 要求:采用文件方式存储数据,系统以菜单方式工作
***隐藏网址*** 提取码: 1111
设计内容: 设计一个学生选修课程系统,假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。 设计功能: 1、系统以菜单方式工作 2、课程信息录入功能(课程信息用文件保存)--输入 3、课程信息的功能(插入、删除、修改) 4、课程信息浏览功能(按课程编号、课程名称、总学时、学分等排序输出)。 5、课程信息查询功能(按课程编号、课程名称、课程性质、开课学期等查询,提供模糊查询的功能) 6、学生选修课程 7、学生选课信息查询
***隐藏网址*** 提取码: 1111
设计内容: 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴1张便条。试设计一个便条管理系统。 设计功能: 1、系统以菜单方式工作 2、便条信息录入功能(便条信息用文件保存)--输入 3、收集到了上个月的所有便条后,读取销售情况 1)计算每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项)
***隐藏网址*** 提取码: 1111
设计内容: 设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 设计功能: (1)查看功能:选择此功能时,列出下列三类选择。 A.办公类 B.个人类 C.商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据 一个结点包括:姓名、电话号码、分类(A 办公类 B 个人类 C 商务类)、电子邮件)。 例如: 杨春 13589664454 商务类 chuny@126.com 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能: 能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能: 选中某个人的姓名时,可对此人的相应数据进行修改 (5)删除功能: 选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
***隐藏网址*** 提取码: 1111
每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。 A、教师信息处理 (1) 输入教师信息 (2) 插入(修改)教师信息: (3) 删除教师信息: (4) 浏览教师信息: 提示:具体功能及操作参考题1。 B、教师数据处理: (1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。 (2) 教师实发工资、应发工资、合计扣款计算。 提示:计算规则如题目。 (3) 教师数据管理 提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件 (4) 教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 (5) 教师综合信息输出 提示:输出教师信息到屏幕。
***隐藏网址***
***隐藏网址***
提取码: 1111求高人解决一道C语言课程设计题
这个你可以参考。#include《stdio.h》 #include《stdlib.h》 #include《string.h》 #define BUFLEN 100 #define LEN 15 #define N 100 struct record{char code;char name; int age; char sex; char time; char add; char dorm;char classes;char major;}stu;int k=1,n,m,ad_key=111; FILE *fp;void readfile();void seek();void modify();void insert();void del();void display();void save();void menu(); int main(){ while(k)menu();system("pause");return 0;} void help(){ printf("\n0.欢迎使用系统帮助!\n");printf("\n1.进入系统后,先刷新学生信息,再查询;\n");printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.增加学生信息后,切记按7保存;\n");printf("\n4.谢谢您的使用!\n");} void readfile(){char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL){ printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s %s",stu.age,stu.major)==8){i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");} void seek() {int i,item,flag;char s1; printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case 1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i《n;i++)if(strcmp(stu.code,s1)==0){flag=1;printf("学生学号 学生姓名 年龄 性别 出生年月 地址 宿舍 班级 专业\n");printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %10s %10s\n",stu.age,stu.major);}if(flag==0)printf("该学号不存在!\n"); break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i《n;i++)if(strcmp(stu.name,s1)==0){flag=1;printf("学生学号 学生姓名 年龄 性别 出生年月 地址 宿舍 班级 专业\n");printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %10s %10s\n",stu.age,stu.major);}if(flag==0)printf("该姓名不存在!\n"); break;case 3:return;default:printf("请在1-3之间选择\n");}}} /*********key*********/key_2(){ int p; if((fp=fopen("key_2","r"))==NULL) { fp=fopen("key_2","w+"); fwrite(&ad_key,sizeof(int),1,fp); fclose(fp); } fp=fopen("key_2","r"); fread(&ad_key,sizeof(int),1,fp); fclose(fp); printf("请输入管理员密码:\n");error9:scanf("%d",&p); if(p!=ad_key) { printf("对不起您输入的密码有误,请重新输入!\n"); goto error9; } else modify();}change_key2(){ int p; if((fp=fopen("key_2","r"))==NULL) { fp=fopen("key_2","w+"); fwrite(&ad_key,sizeof(int),1,fp); fclose(fp); } fp=fopen("key_2","r"); fread(&ad_key,sizeof(int),1,fp); fclose(fp); printf("请输入管理员密码:\n");error9:scanf("%d",&p); if(p!=ad_key) { printf("对不起您输入的密码有误,请重新输入!\n"); goto error9; } else {printf("请输入新的管理员密码:\n"); scanf("%d",&ad_key); fp=fopen("key_2","w"); fwrite(&ad_key,sizeof(int),1,fp); fclose(fp); printf("修改成功!!!!!\n");}}void modify() {int i,item,num;char sex1; printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i《n;i++)if(strcmp(stu.code,s1)==0) num=i;printf("------------------\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("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("请输入新的姓名:\n");scanf("%s",s2);strcpy(stu.name,s2); break;case 2:printf("请输入新的年龄:\n");scanf("%d",&stu.age);break;case 3:printf("请输入新的性别:\n");scanf("%s",sex1);strcpy(stu.sex,sex1); break;case 4:printf("请输入新的出生年月:\n");scanf("%s",s2);strcpy(stu.time,s2); break;case 5:printf("请输入新的地址:\n");scanf("%s",s2);strcpy(stu.add,s2); break;case 6:printf("请输入新的宿舍号码:\n");scanf("%s",s2);strcpy(stu.dorm,s2); break;case 7:printf("请输入新的班级:\n");scanf("%s",s2);case 8:printf("请输入新的专业:\n");scanf("%s",s2);strcpy(stu.classes,s2); break;case 9:return;default:printf("请在1-9之间选择\n");}}} void sort(){int i,j,*p,*q,s; char temp;for(i=0;i《n-1;i++){for(j=n-1;j》i;j--)if(strcmp(stu.code)》0){strcpy(temp,stu.code);strcpy(stu.code);strcpy(stu.code,temp);strcpy(temp,stu.name);strcpy(stu.name);strcpy(stu.name,temp);strcpy(temp,stu.sex);strcpy(stu.sex);strcpy(stu.sex,temp);strcpy(temp,stu.time);strcpy(stu.time);strcpy(stu.time,temp);strcpy(temp,stu.add);strcpy(stu.add);strcpy(stu.add,temp);strcpy(temp,stu.dorm);strcpy(stu.dorm);strcpy(stu.dorm,temp);strcpy(temp,stu.classes);strcpy(stu.classes);strcpy(stu.classes,temp);strcpy(stu.major,temp); p=&stu.age; q=&stu.age; s=*q; *q=*p; *p=s;}}} void insert(){ int i=n,j,flag;printf("请输入待增加的学生数:\n");scanf("%d",&m);do{ flag=1;while(flag){flag=0;printf("请输入第 %d 个学生的学号:\n",i+1);scanf("%s",stu.code);for(j=0;j《i;j++)if(strcmp(stu.code)==0){printf("已有该学号,请检查后重新录入!\n");flag=1;break; }}printf("请输入第 %d 个学生的姓名:\n",i+1);scanf("%s",stu.name);printf("请输入第 %d 个学生的年龄:\n",i+1);scanf("%d",&stu.age);printf("请输入第 %d 个学生的性别:\n",i+1);scanf("%s",stu.sex);printf("请输入第 %d 个学生的出生年月:(格式:年.月)\n",i+1);scanf("%s",stu.time);printf("请输入第 %d 个学生的地址:\n",i+1);scanf("%s",stu.add);printf("请输入第 %d 个学生的宿舍:\n",i+1);scanf("%s",stu.dorm);printf("请输入第 %d 个学生的班级:\n",i+1);scanf("%s",stu.classes);printf("请输入第 %d 个学生的专业:\n",i+1);scanf("%s",stu.major);if(flag==0){ i=i;i++;}}while(i《n+m);n+=m;printf("录入完毕!\n\n");sort();} void del(){int i,j,flag=0;char s1;printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i《n;i++)if(strcmp(stu.code,s1)==0){ flag=1;for(j=i;j《n-1;j++)stu;}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}} void display(){ int i;printf("所有学生的信息为:\n");printf("学生学号 学生姓名 年龄 性别 出生年月 地址 宿舍 班级 专业\n");printf("--------------------------------------------------------------------\n");for(i=0;i《n;i++){ printf("%6s %7s %5d %5s %9s %8s %10s %10s %10s\n",stu.age,stu.major);}} void save(){int i;FILE *fp;fp=fopen("student.txt","w"); for(i=0;i《n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s %s\n",stu.age,stu.major);}fclose(fp);} void menu(){int num;printf(" 学生信息管理系统\n"); printf("╔═════════════════════════════╗\n"); printf("║ 欢迎使用!! ║\n"); printf("║┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈║\n"); printf("║ 0.系统帮助及说明 1.刷新学生信息 ║\n"); printf("║ 2.查询学生信息 3.修改学生信息 ║\n"); printf("║ 4.增加学生信息 5.删除学生信息 ║\n"); printf("║ 6.显示当前信息 7.保存学生信息 ║\n"); printf("║ 8.修改密码 9.退出系统 ║\n"); printf("║┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈║\n"); printf("╚═════════════════════════════╝\n");printf("请选择菜单编号:");scanf("%d",#);switch(num){ case 0:help();break;case 1:readfile();break;case 2:seek();break;case 3:key_2();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:change_key2();break;case 9:k=0;break;default:printf("请在0-9之间选择\n");}}
C语言程序设计——课程设计——通讯录管理系统
/*10.3.2源程序*/ /******头文件(.h)***********/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*标准库函数*/ #include "string.h"/*字符串函数*/ #include "ctype.h" /*字符操作函数*/ #define M 50 /*定义常数表示记录数*/ typedef struct /*定义数据结构*/ { char name; /*姓名*/ char units; /*单位*/ char tele; /*电话*/ }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 copy(); /*文件复制*/ void print(ADDRESS temp); /*显示单条记录*/ int find(ADDRESS t,int n,char *s) ; /*查找函数*/ int menu_select(); /*主菜单函数*/ /******主函数开始*******/ main() { int i; ADDRESS adr; /*定义结构体数组*/ int length; /*保存记录长度*/ clrscr(); /*清屏*/ 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:copy();break; /*复制文件*/ case 11:exit(0); /*如返回值为11则程序结束*/ } } } /*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select() { char s; int c; gotoxy(1,25);/*将光标定为在第25行,第1列*/ printf("press any key enter menu......\n");/*提示压任意键继续*/ getch(); /*读入任意字符*/ clrscr(); /*清屏*/ gotoxy(1,1); printf("********************MENU*********************\n\n"); printf(" 0. Enter record\n"); printf(" 1. List the file\n"); printf(" 2. Search record on name\n"); printf(" 3. Delete a record\n"); printf(" 4. add record \n"); printf(" 5. Save the file\n"); printf(" 6. Load the file\n"); printf(" 7. display record on order\n"); printf(" 8. sort to make new file\n"); printf(" 9. Quick seek record\n"); printf(" 10. copy the file to new file\n"); printf(" 11. Quit\n"); printf("***********************************************\n"); do{ printf("\n Enter you choice(0~11):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/ c=atoi(s); /*将输入的字符串转化为整型数*/ }while(c《0||c》11); /*选择项不在0~11之间重输*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/ } /***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enter(ADDRESS t) { int i,n; char *s; clrscr(); /*清屏*/ printf("\nplease input num \n"); /*提示信息*/ scanf("%d",&n); /*输入记录数*/ printf("please input record \n"); /*提示输入记录*/ printf("name unit telephone\n"); printf("------------------------------------------------\n"); for(i=0;i《n;i++) { scanf("%s%s%s",t.tele); /*输入记录*/ printf("----------------------------------------------\n"); } return n; /*返回记录条数*/ } /*显示记录,参数为记录数组和记录条数*/ void list(ADDRESS t,int n) { int i; clrscr(); printf("\n\n*******************ADDRESS******************\n"); printf("name unit telephone\n"); printf("------------------------------------------------\n"); for(i=0;i《n;i++) printf("%-20s%-30s%-10s\n",t.tele); if((i+1)%10==0) /*判断输出是否达到10条记录*/ { printf("Press any key continue...\n"); /*提示信息*/ getch(); /*压任意键继续*/ } printf("************************end*******************\n"); } /*查找记录*/ void search(ADDRESS t,int n) { char s; /*保存待查找姓名字符串*/ int i; /*保存查找到结点的序号*/ clrscr(); /*清屏*/ printf("please search name\n"); scanf("%s",s); /*输入待查找姓名*/ i=find(t,n,s); /*调用find函数,得到一个整数*/ if(i》n-1) /*如果整数i值大于n-1,说明没找到*/ printf("not found\n"); else print(t); /*找到,调用显示函数显示记录*/ } /*显示指定的一条记录*/ void print(ADDRESS temp) { clrscr(); printf("\n\n********************************************\n"); printf("name unit telephone\n"); printf("------------------------------------------------\n"); printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele); printf("**********************end***********************\n"); } /*查找函数,参数为记录数组和记录条数以及姓名s */ int find(ADDRESS t,int n,char *s) { int i; for(i=0;i《n;i++)/*从第一条记录开始,直到最后一条*/ { if(strcmp(s,t.name)==0) /*记录中的姓名和待比较的姓名是否相等*/ return i; /*相等,则返回该记录的下标号,程序提前结结束*/ } return i; /*返回i值*/ } /*删除函数,参数为记录数组和记录条数*/ int delete(ADDRESS t,int n) { char s; /*要删除记录的姓名*/ int ch=0; int i,j; printf("please deleted name\n"); /*提示信息*/ scanf("%s",s);/*输入姓名*/ i=find(t,n,s); /*调用find函数*/ if(i》n-1) /*如果i》n-1超过了数组的长度*/ printf("no found not deleted\n"); /*显示没找到要删除的记录*/ else { print(t); /*调用输出函数显示该条记录信息*/ printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/ scanf("%d",&ch); /*输入一个整数0或1*/ if(ch==1) /*如果确认删除整数为1*/ { for(j=i+1;j《n;j++) /*删除该记录,实际后续记录前移*/ { strcpy(t.name); /*将后一条记录的姓名拷贝到前一条*/ strcpy(t.units); /*将后一条记录的单位拷贝到前一条*/ strcpy(t.tele); /*将后一条记录的电话拷贝到前一条*/ } n--; /*记录数减1*/ } } return n; /*返回记录数*/ } /*插入记录函数,参数为结构体数组和记录数*/ int add(ADDRESS t,int n)/*插入函数,参数为结构体数组和记录数*/ { ADDRESS temp; /*新插入记录信息*/ int i,j; char s; /*确定插入在哪个记录之前*/ printf("please input record\n"); printf("************************************************\n"); printf("name unit telephone\n"); printf("--------------------------------------------------\n"); scanf("%s%s%s",temp.name,temp.units,temp.tele); /*输入插入信息*/ printf("------------------------------------------------\n"); printf("please input locate name \n"); scanf("%s",s); /*输入插入位置的姓名*/ i=find(t,n,s); /*调用find,确定插入位置*/ for(j=n-1;j》=i;j--) /*从最后一个结点开始向后移动一条*/ { strcpy(t.name); /*当前记录的姓名拷贝到后一条*/ strcpy(t.units); /*当前记录的单位拷贝到后一条*/ strcpy(t.tele); /*当前记录的电话拷贝到后一条*/ } strcpy(t.name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/ strcpy(t.units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/ strcpy(t.tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/ n++; /*记录数加1*/ return n; /*返回记录数*/ } /*保存函数,参数为结构体数组和记录数*/ void save(ADDRESS t,int n) { int i; FILE *fp; /*指向文件的指针*/ if((fp=fopen("record.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/ { printf("can not open file\n");/*没打开*/ exit(1); /*退出*/ } printf("\nSaving file\n"); /*输出提示信息*/ fprintf(fp,"%d",n); /*将记录数写入文件*/ fprintf(fp,"\r\n"); /*将换行符号写入文件*/ for(i=0;i《n;i++) { fprintf(fp,"%-20s%-30s%-10s",t.tele);/*格式写入记录*/ fprintf(fp,"\r\n"); /*将换行符号写入文件*/ } fclose(fp);/*关闭文件*/ printf("****save success***\n"); /*显示保存成功*/ } /*读入函数,参数为结构体数组*/ int load(ADDRESS t) { int i,n; FILE *fp; /*指向文件的指针*/ if((fp=fopen("record.txt","rb"))==NULL)/*打开文件*/ { printf("can not open file\n"); /*不能打开*/ exit(1); /*退出*/ } fscanf(fp,"%d",&n); /*读入记录数*/ for(i=0;i《n;i++) fscanf(fp,"%20s%30s%10s",t.tele); /*按格式读入记录*/ fclose(fp); /*关闭文件*/ printf("You have success read data from file!!!\n"); /*显示保存成功*/ return n; /*返回记录数*/ } /*按序号显示记录函数*/ void display(ADDRESS t) { int id,n; FILE *fp; /*指向文件的指针*/ if((fp=fopen("record.txt","rb"))==NULL) /*打开文件*/ { printf("can not open file\n"); /*不能打开文件*/ exit(1); /*退出*/ } printf("Enter order number...\n"); /*显示信息*/ scanf("%d",&id); /*输入序号*/ fscanf(fp,"%d",&n); /*从文件读入记录数*/ if(id》=0&&id《n) /*判断序号是否在记录范围内*/ { fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/ print(t); /*调用输出函数显示该记录*/ printf("\r\n"); } else printf("no %d number record!!!\n ",id); /*如果序号不合理显示信息*/ fclose(fp); /*关闭文件*/ } /*排序函数,参数为结构体数组和记录数*/ void sort(ADDRESS t,int n) { int i,j,flag; ADDRESS temp; /*临时变量做交换数据用*/ for(i=0;i《n;i++) { flag=0; /*设标志判断是否发生过交换*/ for(j=0;j《n-1;j++) if((strcmp(t.name))》0) /*比较大小*/ { flag=1; strcpy(temp.name,t.name); /*交换记录*/ strcpy(temp.units,t.units); strcpy(temp.tele,t.tele); strcpy(t.name); strcpy(t.units); strcpy(t.tele); strcpy(t.name,temp.name); strcpy(t.units,temp.units); strcpy(t.tele,temp.tele); } if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/ } printf("sort sucess!!!\n"); /*显示排序成功*/ } /*快速查找,参数为结构体数组和记录数*/ void qseek(ADDRESS t,int n) { char s; int l,r,m; printf("\nPlease sort before qseek!\n"); /*提示确认在查找之前,记录是否已排序*/ printf("please enter name for qseek\n"); /*提示输入*/ scanf("%s",s); /*输入待查找的姓名*/ l=0;r=n-1; /*设置左边界与右边界的初值*/ while(l《=r) /*当左边界《=右边界时*/ { m=(l+r)/2; /*计算中间位置*/ if(strcmp(t.name,s)==0) /*与中间结点姓名字段做比较判是否相等*/ { print(t); /*如果相等,则调用print函数显示记录信息*/ return ; /*返回*/ } if(strcmp(t.name,s)《0) /*如果中间结点小*/ l=m+1; /*修改左边界*/ else r=m-1; /*否则,中间结点大,修改右边界*/ } if(l》r) /*如果左边界大于右边界时*/ printf("not found\n"); /*显示没找到*/ } /*复制文件*/ void copy() { char outfile; /*目标文件名*/ int i,n; ADDRESS temp; /*定义临时变量*/ FILE *sfp,*tfp; /*定义指向文件的指针*/ clrscr();/*清屏*/ if((sfp=fopen("record.txt","rb"))==NULL) /*打开记录文件*/ { printf("can not open file\n"); /*显示不能打开文件信息*/ exit(1); /*退出*/ } printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示信息*/ scanf("%s",outfile); /*输入目标文件名*/ if((tfp=fopen(outfile,"wb"))==NULL) /*打开目标文件*/ { printf("can not open file\n"); /*显示不能打开文件信息*/ exit(1); /*退出*/ } fscanf(sfp,"%d",&n); /*读出文件记录数*/ fprintf(tfp,"%d",n);/*写入目标文件数*/ fprintf(tfp,"\r\n"); /*写入换行符*/ for(i=0;i《n;i++) { fscanf(sfp,"%20s%30s%10s\n",temp.units, temp.tele); /*读入记录*/ fprintf(tfp,"%-20s%-30s%-10s\n",temp.name, temp.tele); /*写入记录*/ fprintf(tfp,"\r\n"); /*写入换行符*/ } fclose(sfp); /*关闭源文件*/ fclose(tfp); /*关闭目标文件*/ printf("you have success copy file!!!\n"); /*显示复制成功*/ }
C语言课程设计
/******头文件(.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; /*姓名*/ char units; /*单位*/ char tele; /*电话*/ char m_ph; //手机 char rela; //关系 char email; //邮箱 char qq; //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; /*定义结构体数组*/ 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; 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; system("cls"); /*清屏*/ int flag=1; for(;;) { flag = 1; system("cls"); /*清屏*/ printf("\n请输入记录数:\n"); /*提示信息*/ scanf("%s", #); /*输入记录数*/ fflush(stdin); for(int nima = 0; num; nima++) { if (num 》 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.qq); /*输入记录*/ fflush(stdin); for(int k=0;k《=19;k++) { if((t《=’Z’)) { printf("电话输入错误!请重新输入联系人信息\n"); i--; break; } if((t《=’Z’)) { printf("手机输入错误!请重新输入联系人信息\n"); i--; break; } if((t《=’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.qq); if((i+1)%10==0) /*判断输出是否达到10条记录*/ { printf("按任意键显示下一页\n"); /*提示信息*/ getch(); /*按任意键继续*/ } printf("*********************************结束***********************************\n");}/*查找记录*/void search(ADDRESS t,int n){ char s; /*保存待查找姓名字符串*/ 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); /*找到,调用显示函数显示记录*/}/*显示指定的一条记录*/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.name)==0) /*记录中的姓名和待比较的姓名是否相等*/ return i; /*相等,则返回该记录的下标号,程序提前结结束*/ } return i; /*返回i值*/ getch();}/*删除函数,参数为记录数组和记录条数*/int Delete(ADDRESS t,int n){ char s; /*要删除记录的姓名*/ 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); /*调用输出函数显示该条记录信息*/ printf("确定删除?(Y/N)\n"); /*确认是否要删除*/ scanf("%c",&ch); /*输入一个整数0或1*/ if(ch==’y’ || ch==’Y’) /*如果确认删除输入y*/ { for(j=i+1;j《n;j++) /*删除该记录,实际后续记录前移*/ { strcpy(t.name); /*将后一条记录的姓名拷贝到前一条*/ strcpy(t.units); /*将后一条记录的单位拷贝到前一条*/ strcpy(t.tele); /*将后一条记录的电话拷贝到前一条*/ strcpy(t.m_ph); /*将后一条记录的手机拷贝到前一条*/ strcpy(t.rela); /*将后一条记录的关系拷贝到前一条*/ strcpy(t.email); /*将后一条记录的邮箱拷贝到前一条*/ strcpy(t.qq); /*将后一条记录的qq拷贝到前一条*/ } printf("删除成功!\n"); n--; /*记录数减1*/ } } getch(); return n; /*返回记录数*/}/*插入记录函数,参数为结构体数组和记录数*/int add(ADDRESS t,int n)/*插入函数,参数为结构体数组和记录数*/{ ADDRESS temp; /*新插入记录信息*/ int i,j,flag; char s; /*确定插入在哪个记录之前*/ 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.name); /*当前记录的姓名拷贝到后一条*/ strcpy(t.units); /*当前记录的单位拷贝到后一条*/ strcpy(t.tele); /*当前记录的电话拷贝到后一条*/ strcpy(t.m_ph); /*当前记录的手机拷贝到后一条*/ strcpy(t.rela); /*当前记录的关系拷贝到后一条*/ strcpy(t.email); /*当前记录的邮箱拷贝到后一条*/ strcpy(t.qq); /*当前记录的qq拷贝到后一条*/ } strcpy(t.name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/ strcpy(t.units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/ strcpy(t.tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/ strcpy(t.m_ph,temp.m_ph); /*将新插入记录的手机拷贝到第i个位置*/ strcpy(t.rela,temp.rela); /*将新插入记录的关系拷贝到第i个位置*/ strcpy(t.email,temp.email); /*将新插入记录的邮箱拷贝到第i个位置*/ strcpy(t.qq,temp.qq); /*将新插入记录的qq拷贝到第i个位置*/ n++; /*记录数加1*/ printf("添加成功!!!\n"); getch(); return n; /*返回记录数*/}/*保存函数,参数为结构体数组和记录数*/void save(ADDRESS t,int n){ int i; char outfile; 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.qq);/*格式写入记录*/ fprintf(fp,"\r\n"); /*将换行符号写入文件*/ } fclose(fp);/*关闭文件*/ printf("****保存成功!****\n"); /*显示保存成功*/ getch();}/*载入函数,参数为结构体数组*/int load(ADDRESS t){ int i,n; char outfile; 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.tele, t.qq); /*按格式读入记录*/ fclose(fp); /*关闭文件*/ printf("从文件读入数据成功!!!\n"); /*显示保存成功*/ getch(); return n; /*返回记录数*/ }/*按序号显示记录函数*/void display(ADDRESS t){ int id,n; char outfile; 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); /*调用输出函数显示该记录*/ 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.name))》0) /*比较大小*/ { flag=1; strcpy(temp.name,t.name); /*交换记录*/ strcpy(temp.units,t.units); strcpy(temp.tele,t.tele); strcpy(temp.m_ph,t.m_ph); strcpy(temp.rela,t.rela); strcpy(temp.email,t.email); strcpy(temp.qq,t.qq); strcpy(t.name); strcpy(t.units); strcpy(t.tele); strcpy(t.m_ph); strcpy(t.rela); strcpy(t.email); strcpy(t.qq); strcpy(t.name,temp.name); strcpy(t.units,temp.units); strcpy(t.tele,temp.tele); strcpy(t.m_ph,temp.m_ph); strcpy(t.rela,temp.rela); strcpy(t.email,temp.email); strcpy(t.qq,temp.qq); } if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/ } printf("排序成功!!!\n"); /*显示排序成功*/}/*快速查找,参数为结构体数组和记录数*/void qseek(ADDRESS t,int n){ char s; 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.name,s)==0) /*与中间结点姓名字段做比较判是否相等*/ { print(t); /*如果相等,则调用print函数显示记录信息*/ return ; /*返回*/ } if(strcmp(t.name,s)《0) /*如果中间结点小*/ l=m+1; /*修改左边界*/ else r=m-1; /*否则,中间结点大,修改右边界*/ } if(l》r) /*如果左边界大于右边界时*/ printf("未找到!\n"); /*显示没找到*/ getch();}
c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包括三个成
#include 《stdio.h》#include 《stdlib.h》#define STU_NUM 10 /*宏定义学生的数量*/struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/{char stu_id; /*学生学号;*/float score; /*三门课成绩;*/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.total){stud = stu;stu;stu = stud;}}}int main( ){student stu; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*//*输入这十个学生的相关信息*/for(int i = 0; i《STU_NUM; i++){printf("请输入第%d个学生的学号:",i+1);scanf("%s",&stu.stu_id);printf("输入第%d个学生的数学成绩:",i+1);scanf("%f",&stu);printf("输入第%d个学生的英语成绩:",i+1);scanf("%f",&stu);printf("输入第%d个学生的计算机成绩:",i+1);scanf("%f",&stu);stu;stu.total/3;}printf("\n");SortScore(stu,STU_NUM);/*调用排序函数*//*输出排序后的各学生的成绩*/for(i = 0 ; i 《 STU_NUM; i++){printf("序号: %d\t",i);printf("学号:%s\t",stu.stu_id);printf("数学:%f\t",stu);printf("英语:%f\t",stu);printf("计算机:%f\t",stu);printf("平均成绩:%f\t",stu.aver);printf("总分:%f\t",stu.total);printf("\n\n");}return 0;}注:(源程序中主要标识符含义说明)#define STU_NUM 10 /*宏定义学生的数量*/struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/{char stu_id; /*学生学号;*/float score; /*三门课成绩;*/float total; /*总成绩;*/float aver; /*平均成绩;*/}
C语言课程设计 题目11:基于结构体数组的学生成绩管理系统
#include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ { char num; /*学号*/ char name; /*姓名*/ int score; /*成绩*/ }Student; Student stu; /*结构体数组变量*/ int menu_select() /*菜单函数*/ { char c; do{ system("cls"); /*运行前清屏*/ printf("\t\t****Students’ Grade Management System****\n"); /*菜单选择*/ printf("\t\t | 1. Input Records |\n"); printf("\t\t | 2. Display All Records |\n"); printf("\t\t | 3. Sort |\n"); printf("\t\t | 4. Insert a Record |\n"); printf("\t\t | 5. Delete a Record |\n"); printf("\t\t | 6. Query |\n"); printf("\t\t | 7. Statistic |\n"); printf("\t\t | 8. Add Records from a Text File|\n"); printf("\t\t | 9. Write to a Text file |\n"); printf("\t\t | 0. Quit |\n"); printf("\t\t*****************************************\n"); printf("\t\t\tGive your Choice(0-9):"); c=getchar(); /*读入选择*/ }while(c’9’); return(c-’0’); /*返回选择*/ } int Input(Student stud,int n) /*输入若干条记录*/ {int i=0; char sign,x.score); gets(x); /*清除多余的输入*/ printf("\t\t\tany more records?(Y/N)"); scanf("\t\t\t%c",&sign); /*输入判断*/ i++; } return(n+i); } void Display(Student stud,int n) /*显示所有记录*/ { int i; printf("\t\t\t-----------------------------------\n"); /*格式头*/ printf("\t\t\tnumber name score\n"); printf("\t\t\t-----------------------------------\n"); for(i=1;i《n+1;i++) /*循环输入*/ { printf("\t\t\t%-16s%-15s%d\n",stud.score); if(i》1&&i%10==0) /*每十个暂停*/ {printf("\t\t\t-----------------------------------\n"); /*格式*/ printf("\t\t\t"); system("pause"); printf("\t\t\t-----------------------------------\n"); } } printf("\t\t\t"); system("pause"); } void Sort_by_num(Student stud,int n) /*按学号排序*/ { int i,j,*p,*q,s; char t; for(i=0;i《n-1;i++) /*冒泡法排序*/ for(j=0;j《n-1-i;j++) if(strcmp(stud.num)》0) {strcpy(t,stud.score; s=*p; *p=*q; *q=s; } } int Insert_a_record(Student stud,int n) /*插入一条记录*/ {char x.score); gets(x); n++; Sort_by_num(stud,n); /*调用排序函数*/ printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/ return(n); } int Delete_a_record(Student stud,int n) /*按姓名查找,删除一条记录*/ { char s; int i=0,j; printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/ scanf("%s",s); while(strcmp(stud.name,s)!=0&&i《n) i++; /*查找判断*/ if(i==n) { printf("\t\t\tnot find!\n"); /*返回失败信息*/ return(n); } for(j=i;j《n-1;j++) /*删除操作*/ { strcpy(stud.num); strcpy(stud.name); stud.score; } printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/ return(n-1); } void Query_a_record(Student stud,int n) /*查找并显示一个记录*/ { char s; int i=0; printf("\t\t\tinput his(her) name:"); /*交互式输入*/ scanf("\t\t\t%s",s); while(strcmp(stud.name,s)!=0&&i《n) i++; /*查找判断*/ if(i==n) { printf("\t\t\tnot find!\n"); /*输入失败信息*/ return; } printf("\t\t\this(her) number:%s\n",stud.num); /*输出该学生信息*/ printf("\t\t\this(her) score:%d\n",stud.score); } void Statistic(Student stud,int n) /*新增功能,输出统计信息*/ { int i,j=0,k=0,sum=0; float aver; /*成绩平均值*/ for(i=0;i《n;i++) /*循环输入判断*/ { sum+=stud.score; if(stud.score) j=i; if(stud.score) k=i; } aver=1.0*sum/n; printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/ printf("\t\t\tthe hignest score:\n"); /*最高分*/ printf("\t\t\tnumber:%s name:%s score:%d\n",stud.score); printf("\t\t\tthe lowest score:\n"); /*最低分*/ printf("\t\t\tnumber:%s name:%s score:%d\n",stud.score); printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/ } int AddfromText(Student stud,int n) /*从文件中读入数据*/ { int i=0,num; FILE *fp; /*定义文件指针*/ char filename; /*定义文件名*/ printf("\t\t\tInput the filename:"); scanf("\t\t\t%s",filename); /*输入文件名*/ if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/ { printf("\t\t\tcann’t open the file\n"); /*打开失败信息*/ printf("\t\t\t"); system("pause"); return(n); } fscanf(fp,"%d",#); /*读入总记录量*/ while(i《num) /*循环读入数据*/ { fscanf(fp,"%s%s%d",stud.score); i++; } n+=num; fclose(fp); /*关闭文件*/ printf("\t\t\tSuccessed!\n"); printf("\t\t\t"); system("pause"); return(n); } void WritetoText(Student stud,int n) /*将所有记录写入文件*/ { int i=0; FILE *fp; /*定义文件指针*/ char filename; /*定义文件名*/ printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/ printf("\t\t\tInput the filename:"); scanf("\t\t\t%s",filename); if((fp=fopen(filename,"w"))==NULL) /*打开文件*/ { printf("\t\t\tcann’t open the file\n"); system("pause"); return; } fprintf(fp,"%d\n",n); /*循环写入数据*/ while(i《n) { fprintf(fp,"%-16s%-15s%d\n",stud.score); i++; } fclose(fp); /*关闭文件*/ printf("Successed!\n"); /*返回成功信息*/ } void main() /*主函数*/ { int n=0; for(;;) { switch(menu_select()) /*选择判断*/ { case 1: printf("\t\t\tInput Records\n"); /*输入若干条记录*/ n=Input(stu,n); break; case 2: printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/ Display(stu,n); break; case 3: printf("\t\t\tSort\n"); Sort_by_num(stu,n); /*按学号排序*/ printf("\t\t\tSort Suceessed!\n"); printf("\t\t\t"); system("pause"); break; case 4: printf("\t\t\tInsert a Record\n"); n=Insert_a_record(stu,n); /*插入一条记录*/ printf("\t\t\t"); system("pause"); break; case 5: printf("\t\t\tDelete a Record\n"); n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/ printf("\t\t\t"); system("pause"); break; case 6: printf("\t\t\tQuery\n"); Query_a_record(stu,n); /*查找并显示一个记录*/ printf("\t\t\t"); system("pause"); break; case 7: printf("\t\t\tStatistic\n"); Statistic(stu,n); /*新增功能,输出统计信息*/ printf("\t\t\t"); system("pause"); break; case 8: printf("\t\t\tAdd Records from a Text File\n"); n=AddfromText(stu,n); /*新增功能,输出统计信息*/ break; case 9: printf("\t\t\tWrite to a Text file\n"); WritetoText(stu,n); /*循环写入数据*/ printf("\t\t\t"); system("pause"); break; case 0: printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/ printf("\t\t\t"); system("pause"); exit(0); } } }
c语言课程设计 图书管理系统
高级语言程序设计(2)课程设计 一 程序设计说明书【设计题目】 图书馆借阅管理【问题描述】图书馆,适合用C++面向对象的功能来描述。图书馆管理系统分为借书、还书、图书管理和读者服务等四个部分。设计一个读者类Reader,记录每个读者基本信息;读者库类Rdatabase,记录所有读者信息;图书类Book, 记录每本书的基本信息;图书库类Bdatabase, 记录所有图书信息。【基本要求】1读者库类RDatabase中,其构造函数中,将read.txt文件中所有读入读者记录rede中的所有未删记录写入到read.txt中。2图书库类BDatabase中,其构造函数中,将book.txt文件中所有读入图书记录book中的所有未删记录写入到book.txt中。3 利用构造函数完成读者和图书数据初始化,完成内存分配。程序结束前,析构函数完成所申请的堆内存空间。4 编写主函数,对所编写的矩阵类进行全面测试。要求用户界面采用菜单方式。测试中需要读者和图书数据通过I/O流从磁盘文件读入,同时显示在屏幕上。得到的数据通过I/O流写入磁盘文件保存,同时显示在屏幕上。5 源程序中要有充分的注释,报告中要有详细的流程图和文字材料。【类的设计】该程序包含了四个类,如下:1.Reader类,有读者的基本管理功能,具有以下私有数据:int tag;//删除标记 1:已删;0:未删int no;//读者编号char name;//读者姓名int borbook;//所借图书2.读者库类Rdatabase, 具有以下私有数据:int top;//读者记录指针Reader read;//读者记录3.图书库类Book,有一本图书的基本功能,有以下私有数据:int tag;//删除标记 1:已删;0:未删int no;//图书编号char name;//书名int onshelf;//是否在架 1在架 0已借4.图书库类BDatabase,有以下私有数据:int top;//图书记录指针Book book;//图书记录【特殊函数的设计说明】构造函数1.Reader类中构造函数Reader(),初始化函数;2.读者库类RDatabase中,其构造函数Rdatabase(),将read.txt文件中所有读入读者记录rede中。3.Book类中构造函数Book(),初始化函数;4.图书库类BDatabase中,其构造函数中,将book.txt文件中所有读入图书记录book中。 拷贝构造函数Reader类中的拷贝构造函数将getname()的返回值读者姓名拷贝到setname()中,Book类中的拷贝构造函数将getname()函数的返回值图书名拷贝到图书名设置函数setname()中。 析构函数1.读者库类RDatabase中,其析构函数~Rdatabase(),将read中的所有未删记录写入到read.txt中;2.图书库类BDatabase中,其析构函数~Bdatabase(),将book中的所有未删记录写入到book.txt中。 运算符重载重载了“=”,当比较读者编号和图书编号时,重载;重载位运算符“〈〈”和“〉〉”等。 【主要函数算法流程图】 【程序的使用方法】1.进入操作页面,按提示操作;2.首先,新增图书和读者信息,之后就可以对以存在的信息进行操作;3.操作当中,可以随时增加,更改和删除图书或读者信息;4.当选择退出时,进行清屏。 二 程序上机调试报告【语法错误及其排除】1.在敲程序时,有很多拼写错误,例好多处把Readdata()误打Readdate();结束的分号,在不同的输入法状态下输入,这些小错误刚开始很难发现,不过有了经验,就很容易了。2.创建新的构造函数时,使用出现了错误。重载构造函数要注意函数的访问权限,结果就不会出现错误。【算法错误及其排除】1.读者类中借书操作函数中,采用循环语句时判断读者已借图书量时for(int i=0;i《Maxbor;i++)误写为for(int i=1;i《Maxbor;i++),使循环发生错误。2.指针使用错误,指针b和r混淆,导致编译错误得到“error C2660: ’retbook’ : function does not take 1 parameters”错误报告。三 程序测试结果【收获及体会】除了课堂外,课程设计是最能学到东西的,最考验人的。在做课程设计这段时间,时刻都感觉自己有好多不懂,要学的太多了!经过这次课程设计,让我对C++这门语言有了更深的认识,操作能力有了提高。要想得到敲的代码运行出来后的满足感,需要耐心细心,毅力以及充沛的体力。只有经过多次,多次编译,再多次运行,才能编写出更好的程序,有时候需要多次的更正才达到所要的运行结果。学习编程,需要多揣摩,实践,实践,再实践,编程技能才能更上一层楼,此外还得多向高手请教!【源程序代码】//********************//图书馆借阅管理//班级://学号://姓名://********************#include《iostream.h》#include《iomanip.h》#include《string.h》#include《fstream.h》const int Maxr=1000;//最多的读者const int Maxb=10000;//最多的图书const int Maxbor=8;//每位读者最多借8本书class Reader //读者类{int tag;//删除标记 1已删;0未删int no;//读者编号char name;//读者姓名int borbook;//所借图书public :Reader(){}//构造函数char *getname(){return name;}//获取读者姓名int gettag(){return tag;}//获取删除标记int getno(){return no;}//获取读者编号void setname(char na)//设置读者姓名{strcpy(name,na);}void delbook(){tag=1;}//设置删除标记void addreader(int n,char *na)//增加读者{tag=0;no=n;strcpy(name,na);for(int i=0;i《Maxbor;i++)borbook=0;}void borrowbook(int bookid)//借书操作{for(int i=0;i《Maxbor;i++){if(borbook==0){borbook=bookid;}}}int retbook(int bookid)//还书操作{for(int i=0;i《Maxbor;i++){if (borbook==bookid){borbook=0;return 1;}}return 0;}void disp()//输出读者信息{cout《《setw(5)《《no《《setw(10)《《name《《"借书编号:";for(int i=0;i,Maxbor;i++)if(borbook!=0)cout《《borbook《《endl;}}; class RDatabase//读者库类{int top;//读者记录指针Reader read;//读者记录public:RDatabase()//构造函数,将reader.txt读到read中{Reader s;top=-1;fstream file("reader.txt",ios::in);while(1){file.read((char*)&s,sizeof(s));if(!file)break;top++;read=s;}file.close();}void clear()//删除所有读者信息{top=-1;}int addreader(int n,char *na)//添加读者,检查是否已存在{Reader *p=query(n);if(p==NULL){top++;read.addreader(n,na);return 1;}return 0;}Reader*query(int readerid)//按编号查找{for(int i=0;i《=top;i++)if(read.gettag==0)return &read;return NULL;}void disp()//删除读者所有信息{for(int i=0;i《=top;i++)read.disp();}void readerdata();//读者库维护~RDatabase()//析构函数,将read写入reader.txt文件中{fstream file("reader.txt",ios::out);for(int i=0;i《=top;i++)if(read.gettag()==0)file.write((char*)&read));file.close();}};void RDatabase::readerdata(){int choice=1;char rname;int readerid;Reader*r;while(choice!=0){cout《《"读者服务 1新增 2更该 3删除 4查找 5显示 6全删 0退出"《《endl;cin》》choice;switch(choice){case 1:cout《《"请输入读者编号:";cin》》readerid;cout《《"读入读者姓名:";cin》》rname;addreader(readerid,rname);break;case 2:cout《《"请输入读者编号:";cin》》readerid;r=query(readerid);if(r==NULL){cout《《"读者不存在"《《endl;break;}cout《《"请输入新读者姓名:";cin》》rname;r-》setname(rname);break;case 3:cout《《"请输入读者编号:";cin》》readerid;r=query(readerid);if(r==NULL){cout《《"读者不存在"《《endl;break;}r-》delbook();break;case 4:cout《《"请输入读者编号:";cin》》readerid;r=query(readerid);if(r==NULL){cout《《"该读者编号不存在"《《endl;break;}case 5:disp();break;case 6:clear();break;}}} class Book//图书类{int tag;//删除标记 1:已删;0:未删int no;//图书编号char name;//书名int onshelf;//是否在架 1在架 0已借public:Book(){}char*getname(){return name;}//获取读者姓名int getno(){return no;}//获取图书编号int gettag(){return tag;}//获取删除标记void setname(char na)//设置书名{strcpy(name,na);}void delbook(){tag=1;}//删除图书void addbook(int n,char*na)//增加图书{tag=0;no=n;strcpy(name,na);onshelf=1;}int borrowbook()//借书操作{if(onshelf==1){onshelf=0;return 1;}return 0;}void retbook()//还书操作{onshelf=1;}void disp()//输出图书{cout《《setw(6)《《no《《setw(18)《《name《《setw(10)《《(onshelf==1?"在架":"已借")《《endl;}}; class BDatabase//图书库类{int top;//图书记录指针Book book;//图书记录public:BDatabase()//构造函数,将book.txt读到book中{Book b;top=-1;fstream file("book.txt",ios::in);while(1){file.read((char*)&b,sizeof(b));if(!file)break;top++;book=b;}file.close();}void clear()//全删{top=-1;}int addbook(int n,char*na)//增加图书{Book*p=query(n);if(p==NULL){top++;book.addbook(n,na);return 1;}cout《《"新增成功!"《《endl;}Book*query(int bookid)//查找图书{for(int i=0;i《=top;i++)if(book.gettag()==0)return NULL;}void bookdata();//图书库维护void disp(){for(int i=0;i《=top;i++)if(book.gettag()==0)book.disp();}~BDatabase()//析构函数,将book写入book.txt文件中{fstream file("book.txt",ios::out);for (int i=0;i《=top;i++)if(book.gettag()==0)file.write((char*)&book));file.close();}};void BDatabase::bookdata(){int choice;char bname;int bookid;Book *b;while(choice!=0){cout《《"图书管理 1新增 2更该 3删除 4查找 5显示 6全删 0退出"《《endl;cin》》choice;switch(choice){case 1:cout《《"输入图书编号:";cin》》bookid;cout《《"输入图书书名:";cin》》bname;addbook(bookid,bname);break;case 2:cout《《"输入图书编号:";cin》》bookid;b=query(bookid);if(b==NULL){cout《《"该图书不存在"《《endl;break;}cout《《"输入新书名:";cin》》bname;b-》setname(bname);cout《《"更名成功!"《《endl;break;case 3:cout《《"输入图书编号:";cin》》bookid;b=query(bookid);if(b==NULL){cout《《"该图书不存在!"《《endl;break;}b-》delbook();break;case 4:cout《《"请输入图书编号:";cin》》bookid;b=query(bookid);if(b==NULL){cout《《"该书不存在!"《《endl;break;}b-》disp();break;case 5:disp();break;case 6:clear();break;}}} void main(){int choice=1,bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB;Book *b;while(choice!=0){cout《《" 1借书 "《《endl;cout《《" 2还书 "《《endl;cout《《" 3图书维护 "《《endl;cout《《" 4读者维护 "《《endl;cout《《" 0离开 "《《endl;cin》》choice;switch(choice){case 1:cout《《"借书,请输入读者编号:";cin》》readerid;cout《《"图书编号:";cin》》bookid;r=ReaderDB.query(readerid);if(r==NULL){cout《《"哈哈,借书成功!";break;}b=BookDB.query(bookid);if(b==NULL){cout《《"不存在该书!"《《endl;break;}if(b-》borrowbook()==0){cout《《"该书已借"《《endl;break;}r-》borrowbook(b-》getno());break;cout《《"借书成功!"《《endl;case 2:cout《《"还书,请输入读者编号:";cin》》readerid;cout《《"请输入图书编号;";cin》》bookid;r=ReaderDB.query(readerid);if(r==NULL){cout《《"不存在该读者!"《《endl;break;}b-》retbook();r-》retbook(b-》getno());break;cout《《"还书成功!"《《endl;case 3:BookDB.bookdata();break;case 4:ReaderDB.readerdata();break;}}}【输出结果】1借书2还书3图书管理4读者服务0退出3图书管理 1新增 2更该 3删除 4查找 5显示 6全删 0退出1输入图书编号:1111输入图书书名:武林外传新增成功!图书管理 1新增 2更该 3删除 4查找 5显示 6全删 0退出1输入图书编号:2222输入图书书名:今夜无眠新增成功!图书管理 1新增 2更该 3删除 4查找 5显示 6全删 0退出01借书2还书3图书管理4读者服务0退出4读者服务 1新增 2更该 3删除 4查找 5显示 6全删 0退出1请输入读者编号:001读入读者姓名:周强读者服务 1新增 2更该 3删除 4查找 5显示 6全删 0退出01借书2还书3图书管理4读者服务0退出1借书,请输入读者编号:001图书编号:1111哈哈,借书成功! 1借书2还书3图书管理4读者服务0退出2还书,请输入读者编号:001请输入图书编号;1111还书成功!1借书2还书3图书管理4读者服务0退出3图书管理 1新增 2更该 3删除 4查找 5显示 6全删 0退出2输入图书编号:2222输入新书名:金庸全集更名成功!Press any key to continue这样可以么?
更多文章:
云南4名失联地质人员均已遇难,这一职业属于高危职业吗?云南地质人员遇难原因是什么
2024年6月1日 07:30