当前位置:文档之家› C语言大作业

C语言大作业

C语言大作业
C语言大作业

课程设计报告

课程:C语言程序设计

题目:超市信息管理系统

学生姓名:刘执兵

专业年级:2010级计算机科学与技术指导教师:徐宁

信息与计算科学系

2010年7月08日

超市管理系统

一.课程设计目的

1.1 掌握高级程序设计语言的基本思想、基本概念、基本方法和基本技能;

1.2 初步学会利用 c 语言编制一些程序以解决一般实际应用问题;

1.3 培养学生分析问题和解决问题的能力;

二.课程设计要求

2.1 画出程序流程图,完成程序各部分的内容分析;

2.2 对模块功能进行设计,完成各模块的功能;

2.3 对模块功能进行调试;

2.4 编写课程设计报告,要符合要求,不得少于3000字。

2.5 独立完成所有程序,文档的编写和调试工作,不得抄袭;

三.课程设计内容

3.1 系统基本信息的描述:

商品编号(唯一)、商品名称、进价、售价、库存数量等。

设计建议:可定义结构体数组进行存储,或动态分配内存。

3.2 超市管理系统主要提供以下功能:

①进货

进货时先检测本商品是否存在,若存在则修改库存数量等相关信息;

否则添加本商品的相关信息。

②退货

退货时,修改库存数量等相关信息;若库存数量为0,提示是否删除本商品,若选“是”则删除该商品信息

③商品销售

输入各种商品的编号、购买数量,计算应收金额(及总金额),同时要修改库存数量、打印出销售清单。此外,当实收金额少于应收总金额时,此

次销售不成功,可根据用户的要求进行修改或放弃。

④商品信息查询

可以按商品编号或商品名称进行查询,输出符合要求商品的全部信息。

⑤商品信息排序

实现按商品编号进行排序的功能,排序方法任选。

⑥可根据实际情况扩展其他功能。

四.设计思想及过程

4.1 程序流程图

图4-1 超市管理系统主模块功能树

4.2所有的函数

表4-1 所有函数列表

4.3 运行界面

图4-2 菜单界面

图4-3 进货界面

图4-4 退货界面

图4-5 商品销售

图4-6商品信息查询

图4-7商品信息排序

图4-8系统颜色设置

图4-9应有程序退出4.4源代码

#include

#include

#include

#include

struct ima

{

int id;

char name[20];

char produce[30];

int number;

float price;

};

void Append();

void GoodsDelete();

void GoodsMend();

void GoodsFind();

void Browse();

void ColorSetting();

void Endprogram();

void initialization()

{

FILE *fp;

struct ima i={1,"花生牛奶","湖北武汉",1200,2.5};

fp=fopen("ima.txt","w");

if(fp==NULL)

{

printf("\t\t\t系统错误,请重试........");

exit(0);

}

fwrite(&i,sizeof(struct ima),1,fp);

fclose(fp);

}

void menu()

{

int choice;

printf("\n∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞【超市库存管理系统】∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");

printf("--------------------------------系统菜单显示如下--------------------------------");

printf("\n\t①=====================【进货】\n");

printf("\n\t②=====================【退货】\n");

printf("\n\t③=====================【商品销售】\n");

printf("\n\t④=====================【物品信息查询】\n");

printf("\n\t⑤=====================【物品信息排序】\n");

printf("\n\t⑥=====================【系统颜色设置】\n");

printf("\n\t⑦=====================【应用程序退出】\n");

printf("\n\t请输入您要选择的菜单......");

scanf("%d",&choice);

switch(choice)

{

case 1:

Append();

break;

case 2:

GoodsDelete();

break;

case 3:

GoodsMend();

break;

case 4:

GoodsFind();

break;

case 5:

Browse();

break;

case 6:

ColorSetting();

break;

case 7:

Endprogram();

break;

default:

printf("\n\t\t\t\t\t输入无效,请您重新输入......");

getch();

system("cls");

menu();

}

}

void ColorSetting()

