C++公司管理系统源代码
- 格式:doc
- 大小:66.50 KB
- 文档页数:15
c语言学籍管理系统源代码学籍管理系统的背景及意义随着社会的不断发展和教育的普及,学籍管理工作日益被重视。
传统的手工管理学籍的方式效率低下,存在着各种弊端,以致无法满足现代学校管理的需求。
因此,开发一款高效、便捷、可靠的学籍管理系统成为普遍需求,为了提高管理效率、减少工作难度,学籍管理系统被越来越广泛地使用。
本文将介绍一款基于C语言开发的学籍管理系统的源代码。
基本功能该学籍管理系统可以实现学生信息的录入、删除、修改和查询,以及学生的成绩录入、修改和查询。
此外,该系统还具备数据存储和文件读写的功能,能够自动保存学生信息和成绩数据,保障数据的安全性和可靠性。
模块设计该系统按照功能模块划分,主要分为三个模块:学生信息管理模块、学生成绩管理模块和数据存储与文件读写模块。
学生信息管理模块该模块主要实现学生信息的录入、删除、修改和查询等基本功能。
以下为该模块的主要源代码:```struct student {char name[20]; // 姓名int id; // 学号char sex[5]; // 性别char major[20]; // 专业};struct student stu[1000]; // 学生信息结构体数组int num_of_stu = 0; // 学生总数void add_student() { // 添加学生信息printf("请输入学生姓名:");scanf("%s", stu[num_of_stu].name);printf("请输入学生学号:");scanf("%d", &stu[num_of_stu].id);printf("请输入学生性别:");scanf("%s", stu[num_of_stu].sex);printf("请输入学生专业:");scanf("%s", stu[num_of_stu].major);num_of_stu++;printf("添加成功!\n");}void delete_student() { // 删除学生信息int delete_id;printf("请输入要删除的学生学号:");scanf("%d", &delete_id);int index = search_student_by_id(delete_id); if (index == -1) {printf("该学号不存在!\n");return;}for (int i = index; i < num_of_stu - 1; i++) { stu[i] = stu[i + 1];}num_of_stu--;printf("删除成功!\n");}void modify_student() { // 修改学生信息int modify_id;printf("请输入要修改的学生学号:");scanf("%d", &modify_id);int index = search_student_by_id(modify_id); if (index == -1) {printf("该学号不存在!\n");return;}printf("请输入学生姓名:");scanf("%s", stu[index].name);printf("请输入学生学号:");scanf("%d", &stu[index].id);printf("请输入学生性别:");scanf("%s", stu[index].sex);printf("请输入学生专业:");scanf("%s", stu[index].major);printf("修改成功!\n");}int search_student_by_id(int id) { // 根据学号查询学生信息for (int i = 0; i < num_of_stu; i++) {if (stu[i].id == id) {return i;}}return -1;}void query_student() { // 查询学生信息int query_id;printf("请输入要查询的学生学号:");scanf("%d", &query_id);int index = search_student_by_id(query_id);if (index == -1) {printf("该学号不存在!\n");return;}printf("姓名\t学号\t性别\t专业\n");printf("%s\t%d\t%s\t%s\n", stu[index].name,stu[index].id, stu[index].sex, stu[index].major);}```学生成绩管理模块该模块主要实现学生成绩信息的录入、修改和查询等功能。
{#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<malloc.h> #include<time.h> /* 所使用的头文件 */ typedef struct/* 时间结构体定义 */{int hour; int minute; }TIME;typedef struct worker /* 职工结构体定义 */ {char id[10]; char name[10];TIME time[20]; struct worker *next; }worker;int menu_select(); void welcome(); void createInfo(); void createRec(); void listRec(); void searchRec(); void saveRec(); void deleteRec(); void modifyRec(); void loadRec(); void resetPassword(); int fun();worker *head=NULL; writeinfo_flag=0;char password[16]="888888"; struct tm *timeinfo; int main()/* 主菜单 *//* 欢迎界面 */ /* 新建职工信息 */ /* 录入考勤信息 *//* 浏览当天考勤信息 */ /*/ 查询考勤信息 *//* 保存所有信息 *//* 删除考勤信息 */ /* 修改考勤信息 *//* 加载文件信息 *//* 重设密码 *//* 判断输入选择是否正确 *//* 链表头指针 head*//* 信息保存标记 *//* 初始密码 *//* 主函数 */char s[16]; welcome();loadRec();/* 欢迎界面 */ /* 加载文件信息 */printf("\n 提示:\n\n 初始密码为:888888\n"); /* 进入系统密码管理*/ printf("\t\t\t\n\n\n\n\n 请输入密码,进去系统( 密码不超过15 个字符):"); scanf("%s",s);while(strcmp(password,s)!=0){printf("\n 密码错误,请重新输入:"); scanf("%s",s);} system("cls");for(;;) /* 菜单循环*/{ switch(menu_select()) {case 0:system("cls");createInfo();break;case 1:system("cls");createRec();break;case 2:system("cls");listRec();break;case 3:system("cls");searchRec();break;case 4:system("cls");deleteRec();break;case 5:system("cls");modifyRec();break;case 6:system("cls");saveRec();break;case 7:system("cls");resetPassword();break;case 8:system("cls");if(writeinfo_flag==1)saveRec();return 0; default:{printf("\n 选择错误,请按回车键返回后,重新输入(0~8)!"); getchar();getchar();system("cls"); break;}}}return 0;}/* 选择菜单*/ int menu_select(){worker *p=head;int c,k;time_t nowtime; time( &nowtime );timeinfo = localtime( &nowtime );printf("\t\t** ************ 选择菜单************* *\t");/* 在菜单中显示当前时间*/if(timeinfo->tm_wday==0){printf(" 时间:星期天");printf(" %d:%d",timeinfo->tm_hour,timeinfo->tm_min);}elseprintf(" 时间: 星期%d %d:%d",timeinfo->tm_wday,timeinfo->tm_hour,timeinfo->tm_min);printf("\n ------------------------------------------------------------------ ");printf("\t\t\t0. 新建职工信息\n");printf("\t\t1. 录入考勤信息\n");printf("\t\t2. 浏览考勤信息\n");printf("\t\t3. 查询考勤信息\n");printf("\t\t4. 删除考勤信息\n");printf("\t\t5. 修改考勤信息\n");printf("\t\t6. 保存所有信息\n");printf("\t\t7. 重设密码\n");printf("\t\t8. 退出(退出后信息会自动保存在磁盘中)\n\t\t( 任何情况下按Ctrl+C 退出程序)\n ”);printf("\n ------------------------------------------------------------------ ");printf("\n\n 请输入您的选择(0~8):");scanf("%d",&c); if(timeinfo->tm_wday==0&&p!=NULL) /* 每周周日所有考勤信息初始化*/{for(k=0;k<20;k++){p->time[k].hour=88; p->time[k].minute=88;}}return c;}void loadRec() /* 从磁盘导入信息*/{worker *rear,*p,*pre; FILE *fp,*key; int i,pos=0; key=fopen("key.txt","r"); if(key!=NULL){}fscanf(key,"%s",password); fclose(key);p=(worker*)malloc(sizeof(worker)); /* 开辟一个新单元 */ fscanf(fp,"%s%s",p->id,p->name); for(i=0;i<20;i++)fscanf(fp,"%d%d",&p->time[i].hour,&p->time[i].minute); if(head==NULL){head=p; pre=p; rear=p;}else{rear->next=p; pre=rear; rear=p;}}pre->next=NULL; fclose(fp); return;}fp=fopen("workerRec.txt","r"); if(fp!=NULL){fseek(fp, 0, SEEK_END); pos= ftell(fp);}if(fp==NULL||0 == pos)件*/{printf("\n\n\n\n\n\n\t\t 提示:在!\n");printf("\n\t\t getchar();\n\n\t\t 数据库中没有职工信息请按回车键进入主菜单新建职工信息/* 指针移到文件末尾 *//* 打开职工信息文件和密码文,文本为空或文件不存system("cls"); return;}fseek(fp, 0, SEEK_SET); while(!feof(fp)){Un");/*清屏 *//* 指针移到文件开头 */ /*fp 不指向文件末尾 *//* 关闭文件 */void createInfo() /* 新建职工信息*/{worker *p,*rear;int i,k,n;char s[10];if(head!=NULL){printf("\n\n\n\n\n\n\n\t\t\t 职工信息数据库已存在\n\n\t\t\t 新建职工信息将续接在信息库的后面\n\n\n\t\t\t 按回车键继续");getchar();getchar();rear=head; while(rear->next!=NULL) rear=rear->next;system("cls");}printf("\n\n 请输入希望建立职工信息条数:");scanf("%s",s);if(fun(s)==0)return;elsen=atoi(s);printf("\n 请输入职工的工号(至多6 个字符)和姓名( 至多5 个字符):\n"); for(i=0;i<n;i++){p=(worker*)malloc(sizeof(worker));scanf("%s%s",p->id,p->name); if(strlen(p->id)>6||strlen(p->name)>5){printf("\n 职工工号或姓名输入长度不合法!\n\n 请按回车键返回主菜单\n",n);rear->next=NULL;free(p);getchar();getchar();system("cls");return;}for(k=0;k<20;k++) /* 时间初始化为88:88*/{p->time[k].hour=88;p->time[k].minute=88;}if(head==NULL){head=p;rear=p;}else{ rear->next=p; rear=p;}} p->next=NULL;printf("\n%d 条信息建立完毕!\n\n 请按回车键返回主菜单\n",n); getchar();getchar();system("cls");writeinfo_flag=1;return;}void createRec() /* 录入考勤信息*/{time_t nowtime;worker *p;char s[10],k[10],*g=k,ss[10];int c,m,week;time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday; if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;} if(timeinfo->tm_wday==6||timeinfo->tm_wday==0){printf("\n\n\n\n\t\t\t 今天不是工作日\n\n\t\t\t 无法录入考勤信息\n\n\t\t\t 请按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 请选择录入考勤种类:\n\n\t\t\t1. 上午上班(8:00)\n\n\t\t\t2. 上午下班(11:30)\n\n\t\t\t3. 下午上班(14:00)\n\n\t\t\t4. 下午下班(17:30)\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsem=atoi(k);if(m<1||m>4){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return ;}system("cls");if(m==1&&(timeinfo->tm_hour>11||(timeinfo->tm_hour==11&&timeinfo->tm_min>30))) {printf("\n\n\n\t\t\t 现在已经过了上午下班的时间(11:30)\n\n\t\t\t 无法录入上班的时间(8:00)信息\n\n\t\t\t 请按回车键返回主菜单");getchar();getchar();system("cls");return;}if(m==3&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30))){printf("\n\n\n\t\t\t 现在已经过了下午下班的时间(17:30)\n\n\t\t\t 无法录入上班的时间(14:00)信息\n\n\t\t\t 请按回车键返回主菜单");getchar();getchar();system("cls");return;}/* 可通过工号或姓名;录入*/printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",ss); if(fun(ss)==0)return;elsec=atoi(ss);if(c<1||c>2){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return ;} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;} if((m==2||m==4)&&p->time[4*week+m-6].hour==88){printf("\n\n\n\n\t\t\t 该职工无上班记录,无法记录下班信息, 请先录入上班信息\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}p->time[4*week+m-5].hour=(timeinfo->tm_hour); /* 存储时间*/p->time[4*week+m-5].minute=(timeinfo->tm_min);break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;} if((m==2||m==4)&&p->time[4*week+m-6].hour==88) {printf("\n\n\n\n\t\t\t 该职工无上班记录,无法记录下班信息, 请先录入上班信息\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday;p->time[4*week+m-5].hour=(timeinfo->tm_hour); p->time[4*week+m-5].minute=(timeinfo->tm_min); break;}}system("cls");printf("\n\n\n\n\n\n\t\t\t 考勤成功! 请按回车键返回主菜单\n");getchar();getchar();writeinfo_flag=1;system("cls");return;}void listRec() /* 浏览当天的考勤信息*/{worker *p=head;int m,week;week=timeinfo->tm_wday;if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}if(timeinfo->tm_wday==6||timeinfo->tm_wday==0) {printf("\n\n\n\n\t\t\t 今天不是工作日,无考勤记录\n\n\t\t\t 无法浏览当天的考勤信息\n\n\t\t\t 请按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n 职工今天整体出勤情况如下:\n\n");printf(" 职工号姓名上午上班上午下班下午上班下午下班\n"); while(p!=NULL){m=0;printf("\n%s %s",p->id,p->name);if((p->time[(week-1)*4].hour>8&&p->time[(week-1)*4].hour<25)||(p->time[(week-1)*4].hour==8&&p->time[(week-1)*4].minute>0))printf(" 迟到"); /* 上班时间之后来的都算迟到*/else if(p->time[(week-1)*4].hour==88&&(timeinfo->tm_hour>11||(timeinfo->tm_hour==11&&timein fo->tm_min>30)))printf(" 旷工"); /* 过了下班时间就是旷工*/else if(p->time[(week-1)*4].hour==88&&(timeinfo->tm_hour<11||(timeinfo->tm_hour==8&&timeinf o->tm_min==30)))printf(" 无记录"); /* 下班之前还没有来显示无记录*/else if(p->time[(week-1)*4].hour!=88){printf(" ");m++;}if((p->time[(week-1)*4+1].hour<11&&p->time[(week-1)*4].hour!=0)||(p->time[(week-1)*4+1].hour==11&&p->time[(week-1)*4+1].minute<30))printf(" 早退");else {printf(" ");m++;}if((p->time[(week-1)*4+2].hour>14&&p->time[(week-1)*4+2].hour<25)||(p->time[(week-1)*4+2].hour==14&&p->time[(week-1)*4+2].minute>0))printf(" 迟到");else if(p->time[(week-1)*4+2].hour==88&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30)))printf(" 旷工");else if(p->time[(week-1)*4+2].hour==88&&(timeinfo->tm_hour<17||(timeinfo->tm_hour==17&&tim einfo->tm_min==30)))printf(" 无记录");else if(p->time[(week-1)*4+2].hour!=88){printf(" ");m++;}if((p->time[(week-1)*4+3].hour<17&&p->time[(week-1)*4+2].hour!=0)||(p->time[(week-1)*4+3].hour==17&&p->time[(week-1)*4+3].minute<30))printf(" 早退");else {printf(" ");m++;}if(m==4&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30))) printf(" 全勤!");p=p->next;}printf("\n\n 显示完毕,按回车键返回主菜单!");getchar();getchar();system("cls");return;}void searchRec() /* 根据工号或姓名查找考勤信息*/{worker *p=head;int c,i;char s[10],k[10];if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){ printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始getchar();getchar();system("cls"); return ;!\n");} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}system("cls");printf(" 职工号姓名\n\n");printf(" %s %s",p->id,p->name);printf(" 周一");for(i=0;i<4;i++) {上午上班上午下班下午上班下午下班if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==4) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);printf("\n 周二"); for(i=4;i<8;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==8) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);}printf("\n 周三"); for(i=8;i<12;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==12) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);}printf("\n 周四"); for(i=12;i<16;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d ");",p->time[i].hour,p->time[i].minute);if(i==16)printf("\n\n");}printf("\n 周五");for(i=16;i<20;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute); if(i==20)printf("\n\n");}printf("\n\n\n\n\n\n\t\t\t 显示完毕,按回车键返回主菜单!"); getchar();getchar();system("cls");return;}void saveRec() /* 储存所有信息*/{worker *p=head;FILE *fp,*key;int i;if(writeinfo_flag==0){printf("\n\n\n\n\t\t\t 信息无改动,无需保存!\n\n\t\t\t 请按回车键返回主菜单\n");getchar();getchar();system("cls");return;}if(writeinfo_flag==1){ if((fp=fopen("workerRec.txt","w"))==NULL||(key=fopen("key.txt","w"))==NULL) {printf("\n\t\t\t 提示:\n\n\t\t\t 存储信息失败!\n"); printf("\n\t\t\t 请按回车键进入主菜单重新开始\n"); getchar();getchar();system("cls");return;} while(p!=NULL){fprintf(fp,"%s\n%s\n",p->id,p->name); for(i=0;i<20;i++)fprintf(fp,"%d\n%d\n",p->time[i].hour,p->time[i].minute); p=p->next;} fprintf(key,"%s",password);fclose(fp),fclose(key);writeinfo_flag=0; /* 消除改动标志*/ printf("\n\n\n\n\n\t\t\t 保存完毕,按回车键继续!");getchar();getchar();system("cls");return;}}void deleteRec() //删除考勤信息*/{worker *p,*pre=head;char s[16],k[10];int c; if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar(); system("cls"); return;}printf("\n\n\n\t\t\t 提示:\n\n\t\t\t 初始密码为:888888\n"); printf("\n\n\n\t\t\t 请输入密码(密码不超过15 个字符):"); scanf("%s",s);while(strcmp(password,s)!=0){printf("\n\n\t\t\t 密码错误!\n\n"); printf("\t\t\t 按回车键返回主菜单!"); getchar();getchar();system("cls");return;} printf("\n\n\n\t\t\t 密码输入成功!\n\n\t\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){ printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始getchar();getchar();system("cls"); return ;!\n");} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号:"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名:"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;} break;}} system("cls"); if(p==head) head=p->next;else{ for(;pre->next!=p;pre=pre->next); pre->next=p->next;}free(p);printf("\n\n\n\n\n\n\t\t\t 删除成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1; return;}void modifyRec() /* 修改考勤信息*/{worker *p,*pre=head; char s[16],k[10];int c; if(head==NULL){ printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar(); system("cls"); return;}printf("\n\n\n\t\t\t 提示:\n\n\t\t\t 初始密码为:888888\n"); printf("\n\n\n\t\t\t 请输入密码(密码不超过15 个字符):"); scanf("%s",s);if(strcmp(password,s)!=0){printf("n\n\n\t\t\t 密码错误!\n\n"); printf("\t\t\t 按回车键返回主菜单!"); getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 密码输入成功!\n\n\t\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t\t\t 请选择通过工号修改还是姓名修改:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\n\n\t\t 您的选择(以回车键结束):"); scanf("%s",k);if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return ;} system("cls"); switch(c) { case 1:{printf("\n\n\n\n\n\n\t\t\t 请输入工号:"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}break;} case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名:"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}break;}} system("cls");printf("\n\n\n\t\t\t 请选择要修改的内容:\n\n\t\t\t1. 工号\n\n\t\t\t2. 姓名\n\n\t\t\t3. 上午上班时间\n\n\t\t\t4. 上午下班时间\n\n\t\t\t5. 下午上班时间\n\n\t\t\t6. 下午下班时间");printf("\n\n\n\t\t 您的选择(以回车键结束):");scanf("%s",&k);if(fun(k)==0)return;elsec=atoi(k);if(c<1||c>6) {printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return ;}system("cls");switch(c){case 1: printf("\n\n\n\t\t 请输入要修改的工号(至多10 个字符):"); scanf("%s",p->id);break; case 2: printf("\n\n\n\t\t 请输入要修改的姓名(至多10 个字符):"); scanf("%s",p->name);break; case 3: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4].hour,&p->time[(c-1)*4].minute);break;case 4: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+1].hour,&p->time[(c-1)*4+1].minute);break;case 5:printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+2].hour,&p->time[(c-1)*4+2].minute);break; case 6: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+3].hour,&p->time[(c-1)*4+3].minute);break;} printf("\n\n\n\t\t\t 修改成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1;return;}void resetPassword() /* 重设密码*/{char s[16];printf("\n\n\n\t\t 提示:\n\n\t\t 初始密码为:888888\n"); printf("\n\t\t 请输入密码(密码不超过15个字符):"); scanf("%s",s);if(strcmp(password,s)!=0){printf("\n\n\n\t\t 密码错误!\n\n"); printf("\n\n\n\t\t 按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\t\t 密码输入成功!\n\n\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t 请输入要修改的密码(密码不超过15 个字符):"); scanf("%s",s);strcpy(password,s);printf("\n\n\t 修改成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1;return;}void welcome() //欢迎界面{ printf("\n\n\n\n\n\n\n\t\t\t 欢迎使用职工考勤管理系统"); printf("\n\n\n\t\t\t 请按任意键进入系统,开始您的操作"); printf("\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t 作者:XXX");getch(); system("cls");return;}int fun(char *g){do{ if(*g<'0'||*g>'9') {printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return 0 ;}g++; }while(*g!=0); return 1;}。
源代码是什么源代码(也称源程序),是指一系列人类可读的计算机语言指令。
在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。
计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
代码组合源代码作为软件的特殊部分,可能被包含在一个或多个文件中。
一个程序不必用同一种格式的源代码书写。
例如,一个程序如果有C语言库的支持,那么就可以用C语言;而另一部分为了达到比较高的运行效率,则可以用汇编语言编写。
较为复杂的软件,一般需要数十种甚至上百种的源代码的参与。
为了降低种复杂度,必须引入一种可以描述各个源代码之间联系,并且如何正确编译的系统。
在这样的背景下,修订控制系统(RCS)诞生了,并成为研发者对代码修订的必备工具之一。
还有另外一种组合:源代码的编写和编译分别在不同的平台上实现,专业术语叫做软件移植。
质量对于计算机而言,并不存在真正意义上的“好”的源代码;然而作为一个人,好的书写习惯将决定源代码的好坏。
源代码是否具有可读性,成为好坏的重要标准。
软件文档则是表明可读性的关键。
作用源代码主要功用有如下2种作用:生成目标代码,即计算机可以识别的代码。
对软件进行说明,即对软件的编写进行说明。
为数不少的初学者,甚至少数有经验的程序员都忽视软件说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。
但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。
因此,书写软件说明在业界被认为是能创造优秀程序的良好习惯,一些公司也硬性规定必须书写。
计算机里面运行的所有东西都是用程序编出来的(包括操作系统,如Windows,还有Word等,网络游戏也一样),而编写程序要用到计算机语言,用计算机语言直接编出来的程序就叫源码,比如用VisualBasic编写的源码文件一般为.bas文件,而用C++编写的一般为.cpp文件,源代码不能直接在Windows下运行,必须编译后才能运行。
原创C语言图书馆管理系统源代码介绍图书馆作为一个重要的知识储备和学习场所,必须进行有效的管理和组织。
使用C语言编写的图书馆管理系统可以帮助图书馆实现自动化的借阅、归还和管理功能。
本文将介绍一个原创的C语言图书馆管理系统的源代码。
功能概述这个图书馆管理系统具有以下核心功能: - 图书管理:包括添加图书、删除图书、查询图书等操作。
- 借阅管理:可以进行借阅操作,记录借阅者和借阅时间。
- 归还管理:可以进行归还操作,并更新图书的可借状态。
- 用户管理:管理借阅者的信息,包括添加用户、删除用户、查询用户等操作。
数据结构设计该图书馆管理系统使用了以下几种数据结构: 1. 图书(Book)结构体:包含图书的ID、书名、作者、可借状态等字段。
2. 用户(User)结构体:包含用户的ID、姓名、地址等字段。
3. 借阅记录(BorrowRecord)结构体:包含借阅者ID、图书ID、借阅时间等字段。
系统流程整个系统的流程可以分为以下几个步骤: 1. 用户打开系统,进入主菜单。
2. 用户选择不同的功能选项(如图书管理、借阅管理、用户管理等)。
3. 根据用户选择的功能,进入相应的功能界面。
4. 用户可以根据提示,输入相应的信息进行图书管理、借阅管理或用户管理操作。
5. 用户完成操作后,可以选择返回主菜单或退出系统。
代码实现以下是一个简化版的C语言图书馆管理系统的源代码:```c #include <stdio.h>// 定义结构体 struct Book { int id; char name[50]; char author[50]; int isAvailable; };struct User { int id; char name[50]; char address[100]; };struct BorrowRecord { int userId; int bookId; char borrowDate[20]; };// 函数声明 void addBook(); void deleteBook(); void searchBook(); void borrowBook(); void returnBook(); void addUser(); void deleteUser(); void searchUser();int main() { int choice;do {// 显示主菜单printf(\。
#define MODE "rb+"#include <stdio.h>#include <stdlib.h>#include <string.h>int function2();int check(char name2[20],int number2,char brand2[20],char manufacturer2[20],int quantity2,int price2,int total2);int function3();int function4();int function1() //generate a file{FILE *fp;system("del C:\\bigday.dat");fp=fopen("C:\\bigday.dat","wb");printf("\t\t\t----------------------------------------\n");printf("\t\t\t* *\n");printf("\t\t\t*仓库物资库存管理系统*\n");printf("\t\t\t* *\n");printf("\t\t\t* 欢迎进入*\n");printf("\t\t\t* 按任意键继续*\n");printf("\t\t\t----------------------------------------\n");getchar(); g etchar();fclose(fp);return 0;}int function2() //input the data{FILE *fp1,*fp2;if((fp1=fopen("C:\\bigday.dat",MODE))==0){printf("C:\\bigday.dat error");exit(1);}if((fp2=fopen("C:\\TEPM.dat","wb+"))==0){printf("C:\\TEPM.dat error");exit(1);}char name[20],name2[20];int number,number2;char brand[20],brand2[20];char manufacturer[20],manufacturer2[20];int quantity,quantity2;int price,price2;int total,total2;char tell;int i;char ch;ch=fgetc(fp1);if(ch==EOF){printf("\n");printf("\t\t\t----------------------------------------\n");printf("\t\t\t* *\n");printf("\t\t\t*仓库物资库存管理系统*\n");printf("\t\t\t* *\n");printf("\t\t\t* 继续添加*\n");printf("\t\t\t----------------------------------------\n");printf("\n请依次输入:商品的名称、型号、品牌、生产厂家,数量,价格。
源代码管理方案1、为保障公司源代码安全不至于泄露,保证源代码的完整,明确源代码控制管理流程,特制定此管理办法。
2、本办法适用于所有涉及接触源代码的各部门各岗位。
所涉及部门都必须严格执行本管理办法;源代码直接控制管理部门为技术研发部。
3、本办法管理重点在于控制管理源代码的完整性,不被非授权获取,不被非授权复制和传播。
4、本办法所指源代码不仅限于公司开发人员自行编写实现功能的程序代码,而且还包括相应的开发设计文档及用于支撑整个系统运行所必须具备的第三方软件、控件和其它支撑库等文件。
5、所有软件的源代码文件及相应的开发设计文档均必须及时加入到指定的源代码服务器中的指定源代码管理库中。
6、我们研发的产品软件运行所必须的第三方软件、控件和其它支撑库等文件也必须及时加入源代码服务器中指定的源代码管理库中。
7、软件开始编写或者调整代码之前,其相应的设计文档必须签入源代3601码管理库。
软件编砖或功能调整结束提交技术支撑部测试验证之前,相应的源代码必须签入源代码管理库。
8、技术支撑部门对代码的测试时必须从源代码服务器上的源代码管理库中获取代码,包括必须的第三方软件、控件和其它支撑库等文件,然后进行集成编译测试。
9、源代码服务器对于共享的源代码管理库的访问建立操作系统级的,基于身份和口令的访问授权。
10、在源代码管理库中设置用户,并为不同用户分配不同的,适合工作的最小访问权限。
要求连接源代码管理库时必须校验源代码管理中用户身份及其口令。
在源代码管理库中要求区别对待不同用户的可访问权、可创建权、可编辑权、可删除权、可销毁权。
11、工作务变化后要实时回收用户的相关权,对源代码管理库的管理要求建立专人管理制度,专人专管。
每个普通用户切实保证自己的用户身份和口令不泄露。
用户要经常更换自己在源代码管理库中账号的口令。
12、涉及、接触源代码的计算机必须建立专人专用制度,任何其他人不得在未获得研发部经理授权的情况下操作和使用此计算机。
#include <stdio.h>#include <string.h>#include <ctype.h>#include <stdlib.h>#include <windows.h>#define MONTH_NUM 5 /* 最多的月份*/struct worker{int number; /* 每个工人的工号*/char name[15]; /* 每个工人的姓名*/int salary[MONTH_NUM]; /* 每个工人M月的工资*/ int sum; /* 每个工人的总工资*/ float average; /* 每个工人的平均工资*/ struct worker *next; //下一个节点的地址};typedef struct worker STU;char Menu(void);int Ascending(int a, int b);int Descending(int a, int b);void IntSwap(int *pt1, int *pt2);void CharSwap(char *pt1, char *pt2);void FloatSwap(float *pt1, float *pt2);STU *AppendNode(STU *head, const int m);STU *DeleteNode(STU *head, int nodeNum);STU *ModifyNode(STU *head, int nodeNum, const int m); STU *SearchNode(STU *head, int nodeNum);STU *Appendsalary(STU *head, const int m);void Totalsalary(STU *head, const int m);void Printsalary(STU *head, const int m);STU *Deletesalary(STU *head, const int m);void Modifysalary(STU *head, const int m);void Sortsalary(STU *head, const int m, int (*compare)(int a, int b));void Searchsalary(STU *head, const int m);void DeleteMemory(STU *head);void numberSwap(STU *head);main(){char ch,b;int m,a;STU *head = NULL;printf("\n\n\n\n\n\n\n\n\n");printf("``╭╮╭╮╭╮\n");printf("``│││││└╮\n");printf("╭┴┴———————┴┴╮~└—╯\n");printf("││╭—————╮\n");printf("│││哈│\n");printf("│●●│╭╮│喽! │\n");printf("│○╰┬┬┬╯○│o╰╯╰—————╯\n");printf("│╰—╯│\n");printf("╰——┬o———o┬——╯\n");printf(" ╭╮╭╮\n");printf(" ╰┴————┴╯\n");Sleep(3000);system("cls");printf("\n\n\n\n\n\n\n\n\n\n\n ≈~☆输入要记录的月份个数(m<10)☆~~`≈: "); scanf("%d", &m);system("cls");while (1){ch = Menu();switch (ch){case'1':head = Appendsalary(head, m);Totalsalary(head, m);break;case'2':Modifysalary(head, m);Totalsalary(head, m);printf("\nAfter modified\n");Printsalary(head, m);Sleep(1000);break;case'3':head = Deletesalary(head, m);printf("\nAfter deleted\n");Printsalary(head, m);break;case'4':do{Searchsalary(head, m);printf("\(≧▽≦)/ 是否要继续查询?Y or N:");scanf(" %c",&b);}while(b=='y'||b=='Y');break;case'5':Printsalary(head, m);printf("\(≧▽≦)/ 是否要选择排列方式?Y or N:");scanf(" %c",&b);while(b=='y'||b=='Y'){printf("你想降序排列还是升序排列?(1降序2升序):");scanf(" %d",&a);if(a==1){Sortsalary(head, m, Descending);printf("\nsorted in descending order by sum\n");Printsalary(head, m);}else{Sortsalary(head, m, Ascending);printf("\nsorted in ascending order by sum\n");Printsalary(head, m);}printf("O(∩_∩)O 是否继续选择排列方式?Y or N:");scanf(" %c",&b);}break;case'0':system("cls");printf("┴┬┴┬/ ̄\_/ ̄\\n");printf("┬┴┬┴▏▏▔▔▔▔\\n");printf("┴┬┴/\/﹨\n");printf("┬┴∕/)╭—————╮\n"); printf("┴┬▏●▏│再│\n"); printf("┬┴▏▔█◤╭╮│见! │\n"); printf("┴◢██◣\__/o╰╯╰—————╯\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("┴┬┴┬┴┬┴\___\﹨/▔\﹨\n");exit(0);DeleteMemory(head);printf("End of program!");break;default:printf("Input error!");break;}}}char Menu(void)//主菜单{char ch;system("cls");printf("\n\n\n\n ━━●●━━━━━━━━━━━管理工人的工资━━━━━━...........(╯3╰)\n");printf(" 1.添加记录\n");printf(" 2.更新记录\n");printf(" 3.删除记录\n");printf(" 4.查询记录\n");printf(" 5.统计分析记录\n");printf(" 0.退出\n");printf(" ━━━━━━━━━━☆━━━━━━━━━━━━━━━━━☆━━━━━━━━━━\n");printf("` `.~ ☆~~`≈~☆☆~~`≈~☆☆~~`≈~☆.` `.~\n");printf("\n请输入你的选择:");scanf(" %c", &ch); /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/system("cls");return ch;}STU *Appendsalary(STU *head, const int m)//添加新记录{int i = 0;char c;do{head = AppendNode(head, m); /*向链表末尾添加一个节点*/printf("\n O(∩_∩)O 你想再添加一个新的记录吗(Y/N)?");scanf(" %c",&c); /*%c前面有一个空格*/i++;}while (c=='Y' || c=='y');printf("%d new nodes have been apended!\n", i);return head;}STU *Deletesalary(STU *head, const int m)//删除记录{int i = 0, nodeNum;char c;do{printf("\n ⊙﹏⊙请输入你想删除的记录编号:");scanf("%d", &nodeNum);head = DeleteNode(head, nodeNum); /*删除工号为nodeNum的工人信息*/ Printsalary(head, m); /*显示当前链表中的各节点信息*/printf("Do you want to delete a node(Y/N)?");scanf(" %c",&c); /*%c前面有一个空格*/i++;}while (c=='Y' || c=='y');printf("%d nodes have been deleted!\n", i);return head;}void Modifysalary(STU *head, const int m)//修改记录{int i = 0, nodeNum;char c;do{printf("\n~~~^_^~~~ 请输入你想修改的记录编号:");scanf("%d", &nodeNum);head = ModifyNode(head, nodeNum, m); /*修改工号为nodeNum的节点*/ printf("Do you want to modify a node(Y/N)?");scanf(" %c",&c); /*%c前面有一个空格*/ i++;}while (c=='Y' || c=='y');printf("%d nodes have been modified!\n", i);}void Totalsalary(STU *head, const int m){STU *p = head;int i;while (p != NULL) /*若不是表尾,则循环*/{p->sum = 0;for (i=0; i<m; i++){p->sum += p->salary[i];}p->average = (float)p->sum / m;p = p->next; /*让p指向下一个节点*/}}void Sortsalary(STU *head, const int m, int (*compare)(int a, int b)){STU *pt;int flag = 0, i;do{flag = 0 ;pt = head;/*若后一个节点的总工资比前一个节点的总工资高,则交换两个节点中的数据注意只交换节点数据,而节点顺序不变,即节点next指针内容不进行交换*/ while (pt->next != NULL){if ((*compare)(pt->next->sum, pt->sum)){IntSwap(&pt->number, &pt->next->number);CharSwap(pt->name, pt->next->name);for (i=0; i<m; i++){IntSwap(&pt->salary[i], &pt->next->salary[i]);}IntSwap(&pt->sum, &pt->next->sum);FloatSwap(&pt->average, &pt->next->average);flag = 1;}pt = pt->next;}}while(flag);}/*交换两个整型数*/void IntSwap(int *pt1, int *pt2){int temp;temp = *pt1;*pt1 = *pt2;*pt2 = temp;}/*交换两个实型数*/void FloatSwap(float *pt1, float *pt2){float temp;temp = *pt1;*pt1 = *pt2;*pt2 = temp;}/*交换两个字符串*/void CharSwap(char *pt1, char *pt2){char temp[15];strcpy(temp, pt1);strcpy(pt1, pt2);strcpy(pt2, temp);}/*决定数据是否按升序排序,a<b为真,则按升序排序*/ int Ascending(int a, int b){return a < b;}/* 决定数据是否按降序排序,a>b为真,则按降序排序*/ int Descending(int a, int b){return a > b;}void Searchsalary(STU *head, const int m)//查询记录{int number, i,j,k=0,x,t=0;char str[100] = {'\0'}, temp[3];STU *findNode;printf("\n 请输入你想查找的记录编号:");scanf("%d", &number);findNode = SearchNode(head, number);if (findNode == NULL){printf("Not found!\n");}else{strcat(str, "工号");for(j=0;j<=strlen(findNode->name);j++)strcat(str," ");strcat(str, "姓名");for (i=1; i<=m; i++){if(findNode->salary[i]/10) t++;for(x=0;x<2*t;x++)strcat(str," ");strcat(str, "工资");itoa(i,temp, 10);strcat(str, temp);}strcat(str," 已发工资总和");if(findNode->sum/10) k++;for(i=0;i<k;i++)strcat(str," ");strcat(str," 个人平均工资");printf("%s", str);printf("\nNo.%3d %-8s ", findNode->number, findNode->name); for (i=0; i<m; i++){printf("%-7d ", findNode->salary[i]);}printf("%9d %9.2f\n", findNode->sum, findNode->average);}}void Printsalary(STU *head, const int m){STU *p = head;char str[100] = {'\0'}, temp[3];int i, j = 1,k,x,n=0,t=0;strcat(str, "工号");for(k=0;k<=strlen(p->name);k++)strcat(str," ");strcat(str, "姓名");for (i=1; i<=m; i++){if(p->salary[i]/10) t++;for(x=0;x<2*t;x++)strcat(str," ");strcat(str, "工资");itoa(i,temp, 10);strcat(str, temp);}strcat(str," 已发工资总和");if(p->sum/10) n++;for(k=0;k<n;k++)strcat(str," ");strcat(str," 个人平均工资");printf("%s", str); /* 打印表头*/while (p != NULL) /*若不是表尾,则循环打印*/{printf("\nNo.%3d %-8s ", p->number, p->name);for (i=0; i<m; i++){printf("%-7d ", p->salary[i]);}printf("%9d %9.2f\n", p->sum, p->average);p = p->next; /*让p指向下一个节点*/j++;}printf("\n");}STU *AppendNode(STU *head, const int m){STU *p = NULL;STU *pr = head;int j;p = (STU *)malloc(sizeof(STU)); /*为新添加的节点申请内存*/if (p == NULL) /*若申请内存失败,则打印错误信息,退出程序*/ {printf("No enough memory to alloc");exit(0);}if (head == NULL) /*若原链表为空表,则将新建节点置为首节点*/ {head = p;}else /*若原链表为非空,则将新建节点添加到表尾*/{/*若未到表尾,则继续移动指针pr,直到pr指向表尾*/while (pr->next != NULL){pr = pr->next;}pr->next = p; /*将新建节点添加到链表的末尾*/}pr = p; /*让pr指向新建节点*/printf("Input node data......");printf("\nInput number:");scanf("%d", &p->number);printf("Input name:");scanf("%s", p->name);for (j=0; j<m; j++){printf("Input salary%d:", j+1);scanf("%d", p->salary+j);}pr->next = NULL; /*将新建节点置为表尾*/return head; /*返回添加节点后的链表的头节点指针*/ }STU *ModifyNode(STU *head, int nodeNum, const int m){int j;STU *newNode;newNode = SearchNode(head, nodeNum);if (newNode == NULL){printf("Not found!\n");}else{printf("Input the new node data:\n");printf("Input name:");scanf("%s", newNode->name);for (j=0; j<m; j++){printf("Input salary%d:", j+1);scanf("%d", newNode->salary+j);}}return head;}STU *DeleteNode(STU *head, int nodeNum){STU *p = head, *pr = head;if (head == NULL) /*链表为空,没有节点,无法删除节点*/{printf("No Linked Table!\n");return(head);}/*若没找到节点nodeNum且未到表尾,则继续找*/while (nodeNum != p->number && p->next != NULL){pr = p;p = p->next;}if (nodeNum == p->number) /*若找到节点nodeNum,则删除该节点*/{if (p == head) /*若待删节点为首节点,则让head指向第2个节点*/{head = p->next;}else /*若待删节点非首节点,则将前一节点指针指向当前节点的下一节点*/ {pr->next = p->next;}free(p); /*释放为已删除节点分配的内存*/}else /*没有找到待删除节点*/{printf("This Node has not been found!\n");}return head; /*返回删除节点后的链表的头节点指针*/}STU *SearchNode(STU *head, int nodeNum){STU *p = head;int j = 1;while (p != NULL) /*若不是表尾,则循环*/{if (p->number == nodeNum) return p;p = p->next; /*让p指向下一个节点*/j++;}return NULL;}void DeleteMemory(STU *head){STU *p = head, *pr = NULL;while (p != NULL) /*若不是表尾,则释放节点占用的内存*/ {pr = p; /*在pr中保存当前节点的指针*/p = p->next; /*让p指向下一个节点*/free(pr); /*释放pr指向的当前节点占用的内存*/}}。
软件评测师练习题与答案一、单选题(共100题,每题1分,共100分)1、可用于编写独立程序和快速脚本的语言是()。
A、JavaB、C#C、PythonD、Prolog正确答案:C2、以下测试项目不适合采用自动化测试的是( )。
A、需要反复进行的测试B、易用性测试C、可以录制回放的测试D、负载压力测试正确答案:B3、web应用链接测试不包括_______A、不存在的页面文件B、错误的链接C、无链接指向的页面D、客户端和服务器端的链接速率正确答案:D4、以下关于软件测试原则的叙述中,正确的是()。
A、测试用例只需选用合理的输入数据,不需要选择不合理的输入数据B、程序员应尽量测试自己的程序C、应制定测试计划并严格执行,排除随意性D、穷举测试是可能的正确答案:C5、对计算机评价的主要性能指标有时钟频率、()、运算精度、内存容量等。
A、端口吞吐量B、可移植性C、丢包率D、数据处理速率正确答案:D6、某软件系统无须在线容错,也不能采用冗余设计,如果对可靠性要求较高,故障有可能导致严重后果,一般采用()。
A、恢复块设计B、降低复杂度设计C、检错技术D、N版本程序设计正确答案:C7、对建立良好的程序设计风格,下面描述正确的是()。
A、充分考虑程序的执行效率B、程序的注释可有可无C、符号名的命名要符合语法D、程序应简单、清晰、可读性好正确答案:D8、利用高速通信网络将多态高性能工作站或微型机互连构成机群系统,其系统结构形式属于_____计算机。
A、单指令多数据流(SIMD)B、单指令单数据流(SISD)C、多指令多数据流(MIMD)D、多指令单数据流(MISD)正确答案:C9、在计算机系统中总线宽度分为地址总线宽度和数据总线宽度。
若计算机中地址总线的宽度为32位,则最多允许直接访问主存储器()的物理空间。
A、40MBB、4GBC、40GBD、400GB正确答案:B10、传统编译器进行词法分析、语法分析、代码生成等步骤的处理时,前一阶段处理的输出是后一阶段处理的输入,则采用的软件体系结构风格是()。
操作系统源代码范文操作系统是计算机系统最基础的软件之一,负责管理计算机硬件资源,提供用户与硬件之间的接口。
操作系统的源代码是操作系统的实现细节的具体表达形式,它包含了操作系统的核心功能和逻辑实现。
本文将主要介绍操作系统源代码的结构、组成部分以及其编写方式,以及涉及到的一些常用的数据结构和算法。
1.引导程序:操作系统的启动程序,在计算机系统加电时首先执行。
引导程序的主要任务是将操作系统的核心加载到内存中,并将控制权转交给操作系统。
2.内核:操作系统的核心部分,负责管理计算机的硬件资源,提供各种资源的分配和调度功能。
内核是整个操作系统的灵魂,对于系统的性能和稳定性有着至关重要的影响。
3.设备驱动程序:用于管理计算机系统中各种硬件设备的程序,包括磁盘驱动程序、网络驱动程序、图形驱动程序等。
设备驱动程序负责向操作系统提供硬件访问的接口,使得操作系统能够与硬件设备进行交互。
4.系统服务程序和实用工具:提供一些常用的系统服务和实用工具,如文件系统、网络服务、命令解释程序等。
这些程序通常是在操作系统上层构建的,为用户提供方便的操作方式和功能。
编写操作系统源代码的方式多种多样,不同的操作系统可以使用不同的编程语言和开发工具。
常见的操作系统编程语言包括C语言和汇编语言。
C语言通常用于编写操作系统的高层代码,而汇编语言则用于编写底层代码和与硬件直接交互的部分。
在编写操作系统源代码时,需要使用一些常用的数据结构和算法来实现操作系统的各种功能。
其中,最常用的数据结构包括链表、栈、队列、树和图等。
而在算法方面,常见的有各种调度算法、内存分配算法和文件系统算法等。
编写操作系统源代码的过程中还需要考虑一些特殊的问题和挑战,如多任务处理、进程管理、内存管理、中断处理等。
为了提高操作系统的性能和可靠性,需要在设计和实现过程中充分考虑这些问题并灵活运用相关的技术和方法。
综上所述,操作系统源代码是操作系统的具体实现细节,负责管理计算机的硬件资源,提供用户与硬件之间的接口。
c语言源程序经过编译程序编译后所产生的文件扩展名在撰写这篇文章之前,让我们首先来深入探讨一下C语言源程序经过编译程序编译后所产生的文件扩展名。
C语言作为一种高级程序设计语言,其源代码需要通过编译器进行编译后才能生成可执行文件。
而在编译过程中,会产生一些特定的文件扩展名,我们将从简到繁地来讨论这个主题。
1. .c源文件我们需要了解的是C语言源程序文件的扩展名为.c。
在编写C语言程序时,我们通常将源代码保存为以.c为后缀的文件,比如hello.c、main.c等。
这些.c文件包含了完整的C语言代码,需要通过编译器将其转换为机器语言才能执行。
2. .obj目标文件在进行编译时,编译器会将.c文件编译生成目标文件,其文件扩展名通常为.obj。
目标文件是编译器输出的中间文件,包含了编译后的机器语言代码和一些符号表等信息,但还不能直接作为可执行文件运行。
3. .exe可执行文件经过连接器的处理,将目标文件连接生成可执行文件,其文件扩展名为.exe。
可执行文件包含了机器语言代码和连接器生成的一些其他信息,可以直接在操作系统中执行,完成程序的运行。
4. .o目标文件和.a库文件在Unix/Linux系统中,编译生成的目标文件通常以.o为扩展名,而库文件通常以.a为扩展名。
这与Windows系统的.obj和.exe略有不同,但本质相同,都是编译和连接生成的文件。
5. 综述C语言源程序经过编译程序编译后所产生的文件扩展名包括.c、.obj (.o)、.exe以及.a等。
这些文件扩展名代表了C语言程序经过编译、连接等阶段生成的不同类型文件,对于我们理解程序编译过程及调试程序都有着重要的意义。
6. 个人观点和理解个人认为,了解C语言源程序编译后所产生的文件扩展名是非常重要的,这有助于我们深入理解程序编译连接的过程,也有助于我们更好地进行程序调试和优化。
对于想要深入学习C语言的初学者来说,掌握这些知识也是基础中的基础。
通过本文的讨论,希望读者能对C语言源程序编译后所产生的文件扩展名有更深入的理解,从而在编程学习和实践中能够更加得心应手。
《程序设计基础》课程设计报告题目: 员工工资管理系统院(系): 信息科学与工程学院专业班级:学生姓名:学号:指导教师:20 16 年 12 月 12 日至20 16 年 12 月 23 日武昌首义学院制程序设计基础课程设计任务书目录1需求与总体设计 (1)2详细设计 (1)3编码实现 (4)4运行结果 (21)总结 (24)1需求与总体设计1.1需求描述设计一个利用文件处理方式实现对员工工资(包括员工编号、员工姓名、年月、岗位工资、奖金、扣款和实发)进行管理,具有增加数据、更新数据、查询数据、删除数据、列表显示数据以及重组文件的功能。
1。
2总体设计先以登陆函数登陆,再进入主菜单,菜单中显示各个要实现的操作,以菜单将各个函数联系起来,对菜单操作以实现系统的目的.1。
3数据结构struct user //登陆者信息{char un[10];char up[10];}us[3] = { "aaa","111",”bbb”,”222",”ccc",”333" };struct yg //员工结构体{short zt; //数据状态long bh; //编号char name[20]; //名字char time[11]; //时间long money; //基本工资long jj; //奖金long kk; //扣款long sf; //实发工资};整个程序只运用了结构体的数据结构,结构体运用于登陆者信息和员工信息,将员工信息封装在一个结构体里,再创建结构体数组,将多个员工信息储存在结构体数组中。
2详细设计2.1 系统功能设计主函数和子函数:系统包含一个主函数,和子函数,分别有登陆子函数,菜单子函数,增加数据子函数,更新数据子函数,查询数据子函数,删除数据子函数,统计数据子函数,重组文件子函数,排序数据子函数,最后两个分别是读取文件和写入文件子函数。
#include<stdio.h>#include<string.h>#define N 100typedef struct worker{char name[20];long number;int y,m,d;char zhicheng[20];char bumen[20];float salary;}Worker;void Display(){printf("\n\n\n\t\t***************职工管理系统*************\n\n");printf("\t\t\t0.退\t\t 出\n");printf("\t\t\t1.新\t\t 建\n");printf("\t\t\t2.显\t\t 示\n");printf("\t\t\t3.查\t\t 询\n");printf("\t\t\t4.删\t\t 除\n\n");}/*******1.新建**********/void Add( Worker w[],int n){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d: ",i+1);scanf("%s %ld %d %d %d %s %s %f",w[i].name,&w[i].number, &w[i].y,&w[i].m,&w[i].d,w[i].zhicheng,w[i].bumen,&w[i].salary);}}/*******2.显示**********/void Browse( Worker w[],int n ){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d:",i+1);printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);}}/*******3.1查询姓名**********/void SearchName( Worker w[],int n ){char name[20];int i;printf("\t\t\t输入要查询的名字:");scanf("%s",name);for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\t\t\t查无此人!");}/*******3.2查询工号**********/void SearchNumber( Worker w[],int n ){long number;int i,k=0;printf("\t\t\t输入要查询的工号:");scanf("%ld",&number);for( i = 0; i < n; i ++ ){if( w[i].number == number ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\n\t\t\t查无此人!");}/*******3.查询**********/void Search( Worker w[],int n ){int x;printf("\t\t\t选择查询方式(1.姓名/2.工号):");scanf("%d",&x);printf("\n");switch(x){case 1:SearchName(w,n);break;case 2:SearchNumber(w,n);break;}}/*******4.删除**********/void Delete( Worker w[],int n ){char name[20];int i,j;printf("\t\t\t输入要删除的名字:");scanf("%s",name);printf("\n");for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\t\t\t将删除以下信息:\n\n");printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("\t%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i]. m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);for( j = i;j<n-1;j++ ){w[j] = w[j+1];}printf("\t\t\t成功删除!\n\n");return;}}printf("\t\t\t查无此人!");}void Run( Worker w[],int n ){int choice;do{Display();printf("\t\t\t输入你的选择:");scanf("%d",&choice);printf("\n");switch( choice ){case 0:break;case 1:Add(w,n);break;case 2:Browse(w,n);break;case 3:Search(w,n);break;case 4:Delete(w,n);n--;break;}}while(choice);}void main(){int n;Worker w[N];printf("\t输入职员个数:");scanf("%d",&n);Run(w,n);}友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。
#include<stdio。
h〉#include<stdlib.h〉#include〈string。
h〉struct tushu{ /*图书结构体*/ char num[10]; /*编号*/char name[20];/*书名*/char writer[20];/*作者*/char press[20];/*出版社*/char kind[20];/*类别*/double time; /*时间*/double price;/*价格*/struct tushu *next;};struct stu /*学生结构体*/ {int snum;/*学号*/char mima[10]; /*密码*/struct stu *next;};FILE *fp; /*图书文件*/FILE *fp1; /*管理员信息文件*/ FILE *fp2; /*学生信息文件*/void menu();/*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/void xmenu();/*学生主菜单(学生进入可对图书,密码进行操作)*/void gfind(); /*管理员查询(管理员可按一定的方式查询图书)*/void xfind();/*学生查询(学生可按一定的方式查询图书)*/ void secret();/*管理员权限(管理员登陆所用,输入错误次数过多自动退出)*/void sort();/*排序(管理员可按一定的方式对图书进行排序,排序完之后可选择文件进行保存)*/void fprint(struct tushu *head);/*保存(可追加的保存,如添加可用)*/void fprint_(struct tushu *head);/*保存(可覆盖保存如修改,删除,排序后用)*/void hfprint(struct tushu *head); /*还书保存(还书成功后自动保存到文件)*/void jfprint_(struct tushu *head);/*借书保存(借书成功之后自动从图书馆删除)*/struct tushu * Input(); /*图书添加(可进行图书的添加)*/struct tushu *create(); /*从文件创建链表(从文件中读出信息,建立单链表)*/void gBrowse(struct tushu *head);/*管理员浏览(对图书进行遍历)*/void xBrowse(struct tushu *head);/*学生浏览(学生对图书进行遍历)*/void count(struct tushu *head); /*统计数量(管理员可对图书进行统计)*/void Findofname(struct tushu *head); /*按书名查找*/ void Findofwriter(struct tushu *head); /*按作者查找*/void Findofkind(struct tushu *head); /*按类别查找*/void xFindofname(struct tushu *head);/*学生按书名查找*/void xFindofwriter(struct tushu *head);/*学生按作者查找*/ void xFindofkind(struct tushu *head); /*学生按类别查找*/ void Sort_time(struct tushu * head); /*按时间排序(管理员按时间对图书进行排序,排序完之后可选择文件进行保存)*/ void Sort_price(struct tushu *head); /*按价格排序*/void Sort_num(struct tushu * head);/*按编号排序*/ void Delete(struct tushu * head,char m[15]);/*按编号删除(管理员可按编号删除图书)*/void Revise(struct tushu *head);/*修改(管理员可对图书进行修改,并选择是否保存)*/void borrow(struct tushu *head); /*借书*/void huanshu(); /*还书(学生借完书之后进行还书,若没有图书则不能借)*/void gxinxi(); /*管理员信息(有管理员的账号及密码,可进行修改)*/void xmima(struct stu *head1);/*学生密码修改(学生可对自己的密码进行修改)*/struct stu *xcreate();/*从文件创建学生信息(从文件读出学生信息,建立学生链表)*/void xsecret(struct stu *head1);/*学生权限(学生登陆所用)*/void menu() /*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/{int choice,n=0;struct tushu *head;struct stu *head1,*p;char m[15];there:printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf(" ┃┃socat 图书管理系统printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf(" ┃●[0]退出系统┃\n");printf(” ┃┃\n”);prin tf(” ┃●[1]帮助┃\n");printf(” ┃┃\n”);printf(” ┃●[2]浏览图书┃\n");printf(” ┃┃\n");printf(” ┃●[3]统计图书数目┃\n”);printf(" ┃┃\n”);printf(” ┃●[4]查询┃\n”);printf(” ┃printf(” ┃●[5]添加┃\n");printf(” ┃┃\n”);printf(” ┃●[6]排序┃\n");printf(” ┃┃\n");printf(" ┃●[7]修改┃\n”);printf(” ┃┃\n");printf(" ┃●[8]删除┃\n”);printf(" ┃┃\n”);printf(" ┃●[9]修改账号及密码┃\n");printf(” ┃┃\n”);printf(” ┃●[10]学生信息printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf(” 请选择:”);fflush(stdin);head=create();scanf("%d”,&choice);if(choice==1){//help();printf(”没有内容!\n”);system("pause”);system(”cls”);menu();}else if(choice==2){system(”cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause");system("cls");menu();}gBrowse(head);}else if(choice==3){system(”cls");count(head);}else if(choice==4){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause”);system(”cls”);menu();}gfind();}else if(choice==5){Input();}else if(choice==6){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”); system("pause”);system(”cls”);menu();}sort(head);}else if(choice==7){system("cls”);if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause");system("cls”);menu();}Revise(head);}else if(choice==8){if(head==NULL){printf("没有图书,请先添加图书!\n");system(”pause");system(”cls");menu();}printf(" 请输入想要删除的图书编号:”);scanf(”%s",m);Delete(head,m);}else if(choice==9){gxinxi();else if(choice==10){system(”cls”);head1=xcreate();if(head1==NULL){printf("没有学生信息,请到xuesheng_list.txt添加!\n”); sys tem(”pause”);system(”cls”);menu();}for(p=head1;p!=NULL;p=p—>next){printf(”学生学号密码\n”);printf("%d %s\n",p->snum,p—>mima);}system(”pause”);system("cls”);menu();}else if(choice==0)system(”cls");printf(”\n\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);exit(0);}else{system("cls");printf(”\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ");system("pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(" ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n");system(”pause");exit(0);}goto there;}}void xmenu()/*学生主菜单(学生进入可对图书,密码进行操作)*/{struct tushu *head;struct stu *head1;int choice,n=0;there:printf(”┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");printf(” ┃┃socat 图书借阅系统┃┃\n");printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf(” ┃●[0]退出系统┃\n”);printf(” ┃printf(” ┃●[1]帮助┃\n”);printf(” ┃┃\n”);printf(” ┃●[2]浏览图书┃\n");printf(” ┃┃\n”);printf(" ┃●[3]查询┃\n”);printf(” ┃┃\n”);printf(” ┃●[4]借书┃\n");printf(” ┃┃\n”);printf(" ┃●[5]还书┃\n");printf(" ┃┃\n”);printf(” ┃●[6]修改密码printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”); printf(" 请选择:");fflush(stdin);head=create();scanf("%d”,&choice);if(choice==1){//xhelp();printf(”没有内容!\n");system(”pa use");system(”cls”);xmenu();}else if(choice==2){system("cls");if(head==NULL){printf(”没有图书!\n");system("pause”);xmenu();}xBrowse(head);}else if(choice==3){if(head==NULL){printf(”没有图书!\n”);system(”pause”);system(”cls”);xmenu();}xfind();}else if(choice==4){if(head==NULL){printf(”没有图书!\n");system(”pause”);xmenu();}borrow(head);}else if(choice==5){huanshu(head);}else if(choice==6){system("cls”);head1=xcreate();if(head1==NULL){printf(”学生信息被清空!!\n”);system("pause");system("cls”);xmenu();}xmima(head1); ;}else if(choice==0){system("cls");printf(”\n\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n");exit(0);}else{system("cls”);printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}void gfind()/*管理员查询(管理员可按一定的方式查询图书)*/{int choice,n=0;struct tushu *head;there:system(”cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);printf(” ┃┃socat 图书借阅系统┃┃\n”);printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");printf(" ┃●[0]返回┃\n");printf(" ┃┃\n”);printf(" ┃●[1]按书名查找┃\n”);printf(" ┃┃\n”);printf(" ┃●[2]按作者查找┃\n”);printf(” ┃┃\n”);printf(" ┃●[3]按类别查找┃\n”);printf(" ┃┃\n”);printf(" ┃● ┃\n”);printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);printf(" 请选择:”);fflush(stdin);head=create();scanf(”%d”,&choice);if(choice==1){system(”cls");Findofname(head); }else if(choice==2){system(”cls”); Findofwriter(head); }else if(choice==3){system(”cls");Findofkind(head); }else if(choice==0){system(”cls”);menu();}else{system(”cls”);printf(”\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system("pause");system(”cls");n++;if(n==3){printf(" \n\n\n ━━━━━━━━你错误次数太多,自动退出! ━━━━━━━━\n\n\n”);printf(" ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);system(”pause”);exit(0);}goto there;}}void xfind()/*学生查询(学生可按一定的方式查询图书)*/ {struct tushu *head;int choice,n=0;there:system("cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);printf(” ┃┃socat 图书借阅系统┃┃\n”);printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");printf(” ┃●[0]返回┃\n”);printf(” ┃┃\n");printf(" ┃●[1]按书名查找┃\n”);printf(” ┃┃\n”);printf(" ┃●[2]按作者查找┃\n”);printf(" ┃┃\n");printf(” ┃●[3]按类别查找┃\n");printf(” ┃┃\n”);printf(" ┃● ┃\n");printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf(” 请选择:");fflush(stdin);head=create();scanf(”%d",&choice);if(choice==1){system(”cls”);xFindofname(head);}else if(choice==2){system(”cls”);xFindofwriter(head);}else if(choice==3){system("cls");xFindofkind(head);}else if(choice==0){system(”cls");xmenu();}else{system("cls");printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls");n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书借阅系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}void sort(){struct tushu *head;int choice,n=0;there:system("cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");printf(” ┃┃socat 图书借阅系统┃┃\n");printf(" ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n”);printf(" ┃●[0]返回┃\n”);printf(” ┃┃\n");printf(” ┃●[1]按时间排序┃\n”);printf(” ┃┃\n”);printf(” ┃●[2]按价格排序┃\n");printf(" ┃┃\n”);printf(” ┃●[3]按编号排序┃\n”);printf(" ┃┃\n”);printf(” ┃●┃\n”);printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);printf(" 请选择:”);fflush(stdin);head=create();scanf("%d",&choice);if(choice==1){system("cls”); Sort_time(head);}else if(choice==2){sys tem(”cls");Sort_price(head);}else if(choice==3){system(”cls”);Sort_num(head); }else if(choice==0){system("cls”); menu();}else{system(”cls");printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出! ━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书借阅系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}struct tushu *Input(){struct tushu *p1,*p2,*head,*ptr;char num;int x,i=0;system("cls”);p1=(struct tushu *)malloc(sizeof(struct tushu));head=p1;p1-〉price=—1;while(i!=1){printf(”请输入编号,以’#’结束\n”);scanf("%s",p1—>num);if(strcmp(p1-〉num,”#")==0)i=1;while(i!=1){printf(”请依次输入书名作者出版社类别出版时间价格\n”); scanf(”%s%s%s%s%lf%lf”,p1—>name,p1—>writer,p1—〉press,p1-〉kind,&p1-〉time,&p1—〉price);p2=p1;p1=(struct tushu *)malloc(sizeof(struct tushu));p2—〉next=p1;break;}}if(p1-〉price!=-1)p2—〉next=NULL;elsehead=NULL;system("cls”);printf("\n\n\n\t\t\t图书信息输入结束!\n\n\n”);system(”pause”);system(”cls”);printf(”\n\n\n\t\t\t是否保存图书信息?(1。
#include<iostream>#include<fstream>using namespace std;class device{public:char name[10];//物品名称char color[10];//物品颜色char address[50];//厂商地址char factory[50];//生产厂商char type[20];//物品型号int year,month,day;//出厂日期int number;//物品数量device() {}//构造函数~device() {}// 析构函数virtual void pay() {}//设置价格函数};class TV:virtual public device{public:TV() {}void set1(char *n,char *c,char *a,char *f,char *t,int y,int m,int d,int nn) {strcpy(name,n);strcpy(color,c);strcpy(address,a);strcpy(factory,f);strcpy(type,t);year=y;month=m;day=d;number=nn;}void pay() {price1=3000;} //普通电视机售价float price1;};class DVD:virtual public device{public:DVD() {}void set2(char *n,char *c,char *a,char *f,char *t,int y,int m,int d,int nn){strcpy(name,n);strcpy(color,c);strcpy(address,a);strcpy(factory,f);strcpy(type,t);year=y;month=m;day=d;number=nn;}void pay() {price2=2000;}//DVD售价float price2;};class TV_DVD:public TV,public DVD{public:TV_DVD() {}void set3(char *n,char *c,char *a,char *f,char *t,int y,int m,int d,int nn) {strcpy(name,n);strcpy(color,c);strcpy(address,a);strcpy(factory,f);strcpy(type,t);year=y;month=m;day=d;number=nn;}void pay() {price=(2000+3000)*80/100;}//带DVD的普通电视机售价float price;};TV t1[20];DVD d1[20];TV_DVD td1[20];static int k(0),k1(0),k2(0);void main()//主函数{void caidan();caidan();}void caidan(){void employw();//信息录用void addw();//添加物品信息void shown();//显示物品信息void selectw();//删除物品信息void searchw();//查找物品信息void savew();//保存物品信息int a1;cout<<"\t\t 功能菜单 \n\n";cout<<"\t(1) 信息录用 \n";cout<<"\t(2) 添加物品信息 \n";cout<<"\t(3) 显示物品信息 \n";cout<<"\t(4) 查找物品信息 \n";cout<<"\t(5) 删除物品信息 \n";cout<<"\t(6) 保存物品信息 \n";cout<<"\t(7) 退出 \n";cout<<"\n请输入1或2或3或4或5或6或7进行你所要执行地下一步动作:\n"; cin>>a1;while(a1!=1&&a1!=2&&a1!=3&&a1!=4&&a1!=5&&a1!=6&&a1!=7) {cout<<"\n请重新输入数字1或2或3或4或5或6或7:";cin>>a1;}if(a1==1)employw();if(a1==2)addw();if(a1==3)shown();if(a1==4)searchw();if(a1==5)selectw();if(a1==6)savew();if(a1==7)cout<<"\n退出程序!\n";}void employw(){char a[10],b[10],c[50],d[50],e[20];int m,n,h,n1,rr,i1,v,i=9,r1;cout<<"\n(1-普通电视机 2-DVD 3-带DVD的普通电视机):";while(i!=0){cin>>i;if(i==1){ cout<<"\n请输入普通电视机的相关信息!\n";for(v=0;v<20;v++){ cout<<"物品名称:";cin>>a;cout<<"\n物品颜色:";cin>>b;cout<<"\n物品的生产厂商:";cin>>c;cout<<"\n厂商地址:";cin>>d;cout<<"\n物品型号:";cin>>e;cout<<"\n物品出厂日期:";cin>>m>>n>>h;cout<<"\n物品数量:";cin>>n1;t1[v].set1(a,b,c,d,e,m,n,h,n1);t1[v].pay();k++;cout<<"\n想继续输入普通电视机的相关信息吗?(1-是 2-否):";cin>>i1;while(i1!=1&&i1!=2){ cout<<"\n请重新输入数字1或2:";cin>>i1;}if(i1==1) {system("cls");cout<<"\n请继续输入普通电视机的相关信息!\n";} else break;}}if(i==2){ cout<<"\n请输入DVD的相关信息!\n";for(v=0;v<20;v++){ cout<<"物品名称:";cin>>a;cout<<"\n物品颜色:";cin>>b;cout<<"\n物品的生产厂商:";cin>>c;cout<<"\n厂商地址:";cin>>d;cout<<"\n物品型号:";cin>>e;cout<<"\n物品出厂日期:";cin>>m>>n>>h;cout<<"\n物品数量:";cin>>n1;d1[v].set2(a,b,c,d,e,m,n,h,n1);d1[v].pay();k1++;cout<<"\n想继续输入DVD的相关信息吗?(1-是 2-否):";cin>>i1;while(i1!=1&&i1!=2){ cout<<"\n请重新输入数字1或2:"; cin>>i1;}if(i1==1) {system("cls");cout<<"\n请继续输入DVD的相关信息!\n";}else break;}}if(i==3){cout<<"\n请输入带DVD的普通电视机的相关信息!\n";for(v=0;v<20;v++){cout<<"物品名称:";cin>>a;cout<<"\n物品颜色:";cin>>b;cout<<"\n物品的生产厂商:";cin>>c;cout<<"\n厂商地址:";cin>>d;cout<<"\n物品型号:";cin>>e;cout<<"\n物品出厂日期:";cin>>m>>n>>h;cout<<"\n物品数量:";cin>>n1;td1[v].set3(a,b,c,d,e,m,n,h,n1);td1[v].pay();k2++;cout<<"\n想继续输入带DVD的普通电视机的相关信息吗?(1-是 2-否):"; cin>>i1;while(i1!=1&&i1!=2){ cout<<"\n请重新输入数字1或2:";cin>>i1;}if(i1==1) {system("cls");cout<<"\n请继续输入带DVD的普通电视机的相关信息!\n";}if(i1==2) break;}}cout<<"\n想输入其他物品的相关信息吗?(1-是 2-否):";cin>>i1;while(i1!=1&&i1!=2) {cout<<"\n请重新输入数字1或2:";cin>>i1;}if(i1==1){system("cls");cout<<"\n请输入数字输入相对应的物品信息(1-普通电视机 2-DVD 3-带DVD的普通电视机):";}if(i1==2) break;}cout<<"想保存你所输入得数据吗?(1-是 2):";cin>>rr;while(rr!=1&&rr!=2) {cout<<"\n请重新输入数字1或2:";cin>>rr;}if(rr==1){ofstream ofile("wiring.txt",ios_base::out);for(v=0;v<k;v++){ofile<<"\n普通电视机的名称:"<<t1[v].name<<"\n普通电视机的颜色:" <<t1[v].color<<"\n普通电视机的出厂地址:"<<t1[v].address<<"\n普通电视机的出厂的厂商:"<<t1[v].factory<<"\n普通电视机的型号:" <<t1[v].type<<"\n普通电视机的出厂日期:"<<t1[v].year<<"/"<<t1[v].month <<"/"<<t1[v].day<<"\n普通电视机的单价:"<<t1[v].price1<<"\n普通电视机的数量:"<<t1[v].number<<endl;}for(v=0;v<k1;v++){ofile<<"\nDVD的名称:"<<d1[v].name<<"\nDVD的颜色:" <<d1[v].color<<"\nDVD的出厂地址:"<<d1[v].address<<"\nDVD的出厂的厂商:"<<d1[v].factory<<"\nDVD的型号:" <<d1[v].type<<"\nDVD的出厂日期:"<<d1[v].year<<"/"<<d1[v].month <<"/"<<d1[v].day<<"\nDVD的单价:"<<d1[v].price2<<"\nDVD的数量:"<<d1[v].number<<endl;}for(v=0;v<k2;v++){ofile<<"\n带DVD的普通电视机的名称:"<<td1[v].name<<"\n带DVD的普通电视机的颜色:" <<td1[v].color<<"\n带DVD的普通电视机的出厂地址:"<<td1[v].address<<"\n带DVD的普通电视机的出厂的厂商:"<<td1[v].factory<<"\n带DVD的普通电视机的型号:" <<td1[v].type<<"\n带DVD的普通电视机的出厂日期:"<<td1[v].year<<"/"<<td1[v].month <<"/"<<td1[v].day<<"\n带DVD的普通电视机的单价:"<<td1[v].price<<"\n带DVD的普通电视机的数量:"<<td1[v].number<<endl;}ofile.close();cout<<"\n物品信息已储存!";cout<<"\n按键1返回菜单:";cin>>r1;while(r1!=1) {cout<<"\n请重新输入数字1:";cin>>r1;}if(r1==1) { system("cls");caidan();}if(r1==2) {cout<<"\n退出程序!";}}if(rr==2){cout<<"\n按键1返回菜单2退出程序:";cin>>r1;while(r1!=1&&r1!=2) {cout<<"\n请重新输入数字1或2:";cin>>r1;}if(r1==1) { system("cls");caidan();}if(r1==2) {cout<<"\n退出程序!";}}}void addw()//添加物品信息函数{void caidan();//菜单函数char a[10],b[10],c[50],d[50],e[20];int m,n,h,n1,rr,i1,v,i=9,r1;cout<<"\n请输入数字键添加对应的物品信息(1-普通电视机 2-DVD 3-带DVD的普通电视机):";while(i!=0){cin>>i;if(i==1){cout<<"\n请输入普通电视机的相关信息!\n";for(v=k;v<20;v++){cout<<"物品名称:";cin>>a;cout<<"\n物品颜色:";cin>>b;cout<<"\n物品的生产厂商:";cin>>c;cout<<"\n厂商地址:";cin>>d;cout<<"\n物品型号:";cin>>e;cout<<"\n物品出厂日期:";cin>>m>>n>>h;cout<<"\n物品数量:";cin>>n1;t1[v].set1(a,b,c,d,e,m,n,h,n1);t1[v].pay();k++;cout<<"\n想继续添加普通电视机的相关信息吗?(1-是 2-否):"; cin>>i1;while(i1!=1&&i1!=2){ cout<<"\n请重新输入数字1或2:";cin>>i1;}if(i1==1) {cout<<"\n请继续输入普通电视机的相关信息!\n";} else break;}}if(i==2){cout<<"\n请输入DVD的相关信息!\n";for(v=k1;v<20;v++){cout<<"物品名称:";cin>>a;cout<<"\n物品颜色:";cin>>b;cout<<"\n物品的生产厂商:";cin>>c;cout<<"\n厂商地址:";cin>>d;cout<<"\n物品型号:";cin>>e;cout<<"\n物品出厂日期:";cin>>m>>n>>h;cout<<"\n物品数量:";cin>>n1;d1[v].set2(a,b,c,d,e,m,n,h,n1);d1[v].pay();k1++;cout<<"\n想继续添加DVD的相关信息吗?(1-是 2-否):"; cin>>i1;while(i1!=1&&i1!=2){ cout<<"\n请重新输入数字1或2:";cin>>i1;}if(i1==1) {cout<<"\n请继续输入DVD的相关信息!\n";}else break;}}if(i==3){cout<<"\n请输入带DVD的普通电视机的相关信息!\n";for(v=k2;v<20;v++){cout<<"物品名称:";cin>>a;cout<<"\n物品颜色:";cin>>b;cout<<"\n物品的生产厂商:";cin>>c;cout<<"\n厂商地址:";cin>>d;cout<<"\n物品型号:";cin>>e;cout<<"\n物品出厂日期:";cin>>m>>n>>h;cout<<"\n物品数量:";cin>>n1;td1[v].set3(a,b,c,d,e,m,n,h,n1);td1[v].pay();k2++;cout<<"\n想继续添加带DVD的普通电视机的相关信息吗?(1-是 2-否):";cin>>i1;while(i1!=1&&i1!=2){ cout<<"\n请重新输入数字1或2:";cin>>i1;}if(i1==1) {cout<<"\n请继续输入带DVD的普通电视机的相关信息!\n";}if(i1==2) break;}}cout<<"\n想添加其他物品的相关信息吗?(1-是 2-否):";cin>>i1;while(i1!=1&&i1!=2) {cout<<"\n请重新输入数字1或2:";cin>>i1;}if(i1==1) {cout<<"\n请输入数字输入相对应的物品信息(1-普通电视机 2-DVD 3-带DVD的普通电视机):";}if(i1==2) break;}cout<<"想保存你所输入得数据吗?(1-是 2):";cin>>rr;while(rr!=1&&rr!=2) {cout<<"\n请重新输入数字1或2:";cin>>rr;}if(rr==1){ofstream ofile("wiring.txt",ios_base::out);for(v=0;v<k;v++){ofile<<"\n普通电视机的名称:"<<t1[v].name<<"\n普通电视机的颜色:" <<t1[v].color<<"\n普通电视机的出厂地址:"<<t1[v].address<<"\n普通电视机的出厂的厂商:"<<t1[v].factory<<"\n普通电视机的型号:" <<t1[v].type<<"\n普通电视机的出厂日期:"<<t1[v].year<<"/"<<t1[v].month <<"/"<<t1[v].day<<"\n普通电视机的单价:"<<t1[v].price1<<"\n普通电视机的数量:"<<t1[v].number<<endl;}for(v=0;v<k1;v++){ofile<<"\nDVD的名称:"<<d1[v].name<<"\nDVD的颜色:" <<d1[v].color<<"\nDVD的出厂地址:"<<d1[v].address<<"\nDVD的出厂的厂商:"<<d1[v].factory<<"DVD的型号:"<<d1[v].type<<"\nDVD的出厂日期:"<<d1[v].year<<"/"<<d1[v].month <<"/"<<d1[v].day<<"\nDVD的单价:"<<d1[v].price2<<"\nDVD的数量:"<<d1[v].number<<endl;}for(v=0;v<k2;v++){ofile<<"\n带DVD的普通电视机的名称:"<<td1[v].name<<"\n带DVD的普通电视机的颜色:" <<td1[v].color<<"\n带DVD的普通电视机的出厂地址:"<<td1[v].address<<"\n带DVD的普通电视机的出厂的厂商:"<<td1[v].factory<<"\n带DVD的普通电视机的型号:"<<td1[v].type<<"\n带DVD的普通电视机的出厂日期:"<<td1[v].year<<"/"<<td1[v].month <<"/"<<td1[v].day<<"\n带DVD的普通电视机的单价:"<<td1[v].price<<"\n带DVD的普通电视机的数量:"<<td1[v].number<<endl;}ofile.close();cout<<"\n物品信息已储存!";cout<<"\n按键1返回菜单:";cin>>r1;while(r1!=1) {cout<<"\n请重新输入数字1:";cin>>r1;}if(r1==1) { system("cls");caidan();}if(r1==2) {cout<<"\n退出程序!";}}if(rr==2){cout<<"\n按键1返回菜单2退出程序:";cin>>r1;while(r1!=1&&r1!=2) {cout<<"\n请重新输入数字1或2:";cin>>r1;}if(r1==1) { system("cls");caidan();}if(r1==2) {cout<<"\n退出程序!";}}}void shown()//显示物品信息{cout<<"\n从文件中读取物品信息\n";char ch;int nn;ifstream ofile("wiring.txt");while(ofile.get(ch))cout<<ch;ofile.close();cout<<"请按键1返回菜单或按键2退出程序:";cin>>nn;while(nn!=1&&nn!=2) {cout<<"请重新输入数字1或2:";cin>>nn;}if(nn==1) {system("cls"); caidan();}if(nn==2) cout<<"退出程序!\n";}void searchw()//查找物品信息{void caidan();char namestr[20];int rr;int i,j;cout<<"\n请输入你想查找的物品类型(1-普通电视机 2-DVD 3-带DVD的普通电视机):"; cin>>rr;while(rr!=1&&rr!=2&&rr!=3) {cout<<"\n请重新输入数字1或2或3:";cin>>rr;}if(rr==1){cout<<"\n请输入你要查找的普通电视机名称:";cin>>namestr;for(i=0;i<k;i++){if(strcmp(namestr,t1[i].name)==0){cout<<"\n普通电视机的名称:"<<t1[i].name<<"\n普通电视机的颜色:"<<t1[i].color<<"\n普通电视机的出厂地址:"<<t1[i].address<<"\n普通电视机的出厂的厂商:"<<t1[i].factory<<"\n普通电视机的型号:" <<t1[i].type<<"\n普通电视机的出厂日期:"<<t1[i].year<<"/"<<t1[i].month <<"/"<<t1[i].day<<"\n普通电视机的单价:"<<t1[i].price1<<"\n普通电视机的数量:"<<t1[i].number<<endl;break;}}if(i==k)cout<<"\n对不起!\n";}if(rr==2){cout<<"\n请输入你要查找的DVD名称:";cin>>namestr;for(i=0;i<k1;i++){if(strcmp(namestr,d1[i].name)==0){cout<<"\nDVD的名称:"<<d1[i].name<<"\nDVD的颜色:" <<d1[i].color<<"\nDVD的出厂地址:"<<d1[i].address<<"\nDVD的出厂的厂商:"<<d1[i].factory<<"\nDVD的型号:"<<d1[i].type<<"\nDVD的出厂日期:"<<d1[i].year<<"/"<<d1[i].month <<"/"<<d1[i].day<<"\nDVD的单价:"<<d1[i].price2<<"\nDVD的数量:"<<d1[i].number<<endl;break;}}if(i==k1)cout<<"\n对不起DVD的相关信息!\n";}if(rr==3){cout<<"\n请输入你要查找的带DVD的普通电视机的名称:";cin>>namestr;for(i=0;i<k2;i++){if(strcmp(namestr,td1[i].name)==0){cout<<"\n带DVD的普通电视机的名称:"<<td1[i].name<<"\n带DVD的普通电视机的颜色:" <<td1[i].color<<"\n带DVD的普通电视机的出厂地址:"<<td1[i].address<<"\n带DVD的普通电视机的出厂的厂商:"<<td1[i].factory<<"\n带DVD的普通电视机的型号:" <<td1[i].type<<"\n带DVD的普通电视机的出厂日期:"<<td1[i].year<<"/"<<td1[i].month <<"/"<<td1[i].day<<"\n带DVD的普通电视机的单价:"<<td1[i].price<<"\n带DVD的普通电视机的数量:"<<td1[i].number<<endl;break;}}if(i==k2)cout<<"\n对不起DVD的普通电视机的相关信息!\n";}cout<<"\n请输入数字键1返回菜单或数字键2退出程序:";cin>>j;while(j!=1&&j!=2){cout<<"\n请重新输入数字1或2:";cin>>j;}if(j==1) {system("cls");caidan();}if(j==2) cout<<"\n退出程序!";}void selectw()//删除物品信息{void caidan();char namestr[20];int rr,i,r1,i1(-1),i2(-1),i3(-1);cout<<"\n请输入你要删除的物品信息(1-普通电视机 2-DVD 3-带DVD的普通电视机):"; cin>>rr;while(rr!=1&&rr!=2&&rr!=3) {cout<<"\n请重新输入数字1或2或3:";cin>>rr;}if(rr==1){cout<<"\n请输入你想删除的普通电视机名称:";cin>>namestr;for(i=0;i<k;i++) {if(strcmp(namestr,t1[i].name)==0) i1=i;}}if(rr==2){cout<<"\n请输入你想删除的DVD名称:";cin>>namestr;for(i=0;i<k1;i++) {if(strcmp(namestr,d1[i].name)==0) i2=i;}}if(rr==3){cout<<"\n请输入你想删除的带DVD的普通电视机的名称:";cin>>namestr;for(i=0;i<k2;i++) {if(strcmp(namestr,td1[i].name)==0) i3=i;}}cout<<"想保存删除后的信息吗?(1-是 2-否):";cin>>r1;while(r1!=1&&r1!=2) {cout<<"请重新输入数字1或2:";cin>>r1;}if(r1==1){ofstream ofile("wiring.txt",ios_base::out);for(i=0;i<k;i++){if(i==i1) continue;else{ofile<<"\n普通电视机的名称:"<<t1[i].name<<"\n普通电视机的颜色:" <<t1[i].color<<"\n普通电视机的出厂地址:"<<t1[i].address<<"\n普通电视机的出厂的厂商:"<<t1[i].factory<<"\n普通电视机的型号:" <<t1[i].type<<"\n普通电视机的出厂日期:"<<t1[i].year<<"/"<<t1[i].month <<"/"<<t1[i].day <<"\n普通电视机的单价:"<<t1[i].price1<<"\n普通电视机的数量:"<<t1[i].number<<endl;}}for(i=0;i<k1;i++){if(i==i2) continue;else{ofile<<"\nDVD的名称:"<<d1[i].name<<"\nDVD的颜色:" <<d1[i].color<<"\nDVD的出厂地址:"<<d1[i].address<<"\nDVD的出厂的厂商:"<<d1[i].factory<<"\nDVD的型号:"<<d1[i].type<<"\nDVD的出厂日期:"<<d1[i].year<<"/"<<d1[i].month <<"/"<<d1[i].day<<"\nDVD的单价:"<<d1[i].price2<<"\nDVD的数量:"<<d1[i].number<<endl;}}for(i=0;i<k2;i++){if(i==i3) continue;else{ofile<<"\n带DVD的普通电视机的名称:"<<td1[i].name<<"\n带DVD的普通电视机的颜色:" <<td1[i].color<<"\n带DVD的普通电视机的出厂地址:"<<td1[i].address<<"\n带DVD的普通电视机的出厂的厂商:"<<td1[i].factory<<"\n带DVD的普通电视机的型号:" <<td1[i].type<<"\n带DVD的普通电视机的出厂日期:"<<td1[i].year<<"/"<<td1[i].month <<"/"<<td1[i].day<<"\n带DVD的普通电视机的单价:"<<td1[i].price<<"\n带DVD的普通电视机的数量:"<<td1[i].number<<endl;}}ofile.close();cout<<"\n物品信息已保存!\n";}cout<<"按键1返回菜单2退出程序:";cin>>r1;while(r1!=1&&r1!=2) {cout<<"请重新输入数字1或2:";cin>>r1;}if(r1==1) {system("cls"); caidan();}if(r1==2) cout<<"退出程序!\n";}void savew()//保存物品信息{void caidan();ofstream ofile("wiring.txt",ios_base::out);int i,rr;for(i=0;i<k;i++){ofile<<"\n普通电视机的名称:"<<t1[i].name<<"\n普通电视机的颜色:" <<t1[i].color<<"\n普通电视机的出厂地址:"<<t1[i].address<<"\n普通电视机的出厂的厂商:"<<t1[i].factory<<"\n普通电视机的型号:" <<t1[i].type<<"\n普通电视机的出厂日期:"<<t1[i].year<<"/"<<t1[i].month <<"/"<<t1[i].day<<"\n普通电视机的单价:"<<t1[i].price1<<"\n普通电视机的数量:"<<t1[i].number<<endl;}for(i=0;i<k1;i++){ofile<<"\nDVD的名称:"<<d1[i].name<<"\nDVD的颜色:" <<d1[i].color<<"\nDVD的出厂地址:"<<d1[i].address<<"\nDVD的出厂的厂商:"<<d1[i].factory<<"DVD的型号:"<<d1[i].type<<"\nDVD的出厂日期:"<<d1[i].year<<"/"<<d1[i].month <<"/"<<d1[i].day<<"\nDVD的单价:"<<d1[i].price2<<"\nDVD的数量:"<<d1[i].number<<endl;}for(i=0;i<k2;i++){ofile<<"\n带DVD的普通电视机的名称:"<<td1[i].name<<"\n带DVD的普通电视机的颜色:"<<td1[i].color<<"\n带DVD的普通电视机的出厂地址:"<<td1[i].address<<"\n带DVD的普通电视机的出厂的厂商:"<<td1[i].factory<<"\n带DVD的普通电视机的型号:"<<td1[i].type<<"\n带DVD的普通电视机的出厂日期:"<<td1[i].year<<"/"<<td1[i].month <<"/"<<td1[i].day<<"\n带DVD的普通电视机的单价:"<<td1[i].price<<"\n带DVD的普通电视机的数量:"<<td1[i].number<<endl;}ofile.close();cout<<"\n物品信息已储存!";cout<<"\n输入数字键1返回菜单,2退出程序:";cin>>rr;while(rr!=1&&rr!=2){cout<<"\n请重新输入数字1或2:";cin>>rr;}if(rr==1){system("cls");caidan();}//清屏并返回菜单else{cout<<"\n退出程序!";}}。