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↙

输入要查询学生的姓名:孙悟空↙ 屏幕显示:

五、总结

程序设计中函数的运用非常重要,在一个主函数中可以反复调用多个外部函数,以实现必要的运算,如果想要输入一组函数,可以用结构体实现,综合运用各种结构就能实现想要的目的。

本文来源:https://www.bwwdw.com/article/w9y4.html

Top