C语言课程设计实验报告
更新时间:2023-05-15 16:55:01 阅读量: 实用文档 文档下载
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
C语言课程设计报告
题目:1.文件移位加密与解密
2.学生成绩管理系统
班级:电子信息工程****班 学号: ********** 姓名: 艾依河里的鱼
2009年7月
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
C语言课程设计说明书
一、课程设计的目的和要求
1.进一步巩固C语言讲法规则。 2.熟练掌握程序设计的一般技巧和方法。 3.培养解决综合性实际问题的能力。 二、课程设计任务 1.文件移位加密与解密
将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
如加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5位(注:z后接a)可得到密文(乱码)fghijkl。
对该文件解密:文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。 2.学生成绩管理系统
题目功能要求:
建立一个5个学生的信息登记表,每个学生和信息包括:学号,姓名,和3门课程的成绩(MATH,C,ENGLISH)。程序运行时显示一个简单的菜单 例如: (1):信息输入(INPUT) (2):显示信息(DISPLAY) (3):总分统计(COUNT) (4):总分排序(SORT) (5):查询(QUERY) 其中:
(1):对5个学生的信息进行输入;
(2):显示当前学生记录的信息,若无记录,则给出提示信息; (3):对每个学生的3门课程统计总分;
(4):对5个学生的总分按升序序排序并显示出来; (5):可以按“学号”、“姓名”查询该生的有关信息。
三、课程设计要求:查阅资料,完成程序设计,提交一份课程设计报告。 四、时间安排:1周
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
题目 文件移位加密与解密
一、题目介绍
将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
如加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5位(注:z后接a)可得到密文(乱码)fghijkl。
对该文件解密:文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。 二、题目分析
要实现对文件内容的移位加密与解密,必须从文件内容的ASCII码值入手,将要加密内容的ASCII码值按照一定的密钥进行改变,得到一组密文,从而实现对文件内容的加密;解密则相反,将密文的ASCII码值按照对应的密钥反向移位,得到明文的ASCII码值,从而实现对密文的解密。
程序中可将加密与解密用的移位函数定义为外部函数,在主函数中将其进行引用,就可实现欲达到的目的。 三、程序代码
#include<stdio.h>
void encrypt(char *p,int key) {
while(*p!='\0') {
*p=97+(*p-97+key)%26; p++; } }
void decrypt(char *p,int key) {
while(*p!='\0') {
*p=97+(*p-71-key)%26; p++; } }
main() {
char str[100]; int n,key;
printf("输入密钥:"); scanf("%d",&key);
printf("输入1加密,输入2解密:");
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
scanf("%d",&n);
printf("输入字符串:"); scanf("%s",str); if(n==1) {
encrypt(str,key);
printf("密文为%s\n",str); }
else if(n==2) {
decrypt(str,key);
printf("原文为%s\n",str); } }
四、运行结果
加密:
输入密钥:5↙
输入1加密,输入2解密:1↙ 输入字符串:abcdefg↙ 密文为fghijkl 解密:
输入密钥:5↙
输入1加密,输入2解密:2↙ 输入字符串:fghijkl↙ 原文为abcdefg 五、总结
这个题目比较简单,只要明白要做什么,剩下的就很好做了。只需设计子函数对文件内容的ASCII码值进行操作,然后在主函数中调用子函数就行了。
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
题目 学生成绩管理系统
一、题目介绍
建立一个5个学生的信息登记表,每个学生和信息包括:学号,姓名,和3门课程的成绩(MATH,C,ENGLISH)。程序运行时显示一个简单的菜单 例如: (1):信息输入(INPUT) (2):显示信息(DISPLAY) (3):总分统计(COUNT) (4):总分排序(SORT) (5):查询(QUERY) 其中: (1):对5个学生的信息进行输入; (2):显示当前学生记录的信息,若无记录,则给出提示信息; (3):对每个学生的3门课程统计总分; (4):对5个学生的总分按升序序排序并显示出来; (5):可以按“学号”、“姓名”查询该生的有关信息。 二、题目分析
按照题目要求需要建立一个学生信息登记表,这项工作可以用结构体完成,要实现各项操作,必须有一个目录,按照目录可以选择要进行的操作,而每项操作要做成一个子函数,在main()主函数中对其进行引用,从而实现各项操作。 三、程序代码 #include <time.h> #include<stdio.h> #include<conio.h> #include <stdlib.h> #include<string.h> #define MAX 80 void input(); void sort(); void display(); void insert(); void sum(); void find(); void save(); void sum(); void modify(); int now_no=0; struct student {
int no;
char name[20];
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
char sex[4]; float score1; float score2; float score3; float sort; float sum; };
struct student stu[MAX],*p; main()/*主函数*/ {
int as;
start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n"); /*以下为功能选择模块*/ do {
printf("\n\t\t\t\t1.录入学生信息\n\t\t\t\t2.显示学生信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学生信息\n\t\t\t\t5.修改学生信息\n\t\t\t\t6.查询学生信息\n\t\t\t\t7.保存学生信息\n\t\t\t\t8.退出系统\n"); printf("\t\t\t\t选择功能选项:"); fflush(stdin); scanf("%d",&as); switch(as) {
case 1:system("cls");input();break; case 2:system("cls");display();break; case 3:system("cls");sort();break; case 4:system("cls");insert();break; case 5:system("cls");modify();break; case 6:system("cls");find();break; case 7:system("cls");save();break; case 8:system("exit");exit(0); default:system("cls");goto start; }
}while(1);
/*至此功能选择结束*/ }
void input()/*原始数据录入模块*/ {
int i=0; char ch; do {
printf("\t\t\t\t1.录入学生信息\n输入第%d个学生的信息\n",i+1); printf("\n输入学生编号:");
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
scanf("%d",&stu[i].no); fflush(stdin);
printf("\n输入学生姓名:"); fflush(stdin); gets(stu[i].name);
printf("\n输入学生性别:"); fflush(stdin); gets(stu[i].sex);
printf("\n输入学生高数成绩:"); fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n输入学生C语言成绩:"); fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n输入学生英语成绩:"); fflush(stdin);
scanf("%f",&stu[i].score3); printf("\n\n"); i++;
now_no=i;
printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); }
while(ch!='n'&&ch!='N'); system("cls"); }
void sort()/*排序数据函数*/ {
struct student temp; int i,j; sum();
for(i=1;i<now_no;i++) {
for(j=1;j<=now_no-i;j++) {
if(stu[j-1].sum>stu[j].sum) {
temp=stu[j];
stu[j]=stu[j-1]; stu[j-1]=temp; } }
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
}
display();/*显示数据函数*/ }
void display()/*显示数据函数*/ { int i; char as; sum(); do {
printf("\t\t\t班级学生信息列表\n");
printf("编号\t姓名\t性别\t高数成绩\tC语言成绩\t英语成绩\t总分\n");
for(i=0;i<now_no&&stu[i].name[0];i++)printf("%d\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum);
printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); }
while(!as); system("cls"); }
void insert()/*添加数据函数*/ {
char ch; do {
printf("\n\t\t输入新插入学生队信息\n"); printf("\n输入学生编号:"); scanf("%d",&stu[now_no].no); fflush(stdin);
printf("\n输入学生姓名:"); fflush(stdin);
gets(stu[now_no].name); printf("\n输入学生性别:"); fflush(stdin);
gets(stu[now_no].sex);
printf("\n输入学生高数成绩:"); fflush(stdin);
scanf("%f",&stu[now_no].score1); printf("\n输入学生C语言成绩:"); fflush(stdin);
scanf("%f",&stu[now_no].score2);
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
printf("\n输入学生英语成绩:"); fflush(stdin);
scanf("%f",&stu[now_no].score3); printf("\n\n");
now_no=now_no+1; sort();
printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); }
while(ch!='n'&&ch!='N'); }
void save()/*保存数据函数*/ {
FILE *fp; int i;
char filepath[20];
printf("输入要保存的文件路径:"); fflush(stdin); gets(filepath);
if((fp=fopen(filepath,"w"))==NULL) {
printf("\n保存失败!"); exit(0); }
for(i=0;i<now_no;i++) {
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3; stu[i].sum=stu[i].sum/3;
fprintf(fp,"%d\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum); }
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath); system("pause"); system("cls"); }
void find()/*查询函数*/ { int i;
char str[20],as; do
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
{
printf("输入要查询的学生姓名:"); fflush(stdin); gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str)) {
printf("编号\t姓名\t性别\t高数成绩\tC语言成绩\t英语成绩\t总分\n");
printf("%d\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum); }
printf("\t\t按任意键返回主菜单."); fflush(stdin); as=getch(); }
while(!as); system("cls"); }
void sum()/*求总分函数*/ { int i;
for(i=0;i<now_no;i++) {
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3; } }
void modify()/*修改数据函数*/ { int i;
char str[20],as;
printf("输入要修改的学生姓名:"); fflush(stdin); gets(str);
for(i=0;i<now_no;i++) if(!strcmp(stu[i].name,str)) {
system("cls");
printf("\n\t\t输入新插入学生队信息\n"); printf("\n输入学生编号:"); fflush(stdin);
scanf("%d",&stu[i].no); printf("\n输入学生性别:"); fflush(stdin);
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
gets(stu[i].sex);
printf("\n输入学生高数成绩:"); fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n输入学生C语言成绩:"); fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n输入学生英语成绩:"); fflush(stdin);
scanf("%f",&stu[i].score3); printf("\n\n"); sort(); break; }
system("cls"); }
四、运行结果
欢迎使用学生成绩管理系统 1.录入学生信息 2.显示学生信息 3.成绩排序信息 4.添加学生信息 5.修改学生信息 6.查询学生信息 7.保存学生信息 8.退出系统
选择功能选项:1↙ 1.录入学生信息
输入第1 个学生的信息 输入学生编号:1↙ 输入学生姓名:张三↙ 输入学生性别:男↙ 输入学生高数成绩:89↙ 输入学生c语言成绩:91↙ 输入学生英语成绩:79↙ 是否继续输入?(Y/N)Y↙
输入第二个学生的信息 (数完五个学生成绩)是否继续输入?(Y/N)N↙ 1.录入学生信息 2.显示学生信息 3.成绩排序信息 4.添加学生信息 5.修改学生信息
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
6.查询学生信息 7.保存学生信息 8.退出系统
选择功能选项:2↙ 屏幕显示:
1.录入学生信息 2.显示学生信息 3.成绩排序信息 4.添加学生信息 5.修改学生信息 6.查询学生信息 7.保存学生信息 8.退出系统
选择功能选项:3↙ 屏幕显示:
排序已经完成 1.录入学生信息 2.显示学生信息 3.成绩排序信息 4.添加学生信息 5.修改学生信息 6.查询学生信息 7.保存学生信息 8.退出系统
包括两个设计:1.文件移位加密与解密2.学生成绩管理系统
选择功能选项:6↙
输入要查询学生的姓名:孙悟空↙ 屏幕显示:
五、总结
程序设计中函数的运用非常重要,在一个主函数中可以反复调用多个外部函数,以实现必要的运算,如果想要输入一组函数,可以用结构体实现,综合运用各种结构就能实现想要的目的。
正在阅读:
C语言课程设计实验报告05-15
绘出图1-7所示的唧筒机构的机构运动简图08-06
建筑企业工程项目成本管理论文04-21
交通安全教育活动致中小学生家长的公开信08-26
浙江省公安机关人民警察岗位执法资格考试试题库公共法律知识类01-08
08材化应化有机化学(上)期末_...05-26
数电实验ALU设计11-27
品牌培训计划12-14
自动控制原理试题二05-03
焊条单元检测题05-05
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 语言
- 课程
- 实验
- 报告
- 设计
- 用于缸体三轴孔机床上下料的桁架机械手设计
- 抗生素及激素合理使用制度
- 湖北省武汉市武昌区2014届高三元月调考理综试题(物理部分含答案)
- 秦始皇.汉武帝的功与过
- 磐石网络服务器硬件设备服务合同
- 26个经典求职信结束语
- 施工人员安全教育培训标准化问答卷(临电部份)
- 电子商务中的信息安全问题及对策
- 长安星光(SC6390)销售话术
- 中国银行上海市分行信用卡分期付款订购单
- 栅格地图技术与VML融合的WebGIS研究
- 2015年中国高效减水剂行业运营监测报告
- 十八届三中全会报告重点解读
- 第3课 区域经济和重心的南移
- 产业经济学教程课后习题答案——马增林主编(中国农业出版社)
- 最具创意大型活动策划案例
- 企业资讯系统对企业文化的构建_以广东省粤电集团有限公司为例
- 4S店总经理工作计划
- 03~solutions_for_chapter_3_exercises
- 自考英语二6A teaching children to spend pocket money wisely