C++公司管理系统源代码

合集下载

c语言学籍管理系统源代码

c语言学籍管理系统源代码

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语言图书馆管理系统源代码介绍图书馆作为一个重要的知识储备和学习场所,必须进行有效的管理和组织。

使用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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#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退出程序!";}}。

相关文档
最新文档