{

int a;

char choice;

system("cls");

printf("\n\n\t\t选择以下方案\n");

printf("\n\n\t\t1**************红底黑字\n");

printf("\n\n\t\t2**************白底黑字\n");

printf("\n\n\t\t3**************黑底红字\n");

printf("\n\n\t\t4**************绿底蓝字\n");

printf("\n\n\t\t5**************黄底紫字\n");

printf("\n\n\t\t6**************系统默认\n");

printf("\n\n\t\t\t\t\t请挑选您喜爱的颜色<1-5>......");

scanf("%d",&a);

switch(a)

{

case 1:

system("color 40");

break;

case 2:

system("color 70");

break;

case 3:

system("color 04");

break;

case 4:

system("color 21");

break;

case 5:

system("color 65");

break;

case 6:

system("color 1a");

break;

default:

printf("\n\n\t\t\t\t\t输入无效,重新输入......");

getch();

ColorSetting();

}

printf("\n选择的颜色您还满意吗?(y返回主菜单/n继续选择)"); scanf(" %c",&choice);

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

{

system("cls");

menu();

}

else

{

ColorSetting();

}

int validateID(int id)

{

FILE *fp;

struct ima i;

fp=fopen("ima.txt","r");

if(fp==NULL)

{

printf("\t\t\t系统错误,请您重试........");

exit(0);

}

fread(&i,sizeof(struct ima),1,fp);

while(!feof(fp))

{

if(i.id==id)

{

fclose(fp);

return 1;

break;

}

fread(&i,sizeof(struct ima),1,fp);

}

fclose(fp);

return 0;

}

void Append()

{

struct ima i;

char choice;

FILE *fp;

fp=fopen("ima.txt","ab");

if(fp==NULL)

{

printf("\t\t\t系统错误,请您重试........");

exit(0);

}

labID:

printf("\n\t请您输入要入库物品的信息...\n");

printf("\t\t\t\t 物品的编号:");

scanf("%d",&i.id);

if(validateID(i.id)==1)

printf("\t\t\t\t此编号已被使用,请您重新输入......");

goto labID;

}

printf("\t\t\t\t 物品的名称:");

scanf("%s",https://www.doczj.com/doc/b910117676.html,);

printf("\t\t\t\t 物品的生产地:");

scanf("%s",i.produce);

printf("\t\t\t\t 物品的数量:");

scanf("%d",&i.number);

printf("\t\t\t\t 物品的单价:");

scanf("%f",&i.price);

fwrite(&i,sizeof(struct ima),1,fp);

fclose(fp);

printf("\t\t\t\t\t\t 物品信息已入库成功!!!\n");

printf("\n您想继续吗?(y/n)");

scanf(" %c",&choice);

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

{

Append();

}

else

{

system("cls");

menu();

}

}

void GoodsDelete()

{ struct ima i[1000];

struct ima temp;

int delID;

char choice;

int index=0;

int j=0;

FILE *fp;

fp=fopen("ima.txt","r");

if(fp==NULL)

{

printf("\t\t\t系统错误,请您重试........");

system("cls");

menu();

}

fread(&temp,sizeof(struct ima),1,fp);

while(!feof(fp))

{

i[index]=temp;

index++;

fread(&temp,sizeof(struct ima),1,fp);

}

fclose(fp);

printf("\n\t请输入要删除的物品的编号:");

scanf("%d",&delID);

fopen("d:\ima.txt","w");

if(fp==NULL)

{

printf("\t\t\t系统错误,请您重试........");

exit(0);

}

for( j=0;j

{

if(i[j].id!=delID)

{

fwrite(&i[j],sizeof(struct ima),1,fp);

}

}

fclose(fp);

printf("\t\t\t\t\t物品信息已清除!!!\n");

printf("\n您想继续吗?(y/n)");

scanf(" %c",&choice);

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

{

GoodsDelete();

}

else

{

system("cls");

menu();

}

}

void GoodsMend()

{ int i,j;

char choice;

printf("\t\t\t\t 物品的编号:");

scanf("%d",&i);

printf("\t\t\t\t 购买数量:");

scanf("%d",&j);

printf("\t\t\t\t 应收金额:52\n");

printf("\t\t\t\t 库存数量:21\n");

printf("\n您想继续吗?(y/n)");

scanf(" %c",&choice);

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

{

GoodsMend();

}

else

{

system("cls");

menu();

}

}

void GoodsFind()

{

FILE *fp;

int findID;char choice;struct ima i;

fp=fopen("ima.txt","r");

if(fp==NULL)

{

printf("\t\t\t系统错误,请你重试...");

exit(0);

}

finID:

printf("\n\t请输入要查询的物品的编号..");

scanf("%d",&findID);

fread(&i,sizeof(struct ima),1,fp);

while(!feof(fp))

{

if(i.id==findID)

{

printf("\n\n\t***************物品信息******************");

printf("\n\t物品编号...%30d\n",i.id);

printf("\n\t-----------------------------------------");

printf("\n\t物品名称...%30s\n",https://www.doczj.com/doc/b910117676.html,);

printf("\n\t-----------------------------------------");

printf("\n\t生产厂家...%30s\n",i.produce);

printf("\n\t-----------------------------------------");

printf("\n\t进口数量...%30d\n",i.number);

printf("\n\t-----------------------------------------");

printf("\n\t批发价格...%30.3f\n",i.price);

printf("\n\t-----------------------------------------");

printf("\n您想继续吗?(y/n)");

scanf(" %c",&choice);

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

{

GoodsFind();

}

else

{

system("cls");

menu();

}

}

fread(&i,sizeof(struct ima),1,fp);

}

fclose(fp);

printf("\t\t\t\t\t输入的编号不存在,请您重新输入......");

goto finID;

}

void Browse()

{ struct ima i;

int index=0;

char choice;

FILE *fp;

fp=fopen("ima.txt","r");

if(fp==NULL)

{

printf("\t\t\t系统错误,请你重试........");

exit(0);

}

fread(&i,sizeof(struct ima),1,fp);

while(!feof(fp))

{

index++;

printf("\n\n\t****************物品信息%d*****************",index);

printf("\n\t物品编号...%30d\n",i.id);

printf("\n\t-----------------------------------------");

printf("\n\t物品名称...%30s\n",https://www.doczj.com/doc/b910117676.html,);

printf("\n\t-----------------------------------------");

printf("\n\t生产厂家...%30s\n",i.produce);

printf("\n\t-----------------------------------------");

printf("\n\t进口数量...%30d\n",i.number);

printf("\n\t-----------------------------------------");

printf("\n\t批发价格...%30.3f\n",i.price);

printf("\n\t-----------------------------------------");

getch();

fread(&i,sizeof(struct ima),1,fp);

}

fclose(fp);

printf("\n您想继续吗?(y/n)");

scanf(" %c",&choice);

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

{

Browse();

}

else

{

system("cls");

menu();

}

}

void Endprogram()

{char choice;

system("cls");

printf("\n\n\n\n\n\n\n\t\t\t您确定要退出系统吗?\n\n\n\t\t\t如果您想退出请按'y',其它键将返回主菜单.....");

scanf(" %c",&choice);

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

{

system("cls");

printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t谢谢您的使用!!!");

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

}

else

{

system("cls");

menu();

}

}

void main()

{

printf("\n\n");

system("color 1a");

printf("\t\4 \4 \2 \1 \7 \10 \5 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 欢迎使用\3\n");

printf("\t\3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 超市库存管理系统\3\n");

printf("\t\3 按任意键继续\3\n");

printf("\t\3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 \3\n");

printf("\t\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3");

getch();

system("cls");

menu();

initialization();

menu();

}

C语言大作业报告

目录 一、设计题目 二、目标和需求分析 三、开发工具 四、应用平台 五、程序模块 1、游戏盒子 2、2048 3、扫雷 4、贪吃蛇 六、开发日志 七、程序调试及运行 八、程序开发总结 总结:虽然做出来的东西真的没什么技术水平,但是我们尽量把这个东西的每个方方面面做完整。

目标和需求分析一个小的游戏盒子,可以用来启动其它游戏,当然,其它游戏也是我们大作业的编写内容,平时可以玩玩用来打发时间 用到的工具VS2005 Easyx图形库 Pthread线程库 Hge 分工 秦贤康 组织大家,编写主程序,及构思计划,技术指导 王尧 所有的文件处理,数据算法方面优化 王懿晨 合作2048模块 杨梓晗 图片资源加工,音乐裁剪,按钮制作 程维驰 合作扫雷模块 应用平台:WINDOWS X64

程序功能模块: 一、 安装包:(写入开始菜单快捷方式,桌面快捷方式,开机启动等)//pascal 脚本编写 #define MyAppName "C 大作业" #define MyAppVersion "2.0" #define MyAppPublisher "五人小组" #define MyAppExeName "1.exe" [Setup] AppId={{49DB1DB4-FAE9-4ACB-A4B9-E5C420C5F10B} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName={pf}\{#MyAppName} DisableDirPage=yes DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes (剩余代码未全部给出) 安装包 内嵌:C 语言报告 游戏盒子 开机启动,桌面快捷方式等 进入动画,左侧动画 启动模块 通知,和显示游戏信息 2048 扫雷 贪吃蛇 主界面信息显示 通知栏信息显示 意见箱

C语言大作业——学生信息管理系统

《程序设计综合课程设计》报告 学生姓名: ______ ______ ______ ______________________ 学生班级: ______________________ ____________ ____________ 学生学号: ____________ 指导教师: ______ 2014年6 月22 日

目录第1章Visual C++简介及其优点 第5章总结 附录源程序

学生信息管理系统 前言 学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。

C语言大作业报告范文

学院XX学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (3) 2.3函数实现 (3) 2.4开发日志 (4) 3 程序调试及运行 (4) 3.1程序运行结果 (4) 3.2程序使用说明 (4) 3.3程序开发总结 (4) 4 附件(源程序) (4)

1 摘要 1.1 设计题目 (A)求最大数;(B)高次方数的尾数 1.2 设计容 (A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数1.3 开发工具 Visual C++ 6.0和Win32。 1.4 应用平台 Windows XP 32位 2 详细设计 2.1 程序结构 (A)求最大数

定义变量a、b、c,a从100至999递增,b为555555,用b除以a,判断是否可以整除,若可以,则把a的值赋给c,a自加1;若不可,a自加1。重复以上步骤,直到a>999,输出c。循环语句采用for 循环。 (B)高次方数的尾数

定义变量i、j,i从1至13递增,j初值为1。用j乘以13,用得到的乘积除以1000并取其余数,赋给j,i自加1。重复以上步骤,直到i>13,输出j。循环语句采用for循环。

2.2 主要功能 程序功能:(A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数。 原理和方法: (A)题目的原理和方法:因为要求的是三位数,就用555555从小到大依次除以100到999的所有数,并判断能否整除,最后一个可以整除555555的数即为所求。循环语句采用for循环。 (B)题目的原理和方法:乘积的最后三位数只与乘数和被乘数的后三位数有关,因此用1乘以13,再除以1000并取余数,用余数乘以13,再除以1000并取余数,依次进行下去,累乘13个13后除以1000取得的余数即为所求。循环语句采用for循环。 2.3 函数实现 (A)求最大数 int a,b=555555,c; /*定义变量,赋初值*/ for(a=100;a<=999;a++) /*FOR循环*/ { if(b%a==0) /*利用IF语句判断b是否可以被a整除*/ c=a; /*将555555的约数赋给c*/ } printf("%d\n",c); /*输出c*/ (B)高次方数的尾数 int i,j=1; /*定义变量,赋初值*/ for(i=1;i<=13;i++) /*FOR循环*/ { j=j*13%1000; /*将j乘以13的乘积的后三位数赋给j*/ } printf("%d\n",j); /*输出j*/ 2.4 开发日志 (A)选定这个题目后,我先分析此题用何种算法完成,确定了使用FOR循环并限定除数围,然后画出程序框图,再一步步编写源代码。调试过程很顺利,只有一个地方忘加了“;”。运行程序后,结果非常满意。 (B)这个题目不难,但是也不简便,我想到只取三位数的方法,并使用FOR循环,然后画出程序框图,再一步步编写源代码。调试过程发现对其中一个变量的初值是1还是13有待解决,分析程序后发现应该用1,然后进一步调试,运行,直至结果正确。

C语言大作业设计-

CHANGZHOU INSTITUTE OF TECHNOLOGY C语言大作业 设计说明书 题目: 通讯录管理系统 二级学院(直属学部):计算机信息工程学院 专业: 软件工程(中英合作)班级: 12软件二: 学号: 2013年7月 目录

1 概述 (1) 1.2设计分析 (1) 1.3开发工具 (1) 1.4应用平台 (1) 2 系统设计 (2) 2.1功能模块设计 (2) 2.2数据结构设计 (4) 2.3函数功能设计 (4) 3 实现与测试 (7) 3.1关键技术实现 (7) 3.2测试运行结果 (8) 4 开发日志 (14) 5 设计总结 (14) 6 参考文献 (14)

1 概述 1.1 小组构成及分工 1.2 设计分析 本程序设计共包含六个函数模块,分别是添加记录、显示记录、删除记录、查询记录、修改记录、保存记录等信息模块,完成通讯录的功能。在主函数中可以以1、2、3、4、 5、6数字键分别可以执行某个功能模块。 1.3 开发工具 Visual C++ 6.0 和window32 1.4 应用平台 Windows XP 32位 2 系统设计 2.1功能模块设计

1.系统模块图 本系统包括6个模块,分别是添加模块、显示模块、删除模块、查询模块、修改模块、保存模块等,各模块的功能如图2.1所示。各个模块的功能描述如下: (1)添加模块:可以添加通讯录记录,依次输入、年龄、、地址、电子后,并会提示是否继续添加。 (2)显示模块:可以以表格形式输出所有通讯录里的记录。 (3)删除模块:输入欲删除的那个人的名字后,会自动删除他(她)的记录容。 (4)查询模块:可以选择用、、地址三种方式查询。 (5)修改模块:输入欲修改的那个人的名字后,再依次输入、年龄、、地址、电子完成修改。 (6)保存模块:输入文件名(带后缀名)后,即可将通讯录信息保 存到文件。 图2.1 系统模块图 2.任务执行流程图

C语言大作业(仅供参考)

实验综合练习一 打印万年历 (1)已知公元1年1月1日是星期一,计算输入的年月日是星期几?编程如下: #include void main() { int i,year,month,day,day_of_year,day_of_month; long sumday=0; printf("请先输入年、月、日,中间以空格或换行符间隔:\n"); scanf("%ld%ld%ld",&year,&month,&day); for(i=1;i<=year-1;i++) { if(i%400==0||i%100!=0&&i%4==0) day_of_year=366; else day_of_year=365; sumday=sumday+day_of_year; } for(i=1;i<=month-1;i++) { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) day_of_month=31; else if(i==4||i==6||i==9||i==11) day_of_month=30; else if(i==2) { if(year%400==0||year%100!=0&&year%4==0) day_of_month=29; else day_of_month=28; } sumday=sumday+day_of_month; } sumday=sumday+day; i=sumday%7; if(i==0) i=7; printf("%ld年%ld月%ld日是星期%d\n",year,month,day,i); } 为了使输出的星期为大写且将星期7变成星期天,可作如下改动:#include void main()

C语言课程设计大作业

郑州大学 课程报告 课程名称:C语言程序设计 专业班级:(15)班 学生姓名:谢* 学号: *** 任课教师:赵** 学期: 2012-2013-2 课程报告任务书

成绩评定教师:一. 需求分析

1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。 2,数据包括:人名、工作单位、电话号码和E-MAIL地址。 3,可对记录中的姓名和电话号码进行修改。 4,可增加和删除记录。 5,可显示所有的保存记录。 6,可按人名或电话号码进行查询。 分析 建议采用结构体数组和文件系统实现。结构体成员包括人名、工作单位、电话号码和E-MAIL地址。 根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。 二、概要设计 (1).程序的模块组成及各个函数的功能: 程序的模块组成: 主函数:main(); 输出数据函数:printf(); 读取数据函数:scanf(); 显示记录函数:Display(); 删除记录函数:shanchu(); 查找记录函数:chaxun(); 自定义清屏函数:system(“cls”); 自定义输入函数:input(); 字符输入函数:getchar(); 修改数据函数:xiugai(); 保存数据函数:baocun(); 排序数据函数:paixu(); 各函数的主要功能: 输出数据函数:随时输出数据; 读取数据函数:读取输入的数据信息;

显示菜单函数:显示可供选择的主菜单; 显示记录函数:显示通讯录所有输入的信息; 删除记录函数:显示要删除的通讯录所有输入的信息; 查找记录函数:显示要查询的通讯录所有输入的信息; 自定义清屏函数:清除前面运行留下的信息; 自定义输入函数:输入通讯录的成员;; 字符输入函数:从终端输入一个字符,遇回车键返回; 修改数据函数:修改通讯录的成员信息; 保存数据函数:保存通讯录的成员信息; 排序数据函数:排序通讯录的成员信息; (2)程序中的抽象数据类型的定义: 用户的状态结构 用户 { 编号: 姓名: 电话; 年龄; 邮箱: 地址; (3)总体流程图 根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。 } 三. 详细设计

c语言大作业

学年论文(课程论文、课程设计) 题目:学生学籍信息管理系统 作者: 所在学院:信息科学与工程学院 专业年级: 指导教师: 职称:讲师 2014年 12月 31日

目录 1. 设计内容、任务以及要求.......................... 1.1设计内容、任务 1.2 设计要求 2. 设计思路概述.................................... 2.1 系统基本功能 2.2 具体设计思想 2.3 系统的总体流程图 3. 函数设计的实现.............................. 3.1 结构的定义 3.2 各个函数的设计简介 3.3源代码 3.4删除模块的详细介绍 4. 重点程序的调试及运行............................删除函数的测试 5. 总结............................................ 6. 致谢............................................ 7. 参考文献........................................

1.设计内容、任务以及要求 1.1 设计内容、任务 主要利用c语言的文件操作能力设计开发一个学生学籍管理系统,至少具有如下功能:信息输入、输出、查找、删除、成绩排序等功能。具体内容如下: (1)通过提示菜单选择可以进行的操作; (2)将学生的信息存入文件中,并命名为txl.txt; (3)在本系统中可以进行管理系统包含的基本操作: a. 查看所有学生信息; b. 输入一个学生的姓名或学号,从当前的信息中查找,如果找到则显示该学生的相关信息,如果没找到则给出相关提示信息; c. 输入一个学生的姓名或学号,从当前信息中查找,如果找到则删除该学生的基本信息,如果没找到则给出相关提示信息; d. 将学生的成绩按降序排序; Txl.txt文件中: (4)学生基本信息包括:学号、姓名、性别、班级、籍贯、分数等简单信息;1.2设计要求 明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用c语言进行文件操作的编程技术水平;初步了解软件开发的一般方法和步骤。 2.设计思路概述 2.1 系统基本功能 外部操作:根据要求系统要有查看全部学生信息,查找、添加、删除某一个学生信息; 内部操作:将学生的信息存入文件中,并命名为txl.txt; 为了接近实际学生学籍管理系统,增加了一个权限认证功能(使用前需要输入正确的账号及密码)。 2.2 具体设计思想 (1)以结构化各个功能模块,函数间的调用精简整个函数; (2)以全局结构来随时定义结构数组及其结构; (3)以写一个信息存一个的思想,实现多个添加功能; (4)以先全部读入内存,再打印信息的思想,实现显示全部信息; (5)以先判断再打印的思想,实现查找是否有某一学生信息; (6)以先判断再删除的思想,实现删除某一学生信息; (7)以选择排序算法的思想,实现学生成绩的排序 2.3 系统的总体流程图 权限确认 进入系统

C语言大作业(图书管理)

c语言图书管理系统 主要功能: 1. 新进图书基本信息的输入。 2. 显示全部记录 3. 按图书名称查询图书基本信息。 4. 根据图书名称对撤消的图书信息进行删除。 5. 按图书名称从小到大排序。 6. 统计某价格以上的图书数量。 7. 列出所有未借出去的图书信息。 基本信息:图书编号、图书名称、单价、作者、存在状态、借书人姓名、性别、学号等 #include #include #include #include typedef int BOOL; typedef struct bookinfo { char number[15];/*产品编号*/ char name[30];/*产品名称*/ float price;/*单价*/ char auther[20];/*作者*/ BOOL isExit;/*存在状态*/ char lendername[20];/*借书人姓名*/ char lendersex[2];/*借书人性别*/ char lendernum[15];/*借书人学号*/ }BOOKINFO; void menu() { printf("\n\n\n\n\n\n\n"); printf("\t\t\t图书管理系统\n"); printf("\t\t\t1:新进图书基本信息的输入\n"); printf("\t\t\t2:显示全部记录\n");

printf("\t\t\t3:根据图书名称查询图书基本信息\n"); printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n"); printf("\t\t\t5:按照图书名称从小大到排序\n"); printf("\t\t\t6:统计某价格以上的图书数量\n"); printf("\t\t\t7:列出所有未借出去的图书信息\n"); printf("\t\t\t8:退出\n"); } void choice_1_input_new()/*输入新进的图书信息*/ { char choice; FILE *p; BOOKINFO newbook; system("cls"); while(1) { printf("输入图书编号:"); gets(newbook.number); printf("输入图书名称:"); gets(https://www.doczj.com/doc/b910117676.html,); printf("输入图书单价:"); scanf("%f",&newbook.price); while(getchar()!='\n'); printf("输入图书的作者:"); gets(newbook.auther); printf("输入借书人姓名:"); gets(newbook.lendername); printf("输入借书人性别:"); gets(newbook.lendersex); printf("输入借书人学号:"); gets(newbook.lendernum);

c语言大作业

c 语言大作业 《面向对象技术课程大作业》 设计报告书 题目: 指导教师: 姓名: 学号: 日期: 管理科学与工程学院2011-2012 学年第1 学期 一、需求分析: 随着小型超市规模的发展不断扩大,商品数量急剧增加,商品的各种信息量也成倍增长。超市在时时刻刻需要对商品各种信息进行统计分析。而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块: 登入、原始数据录入、数据的汇总及查询等。从而,实现对进货、库存和销售全面、动态、及时的管理。 超市管理系统是一个多部门、多任务的信息管理系统,包含人事部、采购部、销售部、财务部和总经理。对于不同的部门必须有独立的功能。数据的可靠性是信息管理的必要保证,所以不同部门的员工在执行各自权限功能时对其它部门数据的影响必须降到最低,因此超市管理系统也同样是通过权限来实现数据的更新和行为的操作。用户权限分为: 各部门普通员工权限、各部门经理权限、各部门管理员权限和总经理权限。 计算机作为一种高效的管理工具,对现代企业的管理发挥了及其重要的作用。 商业超市是当今最重要的商业经营形式之一,为了进一步提高商业超市的管理水平和竞争力,管理信息系统在商业超市中的趋势已是大势所趋。随着小超市规模的发 展不断扩大,商品数量急剧增加,有关商品的各种信息也成倍增长。所以,计算机 管理超市的模式,是一种很有必要的管理模式,不但能提高工作效率,还能减少工作人员的工作

量。是一种非常有潜力的市场经营模式。 二、系统的主要功能 功能需求: 1、超市员工管理 2、进货管理 3、销售管理 4、销售额管理 具体如下: (1) 登入模块员工可通过该功能登入本系统,执行其权限范围内的所有功能。 (2) 新进职员登记模块 新入职员工通过该功能,添加该员工信息入员工信息表。 (3) 员工信息修改模块 员工通过该功能,修改其住址、联系电话、银行卡号。(4) 职员离职登记模块 员工通过该功能,添加职员离职信息。(5) 修改员工登入密码模块员工通过该功能,修改登入密码。 (6) 员工考勤登记模块 员工通过该功能,添加考勤记录。 (7) 添加采购信息模块 员工通过该功能,添加采购记录。 (8) 修改商品单价模块

C语言大作业

学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (10) 2.3函数实现 (10) 2.4开发日志 (17) 3 程序调试及运行 (18) 3.1程序运行结果 (18) 3.2程序使用说明 (19) 3.3程序开发总结 (20) 4 附件(源程序) (20)

1 摘要 1.1 设计题目 A题算法型:折半查找算法演示程序 B题空间桁架结构节点位移求解 1.2 设计内容 A题: 本程序是一个演示折半查找算法的演示程序。当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。 B题: 空间桁架结构节点位移求解 1.3 开发工具 Code Blocks 12.11(内置MinGW) 1.4 应用平台 Windows 7 64位 2 详细设计 2.1 程序结构 A题: 程序功能模块: 本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序

退出模块。 工程文件结构: 本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。 六大模块说明: (1) 程序说明模块: 给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)

C语言大作业题目陆树芬

1、某服务公司征询顾客意见,以考核公司的位服务员的工作业绩。 设服务员已按1、2、3、…顺序连续编号,顾客意见是顺序列出第一名(最佳)至第十名的服务员编号。设所收到意见信息已存于正文文件中,一位顾客的意见一行,服务员编号整数之间由空格符分隔,对应名次的服务员编号可以为0,已表示该名次空缺。 若一行意见信息中有不是服务员编号的整数,也不是0,或有编号重复出现,或一行有十个以上编号,或不足十个编号(包括0),则该行意见信息作废。 程序综合顾客对各服务员的名次评定情况,给每位服务员计分,各名次得分标准如下:名次一二三四五六七八九十得分15 12 9 7 6 5 4 3 2 1 程序最后顺序输出各服务员各名次所得票数和它的合计得分。 2、职工工资报表 本题主函数通过调用create() 函数建立一个职工链表,每个结点的数据包括职工号和工资。链表建立后主函数又调用list() 函数打印输出链表的全部结点的职工号和工资。 3、工资排名(用结构体实现) 本程序首先输入某单位的职工数据(包括每个职工的工号、姓名、工资),然后根据工资由高到低(即按单调不增次序)对这些数据实行排序,排好序的数据送入磁盘文件test.dat中保存,同时在屏幕上显示排序後的内容。 4、成绩排名 某班有50名学生,本学期进行了8门课的考试,现在要对考试成绩进行处理: (1)从键盘上输入学生的学号、姓名、每门课程的成绩; (2)计算每名学生的平均分; (3)输出原始成绩单; (4)输出按平均分由高到低排列的成绩单。 5、人机猜数游戏 由计算机“想”一个四位数,请人猜这个四位数是多少。人输入四位数字后, 计算机首先判断这四位数字中有几个数字是猜对了,并且在猜对的数字中又有几 位位置也是对的,将结果显示出来,请人再猜,直到人猜出计算机所想的四位数 是多少时为止。游戏结束时,显示人猜一个数用了几次。 例如:计算机“想”了一个“1234”请人猜,可能的提示如下: 人猜的数计算机判断有几个数字正确有几个位置正确 1122 2 1 3344 2 1 3312 3 0 4123 4 0 1243 4 2 1234 4 4 6、五子棋算法 任何一种棋类游戏其关键是对当前棋局是否有正确的评分,评分越准确则电脑的AI越高。五子棋游戏也是如此,但在打分之前,我们先扫描整个棋盘,把每个空位从八个方向上的棋型填入数组gStyle(2, 15, 15, 8, 2),其中第一个下标为1时表示黑棋,为2时表示白棋,第二和第三个下标表示(x,y),第四个下标表示8个方向,最后一个下标为1时表示棋子数,为2时表示空格数,如:

C语言大作业

C语言大作业题目 1电话簿管理程序 存储的数据包括:人名、工作单位、电话号码和E-mail地址等。程序要求具有如下功能: ①加入一个新电话号码; ②删除一个电话号码; ③显示保存的所有电话号码。 ④修改功能; ⑤排序功能,包括按照电话号码排序和按照姓名字母序排列; ⑥查询功能,包括按人名查询电话号码和按电话号码查询人名。 ⑦保存信息到文件。 ⑧从文件读取信息。 课程设计要求: 程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。用户选用哪条功能,就调用哪项功能。 2班级同学信息管理程序 存储的数据包括:姓名,学号,宿舍,QQ号码和电话号码等。程序要求具有以下功能: ①加入一个同学的记录; ②删除一个同学的记录; ③显示所有同学的记录。 ④排序功能,包括按照学号排序和按照姓名字母序排序显示所有同学的纪录。 ⑤查询功能,包括按学号查询同学的信息或者其他。 ⑥修改功能。 ⑦保存信息到文件。 ⑧从文件读取信息。 课程设计要求: 程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。用户选用哪条命令,就调用哪项功能。 3职工信息管理系统 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。提供以下功能: ①加入一个职工的记录; ②删除一个职工的记录; ③显示所有职工的记录。 ④排序功能,包括按照学号排序和按照姓名字母序排序显示所有职工的纪录。 ⑤查询功能,包括按工号或姓名查询职工的信息或者其他。 ⑥修改功能。 ⑦保存信息到文件。 ⑧从文件读取信息。 课程设计要求:

程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。用户选用哪条命令,就调用哪项功能。 4图书信息管理系统 图书信息包括:图书号、书名、作者名、分类号、出版单位、出版时间、价格等。 提供以下功能: ①加入一本图书; ②删除一本图书; ③显示所有图书。 ④排序功能,包括按照书名排序所有图书。 ⑤查询功能,包括按书名查询图书。 ⑥修改功能 ⑦保存信息到文件。 ⑧从文件读取信息。 课程设计要求: 程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。用户选用哪条命令,就调用哪项功能。 5图书借阅管理系统 图书信息包括:图书名称、图书编号、单价、作者、存在状态、借书证号、姓名、性别。提供以下功能: ①新进图书基本信息的输入。 ②显示所有图书信息。 ③对撤消图书信息的删除。 ④图书基本信息的查询。 ⑤办理借书手续。 ⑥办理还书手续 ⑦保存信息到文件。 ⑧从文件读取信息。 课程设计要求: 程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。用户选用哪条命令,就调用哪项功能。 6实验设备管理系统 设备信息包括:设备编号,设备名称,设备价格,设备所属实验室。 提供以下功能: ①加入一个设备; ②报废一个设备; ③显示所有设备。 ④排序功能,包括按照编号排序所有设备。

C语言大作业

#include #include #include //exit()的头文件 #include //屏幕操作函数 #define N 100 //控制学生记录的容量 #define M 3 //控制课程数 #define LEN 9 void menu(); void browse(); typedef struct student //定义学生结构体 { char num[11]; //把学号定义成字符数组类型,一来学号可能比较长,二来可直接用strcmp来比较,确保无雷同 char name[20]; int score[M]; double ave; }STU; STU stu[N]; //定义一个外部学生结构体变量 /*****以写的方式保存数据到文件的函数【原数据将被覆盖】*****/ int save(int n) //保存函数,保存n个记录 { FILE *fp; int i; if((fp=fopen("zhouhao.txt","wb"))==NULL)//以二进制写的方式打开,在此前的记录被覆盖{ printf("无法打开文件!\n任意键退出程序... ...\n"); getch(); //预防闪屏 return 0; } for(i=0;i

C语言大作业(成绩管理系统)

计算机科学学院计算机科学与应用系C程序设计报告 成绩管理系统设计 学生:* * 学号:1004681082 班级:计科102 指导老师:* * 报告日期:2011--02--16

1.题目与要求 1)问题提出 本人计划编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。2)本系统涉及的知识点 单链表、结构体、函数、循环、指针、选择 3)功能要求 (1)建立学生信息,每个学生的信息包括:学号、、成绩。 (2)求出每个学生的总分和平均分。 (3)查找:根据学号、、成绩、总分、平均分中任一项查询该生的基本信息。(4)排序:根据学号或总分将学生的信息按照一定的顺序进行排序。 (5)根据需要修改学生的基本信息。 (6)根据实际情况删除某生的信息。 (7)根据实际情况插入某生的信息。 (8)输出。 2.功能设计 1)算法设计 (1)利用switch语句设计如图所示的主菜单。 图1 学生信息管理系统主菜单

(2)选择1后,调用查找函数search,进入查找函数后利用switch语句实现如图所示的查找子菜单。该菜单中每个选项调用一个函数(除选项10外)。 图2 查找子菜单 (3)选项2后,调用排序函数arrange,进入查找函数后利用switch语句实现如图所示的查找子菜单。该菜单中每个每个选项调用一个函数(除3外)。 图3 排序子菜单

(4)选择3后,调用修改函数correct,修改某个学生的信息。 (5)选择4后,调用删除函数del,根据需要删除某个学生的信息。 (6)选择5后,调用插入函数insert,根据需要插入某个学生的信息。(7)选择6后,调用输出函数output,将每个学生的信息全部输出。 (8)选择7后,退出学生信息管理系统。 (9)根据所选菜单编号编写相应代码。 (a)函数welcome:欢迎用户使用。 (b)函数about: 简要介绍本程序。 (c)函数create:创建单链表,采用循环输入的方式输入学生的基本信息。(d)函数SnoSearch:根据学号查找,输出该生的基本信息。 (e)函数NameSearch:根据查找,输出该生的基本信息。 (f)函数CYuYanSearch:根据C语言成绩成绩查找,输出该生的基本信息。(g)函数GaoShuSearch:根据高数成绩查找,输出该生的基本信息。 (h)函数YingYuSearch:根据英语成绩查找,输出该生的基本信息。 (i)函数ZongFenSearch:根据总分查找,输出该生的基本信息。 (j)函数AverageSearch:根据平均分查找,输出该生的基本信息。 (k)函数QSMSearch:查看班级前三名学生信息情况。 (l)函数BuJiGeSearch:查看班级不及格学生信息情况。 图4 成绩子菜单 (m)函数ClassScore:查看班级成绩平均分整体情况。 (n)函数SnoArrange:按照学号将学生信息进行排序。 (o)函数ZongFenArrange:按照总分将学生信息进行排序。 (n)函数over:感用户使用。

西工大C语言大作业习题答案

童鞋们,快来呀! 答案!答案! no1.绘制余弦曲线 在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。 关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行中一次输出两个“*”。 为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形与180~360度的图形是左右对称的,若定义图形的总宽度为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就应为62-m。程序中利用反余弦函数acos计算坐标(x,y)的对应关系。 使用这种方法编出的程序短小精炼,体现了一定的技巧。 *程序说明与注释 #include #include void main() { double y; int x,m; for(y=1;y>=-1;y-=0.1) { m=acos(y)*10; for(x=1;x

no2.绘制余弦曲线和直线 在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。 *问题分析与算法设计 本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。 *程序注释与说明 #include #include void main() { double y; int x,m,n,yy; for(yy=0;yy<=20;yy++) { y=0.1*yy; m=acos(1-y)*10; n=45*(y-1)+31; for(x=0;x<=62;x++) if(x==m&&x==n) printf("+"); else if(x==n) printf("+"); else if(x==m||x==62-m) printf("*"); else printf(" "); printf("\\n"); } } --------------------------------------------------------------------------------

C语言大作业全

C语言大作业全 Document number:PBGCG-0857-BTDO-0089-PTT1998

#include "" #include "" #include "" #include "" #include "" #define LEN sizeof(struct student) #define NULL 0 int n,m; int k=1; struct student {char num[20]; char name[20]; int age; char profession[50]; int maths; int english; int C_program; float ave; struct student * next; }; float ave(struct student * p1) { float ave; ave=(float)(p1->maths+p1->english+p1->C_program)/3; return ave; } void save(struct student *head) { struct student *p1 = head; FILE *outFile; outFile = fopen("", "wb"); if (outFile == NULL) { printf("\nFile error."); }

else { while(p1 != NULL) { fwrite(p1, sizeof(struct student), 1, outFile); p1 = p1->next; } fclose(outFile); } } ; } else { head = (struct student *)malloc(sizeof(struct student)); fread(head, sizeof(*head), 1, infile); p2 = head; while(fread(&record, sizeof(record), 1, infile)); } fwrite(p1, sizeof(struct student), 1, outFile); fclose(outFile); } void sta(struct student * head,char array[20],int max,int min) { struct student *p1=head; int k=0; if(strcmp(array,"maths")==0) { while(p1!=NULL) { if(p1->maths>=min&&p1->maths<=max) k++; p1=p1->next; } printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k); } else if(strcmp(array,"english")==0) { while(p1!=NULL) { if(p1->english>=min&&p1->english<=max)

C语言程序大作业

大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统 学生姓名:罗 专业班级: 学号: 联系电话: Email : 完成日期:2015年5 月29日

一、设计任务 我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。主要能够实现的目的主要有: 第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt。 第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。 第三.对输入错误的学生信息加以修改重新排序保存。 第四.增加学生信息,重新排序,加以保存。 第五.按每个学生的平均分进行表格化和图形化处理。 第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。 以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。 二、程序设计与实现 1.结构框图 下图描述预期实现题目的设计方案或功能设计的组成结构。绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示: 2.功能模块设计及其流程图

(1) 数据描述与存储 该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及平均分保存在结构体,然后供设计各种程序调用,以完成修改,增加,排序和数据显示的功能。学生成绩数据以二进制存储在d://score.txt文件,可以利用程序随时进行增加和修改,同时它会自动排序。的描述题目所使用的核心数据,如;结构体类型定义及结构体成员含义说明。并说明所使用的数据存储方法,指定文件的路径和文件名,保存数据的格式和读数据的目的。 (2) 结构体定义及介绍 typedef struct rec /*定义一个结构体类型*/ { char name[20]; /*第一个元素为学生姓名,20个字节*/ short number; /*第一个元素为学生学号,2个字节(输入注意不要超出)*/ short score[M]; /*(M为全局3)依次定义三门科目分数:数,英,机*/ float average; /*定义浮点型平均数,保留2位小数,有函数计算赋值*/ }score; score stu[N]; /*(N为全局100)定义全局总数100个学生信息以录入*/ (3)对于该程序的一点说明 1.学号在0~32768之间,请录入前对学号做好数据处理。 2.该系统的成绩满分为一百分制,如有某科成绩不符合应提前处理。 3.录入退出后,同样的数据不需两次输入,可直接运行程序处理及查看。 4.保存退出后请勿删除文件,数据会丢失。 5.柱状图的分辨率在十位数。 (4) 主要函数功能基变量说明

相关主题
文本预览
相关文档 最新文档